什么是PLC中的差分指令?

时间:2012-02-21 10:11:52

标签: plc

我正在使用Omron CP1L PLC并使用CX程序员编程。我很难理解“差异指令”究竟是什么,来自文档:

  

使用差异化指令,执行结果以获取指令   仅在满足执行条件时才会反映在条件标志中,   前一个梯级的结果(而不是执行结果)   差异化指令)将反映在条件标志中   在下一个周期。因此,您必须了解条件标志   如果执行结果不同,将在下一个周期中执行   使用说明。

我的理解是:指令总是在条件满足时执行,当然如果条件标志存在以从前一个梯级的指令获得其ON或OFF状态,则下一个梯级的指令将被执行。所以我完全没有理解文档中的解释。并且看到两者之间没有区别:

(A)不使用差异

Without differential

(B)使用差异
enter image description here

1 个答案:

答案 0 :(得分:2)

手册警告你的是,在不正确的情况下,指令A将在C变为真后执行一次(区分指令)但指令B的执行取决于指令中条件标志的状态在A中执行。如果A仅执行一次,则条件标志仅对当前PLC扫描有效。具有C满足的后续PLC扫描将不执行差分指令A但是可以执行差分指令B-IF如果前一个梯级执行比较操作并将全局条件标志设置为TRUE。

如果你了解全局变量的危险,这基本上是一回事。 PLC逻辑中的某些标志是某些指令使用的全局标志。它们仅在执行指令后立即保持有效,并且每次在不同数据上执行时都会更改。在不正确的情况下,无人看守的梯级悬挂着一个不保证执行的操作的全局条件标志。

在正确的情况下,执行条件是有区别的而不是指令。当C变为真时,它进入[DIFU D]。这使得D仅适用于下一次PLC扫描 - 每次C从FALSE变为TRUE时,D将仅对于一次PLC扫描才变为真。这保证了指令A(生成条件标志值)只执行一次,并且保证每次遇到暴露指令B的条件标志时都执行它。

编辑:有问题的执行流程 - CF的状态是RANDOM(更确切地说:不受控制!),除非我们刚刚执行了比较操作。每次比较指令在程序中的任何位置执行时,整个程序中的所有其他比较操作都将改变其值!

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。