文章时效性提示
本文发布于 249 天前,部分信息可能已经改变,请注意甄别。
在信捷PLC编程中,ZCP(区间比较)和CMP(单值比较)都是数据比较指令,但功能和应用场景有显著区别。以下是详细对比及实例说明:
1. 核心区别
| 指令 | 功能 | 输出结果数量 | 适用场景 |
|---|
| CMP | 比较源数据与单个目标值 | 3种结果(>、=、<) | 判断数据是否超限、等于特定值 |
| ZCP | 判断源数据是否在指定区间内 | 3种结果(<下限、区间内、>上限) | 数据范围检测(如温度、压力控制) |
2. 指令详解
(1) CMP 指令
- 语法:
CMP S1 S2 DS1:源数据(待比较值)S2:目标值D:连续3个位元件存储结果(D=小于, D+1=等于, D+2=大于)
- 执行特点:每个扫描周期执行一次,结果实时更新。
(2) ZCP 指令
- 语法:
ZCP S1 S2 S3 DS1:区间下限S2:区间上限(需满足 S1 ≤ S2)S3:源数据D:连续3个位元件存储结果(D=小于下限, D+1=区间内, D+2=大于上限)
- 执行特点:仅在使能条件ON时执行一次(需配合上升沿触发)。
3. 实例演示
场景1:CMP 指令应用(速度监控)
1 2 3 4 5
| | X0 CMP K100 D0 M0 | |----|------[CMP 100 D0 M0]-| | |--[M0]----(Y0) | // D0 < 100 时Y0亮 | |--[M1]----(Y1) | // D0 = 100 时Y1亮 | |--[M2]----(Y2) | // D0 > 100 时Y2亮
|
- 功能:监控D0的值:
- 若
D0 < 100 → M0=ON → Y0输出 - 若
D0 = 100 → M1=ON → Y1输出 - 若
D0 > 100 → M2=ON → Y2输出
场景2:ZCP 指令应用(温度区间控制)
1 2 3 4 5
| | X1 ZCP K50 K80 D10 M10 | |----|------[ZCP 50 80 D10 M10]-| | |--[M10]---(Y3) | // D10 < 50 → 温度过低 | |--[M11]---(Y4) | // 50≤D10≤80 → 温度正常 | |--[M12]---(Y5) | // D10 > 80 → 温度过高
|
- 功能:检测D10(温度值):
<50℃ → M10=ON → 启动加热(Y3)50~80℃ → M11=ON → 维持状态(Y4)>80℃ → M12=ON → 启动冷却(Y5)
4. 关键注意事项
- 结果元件占用:
CMP/ZCP 的输出会占用连续3个位元件(如指定M0则实际使用M0~M2)。
- 指令触发方式:
CMP:每个扫描周期执行,适合实时监控。ZCP:需配合上升沿触发(如LDP X1),避免多次执行。
- 区间有效性:
ZCP 要求 S1 ≤ S2,否则 M11(区间内)永远为OFF。
总结
CMP:用于单点比较(如阈值报警、数值匹配)。ZCP:用于区间判断(如工艺参数范围控制)。
根据实际需求选择指令,可高效实现精准的逻辑控制。