摘 要: 由于在教學中不能到控制臺上進行演練,學生缺乏實踐經驗,因此設計了一個符合鐵道部相關技術標準的單線接發列車仿真系統。主要介紹了該系統的體系結構、基于組件實現的關鍵技術以及仿真系統故障模擬的要點。通過該系統,教師可以設置實際運行中所發生的故障,培養學生處理故障的能力。
關鍵詞: 組件;故障;仿真
0 引言
現如今對于鐵路仿真系統的進路排列、聯鎖和進路解鎖算法的研究已有很多并已很完善,但是在此基礎上,對于鐵路故障的仿真卻十分少見。為了讓學生在校期間能充分了解鐵路列車系統設備組成,提高處理故障的能力,保證鐵路運輸過程中的安全,本文設計了列車運行的故障仿真。通過單線接發列車仿真系統,有助于學生體驗車務人員的日常工作流程,教師也可以通過教師機對學員機進行故障的設置,提高學員隨機應對、處理特殊情況的應急能力。
1 系統的體系結構
系統中每個實驗室各有沙盤一套(含3個車站)、沙盤接口系統一套,圖1為單線鐵路仿真系統。系統由大屏幕顯示部分、教師機(管理服務器)、學員機(操作機)、沙盤模型、調度電話等部分組成。單線接發列車仿真系統沙盤設A、B、C三個站,B站接大屏顯示。教師機可以對A、B、C三個站及區間設置故障。
教練機起著模擬站場設備狀態的作用,如:設置信號故障、道岔故障、區段故障和模擬列車運行等,并可把這些狀態信息發送至學員機。同時在學員機的對應設備上顯示其狀態信息,來作為學員模擬站場故障的處理,以達到提高學員處理故障問題的能力。教師機可以同時連接多臺學員機,學員機與教師機之間的通信是雙向的,只有當學員機連上了教師機才可以進行全部操作。教師機的主要界面如圖2所示。
學員機起著仿真模擬現場計算機聯鎖系統(操作臺)的作用。學員機具有以下功能:接收教練機發送來的信號設備狀態信息(區段狀態、道岔狀態和信號機狀態等),實現信號設備的聯鎖邏輯處理功能,完成進路確選、鎖閉、發出開放信號和動作道岔的控制命令。學員可以在學員機上學習正常和非正常時的處理方法,培養解決故障的能力。
2 仿真系統故障模擬的功能結構
根據列車在實際運行途中故障處理的標準操作流程,可以將單線接發列車仿真系統故障模擬分為故障的設置、故障的處理、故障的監視、模擬列車的運行等步驟。所以將單線接發列車仿真系統故障模擬分為5個模塊:聯鎖功能模塊、聯鎖信息數據庫管理模塊、故障顯示模塊、故障設置模塊和故障處理模塊,各個模塊相輔相成。將意義相近的步驟整合到同一個模塊中,各模塊之間相互獨立,每個模塊完成自己的功能。這種分布的體系結構及模塊間的獨立性,保證了系統具有良好的可擴展性[1-2]。圖3為故障模擬的功能模塊結構圖。
2.1 聯鎖功能模塊
該仿真培訓系統以聯鎖軟件模塊為基礎,聯鎖軟件模塊通過數據庫模塊讀取數據庫的數據,進行相應的計算。同時聯鎖模塊通過計算故障顯示模塊傳來的操作信息,得到更新的顯示信息,再更新數據庫中相對應的信息。
2.2 聯鎖信息數據庫管理模塊
數據服務器用于存儲和維護系統所有的信息,是其他模塊的數據后臺,可以為其他模塊提供數據提取和存儲服務。在該仿真系統中,數據庫需要的數據分為靜態和動態兩種。在程序運行前,被手動輸入的數據就是靜態數據,這些數據用來進行系統的初始化,在程序運行的過程中不會發生變化。關于區段、信號機、道岔的位置之類的都是靜態數據。在運行了系統后,根據人員的操作,不斷變化的列車信息、信號機的狀態等都是動態的數據。
2.3 故障顯示模塊
故障顯示模塊提供了一個人機交互的界面,使得該仿真培訓系統能夠靈活地適應不同的場景。根據鐵路的現場情況,按照標準繪制站場圖,使模擬環境和真實環境基本一致,包括信號機、區段、道岔的位置等。故障顯示模塊可以實時地提供列車運行的狀態信息以及故障信息的顯示。
2.4 故障設置模塊
系統分為教師機和學生機兩大部分,故障設置模塊是教師機的重要組成部分。在教師機上教師可以模擬故障設置,設置的故障主要包括信號機故障、區段故障、道岔故障等。在這個模塊中還設計了與數據庫信息的邏輯操作、教師機與學生機之間的通信以及故障設置的顯示。
2.5 故障處理模塊
故障處理模塊是學員機的核心部分,它提供了故障處理的平臺。學生機接收到教師機設置的故障后,根據每個故障的不同情況進行相對應的處理,同時教師機上也可以看到學生的處理結果。
3 關鍵技術的實現
3.1 組件的設計
站場圖是該仿真系統的主視圖,繪制站場圖是開發該仿真系統的第一步。通過對實際站場圖的分析,將整個站場圖劃分為幾個相對獨立的組件,并將組件的不同顯示狀態封裝為組件不同屬性的設定或方法調用。這些組件統稱為站場圖組件[3]。
3.1.1 組件的劃分
站場圖組件是微機聯鎖仿真系統中可視組件的一部分,它們分別對應于站場圖中的圖形元素。這些圖形元素可以通過改變顏色或者形狀來表達不同的含義。通過對實際站場的分析,提取出通用的站場組件,包括區段組件、道岔組件、信號組件等。
3.1.2 組件屬性的設計
組件的屬性分為以下兩類:靜態屬性和動態屬性。靜態屬性是指使用組件進行站場圖設計或者界面設計時可以修改的一類組件屬性,如道岔的朝向、區段的長短、信號機的種類等。動態屬性是指在繪制站場圖時無需設置的屬性或者設置默認的屬性,但在程序運行的過程中可以不斷更改的屬性。組件的動態屬性主要包括區段占用、故障、道岔的定反、信號機的斷絲等。這些動態屬性在故障仿真中起著重要作用。因為在仿真系統運行時由教師進行故障設置,故障的表示用到了組件的動態屬性。
3.1.3組件的實現
在該仿真系統中,將邏輯相對獨立、使用頻率較高的模塊封裝成為ActiveX組件。微軟的ActiveX技術遵循了COM組件定義的規范,ActiveX對象將只對外部提供嚴格規范的調用接口。使用ActiveX組件技術來開發通用組件,縮短了仿真培訓系統的開發周期,并使得軟件質量得到了可靠的保證。在系統中利用VB開發了ActiveX組件。因為在VB中,可以很好地解決透明問題,這樣在拼站場圖時就不存在組件之間的遮擋問題。圖4為進站信號機,方向是從左到右,名稱為X1。信號機的名稱、信號機的朝向等都是靜態屬性。信號機的故障類型等在仿真模擬時才會用到的屬性則是信號機的動態屬性。
在編寫組件時,第一步是按照現場的信號機樣子進行模擬,用程序把它畫出來。信號機是用有顏色的圈圈和一個水平的“|—”組合表示的。接著就是編寫信號機的各種屬性以及各種屬性所對應的各種信號機的狀態。以信號機的名字屬性作為例子來說明。
(1)通過ReadProperties來讀取ID屬性的值。
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
m_ID=PropBag.ReadProperty("ID",def_ID)
End Sub
(2)通過WriteProperties來保存ID屬性的值。
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("ID", m_ID, def_ID)
End Sub
(3)通過Get函數獲取信號機當前的ID,再通過Let函數設置信號機新的ID名稱。
Public Property Get ID() As String
ID=m_ID
End Property
Public Property Let ID(ByVal vNewValue As String)
Dim ss As String
ss=m_ID
m_ID=vNewValue
PropertyChanged "ID"
RaiseEvent CaptionChanged(ss, vNewValue)
UserControl.Refresh
End Property
編寫完組建后,生成.ocx文件就可以在仿真系統中運用了。圖5所示是編寫完成的信號機組件的一部分屬性。
3.2 聯鎖表的編制
聯鎖表反映了車站內的道岔、進路和信號機之間的聯鎖關系。根據站場圖,按照信號機排列順序列出本站可辦理的所有進路,按照這種進路的排列順序完成聯鎖表的編制。每條進路中聯鎖內容包括進路的始端信號機、終端信號機、道岔鎖閉、區段鎖閉、敵對條件等。
采用Accesss數據庫進行數據的存儲。在數據庫中主要存儲了關于信號機、道岔、區段的信息。以信號機為例,在數據庫中保存了信號機的Index(站場圖上的編號)、ID(站場圖上的名稱)、Type(0-進站、1-出站、2-調車、3-區間)、Direct(信號機的方向)、FirstQD(信號機朝向所對應的區段或者道岔)、JJQD(靠近信號機的區段或者道岔)、Difference(差置信號)、Apposition(并置信號)以及YH(所在咽喉)這些信息。
3.3 故障仿真
3.3.1 故障的分類
在該模塊中故障主要有區段故障、信號機故障、道岔故障。其中區段故障有區段占用、區段故障、區段壓不死等;信號機故障有設置紅燈燈絲斷、設置黃燈燈絲斷、設置白燈燈絲斷等;道岔故障有道岔定反無表示、道岔定位無表示、道岔反位無表示等[4]。
3.3.2 故障仿真的實現
故障仿真通過教師設置故障類型、故障的地點,在站場視圖上模擬出故障。當仿真軟件運行到故障發生時刻時,站場視圖上的相應設備組件會被設置成故障狀態,站場視圖上的其他設備也會做出相應狀態改變。如信號機斷絲表示此處列車無法通過。要做到逼真的故障仿真,就要保證其發生時,站場視圖上的各設備狀態與故障現場一致。
在該仿真系統中道岔、信號、區段的操作和故障設置在對應設備的下拉菜單中,圖6是信號機的下拉菜單。
以信號機的斷絲故障為例,當顯示設置紅燈燈絲斷時,先去找到相對應的斷絲故障的bit位,并對該位置進行設置。
Public Sub SetXHErr(ByVal Index As Integer, ByVal DW As Integer, blnFlag As Boolean)
Dim oldXHErr As Boolean
oldXHErr=frmMain.XH(Index).Error Or frmMain.XH(Index).Fault
If blnFlag Then
Select Case DW
Case 1 ′紅
frmMain.XH(Index).ErrDW1 = True
If Not FindBit(Index, 0) Then
SetBit Index, 1, False
SetBit Index, 2, False
End If
SetBit Index, 7, True
………………………….
ShowSpecialErrInfo XHInfo(Index).YH
End Sub
ShowSpecialErrInfo函數實現了對故障的顯示,并且把發現故障的信號機加入到故障信息列表里,以便于后面的查看。
4 結論
單線接發列車仿真系統為學生提供了一個逼真的實訓環境。該系統的故障模擬有助于學生體驗車務人員的日常工作流程,教師也可以對學生進行故障的設置,提高學員隨機應對、處理特殊情況的應急能力。
參考文獻
[1] 趙根苗,陳永生.ATS仿真培訓系統的設計與實現[J].城市軌道交通研究,2004,7(1):55-57.
[2] 魯也傳,陳永生,郭玉臣.基于通信的列車自動監控系統平臺設計與實現[J].計算機應用,2009,29(S2):152-15.
[3] 王野,郭秀清.基于組件技術的列車自動監控仿真系統開發平臺[J].計算機應用,2007,27(z2):286-288.
[4] 張耀方.CRH3型動車組故障仿真訓練系統的研究[D].北京:北京交通大學,2012.