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

Vb.net PLC和电机控制器之间的时间敏感握手,vb.net,handshake,plc,Vb.net,Handshake,Plc,我正在尝试使用梯形图逻辑在我的PLC和使用VB的电机控制器之间建立握手。我使用隐式通信,这意味着PLC有一些输出寄存器,它可以写入电机控制器视为输入寄存器的输出寄存器。同样,控制器也有一些输出寄存器,可以用来写回,PLC会将这些寄存器视为输入。需要注意的是,这两个设备都不能更改它视为输入的寄存器 这一事实很重要,因为通常我会让PLC通过将寄存器设置为1来发送命令,然后一旦电机控制器完成该命令,它会将相同的寄存器设置回零,并且该过程可以重复。但由于电机控制器无法将同一寄存器设置回零,因此必须使用不

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

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


当使用两个单独的寄存器时,有没有一种方法可以像普通的方法那样进行握手

不要将命令作为开/关发送,而是作为唯一的、不断增加的版本号发送。接收器仅对每个新号码执行一次操作。例如,一天后重置为零。我在集装箱起重机控制中反复使用了这个协议。如果接收者已经看到某个版本,它会将该数字反映回确认。由于整个过程反映了撕开一张入场券的纸条并将编号的票子退回的过程,所以我将其称为“打卡和纸条协议”。15年来,它在多台起重机上以及在非同步设备之间的许多其他通信中都能正常工作。

只有当互操作信号从0变为1时,PLC才应向控件发出命令。只需保留一份信号副本即可检测。您的VB代码只需要在知道控制器空闲时发出命令。欢迎来到事件驱动与循环驱动的奇妙世界。如果这是一个真正的时间关键型任务,那么您最不应该使用的就是VB。为什么不能在PLC和MC之间直接通信?