郭刚 陈林
【摘 要】本文通过设计了单片机无线通讯硬件电路,实现了S7-200之间的无线Modbus协议通讯功能,在工业应用中具有良好的实用价值。
【关键词】PLC;单片机;RS-485;nRF905;Modbus
【Abstract】This paper designs Single-Chip Microcomputer(SCM)wireless communication circuit . The communication among S7-200 PLC via the circuit above is realized and the method above is extremely valuable in industrial application.
【Key words】PLC; Single-Chip Microcomputer; RS-485; nRF905; Modbus
0 引言
随着我国经济的高速发展和城镇化程度的不断提高,工业污水和生活污水日益增多为维持经济的持续健康增长和生态环境的良性循环,必须对工业及生活污水加以处理。 在污水处理现场,各设备较为分散,即使采用现场总线连接,也需要搭建桥架、铺设通讯电缆。如果各站点距离较远,则明显加大了施工工程量,增加了成本,而且维护也相对麻烦。基于此背景,必须寻求一种解决方案来避免各站点之间的布线问题。针对此问题,工业无线传输技术应运而生,目前国内外无线通讯技术多种多样,包括WiFi、蓝牙以及ZigBee等。对于工业现场级的应用,适用的无线通讯协议包括IEEE 802.11、IEEE 802.15.1、IEEE 802.15.4。以上三种协议均存在一个共同的问题,即通讯网络的实时性和可靠性不够,两者至少并不能同时保证满足高实时性工业现场的要求。基于以上原因,许多企业并不愿意放弃成熟的有线技术冒险花资金投入无线通讯[1-3]。
本文设计的单片机和无线模块构成的无线数传模块适用于S7-200之间的无线通讯,解决了上述布线问题,在满足污水处理设备安全、高效运行的同时具有很好的性价比,具有良好的经济、社会效益和推广前景。
1 系统总体方案设计
图1 系统结构图
图2 为单片机无线数传模块结构图
本系统其中一台西门子S7-200 PLC作为系统的主站,而其余的S7-200 PLC作为从站,它们之间的通讯介质是无线电波,通讯协议是Modbus协议。
无线通讯由STC12LE5A60S2单片机和无线模块nRF905组成,其连接是通过单片机的SPI(Serial Peripheral Interface——串行外设接口)接口实现,而单片机与S7-200 PLC之间则是通过RS485总线连接,如图2所示。
本系统的通讯过程如下:上位机S7-200通过RS485总线发送控制命令,单片机接收数据帧并通过SPI接口转发nRF905模块,nRF905则通过无线发射信号。和从机PLC连接的单片机通过无线模块nRF905接收数据帧,再通过RS485总线传送至从机PLC,从机从数据帧中提取出地址信息并与自身的地址作较。若不符合则丢弃该数据帧,反之,则接收数据帧,完成相应的功能,并返回数据帧。其中上述数据帧的格式在Modbus协议中定义。
2 硬件电路设计
单片机串行通讯口是标准的TTL电平,为了完成和PLC之间的多机通讯则需加上MAX3485芯片。采用MAX3485芯片,一方面是为了完成电平转换,降低传输数据误码率;另一方面,MAX3485芯片有数据收发控制端,方便多机通讯的实现。单片机与MAX3485的接线图如图3所示,其中P2.0控制了MAX485芯片的数据收发,当期高电平时,MAX3485只能发送数据;反之则只能接收数据。因此基于RS485总线的多机通讯是半双工的。单片机的发送数据端和接收端分别接至MAX3485芯片的发送数据端和接收数据端。经MAX3485芯片转换后,其输出引脚分别和其他所有单片机的A、B两端连接,无需交叉,最终汇总至S7-200的自由口。
单片机与无线模块之间的连接通过SPI接口,如图4。
图3 单片机与MAX3485芯片接线图
图4 单片机与nRF905芯片接线图
3 软件设计
单片机程序设计:
S7-200和单片机之间通讯除了借助于RS485总线这个物理层,还需应用层的支持,本系统应用层采用的是Modbus协议。另外本系统的通讯模式是串行传输,因此数据链路层采用的是Modbus串行链路协议。
上述模型的第7层应用层报文传输协议即Modbus協议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通讯。自从1979年出现工业串行链路的事实标准以来,Modbus协议使成千上万的自动化设备能够通讯[4]。目前,继续增加对简单而雅观的Modbus结构支持。互联网组织能够使TCP/IP栈上的保留系统端口502访问Modbus。Modbus是一个请求/应答协议,并且提供功能码规定的服务[5]。Modbus协议规定传输报文即数据帧的结构为:地址+功能码+数据+差错校验。
根据以上协议可编写通讯程序,本程序可包括如下几个部分:主函数、定时中断、串口中断、动作函数、CRC校验函数。
主函数负责完成定时器、串口以及一些变量的初始化;定时中断负责判断相邻数据帧之间的间隔时间是否超时,本系统通讯波特率为9600b/s,Modbus协议规定相邻数据帧之间的时间间隔不超过3.5个字符传输时间,因此本系统设置为5ms;串口中断负责接收数据并转移至缓冲区,待定时中断识别出一帧数据后即可读取至缓冲区;动作函数分别识别上位机发送过来的控制命令,首先分析缓冲区的数据帧,若地址及校验码无误,先对上位机做应答,然后可提取出功能码,判断出上位机要执行何种功能,随后即可完成读写操作,驱动执行器动作。因此动作函数是负责解析上位机命令码的;CRC校验函数通过一定的算法对收发的数据帧数据进行运算,最后得出校验码,接收端收到数据帧后立即判断接收到的数据帧的校验码是否与此刻的计算值一样,若一样则传输无误,否则丢弃该数据帧。本系统采用的是RTU传输模式,因此校验采用的是16位的CRC校验。校验过程需要涉及一些列的计算,而8位的单片机是胜任不了的,为了解决此问题,本程序采用了查表法计算,大大缓解了单片机的计算压力。现给出部分程序如下,此子函数需在定时中断函数中调用,完成对数据帧间隔时间的监控并给出标志位。
单片机与nRF905之间通过SPI接口通讯,以下为nRF905初始化代码:
void nRF905_Init(void)
{
P4SW |=0x70;
nRF905_Delay(10);
nRF905_CSN_Set();
nRF905_SCK_Clr();
nRF905_CD_Clr();
nRF905_AM_Clr();
nRF905_DR_Clr();
nRF905_PWR_UP_Set();
nRF905_TX_EN_Clr();
nRF905_TRX_CE_Clr();
nRF905_WriteBuf(W_CONFIG,Tx_Con.con,Tx_Con.len);
}
S7-200則采用标准的Modbus协议库,编程时直接调用Modbus主站指令库。SM0.0 调用MBUS_CTRL完成主站的初始化,并启动其功能控制:EN为使能端,必须连接常闭开关;Mode为1时选择Modbus协议,为0时为PPI协议;Baud为波特率设定,本系统选择9600b/s;Parity为奇偶校验位,本系统无需奇偶校验,因此设置为0;Timeout为超时时间设定,此处设定为1000ms;Done为初始化完成位;Error为初始化错误代码。MBUS_MSG模块中EN同样为使能端;First位为读写请求位,必须使用脉冲触发;Slave位为从站地址选择位;RW位为1时只写,为0时只读;Addr为读写从站的数据地址,此处设置为10001,表示为开关量输入;Count表示数据个数,此处设置为8;DataPtr为数据指针,读写数据均要放在此数据区;Done位为读写功能完成位;Error为错误代码。如图5所示。
图5 S7-200 Modbus程序
4 结论
本文通过设计单片机无线通讯硬件电路,成功实现了与S7-200之间的无线通讯,通讯协议采用标准Modbus协议,传输模式是RTU。作为主机,S7-200 PLC可通过无线通讯读取从机对应的数据,同时也可以发送控制命令。此方案在工业应用中具有非常实用的价值。
【参考文献】
[1]高山,祝军岐,王维.基于PLC的污水处理监控系统无线通讯解决方案[J].北京:自动化博览,2005:06.
[2]孙艳波,王桂英,冀勇,顾威,王春岩.一种新型企业污水处理无线监测系统[J].鞍山:辽宁科技大学学报,2008:06.
[3]凌胜军,雷晓青,关小刚.基于无线通讯和PLC的供水处理集中监控系统解决方案[J].西安:无线通信技术,2010:04.
[4]张桓,赵树忠.基于Modbus协议的单片机与触摸屏通讯系统设计[J].唐山:河北理工大学学报:自然科学版,2010:4.
[5]尤慧芳.用MODBUS实现触摸屏与单片机的通信[J].南京:工业控制计算机,2008:12.
[责任编辑:汤静]