APP下载

基于Redis技术构建高铁列控自动驾驶系统仿真平台

2021-12-23毛瑞雷杨丽丽

铁道通信信号 2021年11期
关键词:车载高铁列车

毛瑞雷,杨丽丽,刘 雨,张 怡

随着京张高铁的开通和运营,我国自主研制的高铁ATO系统正式应用于实际线路,有效降低了司机驾驶强度,提高了列车运行的准点率,增加了列车运营的灵活性。为验证高铁ATO系统对各种线路条件的适应性,需在新线路开通前先进行实验室环境下的试验和测试[1]。因此,构建一个能够灵活扩展的面向高铁ATO的仿真平台(以下简称“仿真平台”),依据各种需求实现对ATO相关功能和性能的快速仿真调试,对高铁ATO系统的良好应用具有重要的现实意义。

目前,仿真测试平台的构建大多是基于传统以太网通信协议UDP或TCP技术,开发过程中需完成仿真平台中各模块之间数据传输格式的定义、数据传输错误的处理,以及数据解析和数据组包等多项工作,导致平台开发的耦合性强、工作量大且可扩展性差,效率较低。文献[2]提出了基于DCOM的列控车载仿真测试平台方案,对底层通信网络协议细节进行良好屏蔽,使得开发人员能够集中精力开发应用程序,但跨平台性能受限,开发平台模块程序设计语言的选择有一定的局限性;文献[3]和文献[4]提出了基于面向服务体系架构(Service Oriented Architecture,SOA)的仿真平台构建方法,侧重服务的封装、重用及服务之间的互操作性,增强了体系结构的松耦合性,但模型使用开放性过高、没有明确管理机制的传统Web服务,导致模型互操作性弱;文献[5]提出基于.NET Remoting技术构建CTCS2+ATO列控车载子系统的培训平台,在一定程度上屏蔽了网络协议细节,减轻了代码工作量,但需要完成一定的配置工作(例如通道注册、请求对象、创建代理等过程),增大了平台开发周期中的调试工作量;文献[6]提出基于HLA构建CTCS-3级列控仿真系统,可以支持采用不同方法和技术开发的联邦成员快速地接入仿真系统,提高了其可扩展性,但HLA体系结构庞大复杂、构建难度较大,且使用成本高昂。

为了提升仿真平台的灵活性,并融合上述各类仿真平台的优点,本文提出基于互联网领域应用较广的内存数据库Redis技术,使仿真平台能够在兼容各类编程语言的基础上,降低平台间各模块的耦合度,提高平台的可扩展性、可裁剪性和模块的可重用性。

1 Redis技术功能及架构

远程字典服务(Remote Dictionary Server,Redis)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,可提供多种语言的API。同时,Redis技术支持键值对(Key-value)、散列(Hash)、列表(List)等多种数据存储类型,支持内存数据持久化,且提供了RDB快照和AOF日志2种持久化策略,其内存缓存型数据库可以存储重要数据,从而实现低延迟读取,相应地提高了应用程序的访问性能。针对目前流行的编程语言,包括Java、C#、C/C++、PHP、Python、JavaScript等,Redis均提供了相关的实现版本,且支持多种操作系统的应用,具有良好的平台无关性。基于Redis技术的仿真平台架构示意见图1。

图1 基于Redis技术的仿真平台架构示意

2 仿真平台方案设计

高铁ATO系统是在CTCS-2/CTCS-3级列控系统基础上,车载设置ATO单元实现自动驾驶控制;地面设置专用精确定位应答器,实现精确定位;通过GPRS通信实现站台门控制、站间数据发送和列车运行调整计划处理[8]。

仿真测试平台主要包括真实设备、真实设备仿真支撑、仿真测试管理及显示模块和Redis数据库4部分,整体结构见图2。

图2 高铁ATO仿真平台整体结构

2.1 真实设备部分

真实设备部分主要包括含ATO和ATP功能的真实车载设备,以及含ATO功能的真实TSRS设备,各部分功能如下。

1)真实车载设备ATP:①实现既有C3和C2等级的相关控车功能,并负责列车安全防护;②新增与ATO相关的开门允许命令、判断ATO是否有效以及停准、停稳等功能。

2)真实车载设备ATO:①通过GPRS无线通信接收地面TSRS发送的线路数据、车门状态等,并向TSRS发送ATO运行状态信息;②接收TSRS转发CTC的运行计划;③实现列车自动驾驶、自动开关车门及车门/站台门联动等功能。

3)真实TSRS设备:TSRS设备在既有功能的基础上,增加站台门门控信息管理,站台门命令/状态的转发,运行计划的处理和转发,站间数据的存储、调用、发送等功能。

2.2 真实设备仿真支撑部分

真实设备仿真支撑部分主要由真实车载支撑仿真环境(包括列车接口仿真模块、仿真RBC模块、列车仿真驾驶模块、轨道电路仿真模块及应答器仿真模块)和真实地面TSRS设备支撑仿真环境(包括CTC仿真器和TCC仿真器)组成,每个仿真模块的主要功能如下。

1)列车接口仿真模块:①通过MVB板卡,实现与真实车载设备ATO单元的信息交互,包括向ATO单元发送车辆编组、是否允许ATO控车等信息,并接收ATO单元发送的牵引和制动等级、隧道位置等信息[9];②通过继电器板卡,实现与真实车载设备的开关量交互,包括驾驶台、方向、牵引制动手柄、常用制动、紧急制动、开门/关门、开门允许等命令;③从列车仿真驾驶模块实时接收列车走行距离信息,用于输出相关信息或命令;④将列车接口状态信息发送给列车仿真驾驶模块,供列车仿真驾驶模块控车使用。

2)仿真RBC模块:①从仿真测试管理及显示模块接收测试脚本等信息;②从列车仿真驾驶模块实时接收列车走行距离信息,并判断是否满足触发条件,如果满足,则将相应的消息通过无线发送给车载设备。

3)列车仿真驾驶模块:①在自动驾驶状态下,实时获取列车接口仿真模块采集的ATO单元牵引和制动命令,并结合动力学仿真模型,自动生成相应的速度信息,实时发送给真实车载设备;②在非自动驾驶状态下,根据操作人员的手动操作命令,完成仿真车的驾驶操作;③能够根据测试需要配置不同动车组的模型;④能够执行驾驶台激活、休眠、ATO启用、紧急制动故障设置等其他操作,并通过列车接口仿真模块发送给真实车载设备。

4)轨道电路仿真模块:①从列车仿真驾驶模块实时获取列车位置信息,并在满足发送轨道电路码的条件下,控制轨道电路发码盒发送对应码序信息;②当站台门系统正常关闭且成功锁闭后,控制轨道电路发码盒给出允许码;③在列车自动驾驶过程中,当TCC仿真器在站台门防护过程中检测到站台门系统处于异常状态时,控制对应股道给出“H”码。

5)应答器仿真模块:①从列车仿真驾驶模块实时获取列车位置信息,在满足发送应答器报文的条件下,将报文内容及时发送到车载设备;②为了实现自动驾驶功能,在原有应答器基础上新增了股道精确定位应答器和TSRS切换应答器[10]。

6)CTC仿真器:①通过安全协议与真实TSRS设备进行运行计划相关数据的交互,包括周期性向车载设备发送对应站间的运行计划信息和根据列车运行车次号、运行时分、系统工作模式等信息,实时管理在线列车;②从仿真测试管理及显示模块接收测试脚本等信息,实现计划提前、计划延后及错误计划等操作;③从列车仿真驾驶模块实时获取列车位置信息,并完成计划的发送。

7)TCC仿真器:①通过安全协议与真实TSRS设备进行站台门命令及状态数据的交互;②从仿真测试管理及显示模块接收测试脚本等信息,实现车门/站台门联动成功或失败的操作。

2.3 仿真测试管理及显示部分

仿真测试管理及显示部分主要实现仿真测试期间的测试脚本加载、测试过程控制,以及测试仿真过程的实时显示功能。具体包括:①在测试执行前,加载待执行的测试序列脚本、线路数据环境,并将这些脚本信息发送给相关模块;②在测试执行期间,能够执行序列的终止、查看仿真模块的数据执行状态等辅助操作;③可视化界面实时显示列车当前速度、限速、加速度、运行功率、冲击率、线路坡度、牵引等级、制动等级及脚本执行情况等信息。

2.4 Redis数据库部分

Redis数据库主要实现以下2个功能:①专门用于存储仿真和测试的静态线路数据及测试脚本,仿真测试管理及显示模块在测试开始前,加载该脚本和线路数据,随后向各个仿真软件发送相应的脚本及线路数据;②数据库中存放了列车位置变量、速度变量、开关量变量、序列号变量等用于各个仿真软件间信息交互的变量,这些变量通过灵活的键值将数据存储在数据库中[7],能够支持并发的实时数据读写。

3 仿真平台实现

在Windows软件开发环境下,仿真平台采用面向对象的编程语言C#和C++编程语言作为仿真模块的主要开发语言。其中,仿真测试管理及显示模块、仿真列车接口、仿真RBC模块、列车驾驶模块、轨道电路仿真模块及应答器仿真模块等采用C#编程语言开发;CTC仿真器和TCC仿真器采用C++编程语言开发。总的开发流程如下。

第1阶段:在仿真平台开发初期,首先完成Redis数据库的环境搭建,对Redis配置文件包含的配置项,结合实际需求进行相应部署。配置文件中包含是否允许远程访问、是否开启保护模式、是否设置密码、Redis监听端口号等。

第2阶段:确定仿真平台各模块定位、模块间交互内容及开发语言。

1)基于Redis技术的仿真平台架构,将安装Redis数据库的服务器作为服务端,真实设备支撑环境中的所有仿真模块均设为客户端,仿真测试管理及显示模块设为从服务器。

2)Redis数据库中的交互变量数据需被多个外部模块同时访问,以实现仿真模块间的数据交互。若有新增仿真模块需读取相关变量数据,其他仿真模块的功能及接口无需进行任何变动,提高了系统的可扩展性。

3)在平台开发过程中,分别选用C#和C++开发语言,可实现同一仿真平台下不同开发语言模块的灵活接入。

第3阶段:在Visual Studio 2016开发环境中,安装Redis官方提供的面向具体编程语言的组件,用于Redis数据库中交互变量数据的读取或修改操作。以C#语言为例,需在开发环境的项目中引用Redis官网下载的“StackExchange.Redis”Nuget包组件,并在项目中添加RedisHelper类文件。

第4阶段:基于上述Redis技术构建的环境和变量数据库,开发高铁ATO仿真平台中的各个软件模块,从而完成整个高铁仿真ATO平台的构建工作。高铁ATO仿真平台实现架框见图3。

图3 基于Redis技术的高铁ATO仿真平台实现架构

4 结论

本研究主要完成了基于Redis技术的高铁ATO仿真平台的设计和实现,从仿真平台架构、系统功能需求、平台架构部署等角度,对仿真平台的开发进行了介绍,并使用计算机编程语言和Redis技术实现了平台关键功能模块的开发。

通过对Redis技术在高铁列控自动驾驶系统仿真平台开发中的应用,探讨了Redis技术在降低开发复杂度及提高仿真平台可扩展性等方面的优势,为构建性能更好的仿真平台提供了一种新的技术思路。

猜你喜欢

车载高铁列车
一种车载可折叠宿营住房
城际列车
中秋节:62万人坐着高铁游云南
登上末日列车
关爱向列车下延伸
捷豹I-PACE纯电动汽车高压蓄电池充电系统(三)
高铁会飞吗
穿越时空的列车
奔驰S级48V车载电气系统(下)
SA2型76毫米车载高炮多视图