(华东理工大学化工过程先进控制与优化教育部重点实验室,上海 200237)
无线设备无需布网和维护成本,适用于高腐蚀、难布线等场合。但现在工厂的通信体系完整,重新开发无线化成本高、时间紧,因此需将无线数据传输与现有协议相结合。
文献[1]利用ZigBee设备的IEEE地址与其Modbus地址进行绑定,并通过无线透传的方式实现Modbus通信。
文献[2]将ZigBee技术与Modbus相结合,并应用在电力监控系统中,对方法进行了有效的证实。
文献[3]~[4]则采用Modbus有线/无线混合传输方式,使用的无线技术分别为ZigBee和IEEE 802.15.4。
文献[5]提出了WIA网络与Modbus协议结合的透明传输概念,但未对网络的传输过程以及如何实现做具体描述。
本文将WIA-PA无线技术[6]和Modbus协议相结合,利用透明机制传输,对系统中的主机设备、从机设备的通信数据包封装、互联后的通信流程及实际应用做详细的介绍。
透明传输概念是指在传输过程中,传输设备不对所传输的数据进行任何处理,不对数据包作任何修改的传输方式[7]。本文利用WIA-PA的应用层,通过透明传输机制进行标准Modbus协议的数据传输。设计要求传输包将完整的Modbus协议报文封装在WIA-PA网络的通信协议应用层的报文部分;而物理层、MAC层、网络层采用WIA-PA网络标准[8],将报文传输到WIA-PA网络的终端;将应用层报文解析后,直接将Modbus包投递到设备,完成透明传输。
为加快开发速度和减少成本费用,主机利用原先的有线Modbus主站,在连接RS- 485的端口上连接WIA网关相应端口。WIA-PA无线网关采用WIAPA-GW1498,自身可支持RS- 485接口,可与具有RS- 485通信协议的总线进行通信。
从机设备的设计主要是串口通信部分的设计。从机设备的通信使用无线模块传输代替原先的有线传输。无线模块可采用WIAPA-M1800通信模块,模块提供一个由数据收发管脚TX和RX组成的串口接口。通过该接口模块可进行无线网络发送与接收串口数据。串口参数如表1所示。
表1 串口参数
微处理器与无线模块之间的所有报文全部以HDLC包格式成帧,对应每个命令成一帧。HDLC包格式如表2所示。
表2 HDLC包格式
无线模块的Network ID、设备MAC地址、设备Join Key和广播信道在初始化时根据主机设备的网关进行设定,一旦设定便不能更改,否则无法进入WIA-PA网络[9]。在通信编程中需要用到两个命令号,分别是数据透明上传命令号0x17和数据透明下传命令号0x18。
比较Modbus两种传输模式,RTU模式帧结构和数据结构相对简单,而且不需要转换,适合封装在WIA-PA协议帧的数据域内。RTU模式中每个字节有11位,包含1位起始位、8位数据位、1位奇偶校验位和1位停止位。数据位要求先发最低有效位,可无校验位[10]。
RTU模式的报文帧最大为256 B,由发送设备将带有起始和停止标记的帧打包入Modbus报文。报文采用循环冗余检验。在RTU模式下,报文帧被时长至少为3.5个字符时间的空闲间隔区分。整个报文帧必须以连续的字节流发送,而且若两个字节之间的空闲间隔大于1.5个字符时间,则报文被认为不完整,将被接收方丢弃[11]。由于此设计的波特率采用9 600 bit/s,Modbus要求这两个字符时间必须严格遵守。
通过软件编程将Modbus RTU帧装入WIA-PA报文发送,或将Modbus RTU帧从收到的WIA-PA报文中解析出来,串口设置为UART数据通信。硬件上,将设备微处理器的RXD和TXD与无线模块的TXD和RXD连接。从机设备的串口通信便设计完成。
WIA-PA与Modbus互联后,每个从机设备要有两个地址。一个是Modbus的地址,用于Modbus设备的寻址;另一个是无线模块的地址,用于WIA-PA网络的寻址。当从机设备加入网络时,网关添加了一张关于从机设备Modbus地址和WIA-PA地址的地址映射表[12]。
当网关需要向某台从机设备无线发送带有Modbus报文时,需要根据映射关系找到Modbus地址对应的WIA-PA网络中无线模块的地址,才能通过无线网络发到终端从机设备上。
主机对从机进行一次Modbus命令配置的流程与从机响应主机一次请求命令的流程如图1所示。
图1 主机配置与从机响应流程
数据通信采用Client/Service方式传输,Modbus采用主从方式收发数据。当主机需要发送请求数据帧时,按照表3所示的含有RTU请求帧的WIA-PA数据请求帧将报文打包后无线发出,从机接收报文并进行相应的处理。
某些功能码需要从机向主机发送一个应答帧,以通知从机执行情况或者相应寄存器的状态,或者回传相关错误码等信息。应答码则按照表3所示的含有RTU应答帧的WIA-PA数据应答帧将报文打包,并回传给主机。
表3 含有RTU数据帧的WIA-PA帧
本文将设计方案应用于无线温度变送器和无线Modbus主站的实时温度测量通信。其中无线温度变送器为从机设备,与无线网关相连的Modbus主站和上位机为主机设备。温度变送器是工业现场常用的仪表,它接收热电偶或热电阻的输入信号,进入极低功耗的A/D转换器进行模数转换,实现温度值的测量。
为保证数据传输的实时性,发送、接收数据的工作要在中断中执行。若Modbus无线主站需要获取的Modbus地址是0x55的无线温度变送器所测的温度值,即读取温度值所在寄存器的值。通信过程大致如下。
① 主站首先根据Modbus与WIA-PA网络地址映射表,找到地址0x55对应的WIA-PA无线模块的16位短地址24-00-00-01-00-00-00-09。然后按Modbus命令“读输入寄存器”的格式:功能码0x04、起始地址0x0008、输入寄存器数量0x0002、计算校验值,得到请求命令帧7E-01-28-24-00-00-01-00-00-00-09-55-04-00-08-00-02-DD-FD-64-DD-7E。最后经网关传至仪表。
② 无线模块收到主站发来的命令帧,微处理器响应中断后,进入中断服务程序。中断服务程序须在报文刚接收时设置好接收缓冲区,将整个报文放入其中。
③ 报文接收完整后,将报文中WIA-PA协议的包头、命令号、CRC校验值、包尾拆掉,仅保留Modbus数据命令帧,然后赋到如下帧结构中,以便做进一步的功能处理。其中,加入的数据域长度是方便检查发送数据的完整性。
typedef struct{
unsigned char Address;
//MB目标地址
unsigned char Function;
//MB功能代码
unsigned char Data[MB_FRAME_SIZE];
//MB请求/应答数据
unsigned int Length;
//不发送,字节长度
unsigned int CRCResult;
//MB CRC校验
}MB_FRAME;
④ 对功能码、本机地址或广播地址、CRC校验、接收数据超帧等信息进行异常检验。对于异常结果,返回功能码和异常码,主机收包并解析,对命令请求做相应修改后再发送。
⑤ 若检验无异常,则开始进行正常处理,读取8、9两个寄存器中的值,加上字节数0x04。然后将它们放入Modbus的应答帧数据域内,本机地址和功能码不变。经过CRC校验后,装入WIA-PA数据域内,按WIA-PA打包后发给无线模块,无线模块将其送往网关。
⑥ 网关收到数据包(7E-01-40-24-00-00-01-00-00-00-09-55-04-04-E3-00-41-F6-D3-69-B2- 53-7E)后,拆包提取Modbus报文(55-04-04-E3-00-41-F6-D3-69),并通过RS- 485接口送至Modbus主站,主站显示仪表温度。一次无线通信完成。
应用结果表明,WIA-PA与Modbus互联后的无线温度变送器与WIA-PA无线网络完全兼容,通信功能符合标准的要求,可实时进行温度采集和请求应答,实现了远距离传输,且在瞬时温度影响下也能正常工作。此外,仪表使用智能自组织网络技术,数据可靠性高达99%以上,能适应温度测量的基本要求,功耗低,无线传输安全性高,证明了设计方案的可行性。
随着无线技术在工业领域的逐步推广,WIA-PA技术必将与越来越多的工业通信网络或现场总线进行互操作。本文介绍的WIA-PA与Modbus互联的透明传输机制,在对具体技术进行分析的同时,给出了实现的设计方案和具体应用。设计方法具有一定的通用性,除了可以用在各种需要Modbus协议的无线WIA-PA设备上,还适用于WIA-PA与其他工业通信技术的互联,其设计原理可谓是相通的。此外,应用中的无线温度变送器因其使用环境恶劣、无需网络布线、安装成本低、入网即可使用以及易扩展和升级等优点,具有很好的应用前景。
[1] 涂煊,彭瑜,周怡颋,等.Modbus通信协议的紫蜂无线传输网络的研究[J].自动化仪表,2007,28(7):10-13.
[2] 周惠椒,谭喜堂,朱琴跃,等.ZigBee无线通信技术在电力监控系统中的应用[J].低压电器,2011(18):36-41.
[3] 刘桂臣,阳宪惠.Modbus报文有线/无线混合传输的实现[J].清华大学学报:自然科学版,2008,48(S2):1844-1847.
[4] Guarese G B M,Sieben F G,Webber T,et al.Exploiting Modbus protocol in wired and wireless multilevel communication architecture[C]//Computing System Engineering(SBESC),2012 Brazilian Symposium,2012:13-18.
[5] 曾鹏,肖金超,张琼.WIA网络与MODBUS网络互联设计与实现[J].仪器仪表标准化与计量,2009(4):35-38.
[6] 彭瑜.工业无线标准WIA-PA的特点分析和应用展望[J].自动化仪表,2010,31(1):1-9.
[7] Gao Jun,Lai Wuwen,Wu Yaping,et al.Protocol study of ZigBee serial transparent transmission with voltage detection function[C]//Wireless Communications,Networking and Mobile Computing(WiCOM),the 7th International Conference,2011:1-4.
[8] Liang Wei,Zhang Xiaoling,Yang Xiao,et al.Survey and experiments of WIA-PA specification of industrial wireless network[J].Wireless Communications & Mobile Computing,2010,11(8):1197-1212.
[9] Tang Zhong,Cheng Mengjin,Zeng Peng,et al.Real-time communication in WIA-PA industrial wireless networks[C]//Computer Science and Information Technology(ICCSIT),the 3rd IEEE International Conference,2010:600-605.
[10]Morris T,Vaughn R,Dandass Y.A retrofit network intrusion detection system for Modbus RTU and ASCII industrial control systems[C]//System Science(HICSS),the 45th Hawaii International Conference,2012:2338-2345.
[11]Kuang Jian,Wang Guibao,Bian Jiali.A Modbus protocol stack compatible with RTU/TCP frames and embedded application[C]//Advances in Intelligent and Soft Computing,Springer-Verlag Berlin Heidelberg,2012:765-770.
[12]邢伟伟,白瑞林,孟伟.ZigBee无线网关在Modbus通信中的应用[J].计算机工程与应用,2011,47(29):81-84.