张友兵 刘 岭 崔俊锋
列车运行过程中,车载设备应用软件实时检测故障情况,并将检测到的故障存储起来以备下载分析。故障记录包括UTC时间、系统时间戳、报告故障的文件名、报告故障的行号、故障码和字符串形式的故障描述等信息。
但CTCS-2级和CTCS-3级列控车载设备可能存在软硬件故障,为此开发一种诊断维护终端。
诊断维护终端用于修改列控车载主机存储的配置参数,查看配置参数的描述信息,检查车载主机存储的配置参数取值,审查或清除车载主机存储的应用故障记录。诊断维护终端是一个工作在PC机上的独立软件,通过USB-CAN转换设备与车载主机进行通信。根据故障记录的文件名和行号可以快速定位故障发生的位置,利用故障码和字符串形式的描述信息可以直观分析故障原因。
诊断维护终端采用通用软件,以应对不同车型、用户、需求等变化信息带来的影响,而且便于软件升级维护,提高了软件通用性和可维护性,也提高了软件与车型的适配性。
图1为诊断维护终端的系统原理图。诊断维护终端通过USB-CAN转换设备与车载主机通信连接。用户操作诊断维护终端,诊断维护终端响应用户操作,并将用户操作转换成符合通信协议的数据发送给车载主机,车载主机接收数据并从数据中识别出用户命令。
对于正确的用户命令,车载主机根据具体命令内容执行对应的响应,并将响应结果转换成符合通信协议的数据发送给诊断维护终端;诊断维护终端接收数据并提取出车载主机的响应结果,将响应结果及时显示在诊断维护终端的界面上供用户查看。
对于错误的用户命令,车载主机识别错误类型,回复具有针对性的提示信息,并将提示信息转换成符合通信协议的数据发送给诊断维护终端;诊断维护终端接收数据,提取出车载主机的提示信息,显示在诊断维护终端的界面上,及时提示用户输入命令有误,指导用户执行正确的操作。
图1 列控车载主机诊断维护终端
诊断维护终端软件分为:通信层、逻辑处理层和显示层三层。
3.1.1 通信层
通信层包含接收和发送数据模块。接收数据模块通过USB-CAN转换设备从车载主机接收数据,传给逻辑处理层的接收数据管理模块。发送数据模块从逻辑处理层的发送数据管理模块获取数据,通过USB-CAN转换设备发送车载数据。
3.1.2 逻辑处理层
逻辑处理层包含如下模块。
1.响应用户操作模块。接收用户指令,并传递给发送数据管理模块。
2.接收数据管理模块。从通信层的接收数据模块得到车载主机数据,提供给处理数据模块进行解析和逻辑处理。
3.处理数据模块。从接收数据管理模块提供的车载主机数据中提取报文帧或空闲帧,对其进行数据类型检查、数据长度检查、时间戳检查、CRC校验等,如果检查不通过,则置工作状态为初始状态;从通过检查的报文帧中提取有效数据,根据GBK编码将有效数据转换成可以显示的字符串,提供给界面显示数据管理模块;使用通过检查的空闲帧来判断与车载主机的通信是否超时,如果超时则置工作状态为初始化状态。
4.保持通信连接模块。与车载主机建立通信连接;当连接断开时,主动与车载主机重新建立通信连接;连接正常时,当没有指令需要发送给车载主机时,定时组建保持连接帧并传递给发送数据管理模块,以保持与车载主机的通信连接。
5.发送数据管理模块。从保持通信连接模块得到需要发给车载主机的数据,从响应用户操作模块得到需要发给车载主机的用户指令,调用通信层的发送数据模块将数据发给车载主机,同时向界面显示数据管理模块提供需要界面显示的用户指令。
6.界面显示数据管理模块。从处理数据模块获取车载主机数据,从发送数据管理模块获取用户指令,以时间先后顺序依次显示在诊断维护终端的界面上,便于用户查看和指导用户操作。
3.1.3 显示层
显示层包含界面显示收发信息模块和更新界面控件属性模块。界面显示收发信息模块,从逻辑处理层的界面显示数据管理模块获取需要界面显示的数据,并将数据依次显示在界面上,供用户查看交互过程或指导用户执行具体的操作。更新界面控件属性模块,负责响应用户操作,并根据用户操作设置诊断维护界面控件的使能属性,保证用户可以执行什么操作和不可以执行什么操作。
诊断维护终端与车载主机通信中使用了4种消息:请求帧、保持通信帧、报文帧和空闲帧。诊断维护终端使用请求帧与车载主机建立通信连接,并发送用户指令;在通信连接建立后,在没有用户指令需要发送时,保持连接帧与车载主机正常的通信连接。车载主机使用空闲帧与诊断维护终端建立通信连接,当没有数据需要发送时,使用空闲帧与诊断维护终端保持通信连接;通信连接建立并接收到用户指令后,有数据需要发送时使用报文帧将数据发送给诊断维护终端。
诊断维护终端逻辑处理层的保持通信连接模块采用状态机的设计思想,包括初始状态、等待启动命令状态、建立通信状态和保持通信状态。
1.初始状态:诊断维护终端刚启动时,处于初始状态,初始化所有全局变量,清空发送和接收数据缓冲区,并转入等待启动命令状态。
2.等待启动命令状态:诊断维护终端等待车载主机的启动命令,如果没有收到启动命令,保持该状态不变;如果收到启动命令,则转入建立通信状态;如果收到的数据存在数据类型错误、数据长度错误、时间戳错误、CRC校验错误等情况时,转入初始状态。
3.建立通信状态:诊断维护终端向车载主机发送建立通信连接的请求帧,并等待车载主机回复通信连接成功的应答,如果收到则转入保持通信状态,否则保持当前状态不变;如果收到的数据存在数据类型错误、数据长度错误、时间戳错误、CRC校验错误等情况时,转入初始状态。
4.保持通信状态:诊断维护终端从车载主机接收数据、解析数据,并在界面显示车载主机的提示信息;响应用户的操作并将用户操作发送给车载主机;如果收到的数据存在数据类型错误、数据长度错误、时间戳错误、CRC校验错误等情况时,转入初始状态;如果在规定时间内没有收到车载主机的任何有效数据,认为通信异常,也转入初始状态。保持通信连接模块状态机如图2所示。
图2 保持通信连接模块状态机
下载配置参数文件的过程:人工加载配置参数文件;诊断维护终端自动将配置参数文件分割为若干个请求帧;提取一条请求帧,将请求帧分割为若干个CAN帧,依次发送给车载主机;判断是否存在尚未发送给车载主机的请求帧,如果存在则按上一步方法将请求帧发送出去,否则结束流程。下载配置参数文件过程如图3所示。
图3 下载配置参数文件过程
当用户需要查看配置参数描述信息、修改制定的配置参数、下载应用故障记录或清空车载设备存储的应用故障记录时,只需要在诊断维护终端界面输入指定的指令并发送给车载主机,车载主机收到指令后向诊断维护终端回复对应的信息。
透传用户命令的一般流程:用户在诊断维护终端界面输入指令;诊断维护终端自动将输入的指令组建成请求帧,并分割为若干个CAN帧,依次发送给车载主机。透传用户指令过程如图4所示。
透传用户指令过程
用户在诊断维护终端界面输入指令,并发送给车载主机;车载主机收到后判断用户指令有效性,如果是无效的用户指令,车载主机提示用户输入指令为无效;如果是有效的用户指令,车载主机根据指令回复对应信息。诊断维护终端接收到车载主机的回复信息并显示。该信息的流程为:诊断维护终端接收到车载主机发送的报文帧,对报文帧进行帧序号检查、长度检查、时间戳检查和CRC校验。如果通过以上检查,将从报文帧中提取有效数据,根据GBK编码将有效数据转换成字符串,并在界面上显示字符串。界面显示车载主机回复信息过程如图5所示。
显示车载主机回复信息过程
GBK编码是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,收录了21003个汉字,完全兼容GB2312-80标准,支持 国 际 标 准 ISO/IEC10646-1 和 国 家 标 准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。
在数据通信中,经常存在丢失、重复、乱序、乱码等情况,诊断维护终端通过判断时间戳是否向上增长、比较CRC校验值是否一致、判断应答帧序号是否向上连续、判断数据长度是否是期望的长度等措施,解决数据通信中可能存在的问题。
用户在诊断维护终端界面输入指令,点击发送按钮,把用户指令透传给车载主机,由车载主机判断用户指令的有效性并做出响应。因此,当需要增加新的用户指令时,诊断维护终端并不需要做大的修改,只需要车载主机增加对其响应。
用户在诊断维护终端界面上输入指令,点击发送按钮将指令发送给车载主机,发送出去的用户指令显示在交互窗口中。车载主机收到用户指令并对指令进行有效性判断,对于无效的用户指令,车载主机回复指令无效,诊断维护终端在交互窗口中显示指令无效的提示信息。对于有效的用户指令,车载主机将根据指令内容回复指定的信息,且在诊断维护终端交互窗口中显示。通过这种一问一答的方式,诊断维护终端指导用户向车载主机发送正确的指令,对车载主机进行操作。
诊断维护终端一方面需要将交互的信息及时显示在界面上,另一方面需要接收、处理和发送数据。如果将所有任务都放在UI线程中,有时会使界面卡死。因此,采用多线程的方法搭建软件结构,设计UI和工作2个线程。UI线程负责更新界面显示。工作线程负责接收数据、处理数据和发送数据。针对工作线程有信息需要界面显示,由于这是工作线程和UI线程的跨线程操作,使用代理方法将工作线程的信息显示在界面上。基本原则就是工作线程负责所有的运算,UI线程负责纯粹的界面更新。
本文介绍了一种用于列控车载设备的诊断维护终端,可以用于列控车载设备下载参数,还可以用于下载列控车载设备存储的应用故障记录,是列控车载设备日常运营维护、故障分析的重要工具。
[1] 中国铁路总公司.CTCS-2/3级列控车载设备人机界面(DMI)显示暂行规范[S].中国铁路总公司,2014.
[2] 北京全路通信信号研究设计院有限公司.CTCS3-300T列控车载设备DMI司机操作手册[S].北京全路通信信号研究设计院有限公司,2013.