PLC 和电机控制器之间的时间敏感握手

Time sensitive handshaking between PLC and motor controller

我正在尝试在我的 PLC(使用梯形逻辑)和电机控制器(使用 VB)之间设置握手。我正在使用隐式通信,这意味着 PLC 有一些输出寄存器,它可以写入电机控制器将其视为输入寄存器。同样,控制器有一些输出寄存器,可用于回写,PLC 会将这些寄存器视为输入。重要的是要注意,这两种设备都不能更改它视为输入的寄存器。

这个事实很重要,因为通常我会让 PLC 通过将寄存器设置为 1 来发送命令,然后一旦电机控制器完成该命令,它就会将同一寄存器设置回零,然后可以重复该过程.但由于电机控制器无法将同一寄存器设置回零,因此它必须使用不同的寄存器向 PLC 发出信号。在我的 PLC 代码中,当 "acknowledge" 寄存器打开时,我将 "command" 寄存器恢复为零,但是根据当时 PLC 代码的位置,它可能只是在检查之前再次发出命令"acknowledge" 注册。目前,当我发出移动电机的命令时,它会移动 3 或 6 次。

当使用两个独立的寄存器时,有没有一种通用的握手方式?

不要将命令作为 on/off 发送,而是作为唯一的递增版本号发送。接收者只对每个新数字进行一次操作。重置为零后,例如一天。我在集装箱起重机控制中一遍又一遍地使用这个 "protocol"。如果接收方已经看到某个版本,它会将数字反映回去以进行确认。由于整个事情反映了撕毁一张门票并将(编号的)门票退还的过程,我称之为 "Ticked and Slip protocol"。它在多台起重机上完美运行了 15 年(以及许多其他未同步设备之间的通信)。