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