(洛阳·大学科技园,河南 洛阳 471000)
为保障行车安全,铁路机车需要进行定期检修。信号灯检测为其中一个重要的检测环节,检测内容包括亮灯颜色的正确性、时延等。在传统的检测模式中,发码箱循环发送检测信号。铁路机车到达检测场地后,检测人员登车检测,当发码箱发送开始检测信号后,信号灯依次点亮,由检测人员判断信号灯工作是否正常[1]。为了减轻检测人员的工作强度,提高检测效率,本文设计了一种基于Zigbee技术的机车信号灯自动检测系统,将Zigbee技术与信号采集技术结合起来,构成组网灵活的机车信号灯自动检测系统。
Zigbee技术是在IEEE802.54.4无线通信协议的基础上形成的,具有成本低、功耗低、可靠性高、组网灵活方便等特点。Zigbee网络传输速率为20~250 kb/s,满足低速率传输的要求,传输距离为10~100 m[2-3]。基于Zigbee技术的铁路机车信号灯自动检测系统由检测模块、无线路由模块、无线网关模块和终端监控PC组成。在每台机车上安装检测模块,检测模块硬件编号与机车号一一对应,检测模块硬件编号对每台机车来说是唯一的。根据现场情况,在检测场地外围安装无线路由模块,如果场地建筑物密集,可增加路由模块布设密度 ,如果场地较为空旷,可适当减小模块布设密度。将无线网关模块靠近监控终端安装,通过串口电缆与监控终端PC连接。检测模块、路由模块、网关模块硬件选用TI公司的CC2530芯片,协议栈选择TI公司的ZStack协议栈[4]。系统拓扑结构如图1所示。
图1 系统拓扑结构图
在图1中,A为检测模块,由两部分组成,第一部分是信号灯状态检测模块,负责检测信号灯状态,第二部分是Zigbee终端模块,将检测结果发送到Zigbee网络;B为无线路由模块,负责对数据进行中继和转发,多个无线路由模块组成了Zigbee网络,负责网关模块和检测模块间的双向数据传输;C为无线网关模块,是整个检测网络的中心,负责建立、维持和管理、检测网络、分配网络地址、接收Zigbee网络传送过来的信号灯状态数据,并将数据通过串口转发到终端监控PC;D为终端监控PC,通过串口接收无线网关传送来的数据,控制整个检测系统的运行,并进行相应的数据分析、处理。
检测模块由无线收发模块和检测底板组成。无线收发模块负责接收和发送网关的无线数据,检测底板有两个功能:①向无线收发模块提供3.3 V的电源;② 检测信号灯有无灯亮,并通过光电隔离将亮灯信号传给无线收发模块。
检测模块接线顺序:检测模块共需8根信号线和1根信号地线,8 根信号线分别对应8个信号灯:绿、绿黄、黄、黄2、红黄、双黄、红、白。
路由模块由无线收发模块和路由底板组成。无线收发模块负责转发检测模块和网关的无线数据,路由底板的功能是向无线收发模块提供3.3 V的电源。
网关模块由无线收发模块和网关底板组成[5]。无线收发模块负责与检测模块进行通讯,网关底板有三个功能:①向无线收发模块提供3.3 V的电源;② 通过串口与PC机进行通讯;③ 负责Zigbee网络管理。
系统中,检测模块、路由模块、网关模块和终端监控模块相互之间需要传输数据,数据帧格式如表1所示。
表1 数据帧格式表
帧类型域定义:“1”表示检测结束、“2”表示机车到达、“3”表示检测模块检测结果、“4”表示发码箱点灯数据、“5”表示数据确认、“6”表示重新检测、“9”表示路由响应。
在Zigbee网络中存在三种逻辑设备类型:协调器、路由器、终端设备。在TI公司的ZStack协议栈中,实现了每种逻辑设备的功能代码。本系统中三种逻辑设备分别对应网关模块、路由模块、检测模块。在ZStack协议栈的基础上完成嵌入式代码编写后,修改对应的编译选项,然后在Keil编译器中将其编译为二进制代码,最后通过TI芯片烧写软件,将二进制代码烧写到对应的模块。
监控终端接受来自发码箱和网关模块的点灯信号,通过用户界面将分析结果展示给检修人员。当发现点灯信号不一致时,通过声音、文字等多种方式通知检修人员,并将故障数据存入后台数据库,以备事后查找原因。通过两个串口将监控端PC分别与发码箱、网关模块连接,发码箱在工作时,循环发送点灯信号,监控端PC通过串口接收发码箱点灯信号,网关模块在收到路由模块(或检测模块)发来的点灯信号后,通过串口发送给监控终端。
监控终端软件运行在Windows平台下,采用MS SQL Server数据库。在软件实现上,采用VS Studio 2005作为开发平台,编程语言采用C++,采用多线程编程技术[6],每个串口对应一个独立的线程,并具有完整的防死锁机制,确保系统的响应时间。
在系统开始检测前,必须先对系统参数进行设置,主要参数如下:
(1)串口设置。设置监控终端PC网关模块、发码箱所对应的串口号;
(2)机车码设置。建立机车号、检测模块编码的对应关系,每台机车都有唯一的机车号和检测模块编码;
(3)灯型设置。设置每种灯型的信号发码方式、低频频率等[7-8];
(4)合格应变时间。指定从发码箱发码到信号灯点灯的合格时间;
(5)是否广播发码箱数据。若广播发码箱数据,则Zigbee向检测模块发送点灯数据;否则,Zigbee不发送点灯数据;
(6)重新检测次数。指定点灯信号异常时重新检测的次数;
(7)路由心跳周期。路由模块向网关模块发送在线数据包的间隔时间;
(8)路由丢失告警阈值。监控软件间隔多长时间收不到路由心跳数据包就会上报路由丢失告警。
(1) 检测系统启动。首先启动PC端监控软件、网关模块和发码箱设备。网关模块启动后,发起并建立Zigbee检测网络。网关模块首先进行信道(其他网络没有使用的一个空闲信道)扫描,同时规定网络的拓扑参数,如最大的子节点数、最大层数、路由算法、路由表生存期等。PC端监控软件在完成串口等硬件的初始化后,开始监听串口数据。检测网络建立后,进入等待状态,当机车到达后,开始进行检测。
(2) 机车到达。当机车到达检测区域后,车载检测模块探测到检测网络并申请加入,检测模块将自己的信道设置为与网关模块使用的信道相同,并提供正确的认证信息,即可加入检测网络。当机车加入检测网络后,可以从网关节点得到自己的短MAC地址、网络地址以及网关模块规定的拓扑参数。同时网关模块可以实时掌握检测网络中的所有机车信息,维护机车信息库。网关模块通过串口向监控PC发送类型为“2”(机车到达)的数据包,监控PC收到数据包后,向检测人员发出机车到达的提示,在提示信息中包含机车号等信息。
(3)等待检测。当机车到达并成功加入检测网络后,系统等待检测开始信号。当发码箱向监控PC发送“88”信号(检测开始信号)后,监控PC通过网关模块向检测模块发送开始检测信号,检测模块收到后,开始检测。
(4)检测。检测模块采集亮灯信号,然后通过路由模块向网关模块发送类型为“3”的数据包,在数据包的数据域中包含检测结果,检测结果中包含亮灯颜色、亮灯时间等信息。亮灯颜色定义为:1-绿、2-绿黄、3-黄、4-黄2、5-红黄、6-双黄、7-红、8-白。
监控PC接收到来自发码箱的灯型信号后,记录灯型、发码时间等信息,然后等待检测模块发送的亮灯数据。当收到检测模块的亮灯数据后,将亮灯数据中的亮灯颜色、点灯时间与发码箱的灯型信号进行比对,测算出应变时间,根据系统设置的时间阈值,判断是否正常,如图2所示。
图2 点灯信号检测图
(5)结束检测。由于发码箱采用循环发码的工作方式,在检测状态下,如果再次收到“88”信号,即表示本次检测结束,系统将测试结果存至数据库备查。根据灯型的亮灯颜色和应变时间,判断检测中是否有信号灯出现异常,如果有异常,则自动进入重新检测流程,或向检测人员提示,由人工判断是否进行重新检测。
(6) 重新检测。监控终端向网关模块发送类型为“6”的数据包,通知系统进入重新检测流程。由网关模块向检测模块发送重新检测信号,系统进入等待检测状态。当发码箱发送“88”信号时,即可开始检测。重新检测次数由系统设定,若达到系统设定次数后,即可断定信号灯出现异常,应立即通知维修人员检修。
铁路机车信号灯自动检测系统集高精度信号采集、数据传输、数据处理于一身,提高了信号检测效率,避免了人为误差,节约了人力资源,实现了检测流程的自动化。各模块设备运行平稳、可靠,监控端软件界面简洁、操作简单、功能完善,为检测人员带来了操作上的便利性。不足之处在于检测区域电磁环境较为复杂,在无线信号传输过程中偶然发生丢包现象,这也是下一步工作要解决的问题。
参考文献:
[1] 刘朝英,林瑜筠.铁路信号概论[M].北京:中国铁道出版社,2011.
[2] 王小强,欧阳骏,黄宁淋.Zigbee无线传感器网络设计与实现[M].北京:化学工业出版社,2012.
[3] Robert Faludi.Building Wireless Sensor Networks: with ZigBee,XBee,Arduino,and Processing[M].USA:O’Reilly Media,2012.
[4] Temitope Takpor.Implementation and Evaluation of a Zigbee Network[M].USA:LAP LAMBERT Academic Publishing,2013.
[5] 胡敬,尹岗.Zigbee技术的无线网关设计[J].电子测量技术,2008(1):32-36.
[6] 罗莉琴,詹祖桥.Windows网络编程[M].北京:人民邮电出版社,2011.
[7] 赵自信.ZPW-2000A无绝缘移频自动闭塞系统的技术综述[J].铁路通信信号工程技术,2003(S1):72-77.
[8] 尹路,于晓泉.ZPW-2000A检测采集数据在微机监测系统处理应用的探讨[J].铁路通信信号工程技术,2007(6):48-52.