您的位置:首页 > 其它

Simulink建模之模型的构建风格(二…

2017-04-29 17:11 489 查看
翻译了MAAB的建议指南中有关模型构件风格的建议,这些建议对与汽车行业的工程师还是很有帮助的。

 


三、模型的层级结构以及用法



对模型进行层级结构划分有利于提高模型的可读性、可维护性。一般在进行逻辑系统建模时,进行层级结构划分时,会用到下面的一些模块:
· 
Subsystem
· 
Subsystem(Condition)
·Atomic Subsystem
· Model Reference
· 
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的总体结构,需要明确定义出各个子模块及输入输出端口的采样时间,并在模块名称下注释。

数据层由“基本模块”构成进行数据处理运算,一般来说在输入模块上要用注释表明采样时间。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐