張 杰,郭 進
(西南交通大學 信息科學與技術學院,成都 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.