【问题标题】:What is differential instructions in PLC?PLC中的差分指令是什么?
【发布时间】:2012-02-21 10:11:52
【问题描述】:

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

使用微分指令,指令的执行结果 仅当满足执行条件时才反映在条件标志中, 和上一个梯级的结果(而不是 微分指令)将反映在条件标志中 在下一个周期。因此,您必须了解哪些条件标志 如果差异化的执行结果将在下一个周期执行 使用说明。

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

(A) 不使用差分

(B) 使用差分

【问题讨论】:

标签: plc


【解决方案1】:

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

【讨论】:

  • 你的意思是,如果不使用差异,B 不会在与 A 相同的循环中执行,而是在下一次运行?此外,当 C 在两种情况下都为真时,A 是否总是执行一次?此外,“..满足 C 的后续 PLC 扫描将不会执行差分指令..”但是梯形图从左到右自上而下,如果 C 满足,则功率流总是导致指令 A。不是吗?
  • 是的,但是当能流 FIRST 开启时,差分指令只执行一次。它不会再次执行,直到能流关闭然后再次打开,当它再次执行 ONCE 和 ONLY ONCE 时。一个差分触点,通过扩展,在其基础标志变为 TRUE 时关闭一次且仅一次。它不会再次关闭,直到基础标志变为 FALSE 然后再次变为 TRUE 等等。
  • 但不是所有指令(差分指令或其他指令)都不会在一个周期内执行或仅执行一次吗? “在不正确的情况下,指令 A 将只执行一次”,在正确的情况下,“微分指令只执行一次”。那么我的问题仍然存在 - 不正确和正确的图表都实现了相同的功能。一切都执行一个,它们最终具有相同的逻辑。
  • wait... 在不正确的情况下,如果指令 A 在第一个周期执行,它的 CF 是否反映了同一周期(第一个)或下一个周期(即第二个周期)的指令结果?
  • CF 在扫描期间立即更新并保持其值,直到另一个比较指令在程序中的其他任何位置执行。当指令执行时,它的状态在扫描中间发生变化,并且在程序中的剩余梯级或直到进行另一次比较之前,它都保持该状态。如果您在程序中进行 100 次比较,那么 CF 将在扫描期间切换值 100 次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2020-12-10
  • 2012-12-02
  • 2012-12-30
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多