目录
希望大家能够点点赞,点点关注,会结合自身学习逐步地更新相应的知识体系,也希望能够得到大家的指点。共同学习共同进步。
同时欢迎大家跳转到,整个知识树的目录页进行跳转性查看,点击下方链接或点击上方水管家进入文章,查看左侧专栏“0 技术管理_基于项目的开发管理流程”即可进入知识目录。
1 Matlab-Simulink建模规范简介
建模规范主要参考《J-MAAB_SimulinkStyleGuide_Eng》以及《mab-control-algorithm-modeling-guidelines-using-matlab-simulink-and-stateflow-v5》。
建模指南的总体目的是允许建模者对控制系统模型进行一个简单的、共同的理解。指南的主要目标是,
-可读性
.提高图形的可理解性;
.提高功能分析的可读性;
.防止连接错误,等。
-仿真和验证
.仿真的设定;
.可测试性。
-代码生成
.提高代码的生成效率;
.确保生成代码的鲁棒性。
2 Matlab-Simulink建模规范
Matlab版本需求:Matlab2020b。
一份合格的Matlab交付文件应当包含有一份用于变量定义的.m文件和相应的Matlab-Simulink主模块。Simulink主模块中右键最外层模块,选中Properties,选择CallBack,InitFcn链接上用于变量定义的m文件中,运行过程中可以直接调用.m文件生成数据空间中的变量。
此时.m文件的命名不能与.slx文件重名,导致.m文件被遮蔽。
图2.0 交付物包含内容
注:所有具有物理含义的变量不可直接使用定值。如门限亦或是滤波值的上下限。
整体的规范按照,整体性规则,模型架构,线的连接方式,数据类型,命名规范等几大部分展开。
2.1 整体性规则-颜色
整体的颜色应当按照如下的规范进行设置:
-白色作为整个幕布的颜色;
-白色作为模块的背景色;
-黑色作为模块的前景色。
图2.1 整体工作区间颜色及字体
2.2 模型架构
控制模型应当按照如下的分层体系进行结构设计。
所有的子模块设置应当按照从上往下,从左往右的优先级进行布置。
图2.2.0 模型概要
2.2.1 顶层(Top Layer)
该层主要用来放置模型的输入输出,应当包含有输入,输出,注释,模块名称。
图2.2.1 顶层
2.2.2 触发层(Trigger Layer)
Trigger or function(假装有图片)
图2.2.2 触发层
触发层并非一定存在的层级,该层使用触发条件进行激活模块选择。
注意enable放置在左上角,同时需要注意,Trigger的输出应当选择hold:保留,亦或是Reset:重新计算。
2.2.3 结构层(Structured Layer)
描述每个功能(部件)的控制逻辑结构。可以跨多个层次结构进行描述。
图2.2.3 结构层
2.2.4 数据流层(Data Flow Layer)
图2.2.4 数据流层
模型数据运算应当满足阅读者尽量少打开阅读的原则进行模型设置。数据流的运算判定关系应清晰的表达出来,
<1> 使用compare而非compare constant。同时所参与比较的Constant变量应当设置为变量,而非数值。
<2> Switch也应当维持原则,体现清楚,且条件仅为不等于0。
<3> 状态机中也要注意,其判定条件的运算不应该在Stateflow中进行比较。
<4> 信号无连接用Terminator,信号源无连接如果是默认0使用Ground。
2.3 线的连接方式
应当按照直线原则,且尽量少使用Goto-From;
禁止使用代数环,图下图所示,代数环是无解的,因为x=1,同时x=2*x。
图2.3 无解代数环
禁止进行十字交叉形式的线连接;
2.4 数据类型
变量的数据类型,初始设置的过程中就需要进行设置。
表2.1 Simulink支持的Matlab的数据类型
序号 | 名称 | 描述 | 备注 | 此列无数据,用以显示齐全左侧 |
1 | double | 双精度浮点 | ||
2 | single | 单精度浮点 | ||
3 | int8 | 有符号 8 位整数 | ||
4 | uint8 | 无符号 8 位整数 | ||
5 | int16 | 有符号 16 位整数 | ||
6 | uint16 | 无符号 16 位整数 | ||
7 | int32 | 有符号 32 位整数 | ||
8 | uint32 | 无符号 32 位整数 | ||
9 | int64 | 有符号 64 位整数 | ||
10 | uint64 | 无符号 64 位整数 | ||
11 | fixdt(0,16,0) | 固定点数据类型,表示无符号,16位,0个小数点位 | (有无符号,位数,小数点数) |
数据类型中存在Simulink中的DataType进行数据确定,也可以在输出模块内选择确定的数据类型,整体的数据流应确保设计人员了解数据运算。
同时进行运算以及比较的数据应当确保相同的数据类型。
2.5 命名规范
Matlab官方支持的命名规范如下:通识性原则,除去Matlab本身已有的,所有的模型,变量,块,输入输出应当满足如下:
-可以使用大小写字母及数字(a-z,A-Z以及0-9)作为命名元素;
-可以使用“_”,英文状态下的_线作为连接线;
-上述允许元素仍有部分注意事项:
.禁止使用“_”作为开头结尾的变量,例如禁止“_a”以及“a_”;
.禁止使用“数字”作为开头,例如禁止“0a”;
.禁止使用“__”,两个“_”作为变量名称的一部分;
-禁止使用上述之外的其余元素;
-禁止使用以存在的名称,如ans等;
-如果多个名称相同的文件,在同一路径下,则会加载路径上较高的文件,所以会导致可读性受损。
-模型文件名长度最多应为63个字符(不包括点和扩展名)。
-数据字典(sldd)应仅定义模拟流或状态流模型中使用的数据。
-模型工作区应仅定义模拟流模型或状态流模型中使用的数据。
-保留的C变量名不能在MATLAB代码中作为变量名使用。例如,避免在MATLAB代码中使用const、TRUE、FALSE、无穷大、nil、双个、单个或枚举。
除此之外,还有一部分的可以使用但尽量不要使用的,例如
-在变量名称中使用数据类型。例如:“g_ABS_WhlSpd_u16”,如果进行数据类型变更后,还需要对变量名称进行更改,较为复杂。
基于上述的命名规范,暂时使用如下,进行命名。
g_ABS_p_WheelSpd_ms:以下划线为分界线,分为四大部分或是五大部分。(加个单位)
表2.2 命名规范
序号 | 名称 | 描述 | 备注 | 此列无数据,用以显示齐全左侧 |
1 | g/l | 符合规范加的变量_用以区分c中的全局/局部 | 规范中提及最好用小写字母开头 | |
2.1 | ABS | 模块名称 | ||
2.2 | ABSTx | 从ABS模块外发的信号 | ||
2.3 | RxABS | 从ABS接收的模块 | ||
3.1 | p | 模型内部的变量-Parameters | 小写 | |
3.2 | s | 观测量-Scope | ||
3.3 | c | 标定量-Calibration | ||
3.4 | md | 宏定义-Macro defined | ||
3.5 | i | 输入-input | ||
3.6 | o | 输出-output | ||
4 | Whlspd | 具体的变量 | ||
5 | ms | 单位 | 注意不能使用其余符号,如/ |
欢迎各位关注我家的公众号。
如果有需要电子书Simulink教程的也可以点击下方链接,前往购买。看个人需求,网站也会一直更新最新学习记录。