分享

MAB建模规范-Simulink模型建模规范

 Kuai2012 2022-06-30 发布于北京

规则ID:db、jm、hd、ar被用于Ver 1.0的规范。na和jc用于从版本2.0到现在创建的规范NA-MAAB代表北美和欧洲。J-MAAB代表日本。

Simulink

Configuration Parameters配置参数

jc_0011: bool数据类型优化设置

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: 逻辑信号使用布尔类型而非双精度浮点数

原因

a:生成C代码时,使用布尔数据可以减少RAM容量。

jc_0642:取整模式设置

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: 当 {Integer rounding mode} 设置为“Simplest”时, {Production hardware signed integer division rounds to}需要被设置为 “Floor” or “Zero”.

原因

a:防止意外舍入有符号整数。

jc_0806:检测错误计算结果

规则建议:

NA-MAAB: a,b,c

JMAAB: a,b,c

Matlab版本:all

规则

a: 配置参数{Division by singular matrix} 应设置为Error

b: 配置参数{Inf or NaN block output} 应设置为Error

c:对于R2010b到R2014a,配置参数{Detect overflow}应设置为“Error”,对于R2014b及以后的版本,配置参数{Wrap on overflow} {Saturate on overflow} 应设置为Error

原因

abc:允许检测具有无效值的操作

jc_0021:模型诊断设置

规则建议:

NA-MAAB: a

JMAAB: 不支持

Matlab版本:all

规则

a: 这些配置参数应设置为“警告”或“错误”:

·{Algebraic loop}

· {Minimize algebraic loop}

· {Multitask rate transition}

· {Inf or NaN block output}

· {Duplicate data store names}

· {Unconnected block input ports}

· {Unconnected block output ports}

· {Unconnected line}

· {Unspecified bus object at root Outport block}

· {Element name mismatch}

· (R2017a and earlier) {Mux blocks used to create

bus signals}

· (R2012a and earlier) {Invalid function-call

connection}

原因

a:提高模型工作流,不按要求设置可能无法生成代码

Diagram appearance外观显示

na_0004:Simulink模型外观设置

规则建议:

NA-MAAB: 不建议

JMAAB: a

Matlab版本:all

规则

a: Simulink模型外观设置应与项目设置一致。

原因

a:标准模型的外观提高了可读性。

db_0043:模型字体和字体大小

规则建议:

NA-MAAB: a,b,c,d

JMAAB: a,b,c,d

Matlab版本:all

规则

a: block名字体和字体风格设置应与工程一致。信号名字体和字体风格设置应与工程一致

b:block名字体大小设置应与工程一致。信号名字体大小设置应与工程一致

c:状态标签及box名字体和字体风格设置应与工程一致,过渡标签及注释字体和字体风格设置应与工程一致

d:状态标签及box名字体大小设置应与工程一致。过渡标签及注释字体大小设置应与工程一致

原因

abcd:提高可读性。

jm_0002:block大小设置

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: 模块大小应当足以清晰分辨模块

原因

a:影响可读性。

db_0142:block名位置

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: block名应位于block下方

Incorrect

原因

a:block名称的一致放置提高了模型的可读性,因为更容易确定哪个名称对应于哪个block。

jc_0061:显示block名

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: block类型和显示对应,当使用默认名应隐藏block名

原因

a:提高可读性

db_0140:显示block参数

规则建议:

NA-MAAB: 不建议

JMAAB: a

Matlab版本:all

规则

a: block标注定义的参数

原因

a:提高可读性

jc_0603:模型描述

规则建议:

NA-MAAB: 不建议

JMAAB: a,b

Matlab版本:all

规则

a: 模型每层应当有该层模型的描述

b:每一层模型中描述的格式应该一致

原因

a:提高可读性,可移植性,可维护性,可用性

b:若描述格式不一致,会降低可读性

jc_0604:block阴影设置

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a: block属性中的shadow不应设置

错误:设置了阴影

原因

a:设置阴影降低可读性

db_0081:未连接的线条和block

规则建议:

NA-MAAB: a,b

JMAAB: a,b

Matlab版本:all

规则

a:模型中不应出现未连接的线条和block

b:模型中不应有未连接的子系统或基本块。

原因

a:未连接的线路可能会产生不利影响,例如模拟错误或无法生成代码。

db_0032:信号线连接

规则建议:

NA-MAAB: a1/a2,b,c,e

JMAAB: a1/a2,b,c,d,e

Matlab版本:all

规则

a1:垂直和水平信号线不得交叉。

a2:(R2014a及以后版本)当水平和垂直信号线必须交叉时,Simulink编辑器首选项{线交叉样式}应设置为“线跳”。Simulink editor preference {Line crossing style} shall be set to “Line hop”.

b:信号线不得与其他信号线重叠。

c: 信号线不能跨越 block

d:信号线在一个分支点不得分成超过两条支线。

e:信号线应根据模型布局的需要垂直或水平调整大小。

原因

a1:当信号线交叉时,很难理解块之间的关系。

a2:在R2014a及之后的版本中,明确了交叉和分支的区别。

b:信号线重叠时,很难理解块之间的关系

c:当信号线交叉时,很难理解块之间的关系

d:很难理解块之间的关系

e:信号线的一致应用提高了可读性。

db_0141:simulink模型信号流

规则建议:

NA-MAAB: 不建议

JMAAB: a,b,c

Matlab版本:all

规则

a:信号流从左到右(反馈信号除外)。

错误示例:

b: 平行 block 或 subsystem 从上到下

c: 信号线减少没必要的弯折

错误:

原因

abc:偏离规则会影响可读性

jc_0110:模块方向

规则建议:

NA-MAAB: a

JMAAB: a

Matlab版本:all

规则

a:block输出向右(delay可以向左)

原因

a:如果信号的方向不一致,信号流可能很难理解

jc_0171: subsystem 间的连接

规则建议:

NA-MAAB: 不建议

JMAAB: a,b

Matlab版本:all

规则

a: 减少没必要的 from、goto

b:减少没必要的输入输出端口

错误:

原因

a:表明子系统连接和执行顺序

b:取消不必要的连接,增强可读性

jc_0602:模型元素名称的一致性

规则建议:

NA-MAAB: 不建议

JMAAB: a

Matlab版本:all

规则

a:使用信号线直接连接时,名称应相匹配

原因

a:防止误接信号线。可读性受损。背离规则会使维护模型和代码的完整性变得困难。

jc_0281:触发式信号名

规则建议:

NA-MAAB:不建议

JMAAB: a1/a2/a3/a4,b1/b2/b3/b4

Matlab版本:all

规则

a1: 触发信号输入模块的命名应当包含触发信号来源模块的名称

a2: 条件触发子系统的命名应当包含触发信号来源模块的名称

a3: 触发信号输入模块的命名应当包含触发信号的名称

a4: 条件触发子系统的命名应当包含触发信号名称

b1: 状态机触发事件的命名应当包含触发信号来源模块的名称

b2: 状态机的命名应当包含触发信号来源模块的名称

b3: 状态机触发事件的命名应当包含触发信号名称

b4: 状态机的命名应当包含触发信号名称

原因

a1a2a3a4b1b2b3b4:减少连接错误。增加了对触发信号来源和目标之间关系的理解。

db_0143: 按模块等级确定可使用的 block 类型

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a :只有以下模块可用于模型的各层级:

· [Inport] · [Outport] · [Mux] · [Demux] · [Bus Selector] · [Bus Creator] · [Selector] · [Ground] · [Terminator] · [From] · [Goto] · [Merge] · [Unit Delay] · [Rate Transition] · [Data Type Conversion] · [Data Store Memory] · [If] · [Switch Case] · [Function-Call Generator] · [Function-Call Split]

原因

a:当子系统和基本块在同一层中使用时,可读性会受损

db_0144: Subsystems 的使用

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a : 按功能、周期划分 subsystem,而非为了节省空间。

b: 虚拟 subsystem 只用于不考虑处理和代码生成的情况。

原因

a:按功能划分可以提高复用性

b:由于原子子系统被认为是影响处理顺序和代码优化的单个进程,因此,如果没有按照预期的方式使用,它们可能会被误解。

jc_0653: 延迟模块在反馈系统中的使用

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a : 在跨子系统的反馈循环中,延迟模块应该位于描述反馈循环的层次结构中。

原因

a:防止重复放置[Delay]。澄清分流的范围可以提高可重用性。可以提高可测试性;要测试一个单独包含[Delay]的子系统是很困难的,因为不能直接输入过去的值。

hd_0001: 不允许使用的 Simulink sinks

规则建议:

NA-MAAB:a

JMAAB: 不支持

Matlab版本:all

规则

a : 不得使用如下模块:· [To File] · [To Workspace] · [Stop Simulation]

原因

a:提高可读性。可能无法生成代码。

Signal

na_0010:bus与vector的使用

规则建议:

NA-MAAB:a,b,c,d

JMAAB: a,b,c,d

Matlab版本:all

规则

a : Mux 和 Demux 应用于生成和分解向量

b: Mux 的输入应为标量和向量

c: BusCreator 和 BusSelector 应用于生成和分解总线

d: Bus 应和对应支持它的 block 相连

原因

abcd:不按规则使用会报错

jc_0008:信号名定义

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a : 对于从重要块输出的信号线,应定义信号名称。信号名称应在信号线的起点提供一次。重要块是由有意义结果的系统输入和输出定义的,而不是由它的类型定义的。

原因

a:定义信号名称并为重要块的有意义结果的输出显示标签,可以提高模型的可读性

jc_0009:信号名传递

规则建议:

NA-MAAB:不建议

JMAAB: a,b

Matlab版本:all

规则

a : 在定义跨层次的信号名称时,应选择信号属性{Show propagated signals},以便显示传递的信号名称。但是,当满足下列条件之一时,不要选择{Show propagated signals}:

在带有库的子系统中

在设置了可重用函数的子系统中

在[Bus Creator]输出端口信号处没有设置信号名。

连接到[Bus Creator]和[Outport]的信号没有名称,但是连接到[Subsystem]和[Outport]的信号选择了{Show propagate Signals}。

连接到[Bus Creator]和[Outport]的信号有名称,但是连接到[子系统]和[Outport]的信号也有名称。

b: 如下模块应当勾选{Show propagated signals}:

[From]

[Signal Specification]

[Function-Call Split]

错误:

连接到[Inport]和[Goto]的信号没有名称,但是连接到[From]和[Gain]的信号选择了{Show propagated Signals}

不管信号是否传递,{Show propagated Signals}都没有选择

连接到[Inport]和[Goto]的信号有名称,但是连接到[From]和[Gain]的信号也有名称。

没有信号名,却选择了{Show propagated Signals}

有信号名,却没有选择{Show propagated Signals}

重复定义名称

连接到[Function-Call Generator]和[Function-Call Split]的信号没有名称,但是连接到[FunctionCall Split]和[Function-Call Subsystem]的信号选择了{Show propagated Signals}。

有名称,但没有选择{Show propagated Signals}。

重复定义名称

原因

ab:防止信号线连接错误。防止信号线名错误。

db_0097:信号和总线标签的位置

规则建议:

NA-MAAB:abc

JMAAB: a,bc

Matlab版本:all

规则

a: 不覆盖其它标签、信号线、block

b:信号线标签和母线标签应位于信号线下方。

错误:

c:信号线标签和母线标签应位于连接线源头位置。

原因

abc:提高可读性

na_0008:信号标签的显示

规则建议:

NA-MAAB:a

JMAAB: 不支持

Matlab版本:all

规则

a: 如下模块输出的信号应当标记信号标签:· [Inport] · [From] (see exception) · [Subsystem] or [Stateflow] chart (see exception) · [Bus Selector] (the tool forces this to happen) · [Demux] · [Selector] · [Data Store Read] (see exception) · [Constant] (see exception) · [Chart]

例外:当信号标签在原始块图标显示中可见时,信号不需要不显示标签,除非引用到其他地方需要信号标签。

b: 信号输入到如下模块输出的应当标记信号标签:· [Outport] · [Goto] · [Data Store Write] · [Bus Creator] · [Mux] · [Subsystem] · [Chart]

原因

a:提高可读性,可能无法生成代码

b:提高可读性

na_0009:信号标签的输入与传递

规则建议:

NA-MAAB:a

JMAAB: 不支持

Matlab版本:all

规则

a: 来自以下来源的信号应输入信号标签:

[Inport]来自于顶层

执行转换操作的基本块(仅为了解释此规则,[Bus Creator]、[Mux]和[Selector}包括在执行转换操作的块中。)

对于来自以下来源的信号,应传递信号标签:

[Inport]来自于嵌套层(例外:当嵌套的子系统是一个库子系统时,可以在来自[Inport]的信号上输入一个标签来支持库的重用。)

执行非转换操作的基本块

例外:当连接来自库子系统块的输出时,可以在信号上输入一个新的标签以适应可读性

db_0110:block参数

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a: block 参数不能写操作表达式、数据类型转换、选择行或者列、matlab 命 令

原因

a:提高可读性与可维护性

db_0112: index 的使用

规则建议:

NA-MAAB:a1/a2

JMAAB: a1/a2

Matlab版本:all

规则

a1: index 编号从0开始

【正确用法】使用编号从0开始 。

【错误】未使用统一索引模式。

a1: index 编号从1开始

【正确用法】使用编号从1开始 。

【错误】未使用统一索引模式。

原因

a1a2:使用统一的起始格式可以增加可读性,便于理解

jc_0645:标定参数定义

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a: 标定参数应定义为一个常数型 parameter,而非具体数值

原因

a:具体数值无法标定

jc_0641:采样时间设置

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a: 模块参数应当设置为-1

例外情况包括:[Inport][Outport]原子子系统带有状态变量的块,如[Unit Delay]和[Memory]信号转换块,如[Data Type Conversion]和[Rate Transition]没有外部输入的块,如[Constant][Chart]

原因

a:若设置不同周期可能导致处理结果差异,当为每个块单独设置特定的采样时间时,模型的可维护性会下降。

jc_0643: 定点化设置

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:当块参数{Data type}为定点(fixdt)设置,{Scaling}为“Slope and bias”时,参数{bias}应设置为“0”。

原因

a:当模型中的偏差不一致时:模型的行为不可能由其外观来决定。发生意外的溢出。导致浪费的操作和代码效率/计算负载的恶化

jc_0644:类型设置

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:当通过数据对象定义数据类型后,模块不应当再定义数据类型

例外:可重用函数内部[Data Type Conversion]通过使用“fixdt”设置的数据类型Boolean type, double type

正确:

原因

a:当数据类型在块中设置,并且它与数据对象中的类型设置不同时,可能很难确定哪个设置是正确的这可能会削弱可读性。当在块中设置类型时,信号线类型变化时,可维护性受到影响

例外:

当所有块结构都相同时,输入/输出数据类型的差异可能导致不可重用的不同C源代码。对于可重用函数,输入/输出块的数据类型应该在子系统级别指定。

Data Type Conversion:显示数据类型转化

使用“fixdt”设置数据类型选择fixed point时,数据类型必须单独设置,因为每个块可以有不同的数据点。在此场景中,不可能只使用数据对象来设置数据类型。

Boolean type, double type:有些块类型必须设置为布尔类型。双精度通常用于工厂模型和快速控制原型(RCP),因此不在本规则的范围内。嵌入式软件在特定情况下采用双精度类型。在配置这些块上的设置时要谨慎,以尽量减少双精度类型的使用。

Conditional subsystem relations条件子系统

db_0146:触发block在子系统中的位置

规则建议:

NA-MAAB:ab

JMAAB: ab

Matlab版本:all

规则

a:条件输入块应位于子系统的顶部

b:这些块的位置应由项目定义:[For Each][For Iterator][While Iterator]

原因

ab:统一条件子系统的内部和外部布局可以提高模型的可读性。

jc_0640:在条件子系统中设置Outport块的初始值

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:当一个条件子系统同时满足两个条件时:

—包含一个带有初始条件的块(即[Constant]和[Delay])

—连接到[Outport]

初始条件应在[Outport]上定义。

但是,当条件子系统的输出信号连接到[Merge]时,初始条件应在[Merge]上定义。

错误:

原因

a:当初始条件不明确时,模型执行时可能不符合预期。

jc_0659: Merge 模块的输入信号限制

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:只有条件 subsystem 的输出信号可以直接作为 merge 的输入

原因

a:可读性差

na_0003:If block的使用

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:对于[If], {If表达式}和{Elseif表达式}应使用只定义输入信号。(判断不能放到模块里面)

原因

a:当逻辑操作在[If]之外描述时,对控制条件的可视化理解更容易。描述If以外的逻辑操作,可以使验证集中在逻辑操作上。

jc_0656:条件控制块的使用

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:If和switch case模块应当选择默认输出,未使用的出口应当连接Terminator

正确:

原因

a:当模型中显式地设置异常处理(否则,默认)时,更容易确定是否存在无意义的处理,或者设计中是否缺少某些东西(例如缺少描述)。

jc_0657:基于条件控制流块和合并块的输出值保留

规则建议:

NA-MAAB:a2

JMAAB: a1/a2

Matlab版本:all

规则

a:当满足以下条件时,未使用的动作端口应连接到[Terminator]:

—保留过去的值

—使用[Merge]和一个条件流块,如[If]或[Switch Case]来切换功能。

错误:没有保留块

a2:使用[Delay]的反馈回路应在满足以下条件时实现:

—保留过去的值

—使用[Merge]和一个条件流块,如[If]或[Switch Case]来切换功能。

正确:

错误:

原因

a1:提高代码效率。当过去的值不是默认值(else)时,可以使用到[Terminator的连接。

a2:保留过去的值是显式的。

Operation blocks计算模块的要求

na_0002:适当地使用基本的逻辑和数值运算

规则建议:

NA-MAAB:ab

JMAAB: ab

Matlab版本:all

规则

a:逻辑信号不得与操作数字信号的块连接。

后面这个我感觉也可以用啊

b:数字信号不应连接到操作逻辑信号的块。

正确:

错误:

用于执行逻辑操作的块正在被用于执行数值操作。数字输出连接到处理逻辑输入的块的输入。

用于执行数值运算的块正在被用于执行逻辑运算。

可以向块提供逻辑值以外的输入。但是,[Enable Port]只能接收具有开/关的逻辑信号。

[Product]将数值运算结果连接到接收逻辑值[Enable Port]的块上,执行逻辑运算。

原因

ab:当数值和逻辑值被相同对待时,初始意图变得不明确,模型中的下一个操作可能会被错误执行,从而进一步加剧错误。

jc_0121:加法和减法块的用法

规则建议:

NA-MAAB:a

JMAAB: abc

Matlab版本:all

规则

a:加减法[Sum]块的{图标形状}应为“矩形”。当在反馈循环中使用时,{图标形状}可以是“圆形”。

b:“+”标记应使用,表示加减法[Sum]块的第一个输入。对于反馈回路,可以使用“-”标记设置第一个输入。

错误:第一个输入为-

c:加减法[Sum]块不得有超过两个输入。(这个没必要吧)

原因

abc:提高模型可读性

jc_0610:乘法和除法块的运算符顺序

规则建议:

NA-MAAB:不建议

JMAAB: ab

Matlab版本:all

规则

a:“*”标记应使用,表示乘除[Product]块的第一个输入。

b:乘除[Product]块不应超过两个输入。

原因

ab:增加可读性,提高运算效率

jc_0611:乘法和除法块的输入信号

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:当使用fixed-point 值作为乘除[产品]块的输入时,所有输入信号的数据类型符号应相同。

原因

a:数据类型符号的统一可以减少实用函数的数量。

jc_0794:除法模块

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:在使用除法时,算法的实现应避免除零

原因

a:偏离规则会导致意外操作和代码生成结果。

jc_0805:数字操作模块输入

规则建议:

NA-MAAB:a1/a2, b, c1/c2, d, e, f1/f2, g, h, i, j

JMAAB: a1/a2, b, c1/c2, d, e, f1/f2, g, h, i, j

Matlab版本:all

规则

a1:输入 Abs 模块的信号不能为有符号整型信号最小值

a2 :Abs 模块应当勾选{Saturation on Integer Overflow}

b:[Abs]的输入不能是无符号整数类型或fixed-point 类型。

c1: [Sqrt]模块输入应当不应该为负数

c2:【Sqrt】块参数{输出信号类型}设置为“complex”。

d:[Reciprocal Sqrt]模块输入不能为负或 0

e:当使用[Math Function]且块参数{Function}设置为“log”或“log10”时,块的输入不得为零。

【正确】用±eps替代

f1:当使用[Math Function]且块参数{Function}设置为“log”或“log10”时,块的输入不得为负数。

【正确】当输入小于eps时,该值为eps

f2:当使用[Math Function]时,块参数{Function}设置为“log”或“log10”时,块参数{Output Signal Type}应设置为“complex”。

g:当使用[Math Function]时,block参数{Function}设置为" mod "或" rem "时,第二个参数输入不得为零。

error:

当使用[Math Function]且块参数{Function}设置为“倒数”时,块的输入不应为零。

i:当[Product]块参数{乘法}设置为“Element-wise(.*)”时,输入的除数不应为零。注意:要指定一个除数输入,设置[Product]块参数{Number of inputs}为" */ "。)

正确:

j:当[Product]块参数{乘法}设置为“Matrix(*)”时,输入的除数不能设置为奇异矩阵。注意:要指定一个除数输入,设置[Product]块参数{Number of inputs}为" */ "。)

原因

a1c1def1ghij:偏离规则可能会导致意外行为

a2:正确的设置可以防止使用无效值可能导致的意外行为。

b:该块可以从生成的代码中得到优化,从而导致您无法跟踪到生成的代码。(对一个正数取绝对值没有意义)

c2f2 :正确的设置可以防止使用负值可能导致的意外行为。

jc_0622:Fcn块的使用

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:不同优先级的计算需要使用括弧表示

原因

a:当操作符具有不同的优先级,并且没有通过使用括号明确指定计算顺序时,可读性会受到影响,可能会造成误解。这可能会导致意外行为。

jc_0621:逻辑运算符块的使用

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:模块图形形状应当选择方形

【Incorrect】

【逻辑运算符】的一些图标形状不是矩形的

原因

a:提高可读性

jc_0131:关系运算符块的使用

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:常数应当位于第二个输入

原因

a:提高可读性

jc_0800:在Simulink中比较浮点类型

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:等价比较运算符(==,~=)不能用于浮点数据类型

原因

a:浮点数需要按精度判断

jc_0626:查表模块的使用

规则建议:

NA-MAAB:ab

JMAAB: ab

Matlab版本:all

规则

a: {Lookup Method}应当设置为“Interpolation – Use End Values”

b: 对于多维查表,需要做如下设置:

{Interpolation Method} 设置为 “Linear point-slope” 或 “Linear Lagrange”

{Extrapolation Method} 设置为 “Clip”

勾选{Use last table value for inputs at or above last breakpoint}选项

原因

ab:当为[Lookup Table]输入一个范围外的值时,输出是通过插值确定的,可能成为一个不可能的值或导致[Lookup Table]输出溢出。

jc_0623: 连续时延块和离散时延块的使用

规则建议:

NA-MAAB:ab

JMAAB: ab

Matlab版本:all

规则

a: [Unit Delay] or [Delay]用于离散模型、[Memory]用于连续模型

错误:[Memory]用于离散型模型或子系统

原因

a:遵循规则可以提高模型的可读性。

jc_0624:使用Tapped Delay blocks/Delay blocks

规则建议:

NA-MAAB:不建议

JMAAB: ab

Matlab版本:all

规则

a:当保存以前的值时,[Tapped Delay]应使用从所有保存的值创建一个矢量信号。

【不正确】【Tapped Delay】未被使用

b:当保留过去的值时,[Delay]应使用只获取最旧的值

原因

a:[Tapped Delay]是通过保存过去值的数组来设置的,这可以提高代码的可读性,从而提高代码效率。

b:提高模型可读性和代码效率。

jc_0627:离散时间积分块的使用

规则建议:

NA-MAAB:不建议

JMAAB: ab

Matlab版本:all

规则

a:定义[离散时间积分器]块参数{饱和上限}和{饱和下限}。

b:当[离散时间积分器]块参数{饱和上限}和{饱和下限}定义为Simulink参数时,参数{数据类型}设置为“auto”。

【正确】{数据类型}设置为" auto "

原因

a:避免块输出溢出,并防止使用该块输出的其他计算块产生意外结果。

b:当{Data type}设置为非“auto”、“single”或“double”值时,会发生仿真错误。

jc_0628:限制模块

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:[[Saturation]]和[[Saturation]]应使用限制物理数量。不得使用类型转换。不应设置数据类型的最大值和最小值的上下限。

原因

a:一致使用[Saturation]可以提高模型的可维护性。

jc_0651:实现类型转换

规则建议:

NA-MAAB:不建议

JMAAB: a

Matlab版本:all

规则

a:[数据类型转换]改变块输出信号的数据类型时的应使用。

原因

a:划分数学操作和类型转换有助于阐明每个表达式的执行顺序和数据类型。

Other blocks其他模块

db_0042:输入输出模块的使用

规则建议:

NA-MAAB:a,b

JMAAB: a,b,c

Matlab版本:all

规则

a: 输入模块应当位于左侧,但可移动以防止信号交叉。

【正确用法】【input】位于图的左侧。

b:[Ouput]模块应位于右侧,但可以移动,以防止交叉信号。

【正确用法】[Outport]位于图的右侧。

c: 禁止复制输入模块

原因

abc:定义的操作规则提高了可读性。

jc_0081:输入/输出块图标显示

规则建议:

NA-MAAB:a,b

JMAAB: a,b,c

Matlab版本:all

规则

a: 【Inport】、【Outport】块参数{Icon Display}设置为“Port number”。

原因

a:通过显示[Inport]和[Outport]的端口号来提高可读性。允许轻松识别子系统中的端口号。通过显示块名并使到[Inport]或[Outport]的信号线的名称与块名相同来防止错误连接到分层子系统。

na_0011: Goto/From 模块的使用范围

规则建议:

NA-MAAB:a,b

JMAAB: a,b,c

Matlab版本:all

规则

a: Goto/From 模块的使用范围

原因

a:当[Goto]和对应的[From]的层次结构不同时,连接关系可能很难理解。当[Goto]和对应的[From]的层次结构不同,并且虚拟子系统更改为原子子系统时,可能会发生仿真错误。

jc_0161: Data Store Memory 模块定义

规则建议:

NA-MAAB:不建议

JMAAB: a,b

Matlab版本:all

规则

a: 尽可能减少使用范围

b:在【Data Store Memory】中只定义执行和代码生成所需的数据。

原因

a:提高可读性

b:未使用的[Data Store Memory]数据可能会影响维护和可操作性。

jc_0141: Switch 模块使用

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a: 第二个[[Switch]]输入条件应该是一个逻辑类型。【[Switch]】块参数{Criteria for passing first input}设置为“u2~=0”。

原因

a:当应用配置时,使用Simulink块比用块写操作表达式更容易理解规范。

jc_0650: Switch 模块输入输出类型

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a: 数据输入与输出的数据类型需要相同

原因

a:防止隐式数据转换。

jc_0630: Multiport Switch 的使用

规则建议:

NA-MAAB:ac

JMAAB: abc

Matlab版本:all

规则

a: [Multiport Switch]块参数{数据端口数量}应该是两个或两个以上

b:[Multiport Switch]控制端口的输入必须是无符号整数。

c:当[Multiport Switch]块参数{data port order}设置为“Specify indices指定索引”时,需要设置以下块参数:

{Data port for default case} to “Additional data port”. {默认情况下的数据端口}到“附加数据端口”。

{Diagnostic for default case} to “None”. {诊断默认情况}为" None "。

原因

a:当只有一个数据端口时,可能会出现意外的输出,因为块会更改以从向量中提取标量。

b:控制端口是一个输入范围,它期望一个整数值为零或更大。当一个有符号或非整数信号连接到控制端口时,它可能出现误连接。当输入负数或非整型值时,可能会导致错误的输出

c:当块参数{数据端口顺序}设置为“指定索引”时,输入到[Multiport Switch]的任何值,除控制端口指定的索引外,将被视为与指定索引的最后一个值相同。因此,可以选择非预期的数据端口。

na_0020:不同子系统的输入数

规则建议:

NA-MAAB:a

JMAAB: ab

Matlab版本:all

规则

a:[Variant Subsystem]及其子子系统或[Model Reference]的输入/输出数量应相同。

b:[Model Variants]的输入/输出数量应与其参考模型相同。

【正确】被引用模型的输入数量与模型变量相同。

原因

ab:当输入/输出的数量不同时,未连接的信号可能会被无意地忽略。

na_0036:默认的variant

规则建议:

NA-MAAB:ab

JMAAB: ab

Matlab版本:all

规则

a:应配置Variant subsystems,以便始终选择一个子系统。这是通过使用这些方法之一来实现的:

为variant使用默认的variant。

定义完全覆盖条件变量所有可能值的条件。例如,定义布尔值的真值和假值的条件。

b:应设置模型变量条件,以便配置所有可以应用于条件变量信号的值,以便始终选择一个子系统。例如,为变量信号值为true和false准备一个条件。

原因

ab:防止省略条件。当条件被忽略时,可能没有活动的子系统。

na_0037:对变量条件使用单变量

规则建议:

NA-MAAB:a

JMAAB: a

Matlab版本:all

规则

a:变量条件应使用禁止由多个变量组成的复合条件。

例外:当使用默认变量时,可以使用由多个变量组成的条件表达式。

【正确】变量条件是由多个变量组成的一个条件所设定的。

建议在条件方程中使用枚举类型变量。这个例子使用数值来提高可读性。

【错误】变量条件是由多个变量组成的复合条件设置的。

原因

a:过多的条件不利于可读性,容易出错

版权声明:本文为知乎「赞哥哥」的原创文章,已获作者发表许可。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多