陈在平 董子昊
(天津理工大学 a.天津市复杂系统控制理论及应用重点实验室;b.自动化学院,天津 300384)
ZigBee的出发点是布建一个能长时间工作的低成本无线网络,它不仅在工农业生产、环境监测及医疗救护等传统领域得到了有效应用,而且已成功运用到智能化及信息化生产等新兴领域[1]。目前,很多企业中的现场设备与工控机之间大都采用单路径的无线通信,这样只能保证无线网络在短时间内的正常运行,一旦出现故障,无法及时、准确查出故障节点的位置,给系统维修带来极大困难。因此,由ZigBee节点组成的无线网络能否可靠运行关乎到整个生产的经济效益和安全问题,而网络的合理组建和增设节点故障诊断机制是保证系统最终稳定运行的重要前提。
ZigBee无线网络由多个自供电的ZigBee节点组成,每个ZigBee节点负责与其他节点和外界进行通信,ZigBee网络这种多节点特性可以使无线通信更加稳定可靠。系统采用的是网状拓扑结构,在部分网状结构中,每个节点的范围都被成倍放大了,而且没有最大通信距离的限制[2]。
图1是ZigBee无线网络结构,该网络的无线节点由中心节点、中继节点和终端节点组成。中心节点负责数据的汇总,实质上它分为两类节点,一类为状态信号监测节点,另一类为现场采集数据接收节点,它由节点a、b、c组成,这3个节点分别与上位机连接,选用SZ02型模块。节点a配置为中心节点类型,广播发送模式,负责接收现场采集数据;节点b配置为中心节点类型,广播发送模式,作为节点a的冗余;节点c配置为中继节点类型,协议发送模式,负责轮询无线节点的地址,实时监测无线模块的运行状态。中继节点负责远距离无线数据的转接,由节点d、e、f和g组成,选用SZ06型模块,这4个节点都配置成中继节点类型,广播发送模式。笔者选择了d、f两个节点进行无线网络覆盖,节点e和g分别作为中继节点冗余。终端节点主要用于现场采集数据的无线传输,由节点h、i组成,这两个节点通过串口与不同类型的终端设备连接,选用SZ02型模块,两节点都配置成终端节点类型,广播发送模式,其中节点h作为节点i的冗余。
图1 ZigBee无线网络结构
在图1中,终端节点可通过以下路径传送到中心节点:节点h→节点f→节点d→节点a。另一条替代路径:节点i→节点g→节点e→节点a;还有其他冗余路径,这样就可以保证,如果由于信号阻塞或者节点故障,造成一条路径通信失败,还可以找到另一条或多条路径代替,保证了无线通信的稳定运行,冗余节点的引入将原来的单通道通信转变成了多通道通信,通信线路更为多样,同时提高了系统运行的安全性,多线路的通信使得无线网络使用的可持续性更强,寿命更长,并且可维护性更好。
ZigBee无线网络主要用来实现现场设备与上位机之间的远程通信,现场设备采集的数据(例如氧含量、一氧化碳流量及氮氧化物流量等)需要在远程实现在线监测。因此,一方面应该考虑上位机组态界面的设计;另一方面还应考虑ZigBee模块与组态软件之间的通信。
为了满足系统的监测需要,选用组态王6.55版本作为上位机的数据监测平台[3]。组态监测界面(图2)中可以实时显示现场的终端设备经由ZigBee无线网络传输过来的数据,这些数据对应不同的参数类型(例如氧含量和温度),通过点击每个不同的参数可以进入相应的实时曲线界面(图3),直观地显示各参数在不同时间段的变化趋势,实时曲线的旁边还列有参数显示表,显示该参数的实时值、最大值、最小值、平均值及单位等。监测界面的右下方是无线节点监测日志按钮,通过手动点击可以实时获取无线网络各节点的运行情况。
图2 组态监测界面
图3 烟气实时曲线界面
组态软件通过ZigBee无线模块接收到的数据格式,取决于现场终端设备支持的数据收发协议和ZigBee模块本身所配置的波特率、数据位。组态王6.55本身的设备管理机构已列出与组态王通信的一些I/O设备,但是仍有一些未列出的设备类型。因此,考虑采用DDE协议实现现场终端设备与组态王6.55的无线通信。
DDE是Windows平台上一个完整的通信协议,它使应用程序能彼此交换数据和发送指令,DDE的对话内容包括应用程序名(application)、主题(topic)和项目(item)3个标识名[4]。采用DDE通信方式,让组态王6.55与VB 6.0之间实现双向通信,同时VB 6.0可与多种不同类型的设备实现串口通信。
ZigBee模块本身所支持的数据传输格式是另一个需要考虑的内容,SZ02和SZ06两种类型的ZigBee模块支持的数据位为“7位数据+1位校验+1位停止”、“8位数据+无校验+1位停止”、“8位数据+1位校验+1位停止”和“8位数据+无校验+2位停止”4种模式,支持的比特率为1 200~1 152 000bit/s,一般设置是“8位数据+无校验+1位停止”模式和9 600bit/s的比特率(具体配置需要根据终端设备支持的协议而定)。
图4为ZigBee通信的测试情况,首先在组态王6.55的工程浏览器中定义DDE设备和与之连接的I/O变量,保证标识名与VB应用程序之间一一对应;然后运行后台的VB应用程序和组态王工程。由图4可以看出,终端设备通过ZigBee无线网络与组态王之间实现了正常通信。
图4 ZigBee无线通信的测试情况
对各个ZigBee节点设置冗余,在一定程度上保证了无线网络的稳定运行,使某些情况下出现的故障节点不会影响到整个监测系统的正常运转,但却降低了无线网络传输的安全性和可靠性,因此,有必要对每个ZigBee节点的运行状态进行实时监测,达到在线获取信息和及时排查故障的效果。
TCL是一种简洁高效的解释脚本语言,其最初的构想是希望把编程按照基于组件的方法将程序分割成一个个小的、具备一定完整功能的、可重复使用的组件[5]。不同的组件有不同的功能,用于不同的目的,并可为其他的应用程序所利用。这种语言还有良好的扩展性和可嵌入性,可以把很多应用有效、无缝地结合在一起,TCL脚本语言在工业测试中的应用越来越广泛。
对于ZigBee无线节点的诊断,可以采用地址轮询的方式(图5),在一定的时间范围内,对所有无线节点的设备地址进行查询,查询到地址信息的节点会向中心节点(图1中的节点c)返回响应信息,出现故障的节点不会返回任何响应信息,最终达到区分故障节点和正常节点的目的,并根据设备地址准确定位故障节点,图5中节点的位置标志与节点的设备地址是相互对应的。
图5 TCL脚本轮询节点地址流程
ZigBee节点在轮询测试界面中是用按钮组件表示的,轮询测试界面分为数据校验区(上)和状态显示区(下)两部分,其中数据校验区显示节点返回信息的完整性,如图6所示,该测试界面轮询到了地址为02的节点,数据校验区中前8行都是完整的信息,但也出现部分报文缺失的现象,比如第9、14、18、20行的数据都是缺失的,是由于该节点受到外界信号干扰导致了通信过程不稳定,因为轮询时间设置为200ms,所以缺失的数据对整个通信过程来说影响很小,一般可以忽略不计;状态显示区采用6个按钮(对应图1中的节点d、e、f、g、h和i)显示无线节点状态,当节点运行正常时,按钮为蓝色闪烁状,当节点出现故障时,按钮为红色静止状。图6中的TCL无线节点状态监测界面测试了节点02的运行状态,其他5个节点处于未上电状态。
图6 TCL无线节点状态监测界面
用TCL脚本编写的轮询测试界面虽然直观可靠,但在某些情况下,比如在组态界面中监测其他参数时,并不能达到实时监测的目的。因此,需要考虑将TCL轮询测试界面与组态界面集成在一起,通过手动操作,点击“无线节点状态日志”按钮(如图1所示),查看不同时间段各个节点的状态,无线节点状态日志文件由TCL语言编写的轮询测试程序生成,保存在固定的路径下。
首先需要对组态界面的“无线节点状态日志”按钮编写命令语言:StartApp("D:无线节点状态日志.txt");然后运行组态王,手动点击“无线节点状态日志”按钮,弹出日志信息,如图7所示。日志文件显示了不同节点号、时间点和对应的状态情况,例如从图7中的黑色框内,可以看出2号节点在2014年10月1日20点16分33秒是运行正常的。
图7 无线节点监测日志
利用基于ZigBee节点冗余的无线网络,可以实现现场设备与上位机之间的远程通信,解决了现场设备采集的数据需要远程在线监测的问题,同时由TCL脚本语言和组态王建立的ZigBee节点双重故障诊断机制,保证了整个无线网络的安全可靠运行,证实了该无线监测方案和故障诊断机制在工业实际应用中是可行的。
[1] 董朋涛.基于ZigBee的无线网络组网及可靠性研究[D].武汉:华中师范大学,2013.
[2] 姚春.ZigBee在大数量节点应用中的问题研究[J].微计算机信息,2009,(2):3~5.
[3] 陈在平,苗家森,孙全胜,等.基于组态王的加热炉监控系统[J].化工自动化及仪表,2012,39(9):1194~1203.
[4] 马龙博,郑建英.基于组态王和VB的智能仪表实时监控系统[J].自动化仪表,2008,(8):32~34,40.
[5] 赵丽.基于TCL脚本的自动化测试工具的研究与实现[J].信息化研究,2009,35(11):28~30.