我正在使用Omron CP1L PLC并使用CX程序员编程。我很难理解“差异指令”究竟是什么,来自文档:
使用差异化指令,执行结果以获取指令 仅在满足执行条件时才会反映在条件标志中, 前一个梯级的结果(而不是执行结果) 差异化指令)将反映在条件标志中 在下一个周期。因此,您必须了解条件标志 如果执行结果不同,将在下一个周期中执行 使用说明。
我的理解是:指令总是在条件满足时执行,当然如果条件标志存在以从前一个梯级的指令获得其ON或OFF状态,则下一个梯级的指令将被执行。所以我完全没有理解文档中的解释。并且看到两者之间没有区别:
(A)不使用差异
(B)使用差异
答案 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。