PLC的立即指令
一、 立即指令的核心原理
PLC 的正常工作方式是循环扫描:
- 输入采样阶段:读取所有物理输入点(I)的状态,存入输入映像寄存器。
- 程序执行阶段:根据输入映像寄存器的值,执行用户程序,运算结果存入输出映像寄存器。
- 输出刷新阶段:将输出映像寄存器的值,一次性写入物理输出点(Q)。
立即指令的“破坏性”创新在于:
- 立即输入指令:在执行程序时,不读取输入映像寄存器中的旧值,而是直接读取物理输入点的即时状态。
- 立即输出指令:在执行程序时,不等到扫描周期结束,而是立即将运算结果同时写入输出映像寄存器和物理输出点。
二、 立即指令的分类与说明
我们可以将其分为三类:
1. 立即触点指令
用于直接读取物理输入点的即时状态。
- LDI (立即取):装载一个物理输入点的常开状态。
- LDNI (立即取反):装载一个物理输入点的常闭状态。
- AI (立即与):与一个物理输入点的常开状态串联。
- ANI (立即与反):与一个物理输入点的常闭状态串联。
- OI (立即或):或一个物理输入点的常开状态并联。
- ONI (立即或反):或一个物理输入点的常闭状态并联。
- 关键限制:操作数 bit只能是 I(物理输入点)。
2. 立即输出指令
用于立即驱动物理输出点。
- =I (立即输出):将逻辑结果立即写入指定的物理输出点及其映像寄存器。
- 关键限制:操作数 bit只能是 Q(物理输出点)。
3. 立即置位/复位指令
用于一次性立即置位/复位连续多个物理输出点。
- SI (立即置位):从指定Q点开始,连续N个点立即置1。
- RI (立即复位):从指定Q点开始,连续N个点立即清0。
- 关键限制:bit只能是 Q;N的范围为 1~128。
三、 应用实例
(图片摘自《现代电气控制及PLC应用技术》(王永华))
程序逻辑很简单:所有支路的条件都是 I0.0。但使用了不同类型的指令,导致输出响应完全不同。
工作过程分析(假设在 t0时刻 I0.0从0变为1):
| 网络 | 输出点 | 使用指令类型 | 响应时刻与行为分析 |
| 1 | Q0.0 | 普通输出 = | 在本扫描周期的输出刷新阶段才变为1。从I0.0变化到Q0.0动作,延迟了整个程序执行时间+输出刷新等待时间。 |
| 2 | Q0.1 | 立即输出 =I | 在程序执行到本网络时立即变为1。它不等待扫描周期结束。这是最快的输出响应。 |
| 3 | Q0.2 | 立即置位 SI | 同=I,在程序执行到本网络时立即置1。 |
| 4 | Q0.3 | 立即触点 LDI+ 普通输出 = | 条件判断最快(使用了I0.0的立即触点),因此其输出映像寄存器在程序执行到此时立即更新。但物理输出点仍需等到本扫描周期的输出刷新阶段才变为1。其速度介于普通输出和立即输出之间。 |
精炼总结:
- Q0.0(普通输出):映像寄存器在程序执行时改变,物理触点在输出刷新时改变。
- Q0.1/Q0.2(立即输出):映像寄存器和物理触点在程序执行时同时立即改变。
- Q0.3(立即触点输入):映像寄存器在程序执行时立即改变,物理触点在输出刷新时改变。
四、 核心要点与使用场景
- 本质区别:立即指令操作的是 物理I/O点,普通指令操作的是 I/O映像寄存器。
- 使用限制:立即输入指令只能用于 I,立即输出指令只能用于 Q。
- 主要应用场景: 对响应速度要求极高的场合:如高速计数、脉冲捕捉、急停处理等,必须使用立即输出指令来避免一个扫描周期的延迟。 需要读取输入信号瞬时状态的场合:如检测一个比扫描周期还短的脉冲,必须使用立即输入指令,否则在输入采样阶段可能会丢失这个信号。
- 谨慎使用:立即指令打断了PLC有序的扫描机制,过度或不当使用会使程序时序复杂化,不利于调试和维护。通常只在关键的高速逻辑中局部使用。
总结:立即指令是PLC为了满足实时性要求而提供的“快捷通道”。它牺牲了部分扫描周期的规整性,换取了对物理世界输入/输出事件的超快速响应。