1. 引言
列车运行时,铁轨与火车车轮之间复杂的作用力会造成铁轨磨损,磨损值超过一定限度时会威胁车辆的运行安全 [1]。为了列车的安全运行,需要对铁轨进行定期检测,当磨损量超过规定范围时,需要采取打磨或更换等措施,使铁轨轮廓达到安全运行要求,以延长铁轨使用寿命,降低运营成本 [2]。铁轨打磨前后,也需要测量铁轨磨损量,作为铁轨打磨及轮廓修复的依据。
人工接触式测量是铁轨磨损检测的主要方法。该方法存在效率低下,劳动强度大,精确度较低等问题,无法适应目前铁路高速发展的形势。实现检测的机械化、自动化、智能化是大势所趋。目前国外主要采取的是基于电子测量技术的大型轨道检测设备。然而大型设备存在设备便携性差、处理实时性不够,无法满足现场和远程的多样化需求,且存在不同设备间的数据兼容性和可移植性等问题 [3]。
2. 相关工作
从有关铁轨磨损检测的文献看,测量方法和采用的技术不尽相同,各有优缺点。刘杰 [4] 介绍了一种从澳大利亚引进的SY00970轨道扫描试验车,其工作需要的摄像头,对环境要求较高。ImageMap开发的基于计算机视觉的便携式铁轨磨损测量装置,在检测后直接从上方的屏幕中读出数据,但它基于DOS系统开发,可拓展性不高 [5]。基于计算机视觉技术TecnoRail检测设备检测方式灵活,但数据管理与人工操作均较为繁杂 [6]。王志威等开发的磨损检测系统能快速准确地基于机器视觉检测铁轨磨损情况,且可以脱离打磨车单独使用 [7]。文献 [8] 介绍的车载钢轨轮廓采集系统利用激光条纹获取铁轨的轮廓,可实现160 km/h的测速,但数据存储、分析等功能较弱。
上述国内外研制的铁轨磨损检测系统均使用计算机作为上位机设备,使用串口连接计算机和下位机设备,操作复杂且便携性差,数据存储和导出不便。针对以上问题,本文设计开发了一款基于Android的设备便携、操作方便、数据存储分析功能丰富的铁轨磨损检测系统。
3. 系统设计
本铁轨磨损检测系统由移动端、服务端和管理控制台三个模块组成。移动端通过蓝牙和下位机通信,实时采集测量数据,同时将数据上传到服务端,并显示为折线图。测量完成后,可以回放历史数据或将测量数据导出为Excel文件。服务端把数据库、移动端和管理控制台连接起来,为设备管理和对测量数据进行分析比较提供服务。
3.1. 移动端功能设计
如图1所示,移动端包括数据管理、测量、通信和参数配置4个模块。数据管理模块主要用于管理测量的所有数据,用户可以对这些测量结果进行查看、删除、导出为Excel文件等。测量模块主要用于数据的计算和展示。通信模块包括两大子模块,即蓝牙通信模块和Socket通信模块。其中蓝牙通信模块用于移动端和下位机之间的通信;Socket通信模块用于移动端和服务端之间的通信。参数配置模块主要包括客户信息配置和参数设置两项功能,用于存储用户设置的参数。移动端基于配置信息,对通过蓝牙通信模块读取下位机上传的数据,使用测量模块将数据进行换算处理并展示出来,用户可以在测量过程中对相应点位进行标注,处理后的数据及标注通过Socket上传到服务器。

Figure 1. Components of mobile terminal
图1. 移动端功能模块
3.2. 管理控制台功能设计
管理控制台以网页形式满足用户控制管理多个移动终端的需求,包括数据管理、设备管理、用户管理三项功能。数据管理功能主要用于查看移动端传输的数据,可以根据日期、用户名、下位机名等进行查询,具体内容包括测量次数、异常情况、测量距离等。设备管理功能提供设备状态、设备配置参数、设备利用率的管理。在设备状态中,用户可以查看移动端设备的工作状态,也可以查看设备在各个时间段上下线的情况;设备配置参数允许用户设定移动端的配置参数,并作为云模板在移动端设备上下载;设备工作时长和占比可以从设备利用率中查看。在用户管理功能提供了与用户相关的各项操作,包括用户名、用户详细信息、用户编辑、参数设置、厂家标定和下位机查看等操作。
4. 关键技术及算法
4.1. 移动端和服务端之间的通讯机制
考虑到移动端和服务端之间通讯的实时性和可靠性,本系统选用Socket技术,并通过心跳包保持双方长时间连接。如图2所示,服务端的Socket服务启动后,对61000端口进行监听,一旦接受到来自移动端的请求,验证身份后,保持连接和数据通讯。当服务端连续3次发送心跳包失败时,认为设备已离线,连接池会关闭该Socket连接的输入输出流,并删除该Socket对象。移动端如果发现自己离线则需重新建立连接。这样,基于移动端和服务端之间的Socket通讯,以及心跳包机制,可以确保连接的有效性,便于数据及时传输,用户也可以随时查看设备的实时在线状态。
4.2. 移动端和下位机间的通讯
移动端使用蓝牙通讯从下位机实时获取数据。具体过程是,用户首次进入测量界面,首先检测各项设置是否已经完成,是否存有上次连接过的设备,如果有则自动连接,没有则需要用户手动选择蓝牙设备进行连接,配对成功后,完成初始化后,把设备对应的设备名及其MAC地址保存下来,以便下次自动连接。然后就可以进行数据通信。蓝牙连接的建立流程如图3所示,建立完成后,Handler程序负责接收数据并进行处理。

Figure 2. Server socket communication process
图2. 服务端Socket通讯流程
接收和处理数据时,为克服低功耗蓝牙通讯数据包的限制,自定义了测量数据传输协议,规定测量数据包以0x01为起始字节,长度为24字节,结束字节为0x00。为了有效处理接收到的测量数据,采用缓冲区数组存储不完整的数据包,待构成一个完整数据包后再处理,具体流程如图4所示。接收到数据后,
首先判断缓冲区数组长度是否为0,如果为0说明上一次读取的缓存已经被清空,这时将overflow数组的数据加入缓冲区中;随后判断当前字节长度加上接收到的数据长是否超出了24个字节,如果超出就把溢出的字节放入overflow中,同时更新缓冲长度。如果不到24字节则直接将数据放入缓冲中,更新长度。当数据为24字节时,检测最后字节是否为0x00,如果不为0x00则本次数据出错,清空缓冲数组;如果为0x00则开始后续的数据转换。转换后得到有效的载荷数据可以用于标定和测量。
4.3. 标定功能
在蓝牙通信建立后,厂家凭密码进入厂家标定界面进行标定。标定功能主要用于铁轨磨损值的计算。首先标定零位数据,将下位机放入标准铁轨中,将轨面值和作用边值的传感器调整为0;随后点击标定,从下位机接收到轨面值和作用边值的实际数据即为当前的零位数据z。随后换为有磨损的钢轨,重新接收到数据r,输入相应的零位数据和面板显示值p即可计算比例,比例s计算如式(1)所示。
(1)
4.4. 测量数据处理
下位机数据由作用边数据、轨面数据和里程数据三部分组成。数据以字节流的形式传输,下位机传输数据包格式规范如图5所示,其中作用边数据、轨面数据是以Long类型数据传输的,里程数据以16进制形式传输。

Figure 5. Self-defined data packet specification
图5. 自定义数据包格式规范
获取数据后,作用边值和轨面值v使用式(2)计算。
(2)
其中 表示零位数据,比例s为式(1)的计算结果,
表示偏移量。
里程的计算方法为:直径为d毫米的滚轮在铁轨上滚动时,一个圆周分为n份,下位机发送的3个字节16进制数表示转过的份数,最大到n圈。正转时,达到0xFFFFFF后回零;反转时,0x000000后变为0xFFFFFF。因此滚轮每转过一圈走过的米数 可由式(3)计算得到。
(3)
其中,n取值为4096,
取值为3.1415926。
在计算里程时,在两次接收的数据不超过n圈的情况下,且正转、反转移动的距离L都为正数时,可以用式(4)计算。
(4)
其中
为圈数的变化量,根据两次数据的里程数高12位的差得到,可以为正,也可能为负,%表示模运算。
设定了测量起点和测量方向后,根据滚轮滚动的距离,可以计算出当前测量值所对应的里程数据。
5. 系统运行效果
移动端在进行测量时,需要先和下位机进行蓝牙连接,然后对测量里程、测量长度、测量起点、轨面值等基础信息进行设置。具体设置界面如图6所示。点击开始后,开始进行测量。测量完成后,可以对数据进行回放、导出为Excel文件。在数据管理页面,可展示近10日设备测量次数、距离统计以及当前用户测量次数和异常情况统计,具体如图7所示。

Figure 6. Basic measurement information setting
图6. 测量基础信息设置界面
除了在移动端对单台设备进行管理外,通过管理控制台对多台设备进行管理,如图8所示,通过选择特定设备,可以查看设备名称、对应的用户名、线路名,以及测量时间、测量次数、测量距离等。点击一条记录,即可查看对应的测量折线图,如图9所示。
6. 结果总结
针对传统的铁轨磨损检测系统存在的诸如便携性差、操作复杂等不足,本文基于Android开发了一套辅助铁轨磨损检测设备使用的软件系统。利用蓝牙通信技术从下位机获取测量数据,移动端对数据进行解析、处理、可视化及上传到服务器等,通过管理控制台可以进行设备管理和多终端的数据汇集。试用反馈表明,系统交互界面友好,操作简洁,可以有效地减轻工作人员负担、提升工作效率。
NOTES
*通讯作者。