曹晓宇
(国能新朔准池铁路(山西)有限责任公司,山西朔州 036003)
随着现代铁路货运的发展,铁路货运日益向重载化快捷化方向迈进,对列车的控制提出了更高的要求。基于北斗的重载铁路列控系统车载ATO 系统通过模拟和替代司机操作实现列车自动驾驶,是提高货运铁路运输效率、降低司机劳动强度的核心装备。车载ATO 系统是在重载货运列车上设置列车自动驾驶单元,在列车自动保护系统(Automatic Train Protection,ATP)的防护下,接收ATP 转发的线路数据,实现列车的起车、加速、巡航、减速、停车的自动控制,已在城市轨道交通和高速铁路领域得到广泛的应用,是未来重载列车运行控制的发展方向。
ATO 系统包括地面设备和车载设备两部分。车载设备是根据地面各种设备提供的信息(包括线路数据、临时限速等)结合列车参数,计算出列车运行控制曲线,实现控车运行。ATO 车载设备记录的内容主要包括ATO 工作状态信息、ATO 接收的地面信息、ATO 控制输出信息和ATO 故障报警信息等。这些信息对列车安全、高效、平稳运行至关重要。车载ATO 系统记录板通过记录以上信息,为列车运行控制决策提供可靠数据来源。
车载ATO 系统记录板数据解析工具是解析ATO 记录板数据的可视化工具,主要功能包括记录文档的读取、解析和显示等。本文依据车载ATO系统记录板数据解析工具需求规范,首先对解析工具进行总体设计,然后阐述各功能的设计流程,最后给出解析工具的使用方法和测试结果。
车载ATO 系统记录板数据解析工具应具备以下3 点基本功能:
1)能支持重载列车自动驾驶产品的记录板日志解析;
2)能根据不同用户设置不同的权限,即ATO软件维护人员权限应支持查看所有记录板解析数据结果,业主权限仅能支持查看部分解析数据结果;
3)支持在输入正确账号密码的情况下,进入ATO 软件维护人员权限模式,业主权限无需账号密码即可进入。
数据解析工具的主要功能包括记录文档的读取、解析和显示等。
2.2.1 记录文档提取
解析工具对操作人员选择的记录板日志(.txt格式)进行读取。当所选记录板日志文档格式正确时,则读取成功。当记录板日志读取失败时,解析工具支持报错并且能够重新选择。
2.2.2 记录数据解析
解析工具按照车载ATO 记录板接口协议,将记录板日志的所有记录数据解析为可读数据。根据记录数据消息长度一致性,判断消息是否有效。若消息有效,则解析该消息的所有子包;若消息无效,则报错并丢弃这条消息并且进行下一条消息的解析。此外,解析工具应能解析记录数据消息子包,若子包号错误或子包长度错误,则丢弃这个子包继续进行解析。若记录数据消息存在ATO 系统输入输出原始数据,解析工具应能剥离出ATO 系统输入输出原始字节流。
2.2.3 记录数据显示
解析工具的显示界面以图表和图线两种形式展示解析结果,并在界面上分区显示。显示内容包括:
1)所选记录板日志的所有记录数据消息的解析结果;
2)以十六进制显示原始记录消息和ATO 系统输入输出字节流;
3)所选记录板日志的记录数据消息中不同子包的发送周期;
4)以周期号为横坐标,速度为纵坐标的直角坐标系的相关速度-周期曲线,主要包括当前速度曲线、ATP 允许速度曲线和ATO 命令速度曲线。
需要说明的是,显示界面应能通过在速度-周期曲线上的鼠标移动或者按键控制显示鼠标位置当前周期的解析结果,并且速度-周期曲线应能支持整体缩放功能。
此外,为便于快速分析,显示界面还应能根据鼠标位置当前周期记录消息进行简单计算处理,包括并不限于:计算当前速度距ATP 允许速度差、当前速度距ATP 命令速度差和当前速度距ATO 命令速度差。
车载ATO 系统记录板数据解析工具是解析ATO 记录板数据的可视化解析工具,便于数据解析和车载ATO 系统维护,其中解析工具由Visual Studio 2019 平台C#语言编写,界面设计基于WinForm 工具,采用.NET Framework 4.6 框架和DevExpress 20.1 插件共同完成。
解析工具的输入为原始记录板日志压缩包经过解压拼接后的记录数据。输入数据应符合记录板接口协议规定的格式。解析工具输出为解析后的记录数据,包括:ATP →ATO 信息原始数据、ATO 功能业务信息数据、ATO 控车信息数据、ATO 故障数据和参数及配置信息数据等。
3.2.1 总体设计思路
解析工具的解析界面布局沿用JRU viewer 的整体风格,使用扁平化的界面设计方式对解析结果进行展示,主要包括图形显示区、数据显示区、扩展区、数据输入区,如图 1 所示。
图1 车载ATO系统记录数据解析工具布局示意Fig.1 Layout of record data parsing tool for onboard ATO system
考虑到不同产品线记录板数据解析工具的兼容性,提供统一的程序入口界面,便于不同产品线维护人员的使用。工具统一入口设计流程如图 2 所示。
解析工具在功能设计上主要包括文件读取、数据解析、数据显示、曲线绘制4 个部分,由于C#是面向对象的语言,所以在程序设计上,将以上这些功能分别在不同的类中实现,解析工具的类设计如下。
Form.cs:窗体类,设计窗体,实现窗体事件的响应。
图2 解析界面入口逻辑流程Fig.2 Logic flow chart of parsing interface gateway
GraphicUserControl.cs:图形用户控制类,实现图形的绘制。
ATOMessage.cs:ATO 消息类,解析ATO 记录板数据的消息头及子包号,查找对应子包并且解析。
ATOPacket.cs:ATO 子包类,定义ATO 记录板数据的子包及调用解析函数按位解析子包变量。
ATPMessage.cs:ATP 子包类,定义ATPATO 子包变量,按需解析ATP-ATO 通信信息。
MVBMessage.cs:MVB 子包类,定义子包ATO-MVB 变量,按需解析ATO-MVB 通信信息。
ByteStuffing.cs:处理类,对帧进行转义、按位解析等功能。
各类之间的关系如图 3 所示。
3.2.2 文件读取
记录板原始记录日志经过can_analyse_c3client_v0.0.6 工具解压拼接后,每条消息16 进制按行显示,文件读取就是把保存解压拼接后的记录数据转换为可供程序使用的字节数组形式,用于下一步数据解析。解析软件设计打开文件按钮,点击可选择需要解析的记录文件,选定文件后开启后台线程逐行读取文件内的数据流,将每一行的字节流转义后保存在集合中。文件读取部分程序集成在窗体类中,即Form.cs。
3.2.3 数据解析
数据解析就是将字节数组按照记录板数据接口协议转换为对应的变量。字节数组按照接口协议先解析消息头,再解析子包头,根据子包头号查找对应子包里的变量,逐位取出解析,如数据包中含有子包,则按照相同的方法在子包对应的类中继续查找解析。由于各项目ATO 记录板接口协议不同,记录消息中子包格式和字段也有所差异(本文对各项目接口协议子包的差异类不做赘述),但是解析逻辑基本一致,数据解析部分的程序主要集成在ATOMessage、ATOPacket、ATPMessage、MVBMessage 这4 个类中,其中ATOMessage类主要解析消息头和子包号,查询子包解析函数,ATOPacket、ATPMessage、MVBMessage 类为具体的子包字段信息和解析过程。
3.2.4 数据显示
数据显示是将解析出来的记录板数据按照需求显示在界面上,在界面上可选择tabpage 切换查看不同类型的数据。主要包括详细数据、原始数据、固定信息、应答器信息、车辆接口数据等。解析出的数据被归类显示,显示的形式使用TreeList 树形表格和TextBox 文本框的方式。显示程序集成在窗体类Form.cs 中。
3.2.5 曲线绘制
曲线绘制是按照需求文档将一些重点信息绘制成曲线图或者在周期坐标中标识,其坐标轴、曲线、标识的绘制均在GUI 类中。绘制横坐标为周期,纵坐标为速度的直角坐标系,直角坐标系下方为信息标识轨,GUI 上横坐标每个像素点代表一个周期,将这个周期需要绘制的数据绘制到纵坐标上,上一周期与本周期的坐标点相连,即可绘制成连续的曲线图。若上一周期未收到数据包,则向前推演。GUI 上的曲线图与数据显示联动,MouseMove时间和MouseClick 事件记录鼠标在GUI 上移动或者单击的横坐标值,通过计算得到对应周期的ATOMessage 类,将此类作为参数传递给数据显示函数中,以此方法使得曲线图与数据联动显示。
此外,曲线绘制须具备缩放功能,即能对于所有周期点按照周期数/屏幕横向分辨率(像素)的倍数进行采样,将抽取到的周期号对应的数据绘制在界面上。
由于不同项目的记录板接口规范不同,在使用时需要选择对应项目的记录板数据解析工具进行解析,否则本解析工具解析出的数据不具备正确性。以下操作说明以重载列车ATO 产品记录数据解析工具为例。
解析工具输入的数据需要严格按照各项目ATO 数据记录接口规范,输入的记录板数据文档应为.txt 格式。由于ATO 记录板的下载限制,从ATO 记录板获取的原始记录日志为多个较短数据压缩包形式,因此需要对从ATO 记录板下载的数据进行解压拼接,使其成为解析工具可输入的原始数据文档。
在记录板下载的压缩数据文件夹里粘贴脚本can_analyse_c3client_v0.0.6,运行脚本can_analyse_c3client_v0.0.6,便可将脚本所在文件夹里的压缩数据进行解压和拼接,最终形成3 个文档:xxxx_L_can_log.txt、xxxx_R_can_log.txt、xxxx_Err_can_log.txt,其中xxxx 代表记录数据的日期,xxxx_L_can_log 表示左系记录数据,xxxx_R_can_log 表示右系记录数据,xxxx_Err_can_log 表示错误数据。如图 4 所示,给出2022 年5 月4 日一组运行数据,解析后的结果:20220504_L_can_log.txt、20220504_R_can_log.txt、20220504_Err_can_log.txt 。用户可选择所需要的记录板原始数据作为本工具的输入数据文档。
图4 解压拼包过程Fig.4 Unpackage and package process
解析工具启动后即为登录界面,如图 5 所示。操作人员应选择解析项目和登录权限。若选择管理员权限登录,需在指定位置输入用户名和密码,点击“登录”按钮,账号与密码校验通过后即完成登录。若为用户模式登录,则不需要输入用户名和密码,点击“登录”按钮,账号与密码校验通过后即完成登录。
图5 登录页面Fig.5 Login page
完成登录后,解析工具自动跳转至所选项目和所选权限下的解析界面,如图 6 所示。界面包括菜单栏、图形绘制区和数据显示区3 个功能分区。其中,菜单栏汇集了解析工具的基本功能,图形绘制区对解析后的部分数据进行曲线图绘制,数据显示区对解析后的所有数据进行分类显示。
图6 解析页面Fig.6 Parse page
点击菜单栏中的“Open”图标,选择由4.1节说明的原始记录数据,点击“打开”,如图 7 所示,等待十几秒,解析后的结果将会显示在工具界面上。
输入正确的原始记录数据解析后,工具界面如图 8 所示,图形绘制区的每一个像素点代表一个周期,用户可根据图例查看各曲线的含义,图形绘制区下部为ATO 模式、硬允许、ATO 级位等状态信息。随着光标在图形绘制区移动,数据显示区的详细数据页可显示该周期所有的记录数据。“固定信息”页是对详细数据中较为重要的信息进行摘要显示,方便查看重要信息。“原始数据”页是对ATO与其他接口之间的通信原始数据进行数据提取,便于二次解析。“显示设置”页是对接口规范中的各个子包进行区分,选择某几个子包的复选框,则可在图形绘制区底部显示发送该子包的周期。“车辆接口”页显示ATO 与TCMS 的交互信息,该数据显示功能目前预留。“应答器”页显示应答器及位置校正相关信息,目前只有C3ATO 该页面有数据显示,其他项目不具备此页的数据显示。
经实测数据验证,解析工具预设的所有功能均可正确执行,人机界面友好,操作方便,能够满足设计需求。
图7 数据读取Fig.7 Data reading
图8 数据解析结果Fig.8 Data parsing results
为便于重载列车运行状态、控制策略优化分析、控制策略调整和系统维护等工作,开发了一款基于C 语言的适用于重载列车的车载ATO 系统记录板数据解析工具。首先根据解析工具功能需求,将解析工具软件划分为数据读取、数据解析、数据显示和曲线绘制等4 个功能模块。然后详细阐述了各功能模块的设计方法,其中解析工具由Visual Studio 2019 平台C#语言编写,界面设计基于WinForm 工具、采用.NET Framework 4.6 框架和DevExpress 20.1 插件共同完成。最后以重载列车ATO 产品记录数据解析工具为例,给出完整的软件操作流程,并对软件功能进行了测试。测试结果验证了所开发的解析工具的功能性和可操作性。该软件人机界面友好、操作方便,为研究人员分析车辆运行状况、算法改进和系统维护提供便利。适用于重载列车的车载ATO 系统记录板数据解析工具的设计不仅简化了数据解析和分析的过程,也为研究人员和技术人员提供了一个有力的工具,以更好地理解列车的运行情况、改进列车控制策略,并及时识别和解决潜在的系统问题,从而提高列车运行的效率和安全性。