谈谈基于模型的设计(Model-Based Design)

前言

用通俗的语言来描述,基于模型的设计方法是从部件的功能和原理出发,使用基于模型设计的工具,图形化或者形式化文本的方式建立模型,通过仿真验证模型的正确性。最终自动生成代码,下载到目标平台上运行。从计算机科学的角度来看,基于模型的设计是一种“更高级”的计算机程序设计语言。模型到代码产生是软件自动化技术。

本博文对基于模型设计的概念,术语和相关技术做一个梳理。

系统理论

系统理论是一种从各个组件特定的物理,化学和生物特性中提取出一个复杂的结构的方法。简单地讲,就是考虑他们相互作用的结构。每个独立的部件的功能以及对整体贡献的功能。系统理论的主要方法之一是建立事物的模型。

模型的主要特征

-表现性(Representation)

模型表现了一个事物(A model represents some thing)

模型和事物通过态射(morphism)连接

-抽象性(Abstraction)

模型抑制了无关紧要的细节,专注重要的方面。

-实用性(Pragmatics)

模型为了某一个目的而设计。

模型的表示方法

      建模的方法是为了某种目的,提取事物相关的体征,然后使用某一种形式化语言,无歧义地将模型描述出来。最常见的模型语言就是数学。比如E=mc^2  是爱因斯坦相对论的数学模型。当然,模型表示的方法不仅限于数学,具体的可以分为 文本型和图形两类。比如XML语言,状态图都是模型表。

谈谈基于模型的设计(Model-Based Design)

模型和代码的关系

一直以来,模型都是为了理论分析和算法设计的使用,模型能够用来指导编程。但是模型和编码没有直接地联系。渐渐地模型和代码相互融合,最终结的结果是“模型即代码“,完全由代码直接在计算机上运行。下面的图展示的演变的过程。

谈谈基于模型的设计(Model-Based Design)

 

模型驱动 X(Model Driven X)

  • 模型驱动架构Model Driven Architecture (MDA)
  • 模型驱动开发Model Driven Development (MDD) (e.g. UML)
  • 模型驱动工程Model Driven Engineering (MDE)
  • 基于模型的工程Model Based Engineering (MBE)

模型驱动架构

传统设计控制器的方法

传统设计控制器的方法:

  • 在图纸上使用块图设计控制器。
  • 使用一种程序设计语言完成设计
  • 将控制器和控制对象模型(plant model)相集成
  • 通过仿真,调节参数,直到满意

基于模型的设计(Model-Based Design)

  • 从基于图纸的设计转向可执行模型
  • 模型采集有关概念,设计和实现的所以信息
  • 在开发的所有阶段(研究,设计,实现和验证)都使用模型
  • 模型持续地更新和精益求精

MBA 定义了模型之间的概念区分和模型之间的相互转换

  • 模型到模型的转换(Model-to-model transformation)
  • 模型到代码的转换(Model-to-code transformation)

MBD:系统仿真

仿真的目的

验证和确认

 为改善模型采集数据

软件在环(Software in the Loop)

硬件在环(Hardware in the Loop)

软件在环仿真(Software-in-the-Loop)

目的:验证从模型产生的代码是否功能等同于模型

 从模型生成代码

这些代码在开发平台上与plant 模型一起运行

优点:

  • 低成本
  • 不必指定目标平台

谈谈基于模型的设计(Model-Based Design)

硬件在环仿真(Hardware-in-the-Loop)

实时仿真方式

比如测试汽车ECU,HIL 的目的是为全面测试ECU提供所有电气仿真。

连接实际的ECU 到仿真器

控制对象是仿真的,ECU 是实际的。

谈谈基于模型的设计(Model-Based Design)

MDA 模型驱动架构(Model Driven Architecture)

OMG 标准:模型驱动架构

     模型的应用和产生,以改善软件开发过程。

目的:

  加快开发过程:

  •     通过形式化实现开发自动化(模型到代码自动的转换)。
  •   通过抽象降低系统的复杂性。

MDA 过程 (MDA Process)

  • 计算独立模型(Computation Independent Model):信息规范
  • 平*立模型(Platform Independent Model)

模型独立于特定的计算平台

  • 特定平台模型(Platform Specific Model)
  • 代码模型和目标平台

MBD 开发环境 (MBD Development Environments)

MBD 开发环境是基于模型的开发工具,下面是一些著名的MBD 开发环境

MatLab/SimuLink

  • 多域仿真和动态系统基于模型架构设计的开发环境
  • 基本的表示方法是块和它们之间的数据流
  • 提供特定领域的工具箱(例如:汽车)
  • 提供代码生成的能力

dSPACE

  • 汽车工业领先的MBD 开发工具

降低了嵌入式软件的复杂性

  • 集成开发环境的特性

 -系统设计,快速控制样机(rapid control prototyping),汽车生产,代码生成,硬件在环(HIL)测试

Eclipse Modeling Framework

Eclipse 为基础的模型架构和代码生成能力。

Xtext和Xtend 能够实现模型到模型的转换,模型到代码的转换。

Modelica

Modelica是一个开源的大型复杂系统建模语言,由瑞典的非盈利组织Modelica协会开发。

小结

未来进一步的研究主要集中在:

  • 基于eclipse IDE 的DSL ,实现model-model 转换和model - code 的转换。
  • modelica 开源项目的研究

感兴趣的读者可以相互交流。

上一篇:基于NN的编码:1.5x/2.0x Upsample method for NN-Based Super-Resolution Post-Filters(Sharp)


下一篇:目标检测基本原理(小白向)