控制策略模型建模规范(SIMULINK)


5.1. 绘图行为

1. 所有的Simulink 窗口都应采用白色背景。
2. 视图的放大率应为100%。如果在100%视图放大率的情况下,模型超出Simulink 窗口,则设置:View->Zoom->Fit to view,即Fit diagram to screen。
3. 模型中的信号流程是从左到右的;前后相继的模块或子系统从左到右安置,并行的模块或子系统由上向下安置;除延时模型以外的其它模型不允许执行旋转和镜像操作。
4. 输入端口应位于图表的左侧,输出端口应位于右侧,为防止信号交叉,端口可适当平移调整位置;禁止在顶层对输入端口做复制操作,在子系统层级也应当尽量避免复制操作。
5. 子系统不能被旋转和镜像。
6. 一个系统中一定不能出现:未连接的子系统, 未连接的基本模块输入、输出端口,未连接的信号线。
7. 反馈闭环子系统中防止“代数环”的延时模块必须放置于子系统外部。


5.2. 信号

1. 未连接的输入信号应与接地模块相连,其它未连接的输出信号应与终端模块相连。
2. 输入输出信号名称必须可见,统一在信号下方显示。
3. 每一个信号在整个模型中必须是唯一的。
4. 每个模块的输入信号的信号线上必须注明信号名称。
5. 信号线尽可能不交叉,转弯处以直角(仅允许以水平和垂直的方式连接)的方式转折或绘制。信号线不能重叠,每个分岔点处不能引出多于两根信号线。
6. 属于继承的信号,其名称标识符应该添加<>修饰符,以指示继承类型,其它信号则不要求。
7. 当信号跨越不同层级传输(父系统和子系统)时,传输链上信号的propagation signal属性应设置为ON状态,(信号名称以“<信号名称>”的形式标识)。总线信号如设置有信号名称也应该遵循该原则。
8. 当信号来自一下模块,即使信号未跨越不同层级传输,信号的propagation signal属性也应该设置为ON:
• from,goto
• Bus Creator ,Bus Selector
• Signal Specification
• Function Call Split
9. 触发信号名称可作为被触发的条件子系统名称的组成部分。 
5.3. 模块模型

1. 模块应采用白底黑框,模块不应增加阴影。
2. 常见的逻辑模块,如ADD,可不显示名称,若有特殊变量则建议在模块下方标注。
3. 逻辑操作模块的外形应选择square。
4. Product 模块:第一个输入应为“*”
5. Relational Operator关系运算模块:变量与常量比较时,变量作为模块的第一个输入信号,常量作为第二个输入信号。
6. 查表算法模块的插值算法应该选择终值插入法。
7. 求和模块(ADD)应使用矩形状。
8. Trigger和Enable 模块不能在顶层使用。
9. 模型中的文本元素(模块名称和信号标签)统一字体和字号:Arial/Normal/ 10。
10. 模型应该适当缩放,确保所有的标识、文本都完整、清晰可见,尽量采用同样尺寸。
11. 模型的名字必须可见,并放置于模型下方。
12. 使用Requirements或Summary对模型进行注释说明。
13. from 和goto 模块:from 模块和goto 模块的标签(Tag)应匹配,一个from 模块只能接受一个来自goto 模块的信号。
14. 使用goto和from连接信号时:只能在原子子系统外部使用,goto块只能设置local域。
15. 除用于创建总线、或为了合并模块连接输入信号外,goto和from只能用于对子系统信号的连接。
16. 被连接的两个系统至少要有一条直连的信号线(即不使用goto和from连接)存在。(Using Goto and From blocks to create buses or connect inputs to merge blocks are exceptions to this rule.)
17. 以前向和后向反馈闭环方式连接的子系统在每个方向上至少要有一条直连的信号线存在。

18. 触发子系统,使能子系统和条件子系统:
a. 子系统的类型标识应置于系统最顶部;
b. 触发信号源端模块名称应与触发或使能该子系统的触发信号名称一致。

19. 模型处理过程必须使用适当的模块来实现逻辑和数字运算。
20. 模块输入、输出端口的数据类型必须匹配一致。
21. 输入switch,multiport switch,index vector的各个端口的数据类型必须一致。
22. 模块的使能端口应只接受逻辑运算结果作为输入。
23. Multiport switch 模块:第一个输入(控制输入)值必须大于等于1,且不能超过选择输入值。
24. Switch块使用必须遵循以下原则:
a. 切换条件,即输入2端口的信号必须是布尔类型的。
b. 通过条件必须设置为:u2~=0。
25. 原则上:设计状态判断的使用if-Action模块;设计值选择的使用Switch模块。


5.4. 模块选择与设置

1. 为了保证标定量/常量参数可调,应不含任何表达式、数据转化、行或列的选择。
2. multiport switch的索引值参数,应配置为“0为基值”的方式。
3. 信号滞环(即返回上一周期值)模块,优先选择Unit Delay。
4. 信号集合模块,优先选择Bus 模块;模块输入可以采用Bus 模块集成,简化模型。
5. 时间积分模块:分连续时间积分模块Integrator和离散时间积分模块Discrete-Time Integrator,优先选择离散时间积分模块Discrete-Time Integrator。
6. 乘积模块,优先选择Product模块,而不是Gain模块,且多个量相乘时建议拆分为两两相乘。
7. from/goto 模块建议使用局部变量Local 格式,避免使用全局变量Global格式。
8. 触发式模块建议优先选择Function-Call Subsystem,然后选Enabled Subsystem,最后选择Triggered Subsystem。
9. 构建if-then-else 结构的模型,如果then 和else 的响应为两个常量,可以采用switch模块;但如果是两个较复杂的计算,可以考虑使用If/Else 模块,输出变量采用merge 模块进行过滤输出,这样可以提高仿真及代码生成的效率。
10. 模型中不要使用Fcn 模块,用其他模块代替。
11. Lookup Table 模块:查表方法选择“Interpolation-Use EndValues”。
12. 模型中最好不要采用绝对值模块,RTW 代码生成时会导致值的跳变。


5.5. 表达式、逻辑及仿真

定义主表达式:
一个输入;
一个常量;
一个常量参数;
除0和1以外的包含<,<=,>,>=,~=,==,~符号的带括号的、不包含逻辑运算符号的表达式。

1. 逻辑表达式如果包含两个或更少的主表达式,则应使用if条件模块来实现。
2. 包含三个或以上的主表达式,且仅含有一种逻辑运算符号的逻辑表达式是允许的;
3. 复杂表达式(含多个主表达式或(和)多种逻辑运算符)应分解为若干主表达式、并使用if条件模块去实现。
4. 枚举值、逻辑值仅参与逻辑运算、数字值仅参与数字运算。
5. 布尔值不能参与关系运算。
6. 数字值(0,1,~)或逻辑值(true,false)不能与布尔值进行比较。

猜你喜欢

转载自blog.csdn.net/lm393485/article/details/88895342