近年來,軌道交通快速進入高速期,成為帶動經(jīng)濟增長的重要因素。列車自動監(jiān)控系統(tǒng)(ATS)是一種智能化自動監(jiān)控系統(tǒng),對 ATS 系統(tǒng)能否進行正確的操作,將影響到列車能否安全運行。這對軌道交通運營管理人員的后勤培訓(xùn)提出了很高要求,因此ATS 仿真系統(tǒng)應(yīng)運而生。
若 ATS 仿真系統(tǒng)采用人工排列進路,對操作員的業(yè)務(wù)素質(zhì)將會提出很高要求,而且操作量大、效率低。而自動進路排列功能的實現(xiàn)將大大降低操作員的工作量,減小失誤率,提高 ATS 系統(tǒng)的效率。
1 、自動進路排列的設(shè)計
自動進路排列的工作原理為:當一列車步進到一個特別配置的軌道區(qū)段時,即觸發(fā)排列下一條進路的指令。這些特別配置的軌道區(qū)段被稱為“運營觸發(fā)點”,運營觸發(fā)點接近于即將被排列的進路。列車的位置可由列車追蹤功能獲取,因為事先已經(jīng)把進路的信息保存在文件中,下一條進路即可以從文件中獲??;然后將進行進路一致性檢查。如果檢查表明,沒有理由不排列該進路,就向系統(tǒng)聯(lián)鎖模塊發(fā)出一個指令,鎖定進路中元素;最后進行進路排列檢驗,若沒有問題,則開放始端信號燈。進路自動排列 ARS(Automatic Route SetTIng)請求處理步驟如圖 1 所示。
1.1 運營觸發(fā)點處理
在運營觸發(fā)點的處理上,選擇一條進路的最后一條區(qū)段為下一條進路的運營觸發(fā)點,如圖 2 中進路 X905~X1006,下一條進路的運營觸發(fā)點就是這條進路的最后一條區(qū)段 G1175。當判斷列車到達 G1175 后,則發(fā)送要求排列下一條進路的指令。
運營觸發(fā)點需要擁有一定的信息(如觸發(fā)點觸發(fā)的有效方向),本文把這部分信息采用XML純文本存儲。XML 是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù),層次結(jié)構(gòu)清晰,易于讀寫與共享。
下面是運營觸發(fā)點的數(shù)據(jù)結(jié)構(gòu),采用 XML 純文本保存。
其中,標記存儲了分配給運營觸發(fā)點的軌道區(qū)段,標記存儲了運營觸發(fā)點有效時列車的運行方向。
1.2 進路的選定
在運營觸發(fā)之后,ARS 功能將為這一列車選定擬排列的進路。從圖 2 中可以看出,若從 X905 排列一條上行進路,這條進路是存在并且是唯一的,依次經(jīng)過 G1151 區(qū)段,G1175 區(qū)段到 X1006。但若從 X1002 出發(fā)排列一條進路,進路雖然存在但卻不是唯一的,分別為經(jīng)過 1002 道岔反位,然后接 1004 道岔反位,經(jīng) G1281 區(qū)段到達信號燈 X1003 和經(jīng)過 1002 道岔定位,再通過 G1278 區(qū)段到達信號燈 X1007,因此僅一個始端信號燈還不足以構(gòu)成選定一條進路的條件。為此,需要從列車追蹤功能傳輸出來的車次號中獲取列車的目的地代碼,從而獲取列車運行方向。
在確定了始端信號燈(觸發(fā)后可獲取,見圖 6 中各表關(guān)系)和列車運行方向后,為了能夠讓進路搜索程序搜索到符合條件的進路,可以建立一個適合搜索的并且能夠真實形象地反映現(xiàn)實路線結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)??梢詷?gòu)建一棵二叉樹來表示信號機與它的直接鄰居之間的連通關(guān)系。每個信號機均構(gòu)建一棵二叉樹,然后把整個站場的所有信號機構(gòu)建的二叉樹組織起來。若把上例中信號燈 X905 和 X1002 的二叉樹建立起來,其結(jié)果如圖 3 所示。
圖中橢圓表示信號燈,矩形表示軌道或道岔,圖 3(a)表示道岔,圖 3(b)表示軌道。在圖 2 中,假設(shè)進路從 X1002 出發(fā),終點站為 B,則進路的選定存在以下幾種情況:
(1)若全部軌道正常,那么從 X1002 結(jié)合方向搜索,會建立到 X1007 的進路。
(2)若存在以下的特殊情況,從 X1002→X1007 的進路不能正常建立,則 ARS 將改變進路的選定。
①若進路中存在長期障礙,阻止了正常進路的自動排列。如圖 2 中 1002 道岔被鎖定在反位狀態(tài),正常的進路 X1002→X1007 將不能建立,此時進路自動排列功能將會去變更進路,并將訪問圖 3(a)子樹,選定從 X1002 經(jīng) 1002 道岔反位,接 1004 道岔反位,通過 G1281 區(qū)段到達信號燈 X1003 這條進路,然后經(jīng) 1003 道岔反位到終點 B。
②若進路中存在短期障礙,比如此時 G1278 上正好被占用(如停著一輛車),正常的進路排列被阻止,那么自動排列功能將試圖排列越行進路,同樣會去訪問圖 3(a)子樹,選定從 X1002 經(jīng) 1002 道岔反位,接 1004 道岔反位,通過 G1281 區(qū)段到達 X1003 這條進路。
(3)若道岔 1002 出現(xiàn)了故障,進路將不能排列。
若把圖 3 中進路的路徑抽取出來,則很容易就得到優(yōu)化二叉樹,如圖 4 所示。
由圖 4 提取信息,可以建立每條進路的數(shù)據(jù)存儲結(jié)構(gòu)。本設(shè)計采用 XML 來存儲每條進路的結(jié)構(gòu)信息,下面是 X1002→X1007 的進路用 XML 保存的數(shù)據(jù)結(jié)構(gòu)。
其中,表示進路的始端信號燈,表示進路的終端信號燈,表示進路中的區(qū)段, 表示進路中的道岔。把線路圖中的所有進路都用這種數(shù)據(jù)結(jié)構(gòu)表示出來,放在一個 XML 文件中,以供程序查詢。這樣通過以始端信號燈結(jié)合方向,用方向來確定道岔的定 / 反位,就能選定下一條進路。
1.3 進路一致性檢查
在進路選定后,接下來即進行進路的一致性檢查。進路一致性檢查的目的是要防止不能被執(zhí)行的指令被傳送至聯(lián)鎖。進路一致性檢查包括如下步驟:
(1)檢查請求是否已被執(zhí)行
如果擬排進路的始端信號機已處于開放狀態(tài),說明操作員已經(jīng)為列車人工排列了進路,ARS 功能會中止此 ARS 請求,并記錄該操作。如圖 2 中,若已經(jīng)在步驟 2 中選定了進路 X1002→X1007,那么此時就應(yīng)該檢查一下此進路有沒有已經(jīng)被排列。若之前已經(jīng)被操作員手動排列了進路,則此時這條進路就不需再自動排列了。
(2)檢查指令輸出是否存在短期障礙
為此,需調(diào)查擬排進路的始端與終端要素之間的所有軌道要素以判斷是否其中某個元素存在障礙。
1.4 發(fā)送聯(lián)鎖指令
在進路可用性檢查成功后,即可輸出聯(lián)鎖指令。發(fā)送聯(lián)鎖指令將鎖定進路中的道岔、區(qū)段和交叉,以防再被其他進路征用。
首先,系統(tǒng)檢查該列車是否仍在擬排定進路的接近區(qū)段。如果列車已不在擬排定進路的接近區(qū)段,ARS 將中止此 ARS 請求;如果列車仍在擬排進路的接近區(qū)段,則排列該進路的指令將送至相應(yīng)的聯(lián)鎖。ARS 功能只把下一個進路排列指令傳送到該聯(lián)鎖,只要它已經(jīng)接收到對此進路排列請求的肯定確認。
1.5 排列檢查
指令輸出之后,自排進路功能等待來自計算機聯(lián)鎖控制系統(tǒng)的肯定確認。作為肯定確認,對每條進路來說就是開放始端信號機。只要信號機一開放,該 ARS 請求立即終止。
經(jīng)過以上 5 步后,進路的自動排列已經(jīng)基本完成。圖 5 為進路自動排列流程圖。
2 、自動進路排列的軟件實現(xiàn)
將信號燈、區(qū)段、道岔的信息用類似 XML 數(shù)據(jù)結(jié)構(gòu)存儲,每類軌道元素都分別存放在各自的 XML 表中,這樣就存在 5 份 XML 表,在本設(shè)計中,本質(zhì)上 XML 就充當了一個小型數(shù)據(jù)庫的角色。表 1 為各個軌道元素在 XML 中的存儲信息。
在開發(fā)過程中,需要讀取保存在 XML 中的軌道元素的信息,因此設(shè)計中對應(yīng) XML 中軌道元素的信息為每個軌道元素都建立了一個封裝類,如 Switch 封裝類結(jié)構(gòu)如下:
class Route
{
public:
Route(CString ID,CString Name,CString StartSignal,CString ZDXH,RouteQDArray RouteBlocks,RouteDCInfoArray DCInfo);
~Route();
CString m_ID;
CString m_Name; // 進路名
CString m_StartSignal; // 始端信號燈名
CString m_ EndSignal; // 終端信號燈名
RouteQDArray m_RouteBlocks; // 因為一個進路中
// 可能有很多區(qū)段,所以保存在數(shù)組
RouteDCInfoArray m_DCInfo;
// 道岔,同樣保存在數(shù)組中
Bool m_faultflag; // 故障標志
……
};
把保存在 XML 表中的軌道元素信息用 XML 解析類 CMarkUp 解析后,用解析出來的各軌道元素存儲信息去構(gòu)造一個對應(yīng)的類。因為線路圖中存在很多信號燈、區(qū)段等軌道元素,而每一個都對應(yīng)著自己的一組信息,也就是每一個元素都可以構(gòu)造一個類,很好地實現(xiàn)了 XML 數(shù)據(jù)與對應(yīng)類的綁定。為了方便查詢和使用,把相同軌道元素的類保存在 STL 的 Vector 數(shù)組中,這樣就分別有運營觸發(fā)點、進路、道岔、區(qū)段、信號燈 5 個 Vector 數(shù)組。每一類軌道元素都是相互聯(lián)系的,因此,在程序中需要通過一類元素獲取到另一類的信息(如需要查詢始端信號燈 StartSignal 獲取到一條進路 Route)。圖 6 所示為 5 個軌道元素的 XML 表聯(lián)系圖。
圖中,矩形表示各個 XML 表,橢圓形表示 XML 表的某個軌道元素的其中某個存儲信息。兩個 XML 的聯(lián)系就是通過尋找某個有相同的某個存儲信息來實現(xiàn)的。如 Owner 和 JJAxle,因為每個 Trigger 都對應(yīng)著一個擁有區(qū)段,因此可以用此區(qū)段去對比 Signal 表中的 JJAxle 信息。若找到此信息相同,即可找到下一條進路的始端信號燈。根據(jù)以上的軌道元素數(shù)據(jù)結(jié)構(gòu)和 XML 表聯(lián)系圖,給出選定進路的偽碼算法如下:
FuncTIon SearchNextRoute(……)
{
Then OwnerAxle=GetOwnerQD() // 當符合觸發(fā)條件
// 后,從列車跟蹤模塊獲取列車所在的區(qū)段,
// 即觸發(fā)點擁有區(qū)段 OwnerAxle
XHIterator=FindSignal(OwnerAxle) // 利用獲取的
//OwnerAxle 作為 JJAxle 去查找 Signal 數(shù)組 Vector 中
// 查找到相應(yīng)的關(guān)聯(lián)類,返回這個類的迭代器
If(XHIterator=SignalVector.end)then ruturn;
// 如果未找到,則返回
RouteIterator=FindRoute(*(XHIterator)-》SignalName)
// 利用上面查找到的信號燈類獲取此信號燈的名字
// 然后以此為關(guān)鍵字查找進路,返回進路的迭代器
If(RouteIterator =RouteVector.end)then ruturn;
// 如果未找到進路,則返回
AxleIterator=FindAxle(*(RouteIterator)-》Axle)
SwitchIterator=FindSwitch(*(RouteIterator)-》 Switch)
// 利用查找到的進路類獲取此進路中的道岔、區(qū)段、
// 獲取到它們相應(yīng)的類。這兩個類的獲取主要用于
// 后面的進路一致性檢查和區(qū)段,道岔的鎖定
}
在以上偽碼中,最重要的就是查找算法。本文很好地利用了 STL 的非變異算法 find_if 來查找進路元素。
因為要每隔一定時間就去判斷列車運行距離來判斷列出是否到運營觸發(fā)點,所以在定時器響應(yīng)函數(shù)來判斷是否去開放下一條進路,這樣通過定時器的方法也就達到了進路自動開放的效果。自動排列進路源碼如下:
FuncTIon OnTIme(……)
{
If(Direct&&Location)
// 判斷方向和列車位置有沒有到觸發(fā)點
linRet=SearchNextRoute()
// 如果到達觸發(fā)點,則查找下一條進路
if(linRet)
linRet1=CheckValid()
// 若查找到進路,則進行一致性檢查
if(linRet1)
linRet2=LockGDElement()// 一致性檢查沒問題,
// 則發(fā)送聯(lián)鎖指令,鎖定軌道元素
if(linRet2)
linRet=OpenSignal()// 都沒問題后,則開放信號燈
}
通過以上方法,順利地實現(xiàn)了列車進路自動排列,在所截取上海地鐵 5 號線的部分線路圖上實現(xiàn)結(jié)果如圖 7 所示。
由圖中可以看出,當列車開進區(qū)段 G1278,并未人工開放進路,下一條進路就被正確地開放了,證明了本文所提出的方法的有效性。
本文提出了一個 ATS 仿真系統(tǒng)的自動進路排列的方案,闡述了自動進路排列的大體過程。在這個過程中,進路的選定尤為重要,應(yīng)用自動進路排列,可減輕操作員的勞動量和減少出錯率,提高系統(tǒng)的運行效率,從而可以有效地提高培訓(xùn)效率。
-
監(jiān)控系統(tǒng)
+關(guān)注
關(guān)注
21文章
3843瀏覽量
173424 -
仿真系統(tǒng)
+關(guān)注
關(guān)注
1文章
95瀏覽量
20608 -
ATS
+關(guān)注
關(guān)注
0文章
33瀏覽量
26672
發(fā)布評論請先 登錄
相關(guān)推薦
評論