Simulink建模之模型的构建风格Word文档下载推荐.docx
- 文档编号:6830764
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:14
- 大小:432.62KB
Simulink建模之模型的构建风格Word文档下载推荐.docx
《Simulink建模之模型的构建风格Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Simulink建模之模型的构建风格Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
我们在创建一个Simulink模型时,最基本的单元就是block,我们可以称之为“模块”,每一个模型都是由很多个模块和子模块所组成的。
一般我们把simulink
库里的模块称之为“基本模块”,例如:
我们也会自定义一些模块,用于一些特定的功能或者用来进行层级划分。
二、虚拟模块和非虚拟模块
Simulink根据其仿真特性在将模块的属性分为两种:
虚拟模块和非虚拟模块。
在我们进行建模的过程中需要小心区分这两种类别的模块:
非虚拟模块在仿真过程中是起实际的作用的,对其进行编辑或者增加删除操作,会影响到模型的运行和改变模型的结果;
而虚拟模块在仿真的过程中是不起实际作用的,主要是为了从图框上进行程序的层次划分以及保持模型的图形界面的整洁性等作用。
还有一些模块在某些特定条件下为非虚拟模块,有些条件下为虚拟模块,我们可以称之为条件虚拟模块。
Simulink中的虚拟模块和条件虚拟模块如下表:
了解虚拟模块和非虚拟模块是非常必要的,这两者的区别在生成代码时可以直观的看到(虚拟模块不会生成实际的变量或者函数),另外,子系统是否是虚拟模块对于模型的各个模块的执行顺序有着直接的影响。
Simulink模型的执行是依照数据驱动模式来进行执行的。
在matlab2012版中我们可以使用下面的方式来查看各个模块的执行顺序与层级结构。
(Display->
Blocks->
SortedExecutionOrder,其他版本也有相应的选项)
我们来看一下这个简单的例子,首先建立一个简单模型如下图,选择SortedExecutionOrder,然后选择Simulation->
UpdateDiagram。
在模型的左上角出现红色的标号,表达的含义为:
[层级号]:
[执行顺序]。
Root层级号码为0,依次类推。
这里可以看到In1,In2由于是虚拟节点没有标号,由于Simulink是数据驱动的方式,UnitDelay中定义了初始值,所以模型UnitDelay作为起点进行运算。
如果我将中间的部分变成Subsystem如下图:
Root层的In1、In2,Subsystem以及subsystem层中的In1、In2、Out1、Out2
都没有标号为虚拟模块,封装之后的各个模块的执行顺序和未封装之前的一致,Subsystem以及In和Out模块只是在图形界面上对模型进行了分层,模型实际执行时,还是讲subsystem中的内容展开到上一级模型中进行运算。
下面右击Subsystem,选择BlockParameter,在弹出的对话框中选择
treatasatomicuint如下图,然后选择确定。
然后再对模型进行更新Simulation->
UpdateDiagram,模型的标号发生了变化,如下图
Subsystem模块中的模块的层级结构被调整为1,而subsystem模块自身也有了标号的执行顺序,该简单模型较之前没有设置原子子系统的模型比较,
Subsystem种的Gain1和
root层中的Gain、Out1的执行顺序被改变了,也就是说subsystem被看做实际的模块,其中的运算全部完成后,再输出数据驱动其后的模块。
在进行大规模建模,而且对实时性要求比较严苛的系统中,对条件虚拟子系统的运用对最终的仿真结果和生成代码都有直接的影响。
翻译了MAAB的建议指南中有关模型构件风格的建议,这些建议对与汽车行业的工程师还是很有帮助的。
三、模型的层级结构以及用法
对模型进行层级结构划分有利于提高模型的可读性、可维护性。
一般在进行逻辑系统建模时,进行层级结构划分时,会用到下面的一些模块:
·
Subsystem
Subsystem(Condition)
AtomicSubsystem
ModelReference
Sateflow
……
Mathwork的汽车咨询委员会发布随着Matlab的发布同时发布了《使用Matlab、Simulink和Stateflow进行控制系统建模指南》,目前的版本是2.2。
对于建模层级规范提出了一些建议,我把主要的部分翻译如下:
1、
simulink和stateflow的混合使用
选择使用simulink或stateflow来建立控制算法模型,要根据模型本来所需要表达的属性来进行
一般来说,模型的主要功能是逻辑运算,或者模型的本次运算与上次运算的结果有相关联,应该使用stateflow建模。
模型的主要功能是数学运算,则使用simulink。
但有些特殊情况处理如下:
主要的程序是逻辑运算,但是有小部分是数学运算,则在stateflow中可以使用stateflow中的语言进行编写,如下图:
如果主要的程序是数学运算,但是需要一些简单的逻辑对算法进行支持,可以使用基本的逻辑运算模块。
如果逻辑运算过程中,遇到较复杂的数学运算应该采用stateflow进行主要逻辑运算,然后使用fuction-call的调用simulink的模块完成数学运算,如下图。
不要使用stateflow描述数学表达式,要采用simulink的形式如下图:
2、
每个层级使用相同的模块类型
也就是说每个层级要么全部使用“基本模块”,要不全部使用“子系统模块”,下面这些基本模块例外,他们可以用于模型的任何层次。
3、
模型层级
所有的层级应该和控制系统具备的各个功能及其结构保持一一对应的关系。
并保证可读性、良好的工作流,可以被测试验证,可以生成代码。
4、
模型层级分解
在建模时推荐按照如下方式进行层级划分:
顶层
触发层(非必须)
结构层
数据层
一般有两种形式,如下图:
顶层仅包括模型主体和输入输出变量定义。
触发层表明了各个子模块的触发时序,如果有必要还要设置其优先级,并用注释方式表达出来。
结构层主要进行进一步的功能划分,在其中的各个子系统模块必须设置为原子子系统,如果采用TypeB的总体结构,需要明确定义出各个子模块及输入输出端口的采样时间,并在模块名称下注释。
数据层由“基本模块”构成进行数据处理运算,一般来说在输入模块上要用注释表明采样时间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Simulink 建模 模型 构建 风格