魏 靜,郭秀清
(同濟大學 控制理論與控制工程系,上海200331)
近年來,軌道交通迅速發(fā)展,已成為人們生活必不可少的交通工具。但是近期上海地鐵10號線追尾事故、北京地鐵的扶梯事故及溫州動車追尾脫軌事故等頻繁發(fā)生,引起人們對速度和安全的反思。記錄回放模塊是城軌交通列車自動控制(ATC)仿真系統(tǒng)子系統(tǒng)-自動列車監(jiān)控系統(tǒng)(ATS)的組成部分。該模塊在仿真系統(tǒng)中十分有用:(1)事后回顧,對查找故障起著非常重要的作用;(2)演示,利于維修及調度人員反復教學學習;(3)分析,對仿真系統(tǒng)做數(shù)據(jù)檢驗;(4)調試,在系統(tǒng)開發(fā)期間進行診斷調試。
(1)記錄需求:記錄與列車運行有關的數(shù)據(jù)。保存當天的記錄(第二天啟動程序時將前一天的記錄刪除)。
分析:設計記錄模塊時首先明確要記錄的數(shù)據(jù)有哪些,其次建立一個以時間為關鍵字的索引,以便回放時能根據(jù)具體的時間快速地定位。
(2)回放需求:進入回放模式后,彈出回放窗口,用戶輸入起始日期和時間、結束日期和時間,系統(tǒng)獲得回放的數(shù)據(jù)。用戶可以通過點擊開始、暫停、停止來控制回放界面。在回放期間,用戶還可任意設定回放速度、界面,使用戶可控制回放的速度。
分析:數(shù)據(jù)記錄的最終目的是能夠回放數(shù)據(jù),重現(xiàn)事件發(fā)生和發(fā)展的過程?;胤旁O計的關鍵是能夠找到準確的信息對列車、道岔等狀態(tài)進行設定。
需要記錄的ATC信息包括:ATS數(shù)據(jù)、組件庫及一些相關數(shù)據(jù)。
ATS數(shù)據(jù)為列車信息數(shù)據(jù),包括列車車次號、列車所在的軌道ID等;站場狀態(tài)數(shù)據(jù)包括進路的占用狀態(tài)、道岔信號機的占用狀態(tài)和空閑狀態(tài),以及一些控制操作命令的傳輸與執(zhí)行狀態(tài)信息。組件庫為繪制站場圖所需的相關組件的信息。另外還有ATC系統(tǒng)的配置文件以及繪制站場圖所需的列車軌道信息等。
數(shù)據(jù)總體上可分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)。全場戰(zhàn)場圖的鋪畫需要大量的車站及車站設備元素組件數(shù)據(jù)和線路的設備構成元件數(shù)據(jù),這些數(shù)據(jù)一般隨物理位置的固定而保持不變,稱之為靜態(tài)數(shù)據(jù),如信號燈的位置和名稱,軌道區(qū)段的ID等。列車在實際運行中,由于股道、道岔、信號燈等設備元件的設備狀態(tài)信息是不斷變化的,稱之為動態(tài)數(shù)據(jù)。動態(tài)數(shù)據(jù)主要是軌道區(qū)段的占用狀態(tài)、道岔信號機的狀態(tài)及一些控制操作命令的傳輸與執(zhí)行狀態(tài)信息數(shù)據(jù)。
為了方便快捷地讀取和記錄數(shù)據(jù),本文采用.ini文件。
圖1為初步設計記錄回放模塊的流程圖。
圖1 記錄回放模塊程序流程圖
記錄模塊中,輸入帶記錄的數(shù)據(jù)監(jiān)控信息,輸出為記錄文件;回放模塊中,輸入為記錄文件,輸出為記錄文件中提取的對應信息。監(jiān)控要求長時間記錄,但長時間記錄會造成記錄文件過大,影響文件加載和回放的速率,所以本模塊采用分段記錄的方法。當時間超過1s就會自動創(chuàng)建新的數(shù)據(jù)塊,記錄文件的最大存儲量為60000幀。當記錄文件已存儲特定數(shù)目的數(shù)據(jù)幀信息后,自動創(chuàng)建新的記錄文件,并采取加后綴編號的方式與用戶最初創(chuàng)建的文件進行關聯(lián)。這樣就解決了容量記錄文件打開緩慢的問題,提高了回放時文件加載的速度。
由于在加載記錄文件時,已將記錄文件中的各數(shù)據(jù)幀在文件中的存儲位置存儲到了指定容器中,所以回放時只需以當前回放數(shù)據(jù)幀的幀號作為索引,從指定容器中提取數(shù)據(jù)幀在文件中的存儲位置信息,即可依此信息快速從記錄文件中讀取該數(shù)據(jù)幀進行回放,從而保證讀文件的效率。
以上海軌道交通3號線記錄回放軟件的開發(fā)為例,基本步驟如下。
(1)準備基本的數(shù)據(jù)資源如圖2所示。
圖2 控件數(shù)據(jù)及記錄數(shù)據(jù)
由于站場設備數(shù)據(jù)量不是很大,本文選擇XML做數(shù)據(jù)庫。XML是自描述的,能夠以樹型或圖形結構描述數(shù)據(jù)。如果XML文件不大,理論上會比用關系數(shù)據(jù)庫效率高,便于數(shù)據(jù)交換。在XML數(shù)據(jù)庫中存儲控件的基本信息,XML的存儲格式如下(以信號燈為例):
ID為信號機的 ID號,Name表示名稱,JJQD表示漸近區(qū)段,F(xiàn)irstQD表示第一區(qū)段,Direction表示信號機方向。
ini文件格式清晰,便于查找和存儲,提高回放時對數(shù)據(jù)的檢索效率。本文記錄采用ini文件。
ini文件的記錄格式如圖3所示,[Info]為根節(jié)點,Count表示記錄的總數(shù),Date為當前日期,Time為當前時間,Data為記錄的數(shù)據(jù),ATSTime為仿真時間。以時間為檢索,回放時可以選擇開始回放時間和結束時間(如圖4所示),同時設定回放的時鐘,就可以以時間為線索,重現(xiàn)事件發(fā)生和發(fā)展的過程。
圖3 ini文件格式
圖4 回放控制對話框
本程序采用BOOL WritePrivateProfileString(lpApplicationName,lpKeyName,lpString,lpFileName)和DWORD Get PrivateProfileString(lpszSection,lpszKey,lpszDefault,lpszRe-turnBuffer,cchReturnBuffer,lpszFile)存取ini文件數(shù)據(jù)。
(2)注冊組件,根據(jù)3號線的軌道信息繪制站場圖。
構建站場圖組件的首要任務是設計其組件屬性。站場圖組件屬性分為以下兩類:靜態(tài)屬性和動態(tài)屬性。靜態(tài)屬性主要指設計組件時可修改,但當站場圖繪制完成時就不可修改的一類屬性;動態(tài)屬性主要指設計組件時無需設置,在站場圖的仿真運行過程中可不斷改變的屬性。以3號線信號機組件為例,其屬性可按如下設置:
①靜態(tài)屬性:包含信號機名稱、信號機標簽、信號機位置等。
②動態(tài)屬性:包含信號機狀態(tài)、故障狀態(tài)、是否鎖閉等。
組件定義如下:
其中COleControl類封裝了MFC的ActiveX控件。所有組件都由此類派生。
為了便于設計,本文將信號機組件屬性進行了封裝,封裝后的代碼如下:
注冊圖5所示控件后,手動繪制站場圖,繪制結果如圖6所示。
(3)設計基本回放界面,回放功能界面如圖7所示。
選擇開始時間和結束時間,系統(tǒng)便會關聯(lián)到以時間為索引的相應的記錄文件,對記錄文件解析后與站場圖關聯(lián),以實現(xiàn)列車在站場圖中的回放。例如當根據(jù)提供的《軌道ID對應表》將ATC信息中的“軌道 ID”與站場圖中的“軌道名稱”相關聯(lián),當“軌道ID”為某一值時,使列車會同步顯示在站場圖中相應的軌道上,以實現(xiàn)列車在站場圖中的回放。
圖5 L3組件
圖6 L3某段站場圖
圖7 回放功能界面
本文提出了城市軌道交通ATS記錄與回放軟件的基本思路,初步闡述了開發(fā)相應記錄與回放軟件的基本過程。不僅可以應用于地鐵3號線ATC仿真系統(tǒng)中,同時可以廣泛應用于其他線路的ATC仿真系統(tǒng)中,減少了重復開發(fā),為以后不同制式的ATC仿真系統(tǒng)的記錄回放模塊的設計提供參考。
[1]賈紅娟.北京地鐵一號線ATS仿真系統(tǒng)數(shù)據(jù)庫的設計[J].鐵路計算機應用,2005,10(14):56-59.
[2]姜堅華.上海軌道交通線ATC系統(tǒng)的比較[J].城市軌道交通研究,2003(2):56-59.
[3]陳 宏,周以齊,閆法義.基于HLA的仿真系統(tǒng)的記錄與回放[J].系統(tǒng)仿真學報,2005,18(3):629-632.
[4]段繼華,劉 衛(wèi).組件化技術在程序設計中的應用[J].無線電通信技術,2003,29(1):57-58.