基于CBTC的仿真列车的设计实现
2021-03-13杜岳升
摘 要:在轨道交通CBTC信号系统中,列车是重要的组成部分。文章介绍了仿真列车程序,根据线路数据,它能完成RM、ATP、ATO、FAM等各种模式的跑车。程序按照真实协议和其他信号子系统通信,这样就可以实现和真实列车一样的、无缝透明的嵌入到整个信号系统中运行。本程序现由VC++实现,它运行在Windows下,已广泛应用于实际项目中,省去真实的车载CC机架布置,节省成本和空间占用。
关键词:轨道交通;信号系统;CBTC;线路数据;CC
中图分类号:TP39;U231.7 文献标识码:A文章编号:2096-4706(2021)15-0153-04
Abstract: In the CBTC signal system of rail transit, train is an important part. This paper introduces the train simulation program. According to the line data, the sports cars of RM, ATP, ATO, FAM and other modes are realized. The program communicates with other signal subsystems according to the real protocol, so that it can be seamlessly and transparently embedded into the whole signal system as a real train. This program is now implemented by VC + +. It runs under windows and has been widely used in practical projects. It saves the real vehicle CC rack layout and saves cost and space occupation.
Keywords: rail transit; signal system; CBTC; line data; CC
0 引 言
轨道交通信号系统是对轨道交通信号设备进行实时控制和行车作业指挥的安全系统。CBTC(Communication Based Train Control System)是基于通信的列车自动控制系统。线路数据中配置了信号系统所需要的站内及区间的各种设备设施。线路数据内容非常全面,是轨道交通信号系统的能够运行的基础。
仿真列车的程序名是CCSim,它最主要的是完成了对车载CC系统的仿真。
仿真列车读取线路数据中内容,实现和信号系统中其他系统的真实通信接口,这些系统包括ATS、ZC、LC、CI,同时实现和仿真轨旁和驾驶台等仿真平台程序的接口。
仿真列车以线路数据为输入,辅以简单的配置文件,实现车载CC各种行车模式,包括RM、ATP、ATO、FAM等。
1 线路数据处理
线路数据保存在SGD.xml中,里面包括轨道区段、道岔、信号机、信标、站台、SSP、PSR、ESP、SPKS等,并描述了它们之间的联锁关系和拓扑信息。
1.1 线路数据的组织
本软件把线路数据读取进来,里面的站场图信息按照树形类层次结构进行组织,如图1所示。
Node是节点类,所有的站场图设备都抽象成是一个節点。Point是道岔,有定位、反位、失表这几种主要状态,决定了铁路线路的行进方向。Signal是信号机,在地铁里主要有红灯、绿灯、黄灯、蓝灯、白灯这几种颜色的状态显示。红绿黄用于列车信号机,分别表示禁止通行、正常通行、减速通行。蓝白用于调车信号机,分别表示禁止通行和允许通行。SSP(Service Stopping Point)表示停车点,用来控制车辆在站台的正确停靠。Beacon是信标,分为无源信标和有源信标。无源信标会给经过的列车发送位置报文,列车通过信标天线接收到报文后就可以实现车辆的定位。有源信标主要用于后备模式,实现进路、道岔、信号机等轨旁设备状态向车辆的传递。PSR(Permanent Speed Restriction)表示永久限速区。它包括弯道、坡道、岔区等各种需要限速的区域。Block是轨道区段。轨道分成若干区段,Block是最小的轨道划分单位。车辆所处的位置就用(Block, Abscissa)来表示,Abscissa为在该Block中的相对坐标,即距离该Block边界的距离。
1.2 站场图遍历
为了算法的方便,提供一个专门的模块,里面提供两个站场图遍历的接口,一个按照搜索距离向前遍历,一个按照搜索目标点向前遍历。
第一个接口的做法是,以起始位置为输入,设定中止障碍,设定搜索距离,遇到中止障碍时停止搜索,输出停止时的位置。中止障碍有信号机、SSP、PSR、Train等。当中止障碍是Train时,意味着遇到车辆就会停止搜索,这主要是为了防止车辆追尾穿越用的。
第二个接口和第一个接口实现类似,唯一区别是,如果往前搜索遍历时,若没遇到中止障碍,则遇到目标点才会退出遍历。
2 各种模式跑车
2.1 运营模式
按照运营模式分类,支持BM(后备模式)、CBTC两种模式。BM和CBTC由用户在驾驶台上按按钮或者通过旁路开关来切换。CBTC模式就是移动闭塞方式跑车,ZC会根据前车车尾和当前站场情况计算出EOA(移动授权点)发给仿真列车,仿真列车以EOA为限制点,计算速度曲线来行车。BM模式就是后备模式,以传统的闭塞分区方式跑车。
2.2 驾驶模式
按照驾驶模式分类,支持RM、ATP、ATO、FAM等模式。RM包括RMF向前限速模式,和RMR向后限速模式,般限速25 km/h。ATP模式时EOA是有效的,但由司机手动贴码跑车,如果超速车辆将会自动EB(紧急制动)。ATO模式时是自动跑车,驾驶台钥匙打开,会响应驾驶台操作。该模式下行车时司机参与很少,主要就是到站开关门和发车。FAM模式是全自动跑车,此时驾驶台钥匙关闭,盖板合上,车内也没有司机,属于自动化程度最高的无人驾驶模式。
初始化时为无模式,车辆将根据当前运行条件,依据真实的信号逻辑,在上述各个模式间切换。
2.3 支持ATS各种计划
完全按照ATS计划自动跑车、自动折返。响应ATS的控车命令,包括休眠、唤醒、设置工况、扣车、跳停等。车辆的当前状态会发送给ATS,由ATS显示。
仿真列车到站后,ATS会更新下一步ATM(行车计划)给列车,仿真列车将根据ATM在DMI上提示发车或直接发车(无人驾驶时)。
无人驾驶时,仿真列车能根据ATS下发的休眠、唤醒命令来实现车辆的休眠和唤醒。
ATS可以在车站站台上设置扣车和跳停,仿真列车在路过扣车的站台时会在正确停靠后一直停在站台;在路过跳停的站台时,车辆直接通过,不再停靠。
2.4 生成速度曲线
仿真列车的主周期是100 ms,在每个周期都会计算生成一次速度曲线。一条典型的速度曲线是这样的,以车辆当前位置为起点,以离车头最近的限制点为终点,画一条速度变化曲线,车辆在终点处速度为0。
限制点表示车辆不能越过的点,是一个抽象概念,它包含了很多类型,比较典型的有EOA、前车车尾、红灯信号机、失表的道岔、轨道尽头等。另外,为了算法实现的方便,把打开的车门/站台门、ATS的扣车命令,也作为限制点。因为当车门/站台门打开或者ATS下发扣车命令时,车辆都应该马上停止,所以这两种限制点距离车头的距离都是0。
速度曲线的生成需要考虑PSR,每个PSR都有个限速值,车辆经过该PSR时不允許超过这个限速值。
速度曲线的生成还要考虑ATS下发的ATM,ATM中有车辆到达下一站的时间要求,速度曲线将尽量满足车辆可以准点到达下一站。
速度曲线一般分为三段,分别是加速段、匀速段、减速段。仿真列车在实现时,每一段的加速度值都是固定不变的,所以每一段都是一条直线。这个设定大大简化了程序的逻辑,减轻了运算负担,即使一个程序中模拟很多辆列车也没有性能问题。这三段分别占用多长时间将通过运动学公式推导出来。
3 对外接口
仿真列车对外接口众多,可以分为两大类。一类是和其他真实系统的接口,这部分和真实CC一样,采用直连方式。还有一类是和仿真平台中其他程序的接口,这部分都要通过FEP程序中转。通过FEP中转的好处是,仿真列车和其他的仿真程序只需要把数据发给FEP即可,不用关心具体的真实目的地,简化了网络连接架构。如图2所示。
3.1 真实系统的接口
对真实系统通信,包括和ZC、LC、ATS、CI的通信,采用既有的真实协议,在各个真实系统软件看来,仿真列车是透明的,和真实CC并没有区别。这样就使得真实系统软件无须修改代码来适配仿真列车,方便仿真列车和真实CC之间的互相无缝替换。
3.2 仿真平台的接口
对仿真平台软件采用自定义的简单通信协议,包括仿真驾驶台、仿真轨旁、3D演示大屏等。这些通信都要通过FEP中转,协议采用统一的包头,如表1所列。
FEP程序收到数据包后,根据上面表格中的目的类型来转发,相同目的类型的程序都会收到数据包。这么做的好处是支持了群发,因为像仿真驾驶台、LineHMI这些仿真程序往往需要运行多个,在这种转发逻辑下,他们之间的状态将自动获得同步。
仿真驾驶台把驾驶台上的手柄或按钮状态发给仿真列车,仿真列车把灯的状态发回驾驶台。仿真轨旁把道岔、信号机等状态发给仿真列车,仿真列车把车辆位置、速度等信息发给仿真轨旁。
4 大容量跑车
仿真列车支持多车同时仿真,模拟的每辆列车都带有独立的跑车逻辑和独立的对外信号通信接口。在每辆列车启动运行过程中,仿真列车软件模拟真实车载CC系统的工作状态和对外接口,实时对外发送和接收其他信号子系统的车地通信类消息。
一个程序里面可以同时模拟255辆车,为了让这么多车互相完全独立,互不干扰,另外还要保证性能,程序采用了任务投递的方式来实现。每辆车有自己的运行任务Task,这些Task投递到同一个线程中执行,这就避免了给每辆车分配一个线程和复杂的同步问题。为了说明,假设有Train 1和Train 2两辆车,它们有各自独立运行的周期性任务,如图3所示。
5 软件启动处理流程
软件启动处理流程如以下所示。
(1)CCSim程序启动,读取线路数据SGD.xml,读取CCSim.xml。
(2)从线路数据中解析出站场图各个设备,在CCSim.xml里面参数的辅助下,初始化数据结构。
(3)启动网络模块,接收其他连接程序发过来的信息,作为车辆状态的外部输入。
(4)跑车模块启动,每100 ms计算一次速度曲线,同时更新车辆位置及状态。
(5)把车辆位置和状态发送给和它连接的其他相关程序。
为了方便问题排查,提高易用性,在程序主界面可以通过ID方便的查看Train、Block、Beacon、Point、Signal、SSA的当前状态,同时,程序运行过程中的重要信息和出错信息在主界面实时提示输出,主要是程序Debug信息,方便用户判断具体是哪里报错。如图4所示。
6 结 论
仿真列车程序目前得到了广泛的应用,效果良好。不管在测试平台还是在培训平台中,仿真列车省去了真实的车载CC机架,大大节省了成本,提高了平台环境搭建的效率。
仿真列车用于测试平台时,因为一个程序就可以模拟很多辆车的运行,有助于模拟出在真实轨道线路上难以实现的大容量多车运行,完善各种多车追踪的测试场景,对于整个轨道交通信号系统的压力测试有着不可或缺的重要作用。
仿真列车用于培训平台时,它实现了车载CC的多种模式跑车,同时它能够响应ATS各种命令,基本上实现了真实车载CC的核心功能,所以可以用它代替真实列车来培训司机和调度员。
本软件目前的不足之处主要在于:生成速度曲线的算法过于简单,采用了固定的加速度值用来加速和减速,和真实的系统差距较大。这部分算法以后可以考虑对外开放接口,以便嫁接不同的生成曲线算法,这样就可以实现和大学、科研机构合作,以便验证各种跑车模型。
参考文献:
[1] 冯浩楠,范楷,段宏伟,等.城市轨道交通信号系统互联互通协议框架研究 [J].城市轨道交通研究,2018,21(11):63-68.
[2] 冯浩楠,王俊高,滕达,等.相似理论在基于通信的列车控制系统仿真系统中的应用[J].科学技术与工程,2018,18(1):109-114.
[3] 刘梓炜.基于B/S架构的ATS仿真系统的设计与实现 [D].北京:北京交通大学,2018.
[4] 刘慧勇.轨道交通驾驶仿真系统设计与应用 [D].北京:北京交通大学,2018.
[5] 罗远辉.城市轨道交通DCS网络信息安全的研究及网络监控系统的实现 [D].北京:北京交通大学,2017.
[6] 郁舒雅.城市轨道交通列控系统信息安全检测技术研究 [D].北京:北京交通大学,2017.
作者简介:杜岳升(1978—),男,汉族,浙江金华人,资深软件工程师,毕业于南开大学,控制理论与控制工程硕士,研究方向:铁路信号系统仿真测试平台。
3503500338200