张 杰,郭 进
(西南交通大学 信息科学与技术学院,成都 610031)
计算机联锁系统是铁路信号系统的一个重要组成部分,无论在新建客运专线还是既有线,联锁系统都起着保障行车安全、提高运输效率的重要作用。因此,研究联锁仿真软件有着重要意义。一方面,作为一个子模块,联锁和其它仿真模块构成列控仿真系统,它可以为新建线路的评估提供依据;另一方面,微机联锁正在大量地应用到铁路现场,现场信号工可以利用仿真系统进行故障处理的模拟演练,从而提高业务知识和故障处理能力。
联锁仿真系统要在一台PC机上完成操作显示及联锁运算的功能,实际上模拟了实际系统中上位机和下位机两部分的功能。如图1。绘制站场图形前,要对信号机、道岔、轨道电路及其它对象进行初始化,内容包括对象的名称、类型、屏幕上的显示坐标等各种属性。仿真系统处理模块包括操作命令处理和对已建进路处理两部分,其中操作命令处理模块主要完成操作命令的记录,并进行判断,若是解锁命令,就执行相应的解锁处理(包括取消解锁、人工解锁、故障解锁、及引导解锁);若是进路操作命令,要处理进路的搜索运算。对已建进路处理模块如图2,对每一条已建进路进行4个阶段的处理。
要进行控制台的显示及联锁运算首先要进行对象的初始化。目的就是对道岔、信号机和轨道区段的显示坐标等各种属性赋值。
本仿真程序根据两种不同的数据结构分别采用不同的初始化方法。
对于站场形数据结构,因为不需要从进路数据表读取进路信息,对象的属性可以在程序中直接赋值,以C++语言为例,可以通过对象的构造函数进行初始化。另外,站场形数据结构一个重要的初始化问题就是对象指针域的链接,以产生站场网络形的数据结构。
图1 仿真系统流程
对于进路表式的数据结构,首先建立信号机、道岔、轨道区段的excel属性表,把表中的信息读入内存,并动态生成对象。对进路数据表(设计院提供的excel格式),要把进路编号、始终端信号机、道岔和轨道区段相关的信息抽取出来,并在内存建立相应的数据结构。
图2 已建进路处理模块
控制台上站场的绘制,关键在于轨道区段的绘制。本仿真软件借鉴了6502电气集中光带显示电路的原理,把道岔区段按道岔的岔前、岔后直股、岔后弯股进行分段,相当于原来6502电路中道岔区段的岔前、岔后的点灯电路。这样可以把道岔区段的绘制转化为道岔的绘制。因此,对于双动道岔,把它们分开作为两个对象进行绘制,当然,在道岔属性里面,要对双动道岔进行关联,以供联锁运算使用。
如前所述,联锁软件目前有两种流行的数据结构。对不同的数据结构,选路阶段的进路搜索算法是不同的,以下分别进行叙述。
2.3.1 基于站场形数据结构
采用图论中路径的搜索算法,上、下咽喉按统一的发车方向搜索。其算法流程如图3,图中S1、S2为两个堆栈,S1存放考察过的结点,S2存放临时结点,S1(0)、S2(0)表示栈顶元素。G是目标结点,存放进路的终端;D是个枚举变量,存放对向道岔的类型(撇形还是捺形)。设置D的目的是为了防止在选直向的基本进路时,错误选出“八”字变通进路。其方法是将前一次存的D中的渡线类型和本次要考察的渡线类型相比较,如相同,则允许沿本次渡线进行搜索,否则不允许沿它进行搜索。
需要强调的是,算法中对交叉渡线要进行特殊处理,因为数据模块的联结图中对交叉渡线已进行了的交叉换位处理(类似6502组合联结图中对交叉渡线的处理),进路搜索过程中可能出现死循环,使堆栈S1溢出的情况。处理的方法是在考察对向道岔时,不仅要检查S2是S1的后辈,而且S2要和S1堆栈中的内容不重复,若重复,就要丢弃S2要弹出的值,使栈顶指针减一。
2.3.2 基于总进路表式的数据结构
如前2.1节所述,基于总进路表联锁仿真程序在初始化时,已将进路数据表的信息进行了抽取,并在内存中建立了相应的数据结构,以VC++中的动态数组为例,其属性可以包括:
(1)进路编号;(2)进路类型;(3)进路始端;(4)进路终端;(5) 进路上的道岔;(6)进路上的区段;(7)所需的道岔位置。
其中,(5)是从进路表中抽取的道岔信息,(6)、(7)可以设置成数组形式,(6)包括了这条进路上所有的区段,(7)是从(5)中提取的,这个提取过程结束后,(7)的数组里就包含了这条进路上要求的所有道岔位置,该过程相当于2.3.1所述算法中进路搜索成功后S1堆栈中就存有各组道岔的位置,(6)区段数组中的各个区段,相当于S1中所选出的各个区段对象。从以上分析可以看出,基于进路数据表的选路算法比基于站场形数据结构的搜索算法简单一些,但其结果相同,即选出进路上从始端到终端的所有道岔对象及其要求的位置,所有轨道区段及信号点。然后,把它们作为一条进路信息加入暂态进路数据表,以供后面的进路处理模块使用。
图3 站场形数据结构进路搜索算法流程图
对新建客运专线的列控系统,可以用仿真技术进行试验,从而分析其运能,对系统设计的合理性进行检验和评估。
CTCS2级及CTCS3级的列控仿真系统由不同的子系统构成,而联锁仿真子系统是其重要组成部分。
在CTCS2仿真系统中,联锁仿真子系统除了完成基本的联锁运算及显示功能以外,还要为列控中心子系统传送进路信息,如轨道区段的占用、锁闭和解锁,信号机的开放与否等。列控中心根据列车占用轨道区段及车站进路状态,控制轨道电路的载频、低频信息编码。并且,列控中心应根据联锁系统建立的接、发车或通过进路,向车站进站信号机(含反向)处和到发线两端有源应答器发送相应报文。另外,在CTCS2仿真系统中,联锁子系统要接收CTC仿真模块的进路命令,并向CTC返回车站的道岔、信号机及区段的状态。
在CTCS3仿真系统中,联锁子系统除了与CTC模块进行通信外,它的重要功能是通过信号授权对象向无线闭塞中心(RBC)仿真模块发送进路状态相关信息,RBC根据轨道电路、联锁进路等信息生成行车许可。
联锁仿真软件的另一个重要应用,就是把它做成模拟故障处理软件,应用在现场信号工的培训中,从而允许培训者不受时间和空间的限制,在计算机上就可以进行虚拟训练。
笔者曾开发过6502模拟故障处理软件,它在现场培训中取得了很大的成功。采用同样的思路,可以把微机联锁仿真软件做成模拟故障处理系统。它可以完全仿真在现场处理故障的全过程,允许信号工在电脑上进行交互操作,解决模拟考试的问题。
模拟软件采用游戏方式的动感设计,以逼真的画面和声音再现了实际设备的情景。
本文介绍基于两种不同数据结构的微机联锁仿真软件的开发与应用,实际运行结果表明,仿真软件的关键算法是正确的,并在列控仿真系统和现场培训系统中得到了应用,在理论研究和实际应用中有着重要的意义。
[1]赵志熙. 车站信号控制系统[M]. 北京:中国铁道出版社,2005.
[2]高守传.Visual C++6.0开发指南[M]. 北京:人民邮电出版社,2003.
[3]林引清. 车站信号[M]. 北京:中国铁道出版社,1990.