《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 上海地鐵ATS仿真系統(tǒng)進路自動排列的設(shè)計與實現(xiàn)
上海地鐵ATS仿真系統(tǒng)進路自動排列的設(shè)計與實現(xiàn)
來源:微型機與應(yīng)用2012年第17期
吳 江,郭秀清
(同濟大學 控制科學與工程系,上海 201804)
摘要: 進路自動排列(ARS)能夠大大減輕操作員的工作量,提高列車運行效率。以上海地鐵5號線列車自動監(jiān)控仿真系統(tǒng)(ATS)為例,通過對其自動進路排列設(shè)計進行分析,結(jié)合標準模板庫STL給出了一種進路搜索算法,并在這種算法的基礎(chǔ)上提出了一種自動排列進路的方法,較好地實現(xiàn)了進路的自動排列功能。
Abstract:
Key words :

摘  要: 進路自動排列(ARS)能夠大大減輕操作員的工作量,提高列車運行效率。以上海地鐵5號線列車自動監(jiān)控仿真系統(tǒng)(ATS)為例,通過對其自動進路排列設(shè)計進行分析,結(jié)合標準模板庫STL給出了一種進路搜索算法,并在這種算法的基礎(chǔ)上提出了一種自動排列進路的方法,較好地實現(xiàn)了進路的自動排列功能。
關(guān)鍵詞: 進路自動排列;仿真;列車自動監(jiān)控系統(tǒng);進路搜索算法

 近年來,軌道交通快速進入高速期,成為帶動經(jīng)濟增長的重要因素。列車自動監(jiān)控系統(tǒng)(ATS)是一種智能化自動監(jiān)控系統(tǒng),對ATS系統(tǒng)能否進行正確的操作,將影響到列車能否安全運行。這對軌道交通運營管理人員的后勤培訓提出了很高要求,因此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純文本保存。
<TriggerPt>
        <ID>1</ID>
        <Name>TgPt1</Name>
      <Owner>G1175</Owner>
     <TriggerDirection>R</TriggerDirection>
    </TriggerPt>
 其中,標記<Owner>存儲了分配給運營觸發(fā)點的軌道區(qū)段,標記<TriggerDirection>存儲了運營觸發(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)。
<Route>
        <ID>36</ID>
        <Name>X1002-X1007</Name>
        <StartSignal>X1002</StartSignal>
        <EndSignal>X1007</EndSignal>
        <RouteBlocks>
            <Axle>G1278</Axle>
        </RouteBlocks>
        <SwitchList>
            <Switch>
                <Name>1002</Name>
                <State>DW</State>
            </Switch>
        </SwitchList>
    </Route>
 其中,<StartSignal>表示進路的始端信號燈,<EndSignal>表示進路的終端信號燈,<Axle>表示進路中的區(qū)段,   <Switch>表示進路中的道岔。把線路圖中的所有進路都用這種數(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)的運行效率,從而可以有效地提高培訓效率。
參考文獻
[1] 潘國梅,梅登華.廣州地鐵微機聯(lián)鎖仿真培訓系統(tǒng)進路排列、聯(lián)鎖和進路解鎖算法及實現(xiàn)[J].裝備制造技術(shù),2007(8):82-84.
[2] 王野,郭秀清.基于組件技術(shù)的列車自動監(jiān)控仿真系統(tǒng)開發(fā)平臺[J].計算機應(yīng)用,2007,27(S2):286-288.
[3] 趙根苗,陳永生.基于三層分布式架構(gòu)的列車自動監(jiān)控仿真培訓系統(tǒng)的分析與設(shè)計[J].微型電腦應(yīng)用,2003,19(12):35-37.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内视频一区| 亚洲欧洲久久| 欧美另类99xxxxx| 免费看亚洲片| 美女黄毛**国产精品啪啪| 久久精品九九| 久久福利电影| 久久精品中文字幕免费mv| 欧美一区二区在线观看| 欧美亚洲自偷自偷| 欧美夜福利tv在线| 欧美在线亚洲一区| 久久九九有精品国产23| 久久精品国产欧美亚洲人人爽| 欧美一级一区| 久久久精品国产免大香伊| 久久久久国色av免费观看性色| 欧美一区深夜视频| 久久久久久97三级| 美女诱惑一区| 欧美精品二区三区四区免费看视频| 欧美黑人一区二区三区| 欧美日韩免费观看一区| 欧美日韩久久| 国产精品日韩久久久| 国产欧美视频一区二区| 国模私拍一区二区三区| 在线成人激情黄色| 亚洲啪啪91| 日韩视频在线观看| 亚洲天堂av在线免费| 亚洲一区二区三区免费视频| 午夜亚洲视频| 亚洲国产三级网| 亚洲精品久久久久久久久久久久| 亚洲乱码精品一二三四区日韩在线 | 亚洲精品日本| 夜夜嗨av色一区二区不卡| 亚洲午夜激情网页| 欧美一区二区视频在线观看2020| 久久午夜羞羞影院免费观看| 欧美激情bt| 国产精品人人做人人爽| 狠狠色综合播放一区二区| 91久久精品美女高潮| 一本久久a久久精品亚洲| 亚洲伊人伊色伊影伊综合网| 欧美一区二区在线| 日韩亚洲欧美成人一区| 亚洲欧美日韩爽爽影院| 久久久精品tv| 欧美日韩国产区| 国产精品腿扒开做爽爽爽挤奶网站| 国产伦精品一区二区三区高清| 激情久久五月| av成人免费在线| 欧美亚洲三区| 亚洲另类在线视频| 欧美一区二区三区日韩视频| 蜜乳av另类精品一区二区| 欧美日韩综合在线| 激情小说另类小说亚洲欧美 | 久久精品一区二区三区不卡牛牛 | 国产在线精品成人一区二区三区 | 欧美久久久久久久久| 国产精品一区二区你懂得| 在线欧美日韩| 亚洲视频在线免费观看| 亚洲黄色大片| 亚洲深夜福利视频| 久久久久99| 欧美日韩在线第一页| 伊人久久大香线| 99国产成+人+综合+亚洲欧美| 久久av一区二区| 亚洲午夜久久久久久久久电影网| 久久激情五月激情| 欧美日韩免费观看一区| 国内伊人久久久久久网站视频| 日韩一区二区福利| 久久精品久久99精品久久| 亚洲图片激情小说| 欧美91大片| 国产一区二区三区久久 | 国产精品电影在线观看| 亚洲精品九九| 久久激情视频免费观看| 亚洲免费网址| 欧美精品在线网站| 激情视频一区| 亚洲欧美国产77777| 日韩一级二级三级| 久久综合激情| 国产欧美精品日韩区二区麻豆天美| 亚洲黄网站黄| 久久精品国产99国产精品| 亚洲欧美日韩国产一区二区| 欧美激情精品久久久久久大尺度| 国产在线视频欧美| 亚洲影院免费| 亚洲电影免费观看高清| 欧美一级网站| 亚洲免费视频网站| 欧美日韩国产高清| 亚洲国产精品视频| 亚洲国产高清高潮精品美女| 欧美一区二区三区四区高清| 欧美午夜免费电影| 日韩一级大片在线| 永久免费精品影视网站| 亚洲最黄网站| 久久精品国产99精品国产亚洲性色| 欧美性理论片在线观看片免费| 亚洲国产老妈| 亚洲精品一区二区三区不| 欧美搞黄网站| 亚洲精品国产精品国自产观看浪潮 | 欧美一区二区免费| 欧美一区二区久久久| 国产精品日韩二区| 亚洲深夜福利视频| 亚洲淫性视频| 国产精品久久久久999| 亚洲午夜精品福利| 午夜精品久久| 国产精品一区二区欧美| 亚洲欧美日韩国产综合精品二区| 亚洲欧美国产va在线影院| 国产精品成人午夜| 亚洲一区二区三区免费观看 | 亚洲精品国产日韩| 欧美高清视频一区| 日韩视频不卡| 亚洲永久免费视频| 国产精品一区二区在线| 午夜精品亚洲一区二区三区嫩草| 欧美一级视频免费在线观看| 国产精品私人影院| 香蕉成人伊视频在线观看| 久久精品国产精品亚洲| 国内成+人亚洲| 亚洲国产专区校园欧美| 欧美高清视频一二三区| 亚洲另类在线一区| 亚洲一区三区视频在线观看| 国产精品日本精品| 欧美在线视频一区| 欧美福利网址| 日韩一级在线观看| 性久久久久久| 韩国三级电影久久久久久| 亚洲国产一区二区精品专区| 欧美国产精品| 日韩亚洲国产精品| 欧美一级在线播放| 在线观看成人网| 中国成人亚色综合网站| 国产精品视频999| 欧美在线视频不卡| 欧美 日韩 国产 一区| 99视频一区二区| 久久久精品一区| 亚洲国产日日夜夜| 亚洲专区一区| 国内成+人亚洲+欧美+综合在线| 亚洲欧洲一区二区在线播放| 欧美日韩国产在线| 午夜精品一区二区三区电影天堂 | 免费成人av在线| 99精品欧美一区| 久久精品免费播放| 亚洲第一在线综合网站| 亚洲视频在线观看一区| 国产精品麻豆va在线播放| 久久不见久久见免费视频1| 欧美激情欧美狂野欧美精品| 亚洲无线观看| 欧美xx视频| 亚洲一区二区三区在线| 久久夜色精品国产亚洲aⅴ| 亚洲日本久久| 欧美淫片网站| 亚洲国产一区视频| 欧美一级片一区| 91久久精品美女| 欧美一区二区三区在| 亚洲人成在线观看网站高清| 欧美一区二区三区在线观看 | 香蕉视频成人在线观看| 欧美精品播放| 久久成人精品视频| 欧美特黄一区| 亚洲国产精品久久久| 国产精品久久久久久久久免费樱桃 | 久久精品男女| 中日韩在线视频| 免费视频亚洲| 欧美在线观看天堂一区二区三区 | 在线欧美小视频| 小嫩嫩精品导航|