Simulink模型到Modelica模型转换技术
基于SysML和Modelica的复杂机电产品系统设计与仿真集成
第30卷第4期计算机辅助设计与图形学学报Vol.30No.4 2018年4月Journal of Computer-Aided Design & Computer Graphics Apr. 2018基于SysML和Modelica的复杂机电产品系统设计与仿真集成周书华1), 曹悦2), 张政2), 刘玉生2)*1) (浙江经济职业技术学院汽车技术学院杭州 310018)2) (浙江大学CAD&CG国家重点实验室杭州 310058)(ysliu@)摘要: 系统仿真是辅助系统设计的一种重要手段, 如何将系统设计与系统仿真有机结合, 从而支持设计工作的高效开展, 是一项重要的研究课题. 针对这一问题, 基于系统工程标准建模语言SysML和多领域仿真建模语言Modelica提出一套系统层设计与仿真集成方法. 首先基于元对象机制分析和比较了SysML和Modelica的元模型; 然后以Modelica元模型为基准, 构造了面向Modelica的SysML扩展包M-Design; 最后依据扩展的SysML和Modelica 元模型定义了二者之间的映射规则, 从而实现SysML设计模型向Modelica仿真模型的自动转换. 以储水池系统为例, 展示了复杂机电系统的设计和仿真的集成过程.关键词: 基于模型的系统工程; SysML; Modelica; 设计与仿真集成; 模型转换中图法分类号: TP391.41 DOI: 10.3724/SP.J.1089.2018.16520System Design and Simulation Integration for Complex Mechatronic Products Based on SysML and ModelicaZhou Shuhua1), Cao Yue2), Zhang Zheng2), and Liu Yusheng2)*1) (School of Automotive Technology, Zhejiang Technical Institute of Economics, Hangzhou 310018)2) (State Key Lab of CAD&CG, Zhejiang University, Hangzhou 310058)Abstract: System simulation is one of the important methods to assist the system design. How to combine them in order to improve the efficiency of the design process is a challenging research topic. To this end, we proposed a novel system design and simulation integration method based on SysML, which is the standard modeling lan-guage for systems engineering, and the multi-domain simulation modeling language Modelica. Specifically, firstly, we analyzed and compared the metamodels of SysML and Modelica based on the Meta-Object Facility (MOF);then, according to the metamodel of Modelica, we constructed the M-Design profile by extending from SysML;finally, we defined the mapping rules between the two languages so that the automated transformation between the system design model in SysML and system simulation model in Modelica can be achieved. We used the tank system as a case study to illustrate the integration process.Key words: model-based systems engineering; SysML; Modelica; design and simulation integration; model transformation收稿日期: 2017-06-15; 修回日期: 2017-09-08. 基金项目: 国家重点研究计划项目(2016YFD0400301); 国家自然科学基金(61572427, 61772247). 周书华(1963—), 男, 学士, 高级讲师, 主要研究方向为数字化设计、智能控制; 曹悦(1986—), 女, 博士研究生, 主要研究方向为模型驱动设计; 张政(1990—), 男, 硕士, 主要研究方向为模型驱动设计; 刘玉生(1970—), 男, 博士, 教授, 博士生导师, 论文通讯作者, 主要研究方向为模型驱动设计、CAD/CAE/CAM集成.第4期周书华, 等: 基于SysML和Modelica的复杂机电产品系统设计与仿真集成 729复杂机电产品通常涉及机械、电子、电力、液压、热和控制等诸多领域和学科, 由于系统规模的日益庞大, 以及学科间的紧密耦合, 复杂系统的设计工作变得越来越困难. 基于模型的系统工程(model-based systems engineering, MBSE)[1]为复杂系统的建模与设计提供了解决方案, 它采用模型对系统进行描述, 具有可重用、无歧义、易理解、易复制传播等诸多优点, 因此, 逐渐受到工业界的重视. 当前, 基于模型的系统工程采用系统建模语言(systems modeling language, SysML)①作为其标准建模语言, 它在统一建模语言(unified modeling language, UML)的基础上扩展而来, 并添加了针对系统工程的新的元素, 例如, 新增加的表示系统需求的需求图, 以及在UML类图和对象图基础上扩充而来的表示系统架构的模块定义图和模块内部图, 而对于一些针对软件系统建模的图如表示软件的具体实现的组件图和部署图, 则不予保留.系统设计是系统工程中很重要的一环. 基于SysML进行系统设计能够从更高的抽象层次对系统所包含的多学科复杂子系统进行综合考虑, 并以规范、统一的方式对系统设计进行描述, 从而形成系统设计模型. 然而, 由于系统的复杂性和异构性, 如何保证设计模型的正确性和完备性是系统设计成败的关键因素. 仿真是系统核验的一种重要手段. Modelica语言②在综合多种单领域仿真建模语言的基础上, 引入面向对象的先进思想, 形成一种高级的陈述式语言, 从而成为多领域仿真实质上的标准建模语言.在复杂机电系统设计过程中, 采用仿真对系统设计进行验证, 并将修改结果反馈给设计模型, 这是对系统设计进行验证和优化的主要工作方式. 为支持系统设计的动态仿真, 本文基于SysML与Modelica语言, 提出了一套系统设计与仿真集成的方法, 其核心思想是在SysML设计模型与Modelica仿真模型之间建立完善的映射关系, 使得设计模型可以自动转换为仿真模型. 为实现这一目标, 本文首先分析和比较了SysML与Modelica 元模型的差异; 并以Modelica元模型中的相关模型元素为基础, 对SysML进行扩展, 创建了M-Design 扩展包, 以支持兼容Modelica的设计建模; 最后, 在M-Design/SysML设计模型与Modelica仿真模型之间建立映射关系, 以实现二者之间的自动转换. SysML与Modelica模型的自动转换, 使得系统设计人员可将系统设计模型自动转换为系统仿真模型并进行仿真. 基于仿真结果, 设计人员可以对系统设计进行验证和优化, 提高系统设计工作的质量和效率. 需要说明的是, 本文所针对的复杂机电产品是指Modelica可建模仿真的系统, 它的系统行为由代数方程和常微分方程来描述. 由于Modelica不支持偏微分方程的建模和仿真, 因此对于系统行为中包含偏微分方程的情况, 可以通过对Modelica进行扩展[2]或将偏微分方程转化为常微分形式[3]等方法来解决.1相关工作在系统层设计与仿真集成的相关研究工作中, Cao等[4]提出了一种基于SysML的统一行为建模语言, 并与Matlab/Simulink进行集成. 但是, Mat-lab/Simulink偏向于控制系统建模与仿真, 对物理系统仿真的支持相对Modelica较为薄弱, 因此, 它不适合作为系统仿真的支撑平台.Schamai等[5]提出的ModelicaML是基于Mod-elica的SysML扩展, 它为SysML与Modelica集成提供了较为完备的解决方案. 然而, 该语言并没有完整支持的Modelica的所有语法标准, 并且对某些模型元素的表达不够友好.作为对上述方法的补充, Schamai等[6]提出了将UML状态机图转换为Modelica模型的方法, 它将状态机图作为离散和连续行为混合建模的载体, 通过在状态转换中添加注释来表述连续行为. 然而, 这种文本化的连续行为描述方式缺乏形式化的模型表示, 因此无法对模型进行有效地管理和追溯.对象管理组织(object management group, OMG)提出了基于QVT的SysML和Modelica映射方法③, 并给出了基于转换元模型的SysML4Modelica扩展包定义. 该扩展为SysML和Modelica之间的映射提供了一种新的思路, 但该扩展的定义并不完善, 而且在关于方程式和算法的定义上也有待商榷. 另外, 文章采用的QVT方法不支持模型间的双向转换, 而且对于模型增量式变动的转换支持也十分有限.① /spec/SysML/1.2/② https:///documents/ModelicaSpec33_withRevisionMarks.pdf③ /spec/SyM/1.0/730 计算机辅助设计与图形学学报第30卷Gauthier等[7]使用OMG的SysML4Modelica 扩展包, 并采用ATL (ATL transformation language, ATL)[8]将SysML模型转换到Modelica模型, 以验证设计模型. 虽然他们使用了新的映射方法, 但是该方法受制于OMG的SysML4Modelica扩展包, 使得其对于Modelica语法的描述不够完善, 一些语法的描述过于生硬.李新光等[9]提出了基于SysML的可视化模型转换方法, 其并没有对UML/SysML进行扩展, 而是在SysML已有模型元素与Modelica之间建立映射关系. 但是, 由于SysML语言不具备针对复杂机电系统的领域特定语义, 使得二者之间的对应关系过于粗略, 难以维护模型间的细粒度的对应关系.综上所述, 当前复杂机电系统设计和仿真集成研究存在以下3个问题: 面向的仿真语言和平台的非通用性; 对于仿真语言的某些语义构造缺乏形式化表达; 采用的转换实现方法有局限性, 难以维护和扩展.2 SysML与Modelica元模型分析虽然SysML和Modelica都是系统工程领域的建模语言, 但是由于两者的使用场景和目的的不同, 使得它们有着较大的差异. SysML模型使用图形化的符号语言描述系统, 侧重系统的表示、设计, 不具备直接编译运行的能力; 而Modelica模型使用陈述式的编程语言描述系统, 支持编译运行, 擅长对系统设计进行仿真验证.虽然SysML和Modelica语言在表达形式上十分不一致, 但是两者也存在许多共同点.(1) 它们都是面向对象的语言, 具备面向对象的基本特征. 例如, 在SysML中使用模块对对象进行封装, 而在Modelica中, 类是对象建模的基本单元, 因此, 二者之间存在隐含的对应关系.(2) 它们都能够对复杂机电系统中涉及的多个领域进行统一建模. SysML提供简单且强大的模型元素, 用于解决广泛的系统工程问题, 如描述需求、结构、行为、配置和属性约束等; Modelica主要用于物理系统的建模, 除了拥有完备的表达系统及组件结构和行为的能力之外, 还以标准库的形式提供了广泛的基础设施, 如模拟、数字、机械、电子、电力、液压、热、控制等诸多领域的构件.(3) SysML提供了强大的扩展机制, 使用户能够针对特定的领域定义领域相关建模语言, 这为SysML与Modelica集成提供了最根本的支持.由于SysML和Modelica是2种异构的语言, 因此无法直接对它们的模型进行映射转换. 基于元对象机制(meta object facility, MOF)①, 本文给出了二者之间映射的解决思路. MOF最早由OMG提出, 它通过4层元模型架构, 即元元模型、元模型、模型、信息4个层次对各种建模语言的语法和语义进行精确描述. 通过抽象出建模语言的元模型,可以在元模型层对建模语言的模型元素进行对应, 从而指导两者在模型层的映射, 这是SysML与Modelica集成的基本思路, 遵循这一思路, 本文首先提取了SysML和Modelica语言的元模型, 之后, 分析了二者元模型之间的对应关系.2.1 SysML语言架构如图1所示, SysML语言包括9种图, 分别是块结构图(block definition diagram, BDD)、内部块图(internal block diagram, IBD)、参数图(parametric图1 SysML语言架构① /spec/MOF/2.5/第4期周书华, 等: 基于SysML和Modelica的复杂机电产品系统设计与仿真集成 731diagram, PAR)、包图(package diagram, PKG)、活动图(activity diagram, ACT)、用例图(use case diagram, UC)、序列图(sequence diagram, SEQ)、状态机图(state machine diagram, STM)和需求图(requirement diagram, REQ), 支持需求、结构和行为这3种形式的系统表达. 需求模型强调需求之间的追溯关系以及设计对需求的满足关系; 结构模型强调系统的层次以及对象之间的相互连接关系; 行为模型强调系统中对象的行为, 包括它们的活动、交互和状态历史.在设计和仿真集成的过程中, 只有结构模型和行为模型是必要的. 其中, 结构模型主要采用BDD与IBD进行描述, 它们分别展示了系统的组成视图和内部结构视图; 而为了仿真的需求, 行为模型需要采用形式化的描述方法, 其中PAR主要用于展示连续行为视图, 而STM展示离散行为视图. SysML中的其他图不能够为仿真直接提供有效信息, 其中, REQ主要以文字化的形式对需求进行描述, 因此无法直观抽取仿真有效信息; ACT与UC对系统行为的描述较为模糊, 因此, 它们不适合作为仿真模型的来源; SEQ主要展示了元素之间的交互而非单个元素的行为, 因此, 它不作为仿真模型中的行为输入; 包图主要用于模型管理, 这与仿真模型的生成无关. 因此, 本文方法主要依赖于BDD, IBD, PAR和STM这4个图来生成仿真模型.BDD以模块为基本单元对模块及模块之间的关系进行定义. IBD通过模块内部成分及其之间的连接关系描述单个模块的内部结构. PAR用于定义块属性之间的参数关系, 从而支持性能、可靠性、可用性等多种工程分析. STM通过状态及状态之间的转换描述系统或子系统对外部事件的响应. SysML语言的元模型在OMG组织给出的SysML 语言规范中有详细的说明, 本文在此不做赘述. 2.2 Modelica语言元模型Modelica组织在定义Modelica语言时, 给出了详细的语法规定, 但是并没有对语法进行抽象表达. 因此, 本文依据Modelica语言规范和MOF 语法, 构建Modelica的元模型. 需要指出的是, 元模型的抽象并不是唯一的, 本文给出的定义方法只是其中之一. 另外, 由于Modelica语法比较复杂, 本文只讨论基础内容的元模型, 一些高级特性将忽略.2.2.1 类类是Modelica建模中的基本结构单元, 本质上所有的Modelica元素都是类, 如模型构件以及各种数据对象. 类以属性的方式定义对象的结构, 同时可以包含陈述式的方程, 以及常规的过程式的算法代码, 以描述对象的行为. 图2展示了类的元模型.图2 Modelica类元模型2.2.2 组件组件表示类的实例, 组件的定义声明了其类型、访问限制、变化性、数据流和其他属性, 用于描述类中的任何输入输出, 以及常量的、参数的或离散的组成部分. 组件的元模型定义如图3所示.2.2.3 方程方程在Modelica中用于描述系统表现的行为. 根据其出现的语境, 方程可以分为3类: 声明方程, 包括初始化和修改方程, 用于指定变量、常量或参数的值; 连接方程, 表示端口之间的连接关系; 绑定方程, 用于指定变量之间的等价关系. 方程的元模型定义如图4所示.2.2.4 算法虽然方程非常适合于物理建模, 但是对于计算过程的描述, 用算法表达会更为方便.算法在概念上是保持在一起的代码片段, 算法中的语句依据它们出现的顺序被依次执行. 每当算法被调用时, 出现在赋值运算符左侧的所有变量依次被初始化. 图5展示了算法的定义, 它由表达式、函数调用和组件组成.732计算机辅助设计与图形学学报 第30卷图3 Modelica 组件元模型图4 Modelica 方程元模型图5 Modelica 算法元模型2.3 SysM L 与Modelica 元模型映射关系SysML 与Modelica 元模型的元素之间存在较为直观的对应关系. 在结构模型方面, Modelica 模型使用类、模型以及类的子类进行模型定义; 在SysML 中, 有模块与之对应. SysML 和Modelica 都支持子模型定义, 如Modelica 的组件与SysML 的组成部分属性相对应. Modelica 和SysML 都有端口和连接器的概念, 如在Modelica 中分别用 连接器和连接表示, SysML 用端口和连接器分别 表示.Modelica 模型的行为部分包括方程和算法. 在SysML 中, 约束可用于描述客观规律, 不透明行为可用于描述执行过程. 因此, SysML 中的约束与不透明行为可以与Modelica 中的方程和算法相对应.3 面向Modelica 的SysML 扩展基于上述SysML 与Modelica 元模型之间的对应关系, 可以对SysML 已有模型元素进行扩展, 从而定义符合Modelica 语义和语法的新的模型元素. 基于这些模型元素,可以在SysML 平台上创建兼容Modelica 标准的设计模型.通常, 实现SysML 扩展的方式有2种: (1)重量级. 通过定义MOF 元类来表达UML/SysML 中不存在的模型元素; (2)轻量级. 通过在UML/SysML 已有模型元素的基础上定义版型来扩展其语义. 由于第2种方式具有更好的通用性, 因此本文选择第2种扩展方式, 通过定义新的代表Modelica 模型元素的版型, 实现面向Modelica 的SysML 扩展. 这些新定义的版型共同组成M-Design 扩展包, 它包括结构和行为2个子扩展包, 其架构如图6所示.3.1 结构模型扩展模型是Modelica 语言中表示模型定义的最基础的类. 在其基础上, 一些专用类型被定义出来, 从而表示更为精确的语义, 如连接器表示组件之间的连接接口、记录表示数据结构、模块用于兼容基于框图的因果建模、函数用于支持过程式建模等. 这些类型均被定义为相应的SysML 版型, 由对应的UML 或SysML 模型元素扩展而来. 例如,第4期周书华, 等: 基于SysML和Modelica的复杂机电产品系统设计与仿真集成 733图6 M-Design扩展包架构«MoModel»用于描述Modelica的模型, 它由SysML 的模块扩展而来; «MoRecord»由SysML中的数据类型扩展而来. «MoClass»是所有模型定义构造型的父类, 它拥有3个布尔类型的标签: isEncapsu-lated, isPartial和isFinal; 分别表示该类是否是封装类、是否是抽象类及能否被修改或重定义. «Mo-Connector»对应于Modelica中的连接器, 它拥有一个名为expandable的布尔类型的标签表示接口类是否可以被扩展.Modelica模型的组成成分采用组件来表示, 它是Modelica类或模型的实例. 在SysML中, 模型组成成分对应于模块中的属性, 包括组成部分属性、值属性以及端口. 根据Modelica中组件所实例化的类的类型,可以确定它应当映射为的SysML 中属性类型: 如果组件是类、模型或模块的实例, 则被映射为组成部分属性; 如果为记录或类型的实例, 则对应于值属性; 如果为连接器的实例, 则对应于端口. 这3种类型的组件分别用«MoPartProperty», «MoValueProperty»和«MoPort»版型进行表示. 这些版型拥有一些标签值, 用于更进一步描述Modelica语义. 例如, scope用于跨越定义域的变量名称引用, 可取值为inner, outer, inner-outer或none; variability用于表示变化类型, 表示某个值属性是如何随时间变化的, 可取值为constant, parameter, discrete或continuous; flowType 用于表示组件的流属性为单向、双向或无, 它的取值可以是flow, stream或none; causality用于指定因果, 表示某个数值或端口是输入或输出, 可取值为input, output或none.在Modelica中, 连接表示2个连接器之间的连接关系, 它隐含基尔霍夫定理, 即势变量相等, 流变量之和为零. 在SysML中, 连接器用于连接模块的端口, 但不具备基尔霍夫定理的语义约束, 因此, 本文定义了«MoConnection»用于精确描述Modelica中的连接.3.2行为模型扩展方程和算法是Modelica中用于定义模型行为的主要元素. Modelica的方程主要分为3类: 绑定、连接和声明. 绑定方程用于表示参数传递, 连接方程用于指定«MoPort»之间的连接关系; 声明方程包括初始化方程和语句式方程. 在SysML中, 内部块图和参数图中的连接器可以分别用于表达连接和绑定方程, 约束块中的约束属性可以表达声明方程. 因此, 本文分别定义了3个构造型来表示: «MoConnectEquation»扩展自连接器元类; «Mo-BindingEquation»继承自绑定连接器版型; «MoDe-clareEquation»扩展自约束, 并带有指定其是否为初始方程的标签.除了声明方程类型, 还需要对方程的内部逻辑进行描述. Modelica的方程声明中, 可以同时描述时间连续行为以及基于事件的离散行为; 而SysML中行为建模的相关元素并不具备这一能力. 为此, 基于有序参数图[4]概念, 本文将状态机图中的状态和转移引入到参数图中, 以实现离散和连续行为的统一表达. 其中«MoDiscrete»和«MoContinuous»继承自约束块, 用于区分系统的离散和连续行为. 针对离散行为, 本文定义了«MoState»和«MoAction», 分别继承自约束块中的约束属性, 用于表示系统的离散状态和状态下的行为; «MoTransition»扩展了UML的依赖元模型, 用于表示离散状态间的状态转移, 它拥有条件这个标签, 表示触发状态转移的布尔表达式.与方程不同, Modelica的算法主要以过程式的方式对模型行为进行描述. 本文在SysML中的不透明行为元类的基础上, 定义了«MoAlgorithm»版型, 以支持算法的建模.4设计与仿真模型的自动转换基于M-Design扩展包, 可以使用SysML语言对系统进行设计建模. 由于M-Design元模型与Modelica之间存在对应关系, 使得基于扩展后的SysML所建立的设计模型可以通过模型转换自动生成基于Modelica的仿真模型. 模型转换的核心是定义源模型与目标模型的元模型之间的映射734 计算机辅助设计与图形学学报第30卷规则, 通过元模型之间的映射规则, 指导模型间的自动转换.4.1映射规则的定义由于M-Design扩展包中的大部分模型元素与Modelica语言中的模型元素存在直接的对应关系, 例如, MoModel对应于模型, MoConnection对应于连接器. 对于这种元素, 可以通过定义模型映射规则, 采用模型映射的方法实现二者之间的转换. 而离散和连续行为模型的相关模型元素在Modelica语言中不存在直接对应物, 需要对其进行特殊处理.4.1.1 模型映射如前所述, M-Design/SysML与Modelica语言中的大部分元素之间存在直观的对应关系. 然而, 在描述模型映射规则时, 仅有元模型之间的对应关系还不足以完整描述具体的转换操作和实现过程, 需要定义具体的规则来指导每一个转换的实现. 本文抽象出了转换规则的模板, 并形式化地表达为F(S, O, P s, D, C, P); 其中, S是源元类的实例, O是目标元类的实例, P s是源元类实例的属性. 如果属性是基本类型(如整型、实型), 则指定目标元类的实例也拥有相同的类型; 如果属性是枚举类型, 那么需要在目标语言中构造相同的枚举类型; 如果属性是类(引用)类型, 那么需要调用该类型对应的源元类转换规则实施转换. D是源元类实例的依赖条件, 待转换的模型可能是其他模型属性, 只有当其所属模型存在转换时, 当前转换才能进行. C是约束, 表示该转换规则实施时应该满足的条件, 只有条件满足时转换规则才能实施. 约束一般分为类型约束、值约束和从属约束, 类型约束指源元类实例只能选择特定的类型, 值约束指源元类实例值的取值范围, 从属约束指源元类的实例必须是特定父类型的实例的属性.P是优先级, 表示规则的优先级. 在源元类和目标元类之间可能存在多条映射规则, 每条映射规则都有不同的依赖条件和约束, 必须根据优先级高低的顺序依次判断约束是否满足, 直到找到满足约束条件的转换规则, 如果未找到, 那么表示转换失败. 表1给出了一些映射规则的示例.表1映射规则示例S OP s D CP MoModel Model MoPart无符合Modelica的模型约束 1MoPart Component MoModel类型是MoClass, MoModel或MoBlock 1MoDeclare Equation Declare Equation MoClass 必须用于约束块 14.1.2 混合行为映射如前所述, 为了实现离散和连续行为的统一建模, 本文将状态机图的状态和转移融入参数图, 而这些模型元素与Modelica元模型之间并无直接对应关系, 因此需要特殊处理. 通过分析混合行为模型, 可以看出, 对于映射有指导意义的是初始状态(通过声明«MoDiscrete»构造型的isInitial属性来指定)和状态转移条件«MoTransition». 初始条件确定了方程式的所有初始变量定义; 状态转移条件则定义了方程式中的when语句, 当执行when 语句时, 就是离散状态发生转移时.基于这一基本思想, 本文设计针对离散和连续行为模型的映射算法, 其步骤如下:Step1. 确定初始状态, 获取参数初始值.Step2. 从该状态出发, 根据«MoTransition»构造when语句.Step3. 移动到下一状态, 初始化该状态的参数, 重复上述步骤, 直到回到初始状态.图7展示了一个弹球的混合行为模型.图7 弹球的混合行为模型这是一个经典的离散和连续行为混合的物理模型. 其中, 在above ground状态下, 小球做连续运动, 其运动情况符合由方程der(h)=v以及der(v)= g指定. 当小球撞击地面后反弹时, 小球做离散跳变, 其行为由方程v=−v来描述.基于上述算法步骤, 本文可以将上述混合行为模型转换生成Modelica模型中小球模型的方程.第4期周书华, 等: 基于SysML和Modelica的复杂机电产品系统设计与仿真集成 735其内容如下:model BouncingBallparameter Real g = 9.8;Real v(start=0);Real h(start=0.9);equationder(h)= v;der(v)= −g;when h<0 thenreinit(v, −v);end when;end BouncingBall;4.2映射的实现本文采用ATL实现基于M-Design的SysML 设计模型到Modelica仿真模型的转换. 该框架提供了模型转换语言以及相应的工具包, 其模型转换的基本思想如图8所示.图8 基于ATL的模型转换实现思路用户基于M-Design扩展包所创建的设计模型符合M-Design/SysML元模型, 是整个转换的源模型; 而基于Modelica的仿真模型符合Modelica元模型, 是转换的目标模型. 通过在M-Design元模型与Modelica元模型之间建立ATL转换规则, 则可以实现二者模型之间的转换. 而无论是源或者目标元模型, 还是ATL转换规则, 均符合ECORE 这一元元模型.在具体实现时,首先需要定义M-Design/SysML 以及Modelica的ECORE元模型.之后, 采用ATL语言建立2个元模型的对应模型元素之间的映射规则. 以下展示了从SysML 中的MoModel转化为Modelica中的模型的ATL 规则(部分)示例.rule block2model {froms: UML!Class (s.oclIsTypeOf(UML!Class) ands.hasStereotype(‘MoModel’)) tot: Modelica!Mode l (name←s.qualifiedName) …}基于这些ECORE元模型以及ATL映射规则, ATL转换引擎便可将任何基于M-Design扩展包所建立的SysML设计模型转换为Modelica仿真模型.5实例本文以储水池系统[10]为例来说明SysML设计与Modelica仿真的集成过程.储水池系统是一个经典的非特定领域的物理问题系统. 如图9所示, 该系统包括1个水源, 以及连接在一起的2个储水池. 每个储水池都有1个水深传感器和1个比例积分(proportional integral, PI)控制器, 用于将水池中的水调整到参考水平位置. 当水源用水填充第1个水池时, PI控制器根据其实际水平来调节水量流出, 流入第2个水池, 第2个水池也通过PI控制器调节其水量.采用M-Design扩展包,可以在SysML建模环境中建立该系统的设计模型. 本文使用MagicDraw 平台进行建模, 该平台是当前SysML主流建模平台之一.本文首先建立系统的顶层视图, 它由1个水源、2个储水池、2个PI控制器组成. 系统的BDD 如图10a所示, 它展示了系统的组成模块, 它们均由MoModel来表示; 模块之间的连接关系如图10b所示的IBD来描述.接着, 本文对系统中的每一个模块进行详细建模. 例如, 图11展示了PI控制器的结构模型. 该控制器包括一个输出控制和一个出错控制方程, 还包含一个PI连续控制器子模块.PI控制器的行为模型由图12所示PAR所描述, 该图详细展示了描述PI控制器行为的各种方程的定义以及方程之间的参数传递关系.基于所定义的ATL转换规则, 使用ATL引擎, 可以将上述设计模型转换为基于Modelica的仿真模型. 该模型的部分内容如下:图9 储水池系统示意图。
一种多fmu模型联合仿真推进方法及系统
一种多 FMU 模型联合仿真推进方法及系统本文介绍了一种多 FMU 模型联合仿真的推进方法及系统,该方法基于功能样机接口规范,通过 Simulink 模型转换为 Modelica 模型,并在 Modelica 仿真平台上调用 FMU 接口实现多领域建模仿真。
1. 背景介绍多领域建模仿真是指在不同领域(如机械、电气、控制等)之间进行模型交流和联合仿真,以实现复杂的系统设计和优化。
在这种情况下,不同领域的模型需要通过某种方式进行交互和连接。
FMU (Functional Mock-up Unit)是一种被广泛使用的功能样机接口规范,它定义了模型之间的接口和数据交换格式,使得不同的模型可以在同一个仿真平台上进行联合仿真。
2. Simulink 转 Modelica 模型Simulink 是 Matlab 中的一种图形化仿真工具,广泛应用于控制系统设计和信号处理等领域。
Modelica 是一种基于方程的仿真语言,适用于多领域建模和仿真。
为了实现多领域建模仿真,需要将Simulink 模型转换为 Modelica 模型。
转换过程包括模型结构的转换和模型参数的映射。
通过这种方式,可以将 Simulink 模型中的方程和数据传递给 Modelica 模型,以便在 Modelica 仿真平台上进行联合仿真。
3. FMU 接口调用在 Modelica 仿真平台上,可以通过调用 FMU 接口实现不同模型之间的数据交换和控制。
FMU 接口提供了一组标准的数据结构和函数,用于在模型之间传递和处理数据。
调用 FMU 接口需要指定 FMU 类型和 FMU ID,不同类型的 FMU 适用于不同的数据交换场景。
通过在 Modelica 模型中嵌入 FMU 接口,可以实现与 Simulink 模型的联合仿真,从而实现多领域建模仿真。
4. 系统实现本发明提出了一种多 FMU 模型联合仿真的推进方法及系统,该系统包括以下组件:Simulink 模型转换组件、Modelica 模型构建组件、FMU 接口调用组件和仿真控制组件。
MATLABSimulink仿真在模数转换器教学中的应用共5页word资料
MATLABSimulink仿真在模数转换器教学中的应用Application of MATLAB/Simulink simulation in the teaching of ADCChen Nan, Long Fei(Guizhou university for nationalities information engineering institute, Guiyang, Guizhou 550025, China)Abstract: In the teaching of analog-to-digital converter (ADC), the students rely only on theoretical study, it is difficult to link with the actual ADC structure and the application. Taking the widely used pipelined ADC as an example, this paper discusses the application of MATLAB/Simulink in the teaching of ADC. In the Simulink environment, the behavior model of pipelined ADC is built, and the simulation results are presented, which makes the students understand the structure and working principle of this type of ADC, and the teaching effect is improved.0 引言模数转换器(Analog-to-Digital Converter,ADC)是将模拟信号转换成数字信号的电子系统。
simulink逆变器交流直流转换
simulink逆变器交流直流转换
在Simulink 中设计逆变器进行交流到直流的转换可以通过以下步骤实现:
1. 打开Simulink 并创建一个新模型。
2. 在Simulink 库浏览器中,搜索并拖动"AC Voltage Source"(交流电压源)组件到模型中。
此组件将模拟来自交流电网的输入电压。
3. 从库浏览器中找到并拖动"Inverter"(逆变器)组件到模型中。
该组件用于将输入的交流电压转换为直流电压。
4. 从库浏览器中找到并拖动"DC Voltage Source"(直流电压源)组件到模型中。
此组件表示逆变器的输出直流电压。
5. 连接组件:将交流电压源的输出连接到逆变器的输入端口,将逆变器的输出连接到直流电压源的输入端口。
6. 配置逆变器:双击逆变器组件以打开其参数设置。
根据实际需求选择逆变器的类型、控制方式等参数。
7. 设置仿真参数:点击模型上方的"Simulation"(仿真)选项卡,在弹出的对话框中设置仿真时间、步长等参数。
8. 运行模型:点击Simulink 工具栏上的"运行" 按钮(绿色三角形)以启动仿真。
9. 查看结果:仿真完成后,可以通过绘图工具或查看仿真输出数据来评估逆变器的性能。
需要注意的是,上述步骤仅提供了基本的示例,实际应用中可能需要更多的组件和参数配置来实现特定的逆变器功能。
根据具体的需求和应用场景,可能需要进一步订制和调整。
基于SysML的嵌入式软件系统建模与验证方法研究
基于SysML的嵌入式软件系统建模与验证方法研究仵林博;陈小红;彭艳红;聂长海【摘要】嵌入式软件系统由于广泛采用分布式异构网络,使得软件系统复杂性呈现几何增长,因此需要在系统设计的论证阶段,对系统需求和设计方案进行正确性和充分性验证,进而发现系统性设计缺陷,避免可能引发或导致的严重系统性问题.为此,提出一种基于SysML的嵌入式软件系统结构与行为需求建模方法.通过对嵌入式软件系统的结构和逻辑行为进行层次化建模,并利用Modelica离散与连续融合的仿真特点,在系统需求论证阶段,基于建立的仿真模型对系统关键功能指标进行仿真,结果表明,该方法对系统需求论证具有可行性.【期刊名称】《计算机工程》【年(卷),期】2019(045)001【总页数】8页(P1-8)【关键词】SysML模型;系统建模;Modelica仿真;系统结构;嵌入式系统【作者】仵林博;陈小红;彭艳红;聂长海【作者单位】中国工程物理研究院计算机应用研究所,四川绵阳621999;华东师范大学计算机科学与软件工程学院,上海200062;中国工程物理研究院计算机应用研究所,四川绵阳621999;南京大学计算机科学与技术系,南京210023【正文语种】中文【中图分类】TP3910 概述随着网络和通信技术的快速发展,嵌入式系统从以单片微处理器为核心的简单嵌入式系统,逐渐发展成为通过外部总线、高速或低速网络连接起来的分布式系统[1],该系统称为网络化嵌入式软件系统。
与传统的软件系统相比,网络化嵌入式软件系统通常由很多节点组成,采用分布式网络互联,有些系统甚至内嵌在一个更大的系统中,形成规模更加庞大的网络结构。
随着系统规模的增加,系统交互复杂度越来越高,系统设计时不仅考虑内部节点之间存在各种交互行为,还要通过接口与周围环境中的节点进行交互通信,特别是不同节点的并发行为,这些行为之间需要同步完成特定功能。
从上述特点可以看出,网络化嵌入式软件系统在系统设计前期,即需求论证阶段,缺乏一套系统的建模与验证方法,需通过对嵌入式软件系统进行建模来验证系统功能正确性和业务逻辑一致性。
ModelicaVsSimulink
EGR-Cooler Turbine EGR Valve Engine
Injection
Compressor
Intercooler
Mixer Fuel
n
Was ist grundlegend anders?
— Spezielles Element connector — Unterscheidung von —Potential-Variablen —Fluss-Variablen — Physikalische Schnittstellen werden zusammengefügt — Gleichungen haben keine „Richtung“
Notwendige Zusätze der Entwicklungsumgebung
— Debugging möglich — Behandlung algebraischer Schleifen
n
Erwünschte Zusätze: „Nice to have“
— Flexible Bedienelemente möglich — Anschauliche Struktur: „selbstdokumentierend“ — Intuitive Bedienbarkeit
Matlab/Simulink: Signalorientierter Ansatz
n n n
Institut für Regelungstechnik
RWTH Aachen
Exhaust pipe
Angelehnt an Wirkungsplan Alle Signale gleichwertig Manuelle Umsetzung der Gleichungen notwendig „Richtung“ der Gleichung ist durch Vorgabe der Einund Ausgangsgrößen fest vorgegeben
MWorks机械多体建模
MWorks机械多体可视化建模工具 三维装配模型到Modelica 多体模型自动转换苏州同元软控信息技术有限公司2011年11月目录1. 概述 (1)2. 功能特征 (2)3. 使用前的准备 (3)3.1 安装Mechanics组件 (3)3.2 准备模型输入文件 (4)4. 模型转换 (4)4.1 转换操作流程 (4)4.2 Modelica结果文件说明 (8)4.3 组件布局和连接布线 (9)4.4 子系统封装与外部连接器 (10)4.5 平面环与切割铰标定 (10)5. 对装配模型的约定 (11)5.1 使用支持的运动副进行装配 (12)5.2 严格按照机构运动简图进行装配 (12)5.3 定义连接时所选的多组参照应对应于两个零件 (15)5.4 静装配不应出现欠约束 (15)5.5 在XY平面内进行装配 (17)6. 模型转换实例 (18)6.1 曲柄滑块(Crank_slider_mechanism) (18)6.2 双滑块机构(Double_slider) (19)6.3 单缸内燃机(Engine) (20)6.4 液压挖掘机(Hydraulic_grab) (21)6.5 手动压水机(Manual_pump) (22)6.6 多连杆机构(Multi_link_mechanism) (23)6.7 机械手(Robot) (24)6.8 缝纫踏板机构(sewing_machine_pedal) (25)6.9 六杆机构(Six_bar_mechanism) (26)6.10 Stephenson机构(Stephenson_mechanism) (27)6.11 六自由度并联机构 (28)7. 常见问题FAQ (30)1.概述机械系统的三维装配模型记录了装配体设计参数、装配层次和装配信息,支持从概念设计到零件设计阶段的装配仿真。
但是,模型中缺少对系统的动态特性描述,不能用于动力学特性分析。
simulink操作技巧
simulink操作技巧Simulink操作技巧Simulink是一种基于模块化的图形化建模工具,广泛应用于系统仿真和控制设计领域。
作为一种功能强大的工具,Simulink提供了许多操作技巧,使用户能够更高效地进行建模和仿真。
本文将介绍一些常用的Simulink操作技巧,帮助读者更好地利用这一工具。
1. 使用子系统进行模块化设计子系统是Simulink中的一种重要概念,它可以将复杂的系统模型划分为多个模块,使得模型更加结构化和易于理解。
通过使用子系统,用户可以将模型按照功能进行分组,提高模型的可维护性和重用性。
在设计模型时,可以使用右键菜单中的“Subsystem”选项来创建子系统,并通过拖拽和连接模块来构建子系统的内部结构。
2. 使用模块复制功能快速搭建模型Simulink提供了模块复制功能,可以快速复制一个或多个模块,并将其粘贴到模型中的其他位置。
使用模块复制功能可以有效地减少模型构建的时间,并且可以确保复制的模块具有相同的参数和连接关系。
在复制模块时,可以使用快捷键Ctrl+C和Ctrl+V,或者通过右键菜单中的“Copy”和“Paste”选项来实现。
3. 使用信号线标签和颜色进行信号识别在复杂的模型中,信号线的标签和颜色可以帮助用户更好地识别和理解信号的传递和处理过程。
Simulink提供了信号线标签和颜色设置功能,用户可以通过右键菜单中的“Properties”选项来编辑信号线的属性。
在设置信号线标签时,可以使用清晰明了的命名规则,使得信号线的作用和含义一目了然;而通过设置不同的颜色,可以将不同类型的信号区分开来,提高模型的可读性。
4. 使用模型参考进行模块复用模型参考是Simulink中的一种高级技术,可以实现模块的复用和分布式设计。
通过模型参考,用户可以将一个模型作为子系统嵌入到另一个模型中,并在不同的模型之间进行信号传递和数据共享。
使用模型参考可以提高模型的可维护性和重用性,减少模型重复建设的工作量。
MBD联合仿真研究及在FADEC开发中的应用
MBD联合仿真研究及在FADEC开发中的应用摘要:复杂系统和软件研制过程中,涉及到不同部件、不同子系统以及不同多学科的信息交互和综合验证,仿真是解决相关问题的重要技术手段。
结合航空发动机数控系统研制的需要,研究基于模型开发中的联合仿真方法、标准及其在航空发动机FADEC控制软件开发中的应用。
通过自动代码生成、模型封装和模型转换等技术实现Simulink和SCADE之间的联合仿真。
研究FMI标准及其主要设计思想和方法,并基于FMI标准完成SCADE和INCHRON之间的联合仿真。
仿真实验结果证明了这两种联合仿真方法的可行性,研究的联合仿真方法和提出的联合仿真技术,对复杂系统开发中的综合仿真具有一定的工程指导和使用价值。
关键词:MBD;仿真;FADEC;模型转换;FMI;SCADE0 引言近年来,MBSE (Model-Based System Engineering,基于模型的系统工程)技术在航空、航天和轨道交通等复杂系统研制中得到越来越多的应用[1][2]。
MBSE是一门以数字模型逐步代替文档成为信息载体,仿真方法逐步代替实物试验手段,以模型支撑系统研制全过程的方法[3]。
对复杂系统进行虚拟综合,开展系统架构、动态行为和功能的仿真,是系统设计和验证阶段的关键环节。
复杂系统通常包含多个子系统,存在不同层次、不同类型的模型,包括系统架构模型、物理模型、功能模型等,如何将仿真模型同复杂系统有效地集成在一起,并进行高效的仿真试验已成为目前复杂系统建模技术的主要议题[4]。
在软件子系统的开发中,基于模型的软件开发(MBD, Model-Based Development)技术日渐成熟,在航空机载安全关键软件领域,模型在软件需求分析、软件设计和验证等众多环节都得到广泛的应用[5],基于模型的软件开发已成为航空发动机FADEC控制软件的发展趋势[6]。
基于模型开发中的联合仿真涉及不同平台之间的信息交换,目前,在跨平台和多学科的模型联合仿真方面,主要有两种途径,一种是特定建模工具之间的联合仿真,即两个(或多个)建模工具开发相互支持的接口或适配器,以进行模型信息的导入或输出,实现不同平台间的模型信息交换和仿真;另一种是基于通用标准,不依赖于特定工具的模型交换和联合仿真。
simulink转化为model reference
simulink转化为model reference Simulink转化为Model Reference:降低复杂性,提高模型可重用性的最佳实践1. 引言(150-200字)在系统建模和仿真领域,Simulink是一款强大的工具,能够帮助工程师们更好地设计和验证复杂系统。
Simulink的一个重要特性是可以将模型分解为多个子系统,这在大型项目和多人合作中非常有用。
在这篇文章中,我们将重点关注如何使用Simulink的Model Reference功能,进一步提高模型的可重用性和降低复杂性。
2. 理解Model Reference(200-300字)Model Reference是Simulink中的一种模块化设计方法,允许用户将模型分解为多个可重用的子模型。
这些子模型被称为模型引用,每一个模型引用都是一个相对独立的实体,可以通过指定输入、输出和参数来定义其功能。
模型引用可以代表物理组件、算法或任何需要重复使用的模块。
3. Model Reference优势(300-400字)使用Model Reference具有以下优势:- 模块化设计:通过将系统拆分为多个模型引用,可以将关注点放在每个子系统上,使得设计更加集中而易于管理。
- 可重用性:模型引用可以在不同的项目中重复使用,从而节省了开发时间和资源。
- 分级仿真:每个模型引用可独立进行仿真测试,然后将其集成到更大的系统中。
- 高效的软件开发:不同的开发人员可以并行地开发和测试各个模型引用,减少了协作过程的复杂性。
- 高度自定义:模型引用可以具有多个变体,以满足不同项目或系统规格要求。
4. Simulink中创建Model Reference(400-600字)创建Model Reference的关键步骤如下:- 步骤一:创建模型引用库。
在Simulink中选择"Model Reference",然后选择"Model Reference Library"。
simulink极性转换模块设计
simulink极性转换模块设计
Simulink中的极性转换模块可以用于将信号的极性进行转换,即将正极性信号转换为负极性信号或反之。
这个模块可以应用在很多电路设计中,特别是信号处理和控制系统中。
下面是极性转换模块的设计步骤:
1. 打开Simulink软件,在库浏览器中找到Math Operations库,然后拖动Sum模块到模型窗口中。
2. 在库浏览器中找到Sources库,然后拖动Step模块到模型窗口中。
3. 将Step模块的输出信号连接到Sum模块的正输入端(即+号端)。
4. 在库浏览器中找到Gain模块,然后拖动到模型窗口中。
将Gain模块的输出信号连接到Sum模块的负输入端(即-号端)。
5. 双击Gain模块,设置其增益为-1。
6. 在库浏览器中找到Scope模块,然后拖动到模型窗口中。
将Sum模块的输出信号连接到Scope模块的输入端。
7. 运行仿真,即可在Scope窗口中观察到信号极性的转换。
通过上述步骤,您可以实现简单的极性转换的功能。
需要注意的是,极性转换模块的具体设计方法还要根据具体的应用场景来进行修改。
simulink中convert的用法
simulink中convert的用法Simulink 中 Convert 的用法在 Simulink 这个强大的建模与仿真环境中,Convert 这个功能起着至关重要的作用。
它能够帮助我们在不同的数据类型、信号格式和数值表示之间进行转换,从而使得模型的构建和优化更加灵活和高效。
首先,我们来了解一下为什么在 Simulink 中需要进行转换。
在实际的工程应用中,不同的模块可能需要不同的数据类型来保证计算的准确性和效率。
比如,某些控制算法可能需要整数类型的数据来减少计算量,而传感器采集到的数据可能是浮点数类型。
这时候,就需要使用 Convert 来实现数据类型的转换,以确保各个模块之间能够正常地交互和协同工作。
Simulink 中的 Convert 功能可以在多个层面上进行操作。
在信号层面,它可以将输入信号从一种数据类型转换为另一种数据类型。
例如,将一个双精度浮点数信号转换为整数信号。
这在处理模拟信号到数字信号的转换,或者与特定硬件接口进行交互时非常有用。
在模块参数层面,Convert 可以调整模块的输入和输出参数的数据类型。
比如说,一个乘法模块的输入原本是整数,但是为了适应新的计算需求,我们可以通过 Convert 将其转换为浮点数。
接下来,让我们具体看看如何在 Simulink 中使用 Convert 功能。
在Simulink 的库浏览器中,我们可以找到专门用于转换的模块,如 DataType Conversion 模块。
将这个模块添加到模型中后,通过设置其参数,我们可以指定输入和输出的数据类型。
例如,如果我们要将一个输入为双精度浮点数的信号转换为 16 位整数信号,我们可以在 Data Type Conversion 模块的参数设置中选择“Integer”作为输出数据类型,并指定“16-bit signed”作为整数的具体格式。
除了简单的数据类型转换,Convert 还可以处理复杂的数据结构转换。
Simulink模型转代码及集成方式(Auto.mdl)
Simulink模型转代码及集成方式一、必要文档的介绍:1、存在Auto_Var_Read.xlsx表格、initfilemaker.m文件、testinit.m文件。
Auto_Var_Read.xlsx表格:用于存放模型中需要用到的数据的初始化大小、格式以及所代表的内容。
initfilemaker.m文件:读取表格中的数据,并生成“testinit.m文件”,并运行“testinit.m 文件”。
testinit.m文件:保存模型中使用到的数据(涉及数据的大小及类型等)。
2、Auto_Var_Read.xlsx表格:“Calibratiables表”的内容是一次性给入的,代码集成之后该数据内容不可更改。
“Run_timeV表”的数据只是初始化给入的,代码集成之后该数据是可以更改的。
“Constants表”的内容代表在模型中是常量,也是集成后数据大小不可改。
二、具体的一些操作介绍:(一)、变量的读入及生成方式:1、双击打开Matalab,打开到目标文件所在位置,如图1所示两处都可以实现。
图12、双击打开“initfilemaker.m”,并运行该文件。
当Command Window出现“ans=1”时,代表初始化完成。
参考图2、3、4、5所示。
(注:若表格的名字变为“Auto_Var_Read1.3.xlsx”,则相应的修改“initfilemaker.m”中代码:Auto_Var_Read.xlsx换成Auto_Var_Read1.3.xlsx。
)图2图3图4图5(二)、Simulink中现有模型一般介绍:1、选择当前关心的模型“Auto.mdl”,并双击打开,如图6所示。
图62、如图7所示,该模型含有12个子模块。
图73、如图8所示,拿子模块Blower_out为例,图中Blower_Normal_Flag是全局变量,而FDEF_MODE是标定量。
不同之处在于框图的样式。
图84、具体的数据类型可以查看testinit.m,也可以在Command Window下,输入变量名回车。
simulink转换为matlab代码
simulink转换为matlab代码
Simulink转换为MATLAB代码
Simulink是一种用于模拟和仿真各种机械系统的建模和仿真软件。
它支持多种不同的仿真工具,如状态空间,传递函数,时域仿真,非线性系统和控制系统。
在很多应用场景中,Simulink模型可能非常复杂,导致仿真变得很慢,而且很难控制。
因此,将Simulink转换为MATLAB代码可以显著提高系统的执行效率,并允许用户对其进行更多的控制、调试和研究。
MATLAB有一种功能叫做“Simulink Coder”,它可以将Simulink 模型转换为C和C++代码,从而减少系统执行时间。
首先,您需要在Simulink模型中定义或添加一些输入和输出变量,以及一些必要的参数。
然后,点击Simulink中的“Code Generation”工具,其中包含一个名为“Simulink Coder”的子工具集,可以帮助您将模型转换为C或C++代码。
然后,您可以使用“Simulink Coder”来指定模型的参数,隔离输入,输出变量,以及生成的代码文件。
一旦完成此操作,Simulink Coder将生成一个包含模型的C或C++代码文件,您可以在MATLAB中使用。
因此,只需简单地将Simulink模型导出到MATLAB,便可以使用MATLAB代码运行模型。
尽管有一些限制,但这种转换仍然是一种非
常有效的工具,可以帮助您更快地模拟和测试您的系统。
Simulink入门教程
要构建模型,可以使用 Simulink®Editor 和 Library Browser。
启动MATLAB 软件启动 Simulink 之前,请先启动 MATLAB®。
请参阅启动和关闭(MATLAB)。
配置MATLAB 以启动Simulink您在 MATLAB 会话中打开第一个模型时需要的时间比打开后续模型长,因为默认情况下,MATLAB 会在打开第一个模型时启动 Simulink。
这种即时启动 Simulink 的方法可以缩短 MATLAB 启动时间,避免不必要的系统内存占用。
要快速打开第一个模型,您可以配置 MATLAB,在它启动时同时启动 Simulink。
要启动 Simulink 而不打开模型或 Library Browser,请使用start_simulink。
根据 MATLAB 的启动方式,恰当使用此命令:∙在 MATLAB startup.m 文件中∙在操作系统命令行中,使用matlab 命令和-r 开关例如,要在运行 Microsoft®Windows®操作系统的计算机上启动 MATLAB 时启动 Simulink,请创建具有以下目标的桌面快捷方式:matlabroot\bin\win64\matlab.exe -r start_simulink在 Macintosh 和Linux®计算机上,可在启动 MATLAB 时使用以下命令启动Simulink 软件:matlab -r start_simulink打开Simulink Editor要打开 Simulink Editor,您可以:∙创建一个模型。
在 MATLAB 的Home选项卡上,点击Simulink并选择一个模型模板。
或者,如果您已经打开了 Library Browser,请点击New Model按钮。
有关创建模型的其他方法,请参阅创建模型。
∙打开一个现有模型。
要打开最近使用的模型,请在 MATLAB Home选项卡上点击Simulink。
Simulink模型到Modelica模型转换技术
Simulink模型到Modelica模型转换技术董政;丁建完【摘要】针对Simulink模型重用到更高阶的Modelica平台上的需求,分析Simulink模型的数学本质和代码表达,以及Modelica对外部函数和外部类的支持,重用Simulink模型转换生成的S-function目标C代码,实现Simulink模型到Modelica模型转换.【期刊名称】《计算机辅助工程》【年(卷),期】2016(025)005【总页数】5页(P71-75)【关键词】Simulink;S-function;Modelica;模型转换【作者】董政;丁建完【作者单位】华中科技大学国家CAD支撑软件工程技术研究中心,武汉430074;华中科技大学国家CAD支撑软件工程技术研究中心,武汉430074【正文语种】中文【中图分类】TP391.9随着数字化功能样机技术和仿真技术的发展,近几十年来涌现出许多成熟的建模仿真分析工具,并广泛应用于机械、电子、控制等领域中,使得对集机械、电子、液压、控制等多个学科领域子系统于一体的复杂产品的整体系统进行分析成为可能.多年以来,Simulink以其基本模块的易用性和通用性,被广泛应用于控制系统的建模.同时,为满足物理系统建模,MATLAB官方和第三方均提供多种扩展工具模块,但是实际使用时,扩展工具模块往往难以满足使用需求.越来越多的使用者发现针对复杂物理系统,Simulink存在着建模难度大并且耗费时间多的问题.欧洲学者针对复杂物理系统统一建模,提出多领域统一建模语言——Modelica语言,实现对复杂产品整体统一建模分析,并使之成为复杂系统建模领域的标准.目前,Modelica语言已有较大的发展,针对其开发的标准模型库更是迅猛增长,已覆盖机械、液压、气压、电控、热力和电磁等多个领域,并在欧美汽车、能源、动力、机电、航空和航天等各行业获得成功应用.[1]虽然Modelica的应用已推进复杂物理系统的建模和仿真发展,但是控制系统工程师依然习惯利用Simulink进行控制系统的建模和仿真,而其他设计工程师使用Modelica建立物理系统模型.长期以来,大量的知识已经以Simulink模型的方式累积下来,如果把这些模型用Modelica重写,十分耗费时间和精力.基于Modelica语言在多领域建模和仿真中的广泛应用以及未来发展趋势,可以考虑将控制系统Simulink模型转换成Modelica模型,使系统模型在统一的Modelica平台下进行仿真.有学者提出一种“模块映射”方案,通过在Modelica平台中建立与Simulink基本模块对应的模型库元件,并按照Simulink模型模块和连接关系,用Modelica元件代替Simulink模块并复现连接关系,实现模型转换.[2-3]这种方案依赖于专门定制的Modelica模型库元件.然而,部分Simulink基本模块,如积分模块等,有多种变形模式,要设计一种Modelica元件与其对应的难度很大.对此,本文提出一种基于Simulink模型代码生成和Modelica外部类和函数接口实现Simulink模型到Modelica模型转换的新方案.1.1 Simulink模型描述Simulink模型中包含时间t,输入向量u,状态向量x和输出向量y.状态向量可能包含连续状态xc,离散状态xd或者两者的混合状态.由于Simulink为因果关系建模,变量之间关系以显式的赋值语句表示,其数学关系为Simulink通常用模块和连接关系表达模型.通过MATLAB提供的代码生成工具RTW(Real-Time Workshop)把模型转换成S-Function目标C代码后,Simulink 模型中的数学描述就变成代码描述.Simulink模型转换成C代码后,Simulink模型原有的所有变量信息都保存在SimStruct实例中,SimStruct是S-Function目标C代码中定义的类,代码中还定义用于对SimStruct操作的接口函数. Simulink求解器通过对接口函数的调用,对用C代码描述的Simulink模型进行仿真,仿真流程见图1,仿真主要包含初始化和循环求解2个阶段.初始化阶段由mdlInitializeSizes,mdlStart和mdlInitializeSampleTimes函数实现采样时间、状态向量、输入向量的初始化.在循环求解阶段中,modelOutputs函数用C代码的方式描述关系式y:=fo(t,xc,xd,u)并负责计算输出向量;mdlUpdate函数描述关系式xd:=fu(t,xc,xd,u),负责更新离散状态向量;modelDerivatives函数描述关系式,负责计算连续状态向量导数;求解器推进仿真时间并循环调用接口函数,直至仿真结束由mdlTerminate函数终结仿真过程.1.2 Modelica模型描述与Simulink不同,Modelica为非因果关系建模[4],但Modelica模型中也包含Simulink模型中的所有变量,只是变量之间的关系由方程表示,其数学关系可用式(2)描述(变量名用大写为以示区分).式(1)实际上是式(2)的特殊形式,赋值语句可以很简单地转换成方程,只需用Modelica语言按照式(3)的形式描述模型,在数学描述上就能将Simulink模型转换成Modelica模型.为能用Modelica语言描述式(3),需调用定义在S-Function目标C代码中的fo,fd和fu接口函数,并使用访问函数(定义对象SimStruct* S,见表1),以获取和xd变量值.Modelica语言对外部函数和外部类的支持使这一设想成为可能.1.3 Modelica外部函数函数用以实现特定的计算任务,是Modelica实现过程式建模的重要工具.Modelica标准库中已定义大量的内置函数,比如abs(x)即是对x求绝对值的函数.内置函数可以无须定义直接调用.除使用内置函数外,Modelica语言支持自定义函数.自定义函数是以“function”关键字定义的受限类,遵循Modelica类定义的语法形式.函数的输入和输出形参以变量声明的形式定义,并有“input”或“output”前缀,算法区域(algorithm)描述输入输出的关系.定义输入为x,输出y为x+1的函数my_add1为function my_add1input Real x;output Real y;algorithmy := x+1;end my_add1;除调用Modelica语言编写的函数外,Modelica还支持调用其他语言(例如C语言)编写的函数,称为外部函数.外部函数没有算法区域,取而代之的是外部函数接口声明语句“external”,用以表示调用的是外部函数,见图2.图2中新定义的my_add1函数调用定义在外部C代码中的add1函数,同样可实现my_add1函数功能.1.4 Modelica外部类类是Modelica语言的基本结构元素,是构成Modelica模型的基本单元,类可以包含3种类型:变量、方程和成员类.变量表示类的属性,通常代表某个物理量;方程指定类的行为,表达变量之间的数值约束关系.[1]通常,类定义在Modelica 内部,类的变量、方程和成员类均以Modelica语言描述,对内是可见的. Modelica同时支持外部类.外部类一般由C语言定义,对于Modelica相当于一个“黑箱”,只暴露其操作的接口,内部结构完全封闭.外部函数协作完成某一任务时,这些外部函数之间需要传递一些信息的内部存储,外部类的实例就可以表示这种内部存储.在Modelica语言中,外部类同样以class作为关键字,但加上extends ExternalObject关键字修饰,表明从ExternalObject派生,并且仅有3个函数constructor和destructor,分别用于构造和销毁外部实例.外部类实例通常为一个指向某类实例的指针,见图3.定义SimStructPrt外部类并且定义类构造函数.构造函数由外部函数实现,SimStructPrt实例即为指向SimStruct实例的指针.对外部函数和外部类的调用,使得以往用C语言描述的类和算法可以在Modelica 中继续使用,可极大地拓展Modelica的使用范围,并为Simulink模型到Modelica模型提供理论支持.2.1 实现过程Simulink模型通过RTW转换为S-Function目标C代码,代码中定义SimStruct 类和对类实例进行操作的函数.这些类和函数将作为外部类和外部函数在Modelica 中调用.实现过程见图4.参照Simulink对S-Function目标C代码的调用仿真全过程,在Modelica平台下,改由调用外部类和外部函数实现整个过程.初始化阶段,定义指向SimStruct实例地址的外部类对象S,设置输入变量in[],输出变量out[],连续状态变量xc[]和离散状态变量xd[].循环求解过程时,这些变量通过调用外部函数并访问外部类数据获得对应的变量数值.由于脱离Simulink求解器,仿真时间改由Modelica内部时间time推进,状态变量的求解也由Modelica完成,可选用欧拉法或者其他数值算法,“新的”状态变量更新到外部类实例中,进入下一循环求解流程.2.2 实例验证以摩擦离合器模型为例,建立Simulink模型,见图5.该模型以发动机转矩Engine Torque和离合器踏板受力Clutch Pedal为输入,以主动轴转速ωe和从动轴转速ωv为输出,模拟离合器离合过程.仿真结果见图6a.进入模型仿真参数(Configuration Parametsers)选项,点击Real-Time Workshop,选择系统目标语言编译器文件为rtwsfcn.tlc,RTW会在rtwsfcn.tlc的控制下生成S-Function目标C代码.Modelica平台选用MWorks,将生成的C代码复制到MWorks工作目录下,新建Modelica模型并定义变量,见表2.按照实现流程,编写Modelica文件对外部类及外部对象进行调用.使用MWorks对模型进行仿真,结果见图6b.仿真结果与Simulink仿真结果高度吻合,表明离合器Simulink模型以S-Function目标C代码为桥梁,成功转换为Modelica平台可用的模型.通过对S-function目标C代码分析和对Modelica外部类及外部函数的研究,实现Simulink模型到Modelica模型的转换,使得Simulink模型可以在Modelica 平台下进行仿真.模型转换重用Simulink模型,可以将多年来累积在Simulink模型中的知识重用到更高阶的Modelica平台上,提高工作效率.由于无须依赖定制的模型库,实施起来方便高效,并且由Simulink自带的代码生成工具生成C代码,代码稳定可靠,鲁棒性高.【相关文献】[1] 赵建军, 丁建完, 周凡利, 等. Modelica语言及其多领域统一建模与仿真机理[J]. 系统仿真学报, 2006, 18(S2): 570-573. DOI: 10.3969/j.issn.1004-731X.2006.z2.162.ZHAO J J, DING J W, ZHOU F L, et al. Modelica and its mechanism of multi-domain unified modeling and simulation[J]. Journal of System Simulation, 2006, 18(S2): 570-573. DOI:10.3969/j.issn.1004-731X.2006.z2.162.[2] DEMPSEY M. Automatic translation of Simulink models into Modelica using Simelica and the AdvancedBlocks library[C]//Proceedings of the 3rd International Modelica Conference. Linköping, 2003.[3] 王岳. 多领域建模仿真平台MWorks的外接工具集成研究[D]. 武汉:华中科技大学, 2009.[4] van SCHIJNDEL A W M. A review of the application of SimuLink S-functions to multi domain modelling and building simulation[J]. Journal of Building Performance Simulation, 2014, 7(3): 165-178. DOI: 10.1080/19401493.2013.804122.。
simulink及模型转换
选取模块、放大或缩小模块、改变模块名字
双击某一模块或在模块上单击鼠标右键,选择Block Parameters可以对参数进行设置,选择Block Properties可以设 置和查看模块的特性。 模块的连线:移动鼠标到某一模块的输出端,鼠标的箭头会变成 十字形光标,按住鼠标左键移动鼠标到另一模块的输入端,当十 字光标出现重影时,释放左键即可。P115
最大步长=(停止时间-起始时间)/50,若仿真时间很长,有可能 会出现失根,这时可根据需要设置较小的步长。
输出选项output options refined output 细化输出 produce additional 产生附加输出 produce specified output only只产生指定输出
Digital Clock From File
按指定速率输出当前仿真时间,用于离 散系统仿真 从文件读数据
Random Number
高斯分布的随机信号
平均分布的随机信号 带限白噪声
Uniform Random Number Band-Limited White Noise
3仿真模型参数的设置
建立模型之后,就可以对模型进行动态仿真,但在仿真前 必须对模型的仿真参数进行相应的设置。 1、输入信号的参数设置 双击信号源对象,改变其可设置值 例如,阶跃信号的可设置参数有 Step time 阶跃时间 Initial value 初值 Final value 终值 2、示波器参数的设置 双击示波器,则出现示波器窗口,用于显示波形; 在示波器上端可设置属性,包括显示时间,采样周期等。 3、其他环节的设置 与输入信号的设置一样,通过双击对象弹出属性窗口, 设置不同的参数。
1、简单or跳出属性窗口
Signal Generator模块的位置在模型库的simulink的source下, Scope模块的位置在模型库的simulink的sinks下。
simulink中数据类型转换
simulink中数据类型转换Simulink是一种用于建模、仿真和分析动态系统的工具,它广泛应用于工程领域。
在Simulink中,数据类型转换是一项重要的操作,它可以将信号从一种数据类型转换为另一种数据类型,以满足系统的需求。
Simulink中的数据类型包括整数、浮点数、布尔值等。
不同的数据类型在计算机内部以不同的方式存储和表示。
当我们在建模过程中需要将信号从一种数据类型转换为另一种数据类型时,就需要使用数据类型转换模块。
Simulink提供了多种数据类型转换模块,包括数据类型转换、数据类型转换1、数据类型转换2等。
这些模块可以在模型中直接拖拽使用,并通过设置参数来指定要转换的数据类型。
数据类型转换模块的输入端口连接着需要转换数据类型的信号,输出端口连接着转换后的信号。
在模块的参数设置中,我们可以选择要转换的数据类型,如将整数转换为浮点数、将浮点数转换为整数等。
数据类型转换模块还提供了一些额外的参数,如舍入模式、溢出模式等。
这些参数可以进一步调整转换过程中的精度和准确性。
在Simulink中,数据类型转换模块的使用非常灵活。
我们可以将数据类型转换模块放置在模型的任意位置,以满足系统的需求。
例如,在信号处理系统中,我们可以使用数据类型转换模块将输入信号从浮点数转换为整数,以减少计算量和存储空间。
此外,Simulink还提供了一些其他的数据类型转换工具,如数据类型转换函数、数据类型转换工具箱等。
这些工具可以进一步扩展Simulink的数据类型转换功能,以满足更复杂的系统需求。
总之,Simulink中的数据类型转换是一项重要的操作,它可以将信号从一种数据类型转换为另一种数据类型,以满足系统的需求。
Simulink提供了多种数据类型转换模块和工具,使得数据类型转换变得简单和灵活。
通过合理使用数据类型转换,我们可以优化系统的性能和效率。
simulink模型引用
simulink模型引用
Simulink模型引用是指一个Simulink模型可以通过引用另一个Simulink模型来实现模块化设计和复用。
这种方法可以使模型的设计更加灵活和可维护,同时也可以减少重复的工作。
在Simulink中,一个模型可以作为一个子系统被引用到另一个模型中。
通过这种方式,可以将一个复杂的系统分解成多个子系统,每个子系统相对独立,易于维护和修改。
同时,如果多个模型需要共享某些子系统,可以通过模型引用来实现代码的复用,从而减少重复编写代码的工作量。
在使用模型引用时,需要注意一些细节。
首先,被引用的模型应该是独立的,不依赖于外部的变量或参数。
其次,在引用模型时需要指定模型的路径,以便正确地加载和链接模型。
最后,需要注意模型引用可能会带来一些性能开销,因为需要在运行时加载和链接被引用的模型。
综上所述,Simulink模型引用是一种有效的模块化设计和复用方法,可以大大提高模型的可维护性和可重用性。
- 1 -。
simulink 数字信号转物理
simulink 数字信号转物理
Simulink是一个功能强大的仿真和建模工具,它支持多种信号类型,包括数字信号和物理信号。
对于数字信号转物理信号的过程,可以使用Simulink中的信号转换块来完成。
以下是一些可能的方法:
1. 数字信号转模拟信号
如果数字信号需要转换为模拟信号,可以使用Simulink中的数字到模拟转换块。
该块可以将数字信号按照一定的采样频率转换为模拟信号。
2. 数字信号转电压或电流信号
如果数字信号需要转换为电压或电流信号,可以使用Simulink 中的数字到电压或电流转换块。
这些块可以将数字信号转换为一定范围内的电压或电流信号,例如0-5V或4-20mA。
3. 数字信号转位移或速度信号
如果数字信号需要转换为位移或速度信号,可以使用Simulink 中的数字到位移或速度转换块。
这些块可以将数字信号按照一定的比例转换为位移或速度信号。
4. 数字信号转角度或转速信号
如果数字信号需要转换为角度或转速信号,可以使用Simulink
中的数字到角度或转速转换块。
这些块可以将数字信号按照一定的比例转换为角度或转速信号。
总之,Simulink提供了各种信号转换块,可以方便地将数字信号转换为物理信号。
用户只需选择适当的块并设置相关参数即可实现所需的信号转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Simulink模型到Modelica模型转换技术
作者:董政丁建完
来源:《计算机辅助工程》2016年第05期
摘要:针对Simulink模型重用到更高阶的Modelica平台上的需求,分析Simulink模型的数学本质和代码表达,以及Modelica对外部函数和外部类的支持,重用Simulink模型转换生成的S-function目标C代码,实现Simulink模型到Modelica模型转换.
关键词: Simulink; S-function; Modelica;模型转换
中图分类号: TP391.9 文献标志码: B
0 引言
随着数字化功能样机技术和仿真技术的发展,近几十年来涌现出许多成熟的建模仿真分析工具,并广泛应用于机械、电子、控制等领域中,使得对集机械、电子、液压、控制等多个学科领域子系统于一体的复杂产品的整体系统进行分析成为可能.多年以来,Simulink以其基本模块的易用性和通用性,被广泛应用于控制系统的建模.同时,为满足物理系统建模,MATLAB 官方和第三方均提供多种扩展工具模块,但是实际使用时,扩展工具模块往往难以满足使用需求.越来越多的使用者发现针对复杂物理系统,Simulink存在着建模难度大并且耗费时间多的问题.欧洲学者针对复杂物理系统统一建模,提出多领域统一建模语言——Modelica语言,实现对复杂产品整体统一建模分析,并使之成为复杂系统建模领域的标准.目前,Modelica语言已有较大的发展,针对其开发的标准模型库更是迅猛增长,已覆盖机械、液压、气压、电控、热力和电磁等多个领域,并在欧美汽车、能源、动力、机电、航空和航天等各行业获得成功应用.[1]
虽然Modelica的应用已推进复杂物理系统的建模和仿真发展,但是控制系统工程师依然习惯利用Simulink进行控制系统的建模和仿真,而其他设计工程师使用Modelica建立物理系统模型.长期以来,大量的知识已经以Simulink模型的方式累积下来,如果把这些模型用Modelica重写,十分耗费时间和精力.基于Modelica语言在多领域建模和仿真中的广泛应用以及未来发展趋势,可以考虑将控制系统Simulink模型转换成Modelica模型,使系统模型在统一的Modelica平台下进行仿真.有学者提出一种“模块映射”方案,通过在Modelica平台中建立与Simulink基本模块对应的模型库元件,并按照Simulink模型模块和连接关系,用Modelica 元件代替Simulink模块并复现连接关系,实现模型转换.[2-3]这种方案依赖于专门定制的Modelica模型库元件.然而,部分Simulink基本模块,如积分模块等,有多种变形模式,要设计一种Modelica元件与其对应的难度很大.对此,本文提出一种基于Simulink模型代码生成和Modelica外部类和函数接口实现Simulink模型到Modelica模型转换的新方案.
1 模型转换原理
1.1 Simulink模型描述
Simulink模型中包含时间
Simulink通常用模块和连接关系表达模型.通过MATLAB提供的代码生成工具RTW (Real-Time Workshop)把模型转换成S-Function目标C代码后,Simulink模型中的数学描述就变成代码描述.Simulink模型转换成C代码后,Simulink模型原有的所有变量信息都保存在SimStruct实例中,SimStruct是S-Function目标C代码中定义的类,代码中还定义用于对SimStruct操作的接口函数.
Simulink求解器通过对接口函数的调用,对用C代码描述的Simulink模型进行仿真,仿真流程见图1,仿真主要包含初始化和循环求解2个阶段.
初始化阶段由mdlInitializeSizes,mdlStart和mdlInitializeSampleTimes函数实现采样时间、状态向
量、输入向量的初始化.在循环求解阶段中,
modelOutputs函数用C代码的方式描述关系式
1.4 Modelica外部类
类是Modelica语言的基本结构元素,是构成Modelica模型的基本单元,类可以包含3种类型:变量、方程和成员类.变量表示类的属性,通常代表某个物理量;方程指定类的行为,表达变量之间的数值约束关系.[1]通常,类定义在Modelica内部,类的变量、方程和成员类均以Modelica语言描述,对内是可见的.
Modelica同时支持外部类.外部类一般由C语言定义,对于Modelica相当于一个“黑箱”,只暴露其操作的接口,内部结构完全封闭.外部函数协作完成某一任务时,这些外部函数之间需要传递一些信息的内部存储,外部类的实例就可以表示这种内部存储.在Modelica语言中,外部类同样以class作为关键字,但加上extends ExternalObject关键字修饰,表明从ExternalObject派生,并且仅有3个函数constructor和destructor,分别用于构造和销毁外部实例.外部类实例通常为一个指向某类实例的指针,见图3.定义SimStructPrt外部类并且定义类构造函数.构造函数由外部函数实现,SimStructPrt实例即为指向SimStruct实例的指针.
3 结论
通过对S-function目标C代码分析和对
Modelica外部类及外部函数的研究,实现Simulink模型到Modelica模型的转换,使得Simulink模型可以在Modelica平台下进行仿真.模型转换重用Simulink模型,可以将多年来累
积在Simulink模型中的知识重用到更高阶的Modelica平台上,提高工作效率.由于无须依赖定制的模型库,实施起来方便高效,并且由Simulink自带的代码生成工具生成C代码,代码稳定可靠,鲁棒性高.
参考文献:
[1]
赵建军,丁建完,周凡利,等. Modelica语言及其多领域统一建模与仿真机理[J]. 系统仿真学报, 2006, 18(S2): 570-573. DOI: 10.3969/j.issn.1004-731X.2006.z2.162.
ZHAO J J, DING J W, ZHOU F L, et al. Modelica and its mechanism of multi-domain unified modeling and simulation[J]. Journal of System Simulation, 2006, 18(S2): 570-573. DOI: 10.3969/j.issn.1004-731X.2006.z2.162.
[2] DEMPSEY M. Automatic translation of Simulink models into Modelica using Simelica and the AdvancedBlocks library[C]//Proceedings of the 3rd International Modelica Conference. Linkping, 2003.
[3] 王岳. 多领域建模仿真平台MWorks的外接工具集成研究[D]. 武汉:华中科技大学,2009.
[4] van SCHIJNDEL A W M. A review of the application of SimuLink S-functions to multi domain modelling and building simulation[J]. Journal of Building Performance Simulation, 2014,7(3): 165-178. DOI: 10.1080/19401493.2013.804122.。