在上述通信方式下,由于只用两根线进行数据传送,所以不能够利用硬件握手信号作为检测手段。因而在PC机与PLC通信中发生误码时,将不能通过硬件判断是否发生误码,或者当 PC与 PLC工作速率不一样时,就会发生冲突。这些通信错误将导致PLC控制程序不能正常工作,所以必须使用软件进行握手,以保证通信的可靠性。
由于通信是在PC机以及PLC之间协调进行的,所以PC机以及PLC中的通信程序也必须相互协调,即当一方发送数据时另一方必须处于接收数据的状态。如图7-18、图7-19所示分别是PC、PLC的通信程序流程。
图7-18 PC机通信程序流程图
图7-19 S7-PLC通信程序流程图
通信程序的工作过程:PC每发送一个字节前首先发送握手信号,PLC收到握手信号后将其传送回PC,PC只有收到PLC传送回来的握手信号后才开始发送一个字节数据。PLC收到这个字节数据以后也将其回传给PC,PC将原数据与PLC传送回来的数据进行比较,若两者不同,则说明通信中发生了误码,PC机重新发送该字节数据;若两者相同,则说明PLC收到的数据是正确的,PC机发送下一个握手信号,PLC收到这个握手信号后将前一次收到的数据存入指定的存储区。这个工作过程重复一直持续到所有的数据传送完成。
采用软件握手以后,不管PC与PLC的速度相差多远,发送方永远也不会超前于接收方。软件握手的缺点是大大降低了通信速度,因为传送每一个字节,在传送线上都要来回传送两次,并且还要传送握手信号。但是考虑到控制的可靠性以及控制的时间要求,牺牲一点速度是值得的,也是可行的。
PLC方的通信程序只是PLC整个控制程序中的一小部分,可将通信程序编制成PLC的中断程序,当PLC接收到PC发送的数据以后,在中断程序中对接收的数据进行处理。PC方的通信程序可以采用VB、VC等语言,也可直接采用西门子专用组态软件,如STEP7、WinCC。