车站计算机联锁系统建模及实现

铁路计算机联锁系统实时监视进路相关设备从而完成进路控制,是车站列车技术作业自动化的前提。为保证计算机联锁系统安全可靠,北京交通大学交通运输学院、轨道交通控制与安全国家重点实验室、石家庄铁道大学交通运输学院的研究人员史艺菡、徐杰、郑建武,在2019年《电气技术》增刊中撰文,基于面向对象思想进行车站联锁系统建模,进而实现进路控制的实例化。

首先,基于面向对象技术进行车站联锁设备属性和系统作业机理分析;在此基础上分析不同车站技术作业的进路需求,利用标准建模语言描述关键车站联锁设备、设备间联锁关系、车站进路控制业务逻辑以及与进路的匹配关系;最后利用Python语言实现车站进路控制自动化,以满足车站设备状态、业务约束及其效率需求,实现计算机联锁自动化。

计算机联锁系统具有实时性、经济性、功能可扩展性的特点,成为车站进路自动化控制所使用的主要技术手段。该系统通过计算机程序对站场设备的工作状态和操作人员操作指令进行逻辑运算,完成对信号机、道岔和进路的联锁及控制,保障列车在车站按照既定计划安全通过或停靠。

随着站场规模的扩大,车站作业情况更加繁杂,在这种情况下进行模块化站场通信结构、数字化建模对象、简洁化计算机程序等方面的研究,对计算机联锁系统降本增效具有重要的意义。

谢保峰提出计算机联锁系统应具有可编程进路控制功能,以提高列车通过能力、快速运算更大容量信息的能力、信息响应更快速实时的控制能力。王峰采用Java语言编写了联锁控制软件,提出在控制进路时使用进路搜索算法实现进路选择。Fatih Mecitoğlu基于面向对象的编程技术,通过创建软件库来开发具有仿真、控制和监视功能的车站信号控制系统。

采用标准建模语言(unified modeling language, UML)用例图、类图、顺序图、状态图等建模图形来描述系统的动静态元素及模型,以期客观展现系统逻辑控制层的进路控制业务,提高系统设计模型的可读性;尝试使用Python语言来实现计算机联锁系统进路控制的功能,并使用wxPython进行系统界面设计。

根据《铁路车站计算机联锁技术条件》等规范,进行进路控制作业机理与规则分析,利用UML用例图描述铁路车站计算机联锁系统的功能,构建铁路车站联锁系统模型以及联锁设备对象属性数据库,设计信号机、道岔和轨道电路等联锁设备与绝缘节之间的关联关系表,使用UML状态图描述进路建立和进路解锁阶段的动态模型,给出基于绝缘节坐标逻辑的联锁设备位置推断算法。

1 铁路车站面向对象建模

1.1铁路车站联锁系统的结构

监视和控制进路上相关设备按照一定约束和程序动作进而自动完成进路控制业务的设备分为室内设备和室外设备。信号机、道岔、轨道电路为主要室外设备,室内设备主要为人机交互层、联锁控制层以及I/O接口层,如图1所示。进路控制依靠信号机、道岔和轨道电路之间的联锁关系完成。

图1  车站联锁系统结构

人机交互层接收操作人员下达联锁命令,并实时显示站场设备的位置和状态。联锁控制层接收人机交互层的指令和来自I/O接口层所传递的关于室外设备的状态信息,通过联锁机进行逻辑运算和发送控制指令。I/O接口层将电路板采集的继电器电路工作状态发送给联锁机,接收联锁机操作指令来驱动继电器,进而控制电路的工作状态。

1.2 进路控制作业机理与规则

进路控制分为进路建立和进路解锁。进路建立是系统根据操作人员所下达的指令,逻辑推断进路的类型(调车或列车进路)以及列车或车列行进方向(上行或下行、到达或出发),由进路选择得到进路上相关信号机、道岔和轨道电路区段等信息。转辙机将相关道岔转换到进路所约束的状态,确认道岔的位置无误后将其锁闭,使进路始端信号机开放允许灯光,保持指示列车或车列的运转。

可将进路解锁阶段分为多种情形:①列车或车列未进入进路阶段,可以取消进路或人工解锁;②列车或车列进入进路阶段,有正常解锁和故障解锁。其中,正常解锁,即随着列车或车列的向前并出清后方的轨道区段后,后方区段将自动分段解锁至整条进路全部自动解锁完毕。车站联锁的进路控制过程如图2所示。

图2  车站联锁的进路控制过程

1.3 系统功能

铁路车站计算机联锁系统应具有显示并记录站场设备实时状态和逻辑运算并控制站场设备状态的功能。使用UML用例图描述的联锁系统功能如图3所示。

图3  UML系统功能用例图

计算机联锁系统的人机交互界面由元素图标标识的铁路站场设备图、输入/输出文本框及进路控制业务功能等部分组成。选择建立进路时,系统的联锁控制层将接收到该指令,然后进行进路选择等逻辑运算,并给I/O接口层发送相应的操作指令。

若是需要进路解锁,则选择相应功能按钮,联锁控制层将会先根据站场设备状态进行逻辑判断再去指令解锁。而且,在人机交互界面的铁路站场设备图中,可以显示站场设备实时状态,输入/输出文本框可以显示当前操作结果。

1.4 铁路车站面向对象建模

车站联锁系统是依靠正确地执行进路控制来实现的,而进路控制又是依靠信号机、道岔和轨道电路之间的联锁关系来完成的。因此,将面向铁路车站联锁系统的联锁控制层及三大关键联锁设备对象分别命名为interlocking system(联锁系统)、signal(信号机)、point(道岔)、track circuit(轨道电路),并分别命名进路控制中的逻辑元素为joint(绝缘节)、route(进路)、subroute(子进路)。

signal指挥列车或车列在车站进路上运行,被设置在每段轨道区段始端,防护该段子进路。车站内signal分为列车signal和调车signal,具有开放、关闭和灭灯3种状态。在开放状态时,允许列车或车列进入signal内区段;在关闭状态时,禁止列车或车列进入;在故障状态时,signal必须灭灯。

signal处于开放状态时有多种情形,进站signal的开放状态为绿灯(列车通过)、黄灯(正线到达)、双黄灯(侧线到达)。出站兼调车signal的开放状态为绿灯(允许列车出站)和月白灯(允许调车作业)。站内signal关闭为定位状态即默认工作状态,如出站signal定位状态显示红灯,调车signal则显示蓝灯。

point确保列车或车列能够进入不同进路状态,包括正常工作和非正常工作状态。正常状态中经常开通的位置是定位,其他情况则为反位。非正常工作状态是既不在定位也不在反位的四开状态。

track circuit包括不含point的无岔区段track circuit和包含point的道岔区段track circuit,其状态包括调整状态、分路状态和断轨状态。调整状态即为无车占用,而有列车或车列占用时则为分路状态。对象的命名及其对应属性见表1。

表1  对象命名及其对应属性

joint位于track circuit两端,起绝缘作用。一般在出站信号机处设置joint,而joint之间是无岔区段或是含有point的道岔区段。为使联锁设备继承绝缘节的坐标属性,定义Joint作为基类。

基于进路控制作业机理,系统的联锁控制层能够实时获取三大设备对象的工作状态、指令锁闭和解锁,由此设计了设备对象的功能和方法。UML类图如图4所示。

图4  UML类图

其中,currentState(id)表示可获取对象当前工作状态,setState(newstate,list)为进路建立阶段根据指令将对象状态属性锁定到newstate,在进路解锁阶段可使用unsetState(list)将设备对象恢复至默认工作状态。利用设备联锁关系UML序列图描述进路控制过程中有关设备对象的行为,如图5所示。

在interlocking system的联锁控制层中,基于始终端signal与其父类joint之间的继承关系,逻辑判断signal所防护的route类型,即droute(调车进路)还是lroute(列车进路),若是lroute再作进一步类型判断,结果包含ddroute(到达)、cfroute(出发)或tgroute(通过)。

在进路建立阶段,使用currentState()方法对有关设备对象的工作状态进行判断,若该route同时满足point未被锁闭、track circuit空闲和signal conflicted(敌对信号机)当前未开放,则选择该条route。当所排进路被确定时,利用方法setState(),将point转换到规定的位置并锁闭、切换track circuit的工作状态并将敌对进路锁闭,最后开放signal并显示相应的颜色和数目,以实现route setting。

进路解锁阶段,在列车或车列前进方向上,在其出清后方track circuit后,使用方法unsetState()关闭signal、解锁track circuit即route,并将point恢复至定位,以完成route release。

图5  UML进路控制序列图

2 铁路车站数字化

基于面向对象的建模过程,将室外设备对象signal、point、track circuit、joint、route的属性和关系分别进行数字化建库,以此为接下来的车站业务实例化提供数据库,进而实现联锁关系。

2.1 设备对象属性数据表

对象signal、point、track circuit、joint都有对应的ID及name属性。根据signal的显示类别,设计状态字段stateS。设定signal在开放绿灯时stateS为1、开放黄灯时为2、开放双黄灯时为3、显示白灯时为4、灭灯时为5。由于不同性质的signal显示的灯光颜色和数目不同,所以需设计性质字段property。又由于信号灯所防护的进路分方向,所以需设计字段direction。

signal数字化建库见表2。point的位置状态用stateP标识,设定其处于定位状态时,stateP取0;反位状态时,取1;四开状态时,取2。point数字化建库见表3。stateTC代表track circuit的工作状态,设定其调整状态时,取值0;分路状态时,取值1;断轨状态时,取2。track circuit数字化建库见表4。为了在三大联锁设备之间建立位置上的关联,数字化基类即设定PositionJx表示joint的坐标,以作为进路分析过程中逻辑推断的依据。joint数字化建库见表5。

表2  对象属性表signallist

表3  对象属性表pointlist

表4  对象属性表trackcircuitlist

表5  对象属性表jointlist

2.2 设备对象关系数据表

为避免列车或车列在敌对进路中发生正面或尾部撞车,signal、point、track circuit必须按照相关的程序以及制约条件进行联锁。joint的坐标对联锁设备构成了位置上的约束,因此首先分别数字化joint与signal、point、track circuit联锁设备间的关系。

根据signal与joint的对应关系(表6)表jslist,若选排进路上包含某joint,则通过jslist可找到该进路上相关的signal。当point处于定位时,道岔区段始末端对应两个joint,分别是jIDStart和jIDEnd;而point处于反位时,对应另一对jIDStart和jIDEnd,由此建立jplist关系表(表7)。

若作业所选排进路上包含道岔区段的jIDStart、jIDEnd,则通过jplist可推断该道岔区段的point处于定位还是反位。由各个track circuit始末端对应两个joint,建立jtclist关系表(表8),通过jtclist可找到该进路上相关的track circuit。

表6  joint与signal的位置约束关系表

表7  joint与point的位置约束关系表

表8  joint与track circuit的位置约束关系表

route为列车走行的路径,包括lroute(列车进路)和droute(调车进路)。每条route的始端有一架signal防护进路;route由至少一段的track circuit组成,且包括含有point的track circuit。lroute数字化库见表9,记录了车站作业所排每一条列车进路上相关设备的ID及其联锁关系。

表9  对象属性表lrlist

3 铁路车站业务实例化

3.1 铁路车站示例

一个单线双向半自动闭塞的小型铁路车站的信号设备平面布置示意图如图6所示,图中圆圈序号代表signal的ID,三角序号代表track circuit的ID,序号代表point的ID。

图6  铁路车站信号设备平面布置示意图

依据此示例,将铁路车站对计算机联锁系统中联锁控制层的进路业务程序实例化。

3.2 进路业务实例化

构建进路建立和进路解锁业务的动态模型,使用UML状态图描述,依此模型编写Python程序。

1)进路业务的动态建模

进路建立阶段的动态模型如图7所示。首先记录起止端signal的ID即myslist,查询数据库中jslist表所对应joint的ID,根据对应的jID推断route的xors(上下行方向)及其类型0(到达)、1(出发)或2(通过)。

图7  UML进路建立状态图

由于joint对point和track circuit有位置约束,方法panduanjinluxiangguanshebei(slist)获得与该route相关的设备ID,即pID和tcID。方法panduanzhuangtai(id)将route中相关设备ID的列表放在数据库中,以检验设备的实时状态是否满足进路建立的条件。

若满足,则在方法startSet(routename,target1,target2,target3)中实现进路锁闭并完成进路建立。方法panduanjinlumingcheng(jid,sid,pid,tcid,xors)推断routeName,并在表9中将所有routeName行数字化激活。

进路解锁阶段的动态模型如图8所示。记录需要解锁的进路得到routenamelist,先判断该进路是否处于激活状态,连接数据库的表9找到对应的routeName行,获取stateRoute值,若该值为1,则记录相关设备的ID列表,即listSet,分别在表2—表4中对应设备对象ID,利用方法unsetRoute()将设备状态恢复至其定位状态,同时恢复该route至未激活状态,即stateRoute值取0,完成解锁工作。

图8  UML进路解锁状态图

2)基于面向对象的业务实现

基于绝缘节的坐标positionJx,可以查询与route相关的三大联锁设备的ID,即sid、pid、tcid,从而在Signal类、Point类、TrackCircuit类中进行对象状态设置,也可以在表2—表4中进行对象状态获取。因此,关于由绝缘节的坐标逻辑推断三大联锁设备位置的算法是核心内容,程序伪码如图9所示。

图9  判断进路相关设备的算法

变量start-signal和end-signal代表着起始信号机和终止信号机的ID。查询jslist关系表可得到对应位置的jid[0]和jid[-1]。由于track circuit两端对应两个joint,每处joint有一架signal,所以基于joint的坐标查找和记录start-signal与end-signal之间所有与进路相关的joint及其对应的signal、track circuit的ID,得到jid、sid和tcid列表。

4 系统运行测试与结果分析

4.1 系统运行测试

车站计算机联锁系统的人机交互界面如图10所示,共有5项业务功能选项:①排列车进路;②排调车进路;③解锁列车进路;④取消列车进路;⑤车站状态查询。

图10  人机交互界面

以排下行接车至1股道为例,说明联锁控制层执行建立列车进路业务流程:当前处于待排进路状态,收到起始信号机sid为1、终止信号机sid为3的进路请求,连接jslist关系列表查询对应位置的jStartID=2和jEndID=3,对应的position(坐标)分别为100和300,通过逻辑判断出列车运行方向为下行,进路上相关的设备ID是,tcID为1和5、pID为1以及signalID为1,所以根据联锁程序。

先在表3中将ID为1的stateP转换至1(反位)并锁定,再在表4中将ID为1和5的stateTC更新至1(分路状态)并锁闭,最后在表2中将ID为1的stateS开放且显示3(双黄灯);同时根据表2判断终端信号机X1的类型是出站信号机,推出进路名称为1xdd(下行1股道到达),再在表9中数字化激活该stateRoute以作标识。进路建立如图11所示。

图11  系统建立1xdd列车进路的测试结果

以解锁1股道下行接车进路为例,说明联锁控制层解锁列车进路业务流程:系统当前处于待解锁进路状态,收到交互层解锁指令,连接表9,由routeName判断该进路处于激活状态,然后根据查询到的相关设备ID:tcID为1和5、pID为1以及signalID为1,同样根据联锁程序,先在表2中将ID为1的stateS关闭且显示0(红灯),再在表4中将ID为1、5的stateTC更新至0(调整状态),最后在表3中将ID为1的stateP转换至0(定位);同时在表9中恢复该route至未激活,完成解锁动作。进路解锁如图12所示。

图12  系统解锁1xdd列车进路的测试结果

4.2 结果分析

判断铁路车站计算机联锁系统是否安全可靠,就要确保其他列车或车列不会从正面、尾部或侧面闯入该进路而发生撞车事故。因此,需要根据该铁路车站模型绘制联锁表,并在系统中进行逐一测验。表10所示是本文铁路车站模型的列车进路联锁表。

表10  列车进路联锁表

为了叙述方便,假设车站下行方向是指北京方向至天津方向。

当两条进路存在共用道岔或是共用股道时,会存在敌对或是抵触关系,在同一咽喉区中,对向重叠的列车进路、顺向或是对向重叠的列车和调车进路、对向重叠的调车进路之间存在敌对关系;迎面咽喉区中,同一到发线上对向的列车与列车进路、同一到发线上对向的列车与调车进路、信号机设在侵限绝缘处时禁止同时开放的进路构成敌对进路。

以“当同一到发线上对向的列车进路与调车进路构成敌对关系”为例。键入编号1、3排下行接车至1股道的列车进路,再键入编号2、8排停车至1股道的调车进路,得到系统提示:“No.1股道正被占用,请稍后再排!”如图13所示,说明该系统能够准确可靠地判断敌对进路。

图13  当列车进路与调车进路构成敌对时的系统测试结果

5 结论

基于UML描述铁路车站面向对象数字化建模过程;定义绝缘节作为基类,使三大联锁设备对象能够继承其坐标属性;利用Python程序实例化联锁控制层中进路控制业务模型;使用数据库模拟I/O接口层信息的输入输出;基于wxPython设计人机交互层可视化界面。

其中,在进路建立阶段,系统能够根据操作人员的指令,准确快速地查询对应绝缘节的坐标,进一步逻辑推断出进路的类型、进路的方向及进路的相关设备等信息;在进路解锁阶段,同样基于父类绝缘节的坐标属性,最终成功实现解锁业务。

在系统测验时,是通过联锁表仿真部分重要的进路作业进行结果测评的,缺少说服力。因此,在今后的学习研究中,将继续改进该系统,使其能够被放入模型检验工具当中,以证明它所建立的每条进路都是安全可靠的。

(0)

相关推荐