设备提交

Device Commit(设备提交)动作将触发器内部缓冲区中保存的设备变量通过设备管理器及设备驱动程序写入至设备。

当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。此过程会最大化触发器执行的性能。

为绕过此内部缓冲,Device Commit(设备提交)动作会强制将来自内部缓冲区的设备变量通过设备管理器和设备驱动程序写入至设备。

背景

您可以使用触发器中的 Device Commit(设备提交)动作将设备变量写入缓冲区刷新至连接设备。当触发器执行时,对设备变量的所有写入都将写入缓冲区,而在触发器执行结束时,缓冲区将刷新至设备。这种做法旨在最大限度提高变量写入设备时的性能。

例如,假设您有一个触发器,该触发器有两个 Set(设置)动作和一个 Wait(等待)动作。

  1. 将 D[1000] 设置为 1
  2. 等待 2000 ms
  3. 将 D[1000] 设置为 0

每个 Set(设置)动作都会为设备变量设置一个值。当触发器执行时,D[1000] 在写入缓冲区中设置为 1,Wait(等待)动作会将触发器暂停 2000 毫秒。触发器执行恢复后,第二个 Set(设置)动作会将 D[1000] 在写入缓冲区中设置为零,然后覆盖缓冲区中已有的先前值 1。在触发器执行结束时,缓冲区将刷新,D[1000] 在连接设备中设置为零。执行过程中,触发器从不实际向 D[1000] 写入 1。

如在两个 Set(设置)动作之间添加 Device Commit(设备提交)动作,可将第一个 Set(设置)动作的值写入 PLC。

此触发器执行时,其行为将有所不同。触发器将在写入缓冲区中将 D[1000] 设置为 1。

随后 Device Commit(设备提交)将导致写入缓冲区刷新,且 D[1000] 在连接设备中设置为 1。触发器之后将等待 2000 毫秒;在此时间过后,第二个 Set(设置)动作会在写入缓冲区中将 D[1000] 设置为零。当触发器执行结束时,触发器将刷新写入缓冲区,然后在连接设备中将 D[1000] 设置为零。不同的行为是将 D[1000] 设置为 1 会持续 2 秒,随即又设置回零。

设备提交注意事项

通常会在设备变量为动作中的目标变量时进行“写入”。例如,Set(设置)动作具有源变量和目标变量。

当触发器启动执行时,触发器动作引用的所有变量将读取到内部缓冲区中。触发器的任何动作引用变量时,将在该内部缓冲区读取或写入变量的值。在触发器完成其执行时,内部缓冲区将写入设备。此过程会最大化触发器执行的性能。

如果所有设备变量需要直接写入设备而不仅仅是写入内部触发器缓冲区,将使用 Device Commit(设备提交)动作。这些情况需要考虑触发器和设备中的总体应用逻辑,以了解应用程序所有部分的动态交互。Device Commit(设备提交)动作就处理时间而言确实会占用额外资源(例如与 Set(设置)动作相比),因为触发器引擎和设备驱动程序必须向下与物理设备通信,包括通过网络与设备通信。

在触发器完成其执行时,内部触发器缓冲区(例如 Set(设置)动作的目标变量)将写入设备。