比较 (CMP)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。使用运算符、标签和立即数定义 CMP 表达式。使用括号 ( ) 定义更为复杂的表达式的各个部分。
CMP 指令的优势在于支持在单条指令中使用复杂的表达式。
对表达式进行求值时,所有非 REAL 类型的操作数都将转换为 REAL 类型,然后在以下任意条件为真时执行计算。
- 表达式中的所有操作数均为 REAL 类型。
- 表达式中包含 SIN、COS、TAN、ASIN、ACOS、ATAN、LN、LOG、DEG 或 RAD。
在安全应用中允许使用的运算符需要遵从相关规则。请参见
有效运算符
部分。可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
此指令不可用于结构化文本中。
操作数
以下是 CMP 指令的操作数。
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅数据转换“数据转换”部分。
梯形图
以下是梯形图操作数。
操作数 | 数据类型 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 格式 | 说明 |
|---|---|---|---|---|
Expression | SINT INT DINT REAL 字符串类型 | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL 字符串类型 | 立即数标签 | 由标签和/或立即数构成且各部分由运算符分隔的表达式 |
规范表达式的格式
对于表达式中使用的每个运算符,必须为其提供一到两个操作数(标签或立即数)。可使用下表规范表达式中运算符和操作数的格式。
对如下数量的操作数进行运算的运算符: | 使用此格式: | 示例 |
|---|---|---|
一个操作数 | 运算符(操作数) | ABS(tag) |
两个操作数 | operand_a 运算符 operand_b | tag_b + 5 tag_c AND tag_d (tag_e**2) MOD (tag_f / tag_g) |
确定运算顺序
指令按预定顺序执行表达式中的运算,而不是必须按显示顺序执行。可以用圆括号括起一些内容,以此指定运算顺序,这样指令就会先执行括号内的运算,然后再执行其他运算。
相同顺序的运算从左至右执行。
Order | 操作 |
|---|---|
1 | ( ) |
2 | ABS、ACOS、ASIN、ATAN、COS、DEG、BCD_TO、IsINF、IsNAN、LN、LOG、RAD、SIN、SQRT、TAN、TO_BCD、TRUNC |
3 | ** |
4 | -(取反)、NOT、! |
5 | *,/,MOD |
6 | -(减),+ |
7 | AND |
8 | XOR |
9 | OR |
10 | <,<=,>,>=,=,<> |
11 | && |
12 | ^^ |
13 | || |
在表达式中使用字符串
如果在表达式中使用由 ASCII 字符构成的字符串,请遵循以下指导原则:
- 表达式可以比较两个字符串型标签。
- ASCII 字符不能直接输入到表达式中。
- 允许使用以下操作数:运算符说明=等于<小于<=小于等于>大于>=大于等于<>不等于
- 如果其字符匹配,则字符串相等。
- ASCII 字符区分大小写。大写 A ($41) 不等于小写 a ($61)。
- 字符的十六进制值可确定两个字符串之间的大小关系。
- 两个字符串按照电话号码簿方式排序时,它们的大小由字符串的顺序决定。

影响数学状态标志
控制器 | 影响数学状态标志 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380 和 GuardLogix 5580 控制器 | 否 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 如果表达式中包含的运算符(例如 +、-、*、/)会影响数学状态标志,则 CMP 指令会影响数学状态标志。 |
请参见数学状态标志部分。
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”通过数组建立索引,了解关于数组索引故障的信息。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用。 |
梯级输入条件为假 | 将梯级输出条件设置为梯级输入条件 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件 如果表达式的计算结果为 false 梯级输出条件设置为假 |
后扫描 | 不适用 |
示例
梯形图

如果 value_1 等于 value_2,light_a 会设置为真。如果 value_1 不等于 value_2,light_a 会设置为假。
提供反馈