比较 (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。
在安全应用中允许使用的运算符需要遵从相关规则。请参见
有效运算符
部分。
可用语言
梯形图
RSL5K_CMP Ladder Diagram_v31
功能块
此指令不可用于功能块中。
结构化文本
此指令不可用于结构化文本中。
操作数
以下是 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)。
  • 字符的十六进制值可确定两个字符串之间的大小关系。
  • 两个字符串按照电话号码簿方式排序时,它们的大小由字符串的顺序决定。
CMP strings
影响数学状态标志
控制器
影响数学状态标志
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380 和 GuardLogix 5580 控制器
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器
如果表达式中包含的运算符(例如 +、-、*、/)会影响数学状态标志,则 CMP 指令会影响数学状态标志。
请参见数学状态标志部分。
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”通过数组建立索引,了解关于数组索引故障的信息。
执行
梯形图
条件/状态
执行的操作
预扫描
不适用。
梯级输入条件为假
将梯级输出条件设置为梯级输入条件
梯级输入条件为真
将梯级输出条件设置为梯级输入条件
如果表达式的计算结果为 false
梯级输出条件设置为假
后扫描
不适用
示例
梯形图
RSL5K_CMP Ladder Diagram Example_v31
如果 value_1 等于 value_2,light_a 会设置为真。如果 value_1 不等于 value_2,light_a 会设置为假。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal