基于RS485串口的PLC互连的通讯协议设计

2015-05-30 07:52周秀梅
科技创新与应用 2015年3期
关键词:通信协议

周秀梅

摘 要:文章主要基于RS485串口,以OMRON PLC CJ2M-CPU12为例,专注于PLC互连的通讯协议的设计,为实现生产系统中PLC之间灵活自主的通信提供一个可靠而高效的解决方案。

关键词:RS485总线;通信协议;PLC互连

引言

在实际的工业生产中,一般一个PLC控制一台机器,人们可以按照生产工艺需要改变其控制逻辑,不同的机器按相应的工艺需要进行布置,以达到生产目标。但当生产系统变得庞大而复杂时,就需要各个机器之间的协同工作,传递各个生产单位的运行状态和生产数量,以便于实现产品的监控和售后服务。因此需要实现PLC之间的通讯,且通讯要同时具备可效性和实时性。就目前而言,还没有一种标准的通讯协议可以直接采用。但串口通讯RS485使它成为一种可能,它被大多数PLC生产商采用,成为一种底层通信接口,具有稳定可靠,编程简单,组网快,价格低等优点。相比较而言,它比RS232可连接的设备多,比Internet通信方式便宜。因此,文章主要专注于RS485的通信协议设计,使其具有普适性,可以应用与不同PLC之间的互连互通。

1 RS485总线

RS-485标准采用半双工工作方式,以平衡发送和差分接收方式实现通信,支持多点连接。具有传输距离远(最大传输距离可以达到1200m),传输速度快(1200m时可以达到100kb/s),布线简单等优点。由于传输线通常使用双绞线,所以它具有极强的抗共模干扰的能力。

2 协议的设计与实现

连接数台PLC,以其中一台PLC为主机,其他PLC为从机,应用RS485通信让主机读取各从机的相关状态,并显示在触摸屏中,实现整个系统的实时监控。本案中采用4台OMRON PLC CJ2M-CPU12为例,通讯卡采用CJ1W-SCU41。

PLC之间的通信必须设置为无协议通信方式,参数一般可以按实际需要任意设置。如:参数形式可以设置为无起始位,8位数据长度,无停止位,偶校正,数据缓冲区为默认值0。

无协议通信指令包括端口设定指令STUP,发送指令TXD/TXDU和接受指令RXD/RXDU。STUP指令用于设定串行端口通信参数,数据传送指令TXD/TXDU用于向串口端口传送数据,数据接受指令RXD/RXDU用于从串口端口读取数据。无协议通信方式能够发送和接受数据的最大量为259Byte,包括起始码和结束码。使用无协议通信的发送进行通讯时,在数据发送和接收指令中必须指定发送数据的起始字节位置和接收数据的起始字节存储位置,还必须指定串行端口,数据发送和接受时的字节顺序,并指定发送和接受的具体字节,这些都需要在发送和接受指令的控制字里进行设定。为了使数据发送和数据接收保持一致,TXDU和RXDU中采用了同样的控制字。当通讯卡CJ1W-SCU41的串行端口1空闲,并且内部总线端口闲置时,触发相应内部继电器后,就可以按照控制字中设定的方式,发送出指定位置的数据。如果接收方的相应串行端口空闲,并且端口计数器检测到新的数据,通过一小段接收延时后,开始按照控制字的方式,接收所有的数据到指定的地址存储。RXDU有两个作用:当数据检测正确时,可以把存储的数据做进一步的处理;如果数据不正确时,RXDU可以用作清空串行端口的接收寄存器,便于下一次接收新的数据。

对于简单的PLC通信可以采用PC-LINK来相互传递数据,但受限于连接继电器区(LR区)大小的限制,这种连接只能传递少量数据,并且很难保证传递的可靠性。而使用无协议通信协议构建的系统,不仅可以灵活的确定传递数据量的大小,而且其相应的检测机制也能大大提高数据传递的可靠性。

一般PLC之间的通信可以分为基于全握手和无握手通信两种方式。其中基于无握手方式的通信连接,即通信发起方假设接收方总是接收正确,而无需等待接收方的回应。它可能会降低通信的可靠性,但却能大幅地提高通信的速度,因而比较适用于大量数据的采集和传输。本案例传输数据量比较大,为了提高通信的实时性,须采取无握手方式通信连接,通过简化连接方式,提高通信速度。同时在数据末尾加入CHECK_SUM,校验传递数据的有效性。如果接收方收到数据的CHECK_SUM不等于发送方在数据末尾传递的CHECK_SUM,则认为通讯失败,通信发起方重新发送数据。

从站地址:从站地址为01到03。

数据长度:为整个数据串的总长度。

标识位:分为aa和bb,以区分通信在主从站之间的方向。aa为主站向从站发起通信的标识位,bb为从站向总站发起的标识位。

从站写数据起始地址:为主站将应用数据包写入从站的起始地址。

写数据长度:为主站写入从站的数据长度。

从站读数据起始地址:为主站读取从站数据的起始地址。

读数据长度:为主站读取从站数据的长度。

应用数据包:分为写数据包和读数据包。写数据包为主站写入从站的数据;读数据包为从站返回给主站的数据。

CHECK_SUM:为之前数据串的加权,用于检验数据传递的有效性。

基于图2的设计原理,主站向从站依次发起通信,将参考指令写入从站指定地址;从站收到写指令后,通过指定地址数据返回当前状态,并执行相应操作。如果主站向从站发起通信后,从站在规定时间无应答或者应答数据有差异,则主站重新发送数据。重复几次通信失败后,主站标记相应通信失败的从站,而向下一个从站发起通信,等到一个循环后,再次向之前通信失敗的从站重新发起通信。循环操作,实现主站和从站的实时交互。

3 结束语

近年来,随着人力成本的不断提升,科技的不断进步,愈来愈多的工业生产线对采用集散控制系统的需求提高。文章基于RS485串口,为多个PLC互连互通设计的通信协议已能成功地应用到PCB生产线中。它通过简化程序设计,缩短各机器故障的排查时间,很大程度地提高了PLC之间通信的高效性和可靠性,提升了整条生产线的效能,降低了相应的人力成本。

参考文献

[1]耿立中,王鹏,马骋,等.RS485高速数据传输协议的设计与实现[J].清华大学学报(自然科学版),2008,8.

猜你喜欢
通信协议
改进贝叶斯统计的配电物联网通信协议评价
DCS本地总线通信协议与FFH1设备互操作技术研究与实现
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
电子计算机联锁系统通信协议设计和应用
基于Z-Stack通信协议栈的红外地温采集电路设计
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
基于面向对象互操作技术的用电信息采集系统通信协议设计
关于电力物联网信息模型及通信协议的设计要点分析
铁路信号安全通信协议中消息验证码算法的安全性分析和改进