检查 If 模块中的逻辑表达式
检查 ID:mathworks.maab.na_0003
规范:na_0003:If 模块的使用
描述
检查 If 模块中逻辑表达式的主表达式是否构造不当。
标识 If 模块中主表达式过于复杂的情形。
主表达式被定义为:
一个输入
一个常量
一个常数参数
一个括号表达式,只包含零或特定运算符(
<
、>
、>=
、<=
、==
、~=
、|
、&
或~
)。
主表达式的示例包括:
u1
5
K
(
u1
>0
)(
u1
) ≤G
(
u1
>U2
)(~
u1
)
可接受的逻辑表达式例外示例包括:
u1 | u2
(
(u1 > 0) & (u1 < 20)
(u1 > 0) & (u2 < u3)
(u1 > 0) & (~u2)
下表提供了不可接受的逻辑表达式的示例。
主表达式 | 原因 |
---|---|
| 主表达式过多。 |
| 主表达式中包含不可接受的运算符。 |
| 非输入类型的主表达式过多。 |
| 主表达式中包含不可接受的运算符。 |
例外
当同时满足以下两个条件时,一个逻辑表达式可以包含两个以上的主表达式:
主表达式均为输入。
仅存在一种逻辑运算符。
可接受的例外情况示例包括:
u1 | u2 | u3 | u4 | u5
u1 & u2 & u3 & u4
简单的 "If" 表达式
根据规范 na_0003 的字面解释,表达式 u1 < u2
属于违规。然而,该表达式遵循常用的 "If" 表达式模板(<主表达式><运算符><主表达式>)。因此,当不使用逻辑运算符且仅存在一个关系运算符时,该表达式满足规范 na_0003,u1
< u2
并不违规。
此检查需要 Simulink® Check™ 许可证。
检查参数化
此检查不包括子检查,因为 MAB 建模规范仅提供一个子 ID。
作为参考,NA-MAAB 和 JMAAB 建模标准组织建议使用的 MAB 规范子 ID 为:
NA-MAAB - 无建议
JMAAB - a
结果和建议的操作
条件 | 建议的操作 |
---|---|
逻辑表达式包含两个以上的主表达式,每个主表达式由一个常量、常量参数和输入组成。 | 考虑以下项之一:
|
逻辑表达式包含两个以上的括号表达式,且这些表达式使用了多个关系运算符。 | 考虑以下项之一:
|
括号表达式包含除零或 < 、> 、>= 、<= 、== 、~= 、| 、& 或 ~ 之外的关系运算符。 | 考虑以下项之一:
|
功能和限制
不会对仅使用以下任一相对运算符的逻辑表达式进行标记:
<
、>
、>=
、<=
、==
、~=
、|
、&
和~
。对库模型运行。
可以分析库链接模块的内容。默认情况下,输入参数 Follow links 设置为 on。
可以分析封装子系统中的内容。默认情况下,输入参数 Look under masks 设置为 graphical。