1

我正在使用 Omron CP1L PLC 并使用 CX-programmer 进行编程。从文档中,我很难理解“差分指令”到底是什么:

对于微分指令,仅当满足执行条件时,指令的执行结果才会反映在条件标志中,而上一个梯级的结果(而不是微分指令的执行结果)将在下一个周期中反映在条件标志中。因此,如果要使用微分指令的执行结果,您必须知道条件标志在下一个周期中将做什么。

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

(A) 不使用差速器

无差速器

(B) 使用差分
在此处输入图像描述

4

1 回答 1

2

手册警告您的是,在不正确的情况下,指令 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。

于 2012-02-21T10:49:07.173 回答