文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.01.016
中文引用格式: 宋振鹏,孟祥印,徐鑫凯,等. 基于Modbus与ZigBee的通信冗余过程控制系统开发[J].电子技术应用,2016,42(1):61-64.
英文引用格式: Song Zhenpeng,Meng Xiangyin,Xu Xinkai,et al. Development of redundant communication process control system based on Modbus and ZigBee[J].Application of Electronic Technique,2016,42(1):61-64.
0 引言
在传统的过程控制系统中,对系统的实时监测和控制是最重要的两个环节,但是现场设备的分布式布局造成了布线量大、设备维护困难以及可靠性低等缺点,特别是数据的传输存在很大的安全隐患。根据上述现状,笔者以STM32F103RCT6芯片和CC2530芯片作为系统控制器,设计了一套基于Modbus和ZigBee的通信冗余过程监控系统替代传统的过程控制系统。
1 通信冗余过程控制系统架构
基于Modbus和ZigBee的通信冗余过程控制系统主要分为现场设备、STM32处理器模块、ZigBee无线通信模块和上位机四个部分,系统整体架构如图1所示。通过图1可以看出,现场电气设备通过I/O口连接到现场的终端模块,由终端模块负责采集现场设备的数据以及对现场设备输出控制指令。终端模块通过基于Modbus协议的RS-485总线或ZigBee无线的方式与网关模块进行通信,实现了通信冗余的功能。网关模块通过RS-485总线与上位机通信。上位机监控系统是由Microsoft Visual Studio 2010编写的界面监控软件,数据传输以RS-485总线通信为核心,实现了采集数据信息的显示、人机交互以及溢出报警等功能。
2 下位机硬件电路设计
下位机硬件电路主控芯片采用基于ARM内核Cortex-M3的STM32F10x系列F103RCT6芯片。该芯片拥有256 KB的Flash存储器和48 KB RAM,具有多路定时器以及输入输出端口,并且具有功耗低、多线程等优点,满足工业现场设备的数据采集性能要求。ZigBee无线通信模块采用的主控芯片是TI公司生产的CC2530芯片。CC2530内部搭载了增强型8051CPU,内置德州仪器的ZigBee协议栈(Z-Stack-TM),并且具有优良的RF性能,适用于ZigBee无线通信的解决方案[1]。
下位机硬件电路示意图如图2所示,整个系统的正常工作都由STM32芯片控制。在下位机硬件电路中,要保证系统的正常运行,除去STM32和CC2530芯片基本的外围电路,还需要其他电路模块,如电源模块、RS485收发模块、数据采集模块等。
电池冗余备用电路如图3所示。为保证系统在工业现场的连续稳定工作,设计了电池冗余的备用电路,即外部掉电时使用电池供电,外部未掉电时电路给电池充电。电池采用可反复充电的AAA锂电池,其中TP4075为电源充电芯片,A3401为P沟道MOS管,当外部未掉电时处于截断状态;当外部掉电时,MOS管处于导通状态,电池开始工作。
电源防雷击保护电路如图4所示。外部24 V电源经过电源防雷击保护电路后才可以进入系统电路,这一部分有效防止了因雷击产生的高浪涌、快速脉冲以及静电对系统电路的损坏。
光耦隔离电路如图5所示。应对工业现场恶劣的环境,信号的输入和输出需要经过隔离,否则会产生很大的干扰,影响系统数据采集和控制的准确性。数字信号的隔离采用光耦隔离器PS2801进行信号的隔离。电路中的下拉电阻R43确保在没有信号输入时过滤由引脚自身引起的信号干扰。
3 下位机通信软件设计
3.1 Modbus通信软件设计
下位机终端模块与网关模块之间的通信优先使用基于Modbus协议的RS-485总线进行传输。RS-485收发器收发数据的方式为平衡发送和差分接收,因此具有较好的抗共模干扰能力,即有较好的抗噪声干扰能力,并且其灵敏度极高,所以RS-485总线在中长距离的通信中备受欢迎。
Modbus协议是一种通用的标准协议,它使得控制器与控制器之间的通信成为可能,并且使不同设备生产商的控制设备之间进行通信、互相连接成网络、实现集中监控成为了现实[2]。Modbus协议定义了其工作方式为主从模式,在整个通信网络中,只允许有一个主设备,其余则为从设备,该系统中网关模块为主设备,终端模块为从设备。
该系统采用的通信方式是广播方式,即网关模块以广播的方式对所有终端模块发送查询指令。在Modbus网络中,每一个设备都有一个唯一的地址,终端模块通过对比查询指令中的设备地址和自己的地址是否相同来确定指令是否发送给自己[3]。
系统信息传输方式采用Modbus RTU方式,在该模式中每8 bit字节被定义为两个4 bit的十六进制字符[4],其通信的格式帧如图6所示。
系统中Modbus协议是由移植的FreeModbus协议栈来实现,FreeModbus协议栈实现了Modbus协议函数的封装,开发时只需要调用相应的API函数,其所支持的协议功能码完全满足本系统的设计需求,该系统应用到的功能码有0x01(读线圈)、0x02(读开关量)、0x03(读写保持寄存器)、0x04(读输入寄存器)。协议功能码通过对应的处理函数和回调函数实现数据的读或写。图7所示为RS-485总线运用Modbus协议栈进行串口采集任务的流程图。
3.2 ZigBee通信软件设计
作为系统冗余的通信方式,当Modbus总线通信失效时,ZigBee无线通信会被激活(空闲时进入休眠),用来完成终端模块与网关模块之前的数据通信,网络通信的切换由网关模块控制。
ZigBee是一种基于IEEE802.15.4标准的低功耗局域网协议,其具有低成本、低功耗以及组网灵活等优点,在无线数据传输方案中应用广泛。
在ZigBee组网网络中,设备根据其功能可以分为三种不同的角色:协调器节点、终端节点和路由器节点。协调器节点是ZigBee网络不可缺少的一环,在ZigBee网络中有且仅有一个,主要功能是网络的建立和维护。终端节点主要负责接收协调器节点命令,并响应相应的数据信息。路由器节点主要负责选取网络通信信道以及转发数据。ZigBee网络的拓扑结构主要有星型、网状型和树状型三种[5]。
该系统中,网关模块作为协调器,终端模块作为终端节点,因为网络结构比较简单,所以网络拓扑结构为星型结构。协调器组网方式为广播,终端节点组网方式为点播。
无论是协调器还是终端节点,通信软件的开发都是基于Z-Stack协议栈,协议栈已经实现了ZigBee的通信协议,用户可以使用其提供的API函数进行应用程序开发。图8为Z-Stack协议栈的运行流程图。
协议栈设计了一个管理任务处理函数的数组taskArr[],开发者需要将任务处理函数加入数组序列。该数组简化后定义如下:
const pTaskEventHandlerFn tasksArr[] = {
macEventLoop,
nwk_event_loop,
Hal_ProcessEvent,
ZigBeeApp_ProcessEvent };
其中ZigBeeApp_ProcessEvent()为该系统设计的通信处理函数。
4 上位机软件设计
上位机软件的设计是在Microsoft Visual Studio 2010开发平台下使用C#语言进行的,VS是目前最流行的Windows平台应用程序的集成开发环境。C#语言集成了VB语言的可视化操作和C++的高运行效率,成为了当前.NET开发的首选语言[6]。
上位机软件主要实现数据的可视化和更好的人机交互,下位机发送的数据很难直观地表达出当前系统的工作状态,利用VS2010软件编写上位机监控界面,使用Chart控件实现数据的图表化显示,同时设置报警溢出阈值,及时发现系统异常进而进行维护。上位机监控界面功能框图如图9所示。
5 结束语
本文采用Modbus总线技术和ZigBee无线技术设计了一种通信冗余过程控制系统,下位机实现数据的采集和通信的冗余,上位机实现数据的监测和设备控制。硬件电路具有一定的抗干扰、防雷击能力,以应对复杂的工业现场环境,该系统有一定的推广价值,为解决传统过程控制系统中的诸多难题提供了解决方案。
参考文献
[1] 李俊斌,胡永忠.基于CC2530的ZigBee通信网络的应用设计[J].电子设计工程,2011,19(16):108-111.
[2] 朱懿,蒋念平.Modbus协议在工业控制系统中的应用[J].微计算机信息,2006(22):118-120.
[3] 卢文俊,冷杉,杨建军.基于Modbus协议的控制器远程监控系统[J].电力自动化设备,2003,23(6):54-56.
[4] 薛海涛,和卫星,陈晓平.数据采集系统中Modbus协议的实现[J].微计算机信息,2007,23(10-1):68-69.
[5] 章伟聪,俞新武,李忠成.基于CC2530及ZigBee协议栈设计无线网络传感器节点[J].计算机系统应用,2011,20(7):184-187.
[6] 刘奇,林岗.基于Visual Studio 2010的UG二次开发研究[J].计算机应用,2015,34(1):40-41.