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

前言

在科学中,模型是对某种“真实”事物的简化表示。科学家说是在研究自然,但实际上他们做的大部分工作是在对自然进行建模,并对他们建立的模型进行研究。模型是一种思维方法,成语“去伪存真”就是建模的过程。

建模思想可以在科学研究,社会学和工程设计等多个领域得到应用。基于模型的设计就是以模型为中心的设计方法。用通俗的语言来描述,基于模型的设计方法是从部件的功能和原理出发,使用基于模型设计的工具,图形化或者形式化文本的方式建立模型,通过仿真验证模型的正确性。最终自动生成代码,下载到目标平台上运行。设计的整个过程不再是以代码为中心,而是以模型为主。从计算机科学的角度来看,模型是一种“更高级”的计算机程序设计语言,模型到代码产生,模型执行是软件自动化的范畴。

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

模型的主要特征

-表现性(Representation)

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

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

-抽象性(Abstraction)

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

-实用性(Pragmatics)

模型为了某一个目的而设计。建模的艺术就在于去除掉实在中与问题无关的部分。所以建立的模型与要解决的问题有关。如果随意地使用模型,存在一定的风险。建模者可能忽略了你解决问题时需要的某些重要的因素。

模型的表示方法

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

模型和代码的关系

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

 

模型驱动 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 模型一起运行。

优点:

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

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

实时仿真方式

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

连接实际的ECU 到仿真器

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

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协会开发。开发环境为Openmodelica。

小结

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

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

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

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/116040693
今日推荐