在三菱 PLC(可编程逻辑控制器)中,CMP 指令(Compare,比较指令)用于比较两个数据的大小关系,并根据比较结果输出相应的触点信号。它是程序中实现逻辑判断、条件分支的重要指令。
一、CMP 指令的基本格式
三菱 PLC 中,CMP 指令的基本形式为:
CMP S1 S2 D
- S1:源操作数 1(被比较的值,可以是常数、寄存器如 D、W 等)
- S2:源操作数 2(用于比较的值,同 S1)
- D:目标操作数(指定比较结果的存储软元件,通常是 3 个连续的辅助继电器 M 或状态继电器 S)
二、功能与工作原理
CMP 指令的作用是比较 S1 和 S2 的数值,并将结果通过 D 指定的 3 个连续软元件输出:
- 当 S1 > S2 时:
D
对应的软元件接通(为 ON) - 当 S1 = S2 时:
D+1
对应的软元件接通(为 ON) - 当 S1 < S2 时:
D+2
对应的软元件接通(为 ON)
例如,若指令为 CMP D0 K100 M0
:
- 当
D0 > 100
时,M0
接通 - 当
D0 = 100
时,M1
接通 - 当
D0 < 100
时,M2
接通
三、使用注意事项
-
操作数类型:
- S1 和 S2 可以是常数(K/H)、数据寄存器(D)、定时器当前值(T)、计数器当前值(C)等。
- 支持 16 位或 32 位数据比较(32 位时需加前缀
D
,如DCMP
)。
-
执行条件:
- CMP 指令需要在触发条件(如 X0 接通)下执行,每次触发时进行一次比较。
- 若触发条件持续为 ON,PLC 会在每个扫描周期重新执行比较。
-
结果保持:
- 比较结果会持续保持,直到下一次 CMP 指令执行或被其他操作修改。
-
32 位比较:
- 当比较 32 位数据时,使用
DCMP
指令,操作数需指定 32 位寄存器(如 D1D0,D1 为高 16 位,D0 为低 16 位)。
- 当比较 32 位数据时,使用
四、应用示例
五、与其他比较指令的区别
- CMP:通用比较指令,可比较任意两个数值。
- ZCP(区间比较):判断一个值是否在某个区间内(如
ZCP S D1 D2 M0
用于判断 S 是否在 D1~D2 之间)。
CMP 指令是三菱 PLC 中实现数值判断的基础指令,广泛用于液位控制、速度检测、计数达标等场景。