该系统采用华光公司的SU-6系列PLC,通信方式采用串行通信,通信接口均为PLC与工业控制计算机上的RS232接口。但是由于RS232采用非平衡方式传输数据,传输距离近,而胶带输送机趋向大功率、长距离,且单机监测信息量多,控制要求复杂,直接采用RS232方式不能满足传输距离要求。因此,采用RS485方式。因为RS485采用平衡差动式进行数据传输,适合于远距离传输,并具有较强抗干扰能力。式中:RS232与RS485之间的信号转换采用通信转换器,总体通信结构如图1所示。
图1 总体通信结构
二、通信规程
SU-6系列PLC串行通信采用半双工异步传送,支持CCM通信协议,并具有以下功能:(1)上位通信功能;(2)主局功能;(3)一对一功能;(4)无协议串行通信功能。以上功能可以实现PLC的寄存器和内部继电器的读入和写出、传送状态的跟踪等。由于CCM协议采用主从通信方式,所以通信过程中由主局保持主动权,向子局发出呼叫,并通过向子局发送命令帧来控制数据传送的方向、格式和内容;子局对得到的主局呼叫作出响应,并根据命令帧要求进行数据传输。由于在胶带运输控制系统中要进行数据的读取和写入双向操作,因此采用一对一方式,工业控制计算机作为主局,PLC作为子局。
图2
数据传输过程以主局向子局写入数据为例,如图2所示,通信是主局向子局提出呼叫开始,子局作出应答以建立连接,主局接到应答后,向子局发送首标,子局将依据首标各项要求与主局进行数据传输,在子局作出响应后,开始传送数据,数据以128字节(ASCⅡ方式)为单位进行分组传送,***后主局发送EOF信号结束本次通信。其中,首标作为命令帧,规定了数据传送方向、数据操作起始地址及数据传送量等。
在进行数据通信时,通信应答时间决定了系统读写速度,而作为主局的计算机通信时间因上位计算机类型、PC扫描时间、PLC数据通信接口模块应答延迟时间设定值、波特率、数据传送量的不同而不同。其中,PC扫描时间与应答延迟时间对通信时间的影响:当PC扫描时间比应答延迟时间短时,前者对通信时间没有影响;反之,当PC扫描时间比应答延迟时间长时,在计算总通信时间时,采用PC扫描时间,计算公式如下:
总通信时间=A+B+C+D
式中:A、B、C、D分别为呼叫发送/应答时间、首标发送/应答时间、数据发送/应答时间、通信结束应答时间。以数据发送时间为例:
数据发送时间=数据传送字符数×通信时间/字符+PC扫描时间。
数据通信中,数据传送量因采用的传送方式不同而不同。传送方式支持ASCⅡ码和二进制两种。其中ASCⅡ码是用8bit表示数字、字母等,因此采用它来进行数据通信时,一字节二进制数要由两字节ASCⅡ来表示,实际传输量就是采用二进制数据通信的两倍。而在胶带运输系统中要求较强的可靠性和实时性,为提高通信速率,更好地实现实时监控,选用二进制传输方式,波特率选用9600bps,并采用奇校验,通信时间/字符为1ms/字符。
三、通信程序设计
在通信程序设计中,子局的通信参数可以通过PLC上的DIP开关直接进行设定,而主局的通信参数设定则需要软件实现。在该系统中,主局的通信软件编制采用VB6.0。
MSComm控件提供串行通信功能,具有事件驱动、查询两种通信方式。事件驱动通信是利用控件的OnComm事件捕获通信事件或通信错误,并执行OnComm的事件处理过程。当前发生的通信事件或通信错误由控件的CommEvent属性来判断。
在本系统中,工业控制计算机作为主局,向作为子局的PLC发出呼叫及命令帧,并采用中断方式等待PLC的响应,即在MSComm控件的OnComm事件中根据CommEvent属性值来编制相应的响应过程或错误处理程序。在通信开始前,首先通过控件的Settings设定通信参数为“9600,O,8,1”,依据CCM协议的每次实际传送数据量,定义Rthreshold为应收到的字节数。完成串口初始化定义后,打开通信口,主局发出呼叫,在得到子局响应时,CommEvent属性值变为comEvReceive,激活OnComm事件处理相应事件,事件程序流程图如图3所示。首先将读取的子局信息处理,判断其与呼叫帧是否一致,若一致,发送首标命令帧,否则重新呼叫。在得到子局的首标回应后,开始数据的读取或写入操作,依据数据传送方向及数据量的不同设定控件的Rthreshold属性。***后通信以主局接收到EOF为结束。循环执行上述过程以完成数据的连续读写。
对于通信中的错误,一般可以通过接收到的CommEvent属性值来判断处理。但对于线路故障或PLC出现掉电等情况时,CommEvent属性值无法激活,就要利用看门狗的思想,设定定时程序,若通信超时,则结束前次通信,重新呼叫。