目录
为什么要规范建模
MAB,MISRA C2012建模规范步骤
常用的规范总结
生成代码配置
总结
为什么要规范建模
MathWorks 咨询委员会 (MAB) 规范规定了在 Simulink® 和 Stateflow® 中建模的重要基本规则。这些建模规范的总体目的是让控制系统模型的建模者和使用方能实现简单、共同的理解。这些规范的主要目标是实现易读的仿真和验证以及代码生成。现在汽车电子代码,项目管理等很多都需要标准化管理,自然模型的建模都需要遵循一定的标准。这里总结了MAB的建模标准的一些常用规则,方便建模初期有一定的意识,避免建模完成后再去调整降低工作效率。
MAB,MISRA C2012建模规范步骤
MathWorks Advisory Board (MAB),规则很多,想要全部记住也不可能,所以Simulink提供了一个规则检查,方便我们去根据规则调整模型,非常方便。如下是MAB的标准规则文档:
Control Algorithm Modeling Guidelines Using MATLAB ® , Simulink ® , and Stateflow ®
Version 5.0
操作如下:
选择需要标准化的模型进行检查
选择需要检查的标准,如MISRA C 2012, ISO 26262等,这里选MAB
检查完后可以在右边查看通过了哪几项,还有哪几项没通过,没通过的就是需要去调整的。如下通过83,没通过34项。
选一个Warning进行修改,检查子系统命名
根据MAB规范,这里名字不能有空格,只能是数字,字符和下划线,也不能在模块上方。
改完后再点Run This Check检查通过如下:
MISRA C 的Check需要检查配置参数
改到没有任何Warning
常用的规范总结
常用MAB标准总结
在建模的时候把一些常用的标准记住,可以减少后期更改的工作量。如:
1. 模块的前景色设置为黑色,背景色为白色
2. 模块命名时不要带空格
3. 模块名要在模块的下方
4. 自定义的模块名或者端口名要显示,没有自定义系统默认的模块名或者端口名要隐藏
5. 信号线与信号线不能相交(没有实际连上)
6. 除反馈路径上的模块外,所有顺序块必须从左向右放置。
7. 除反馈路径上的模块外,所有平行块必须从上到下放置。
8. 所有的方块都应该朝右
9. 两个子系统之间如果有信号传递,至少要有一根线直接连接起来,不能全是From
10.没有用到的信号需要删掉,如Terminate
11.输入端子标签的命名,要和端子信号线保护一致且,且输入端子的标签需要添加
12. 信号的标签不要和其他的信号或者模块重叠,标签要放在信号线的下方
13. 信号线上的标签要紧靠上一个输出模块,如输入输出和运算输出
14. Multi-Port Switch 要选择One-based contiguous
15. 常数模块里面不要给数字,给定义的变量名
16. 加运算只能有两个输入且第一个输入是“+”,圆形的加和方块加功能一样,但是反馈回路用圆形的加
17. 乘法和加法一样只能有两个输入且第一个输入对应“*”
18. 输入端子统一放在模型的最左边且对齐,输出端子统一放在所有模块最右端且对齐
参考文档:Control Algorithm Modeling Guidelines Using MATLAB ® , Simulink ® , and Stateflow ®Version 5.0
生成代码配置
MAB只是建模的规范,和生成代码没有太大直接关系,这里配置生成代码规则满足MISRA C的标准,需要配置如下选项:
这里配置执行效率和MISRA C 以及 可追溯性选项
打开生成代码Check Model,会根据配置的选配进行Check然后指导对模型调整,如这里配置了执行效率优先,Check的时候会以此为大前提推荐调整查表等配置,以使模型生成代码后执行效率最高。
如下是调整模型后的Check结果,经过调整后这里Index需要从0-5,而建模的时候是从1-6,功能不影响,执行效率不影响,但是不符合MAB规范。这里可以先不作调整。其他配置都检查通过了。
生成代码如下,检查通过了22项,还有2项警告,只需要按照警告提示进行调整即可,功能并不影响
总结
模型规范化的工作量还是不小的,尽量在一开始的时候有一个大体的概念,避免后期规范化的时候重复工作。在这个过程中也会遇到一些冲突性的问题,如
遇到个Bug,在调整MAB标准的时候,有如下警告(可能是软件版本的原因,也有可能是配置问题):
要取消 Hide ALL Link才能去掉
暂且把这次规范化的操作总结一下,MAB的规范好几百个,简单总结了常用的一些,减小后期调整的时间。后续有问题再作补充。