手册警告您的是,在不正确的情况下,指令 A 只会在 C 变为真(微分指令)后执行一次,但指令 B 的执行取决于在 A 中执行的指令的条件标志状态. 如果 A 只执行一次,则条件标志只对当前 PLC 扫描有效。满足 C 的后续 PLC 扫描不会执行差分指令 A,但可以执行差分指令 B——如果前一个梯级执行比较操作并将全局条件标志设置为 TRUE。
如果你了解全局变量的危险,这基本上是一回事。PLC 逻辑中的一些标志是某些指令使用的全局标志。它们仅在指令执行后立即保持有效,并且每次在不同数据上执行时都会更改。在不正确的情况下,未保护的梯级与全局条件标志悬挂在一起,用于不保证执行的操作。
在正确的情况下,执行条件被区分而不是指令。当 C 变为真时,它进入 [DIFU D]。这使得 D 仅适用于下一次 PLC 扫描 - 每次 C 从 FALSE 变为 TRUE 时,D 仅适用于一次 PLC 扫描。这保证了指令 A(它生成条件标志值)只执行一次,此外,保证每次遇到暴露指令 B 的条件标志时都会执行。
编辑:有问题的执行流程 - CF 的状态是随机的(更准确地说:不受控制!)除非我们刚刚执行了比较操作。每次在程序中的任何位置执行比较指令时,整个程序中的所有其他比较操作都会改变其值!
STATE C Instruction A CF(=) InstructionB
Scan #1 : OFF N/E RANDOM N/E
Scan #2 : ON EXECUTES > TRUE TRUE EXECUTES //desired
Scan #3 : ON N/E RANDOM(T) N/E
Scan #4 : ON N/E RANDOM(F) N/E
Scan #5 : ON N/E RANDOM(T) *EXECUTES*!! //UNDESIRED
在这里,只要 C 保持 ON,每次 CF 由于程序其他区域的其他比较操作而从 FALSE 切换到 TRUE 时,都会执行指令 B。这不是我们所希望的——我们只希望在 InstructionA 已经执行并且返回 CF= 为 TRUE 的情况下执行 InstructionB。