站场形数据结构在车站信号实训系统中的实现
2016-02-15李诗雄倪少权
李诗雄 倪少权
(1.西南交通大学 信息科学与技术学院,成都 611756;2.西南交通大学 交通运输与物流学院,成都 610031;3.西南交通大学 全国铁路列车运行图编制研发培训中心,成都 610031)
站场形数据结构在车站信号实训系统中的实现
李诗雄1,3倪少权2,3
(1.西南交通大学 信息科学与技术学院,成都 611756;2.西南交通大学 交通运输与物流学院,成都 610031;3.西南交通大学 全国铁路列车运行图编制研发培训中心,成都 610031)
计算机联锁系统是负责处理进路内的道岔、信号机、轨道电路之间安全联锁关系的系统。本文通过对比计算机联锁中总进路表和站场形数据结构两种实现方法各自的特点,选择了站场形数据结构进行数据的存储和进路的搜索,并在高铁车站信号实训系统实现,验证了该方法的可行性和合理性。
站场形数据结构;计算机联锁系统;节点;搜索
在高速铁路(简称:高铁)车站,计算机联锁系统处于自律模式,平时车站值班员不能随意进行操作。当有特殊情况,需要车站值班员来手动操作时,由于平时练习较少,值班员不能熟练进行操作。为此,高铁车站信号实训系统应运而生。
高铁车站信号实训系统,主要功能包括高铁车站计算机信号联锁系统模拟演练和值班员培训考核管理。该系统的一个重要的功能就是车站信号联锁系统的模拟演练。要实现这个功能,较常见的方法有两种:(1)总进路表,(2)站场形数据结构。
1 总进路表
1.1 概述
如果要建立任何的一条进路,都必须要指出这条进路的特点以及相关监控对象的数量和特征。这具体包括:进路的性质、进路的方向、进路的范围、防护进路的信号机、进路中的轨道电路区段和数量、进路中的道岔和应该处在的位置及数量、与进路有关系的侵限绝缘轨道区段和其检查条件、进路的接近区段、进路的离去区段、进路的末端是否存在需要结合的设备等。
如果把上述各项都放进一个数据表就形成了一个进路表,把某个车站的所有进路(包括迂回进路)的进路表集合到一起就形成了这个车站的总进路表。
在计算机程序中可以定义一个类来表示进路表,不同的进路表作为类的对象储存在数据库中。当办理某条进路的时候,可以根据进路的操作命令,从静态的数据库中选出相符合的进路表,进而可以找到所需要的静态数据。在编写相关程序时,进路表类Route的定义程序部分如下:
1.2 总进路表的不足
此种方法虽然比较形象,能直观地看出每一条进路的情况。但是,如果某个高铁车站的规模比较大,而且进路数量众多的时候,其总进路表必定会十分的庞大,从而在运行的时候所占用的内存容量很大。虽然在现在的计算机中,储存器的容量已经不再成为限制因数。但是,占用内存的容量越大,也就意味着增加了内存检测程序的长度和其执行的时间,这样对于系统的可靠性十分的不利。此外,如果该车站需要进行扩建或者改建的时候,就必需对总进路表进行很大的修改。而且使用人工来编制总进路表,尤其是在编制很多大型的总进路表的时候,不仅十分复杂,而且极易出错,故总进路表法有较大不足。
2 站场形数据结构
2.1 概述
若用计算机来自动生成总进路表,并将其放进联锁软件中,当办理进路的时候,通过使用者的操作命令来调用进路表生成程序,自动生成一个与进路操作命令相符合的进路表,以供联锁软件来使用,将更加方便快捷。
要实现上述功能,要将对应站场信号平面布置图中的每一个监控的对象(比如信号机、道岔、特设的变通按钮、进路始终端按钮、侵限绝缘区段、轨道电路区段等)设置一个静态的数据模块,然后在每一个模块中罗列出此监控对象自身的属性和一些进路搜索程序所需要的标志。因该种数据结构在图形上呈现出一种车站站场的形式,故被叫做站场形数据结构。
2.2 模块的链接
当建立好站场形数据结构后,还需要把各个数据模块链接起来,这样才能进行搜索进路。所以,需要对每一个模块进行扩展,并划分为两个部分,数据部分df和指针部分pf。使用数据部分df来存储原来的数据,用指针部分pf来存储相邻模块的首地址。
如图1,有3个模块节点,a、b、c,暂时不管它们在存储器里面的物理位置是否有序排列,我们希望能在搜索到a后就能搜索到b,搜索到b后就能搜索到c。那么,只需要把b的首地址放到a的指针部分pf中,将c的首地址放到b的指针部分pf中,c没有后继的模块,c的指针部分pf存放空地址null,这样构成了一个链表。从而,在搜索到a后就能够搜索到b,继而在搜索到b后就能够搜索到c。
图1 单向节点搜索
但是,一般的模块节点有左节点和右节点两个不同的链接节点,所以一个节点则需要有两个指针部分pf来存储两个相邻节点的首地址,这样就可以进行双向搜索。如图2所示,既可以从模块a搜索到模块c,亦可以从模块c搜索到模块a。
图2 双向节点搜索
就道岔节点来看,一般有3个链接节点:(1)岔前节点;(2)岔后直股节点;(3)岔后弯股节点。所以,可以在道岔节点中设置3个指针部分:指针部分pf用来存储岔前节点的首地址,指针部分pfz用来存储岔后直股节点的首地址,指针部分pfw用来存储岔后直股节点的首地址。
2.3 站场形数据结构举例
图3是京沪高速铁路中沧州西站在高铁车站信号实训系统中显示的站场信号平面布置图,图4是其部分站场形数据结构。
2.4 站场形数据结构的优点
(1)这种站场形数据结构所占用的内存空间比总进路表数据库要小得多,方便检测;
(2)这种站场形数据结构是通过各个节点的链接而形成的链表,在这种结构中的任何部位删除或者添加节点只需要修改所涉及节点的指针部分中的首地址即可,较为方便,而且不影响其他节点在存储器里面的物理位置。这种特性十分适合站场的扩建或者改建;
(3)站场形数据结构本质上是链表,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理,可以用计算机辅助设计方法进行实现。
图3 沧州西站信号平面布置图
图4 沧州西站部分站场形数据结构
3 站场形数据结构在系统中的实现
3.1 系统概述
高铁车站信号实训系统是根据DS6-K5B计算机联锁系统相关标准,采用面向对象的编程语言C++进行开发,可供高铁车站值班人员进行训练,管理部门对相关人员进行考核、管理。经测试,该系统能够在Windows XP(32 bit、64 bit)、Windows 7(32 bit、64 bit)操作系统上运行。
该系统一个重要的功能就是车站信号联锁系统的模拟演练,具体包括了:进路的排列、进路的取消、人工解锁进路、重开信号、道岔操作、区段事故解锁、钮封操作、引导按钮的延时抬起操作、其他按钮的操作、点灯和灭灯操作等。
3.2 算法建立
为了实现算法流程图的建立,先介绍一些即将使用到的符号和名词术语。
(1)开始节点K0:这是按照发车方向进行搜索时所指定的起始节点。如果从发车进路的角度来看,它是始端节点;如果从接车进路来看,它是终端节点。
(2)中间节点Ki:这是和变通按钮互相对应的指定节点。
(3)目标节点Kg:这是按照发车方向进行搜索的时候要找到的所指定的最终的节点。如果从发车进路的角度来看,它是始端节点;如果从接车进路来看,它是终端节点。
(4)后继节点Kc:在站场形数据结构中,有方向的直线箭头所指向的节点,或是说该节点指针部分pf中所指向的节点就是此节点的后继节点。
(5)后继直节点Kc(z):在站场形数据结构中,有方向的直线箭头所指向的直股股道节点,或是说这个节点的指针部分pfz中所指向的节点就是此节点的后继直节点。
(6)后继弯节点Kc(w):在站场形数据结构中,有方向的直线箭头所指向的弯股股道节点,或是说这个节点的指针部分pfw中所指向的节点就是此节点的后继弯节点。
(7)当前节点Kn:在搜索的过程中刚被寻找到的节点。
(8)死节点Kd:没有后继节点Kc的节点。
(9)堆栈S:用于存储开始节点K0、中间节点Ki以及目标节点Kg。
(10)堆栈S1:用于存储在搜索的过程中需要进行考察的节点。
(11)堆栈S2:用于存储在搜索的过程中需要进行保存的路径上的节点。
(12)渡线类型暂存单元L:用于存储道岔形状的正斜线“/”型或者反斜线“”型。
根据上面名词术语和符号的介绍,建立搜索算法流程,如图5所示。
图5 搜索算法流程图
图5就是高铁车站信号实训系统的搜索算法流程图,可能在很多其他计算机联锁系统中有其他的算法流程,所以流程图不是唯一的。而且可能在一些比较特殊的站场形数据结构中,这种算法需要进行补充和完善。
3.3 系统的相关显示
为了验证站场形数据结构在系统中是否成功实现,根据DS6-K5B计算机联锁系统的相关标准,先介绍一些系统应该显示的内容。
在排列进路的时候,点击列车按钮是绿色文字闪烁并且在信号机名称的后面加上LA或者A字符,点击调车按钮是白色文字闪烁并且在信号机名称的后面加上DA或者A字符。进路在锁闭以后,按钮名称恢复为原来状态。
轨道区段在空闲状态时显示为蓝色光带,在区段锁闭时显示为白色光带,在区段占用时显示为红色光带。
道岔处于定位的时候,道岔名显示为绿色;道岔处于反位的时候,道岔名显示为黄色。
3.4 在系统中的实现
根据上面相关介绍,以沧州西站为例,假设要办理从进站信号机SN到站内IIG的接车进路,按压始端按钮(SN)和终端按钮(XII)后,始端按钮显示为SNLA绿色文字闪烁,终端按钮显示为XIILA绿色文字闪烁。2号道岔和4号道岔此时处于定位状态,其名称显示为绿色。系统显示结果与相关标准相符合,如图6所示。
图6 办理进路
根据进路操作命令,确定进路始端节点K(SN)和进路终端节点K(IIG)。从节点K(SN)出发,根据其指针部分pf中的地址可以找到节点K(2DG),从而找到节点K(2)。节点K(2)是一个标准的对向道岔节点,有2个后继节点K(8DG)和K(CX)。根据图5所示的算法,当搜索过程遇到这种对向道岔节点时,优先搜索后继直节点Kc (z),如果找不到所需要的目标节点时,再返回到对向道岔节点,继续搜索后继弯节点Kc (w)。所以,下一步搜索K(8DG),然后一直搜索下去终究搜索不到目标节点K(IIG)。于是返回K(2)继续沿弯股搜索,可以依次搜索到K(CX)、K(4)、K(4DG)、K(6DG)、K(6)、K(XII)、K(IIG)。因为K(IIG)是所需要的目标节点,故搜索过程到此结束。
高铁车站信号实训系统从这些节点中提取出所需要的数据,生成一个进路表,进路就排列出来了。此时相关进路为锁闭状态,显示为白色光带。按钮名称恢复为原来状态。2号道岔和4号道岔此时处于反位状态,其名称显示为黄色。系统显示结果与相关标准相符合。
4 结束语
本文通过对比总进路表和站场形数据结构各自的特点,因站场形数据结构诸多优点,最后选择了站场形数据结构进行数据的存储和进路的搜索,并在高铁车站信号实训系统中进行了实现,说明了站场形数据结构的可行性。这类算法在系统中的实现,能让车站值班员随时练习联锁系统的操作,从而使自身业务更加熟悉,间接加强了铁路列车的行车安全,提高了列车的运行效率。
[1]赵志熙.计算机联锁系统技术[M].北京:中国铁道出版社,1999.
[2]王瑞峰.铁路信号运营基础[M].北京:中国铁道出版社,2008.
[3]张基温.新概念C++程序设计大学教程[M].北京:清华大学出版社,2013.
[4]胡 媛,魏宗寿.采用DFS策略的进路搜索算法研究[J].铁路计算机应用,2007,17(9):4-6.
[5]陈志颖,董 昱,杨 柳,等.计算机联锁进路搜索算法的分析与研究[J].铁道通信信号,2007,43(4):4-6.
责任编辑 王 浩
Station type data structure in Station Signaling Training System
LI Shixiong1,3,NI Shaoquan2,3
( 1.School of Information Science and Technology,Southwest Jiaotong University,Chengdu 611756,China;2.School of Transportation and Logistics,Southwest Jiaotong University,Chengdu 610031,China;3.Research and Training Center of National Railway Train Diagram,Southwest Jiaotong University,Chengdu 610031,China)
The Computer Interlocking System was responsible for the safety interlocking relationship between the turnouts,signal machine and the track circuit.In this paper,by comparing the differences between the total route table and the station type data structure,the author selected the station type data structure to store data and search the route.Then,the feasibility and rationality of this method were verifed by the actualization in the Station Signaling Training System of high-speed railway.
station type data structure;Computer Interlocking System;node;search
U284.1:TP391.6
A
1005-8451(2016)04-0058-05
2015-09-26
李诗雄,在读硕士研究生; 倪少权,教授。