尹 青 蔡伯根 上官偉 茍晨曦
尹 青:北京交通大學(xué)電子信息工程學(xué)院 碩士研究生 100044北京
蔡伯根:北京交通大學(xué)電子信息工程學(xué)院 教授 100044 北京
上官偉:北京交通大學(xué)電子信息工程學(xué)院 副教授 100044 北京
茍晨曦:北京交通大學(xué)電子信息工程學(xué)院 博士研究生 100044北京
故障注入作為一種有效的安全測試技術(shù)手段,是系統(tǒng)測試性、安全性及功能驗證研究的重要方面,也是驗證工作得以實現(xiàn)的基礎(chǔ)。故障注入大致分為基于軟件、硬件和仿真三種故障注入方法?;谟布墓收献⑷胫饕翘结樂ê筒迦敕ǎ热绻苣_級硬件故障注入?;谲浖墓收献⑷肟捎糜谠u價軟件冗余機制,主要應(yīng)用于程序變異和估算程序中錯誤數(shù)量的播種模型,對硬件環(huán)境沒有損壞,能夠跟蹤目標程序的執(zhí)行和回收數(shù)據(jù),有較好的可移植性。而基于仿真的故障注入,是建立在仿真系統(tǒng)的基礎(chǔ)上,即接受測試驗證的目標系統(tǒng)是一個仿真系統(tǒng),是一種仿真實現(xiàn)方法。
由于本研究項目重點是測試CTCS-3級列車運行控制系統(tǒng)仿真測試平臺,在某個關(guān)鍵設(shè)備故障的情況下能否實現(xiàn)需求規(guī)約上的安全保證功能,而采用硬件、軟件注入的方法不能驗證仿真模塊的功能設(shè)計,故采用基于仿真的故障注入方法。
對于仿真系統(tǒng)來說,其真實系統(tǒng)原型往往是一個復(fù)雜大系統(tǒng),無法進行真實場景的測試驗證,只能搭建仿真環(huán)境進行安全性能的測試驗證。
基于仿真的故障注入技術(shù),應(yīng)用在仿真測試的計算機原型上,通過仿真過程、改變邏輯值來達到故障注入的效果。在某個關(guān)鍵設(shè)備上改變某個工作狀態(tài)以模擬其發(fā)生故障的情形,通過程序接口將故障注入到CTCS-3級列控系統(tǒng)仿真測試平臺之中。
故障注入算法流程在Windows環(huán)境下搭建,系統(tǒng)的通信采用RTI/HLA(Run Time Infrastructure/High Level Architecture)通信協(xié)議。RTI是HLA仿真應(yīng)用的軟件實現(xiàn),在仿真執(zhí)行過程中負責仿真模塊之間的信息交互。算法流程如圖1所示。
圖1 故障注入算法
基于HLA的列控仿真平臺仿真聯(lián)邦成員包括CTC總機、CTC分機、RBC、TCC、聯(lián)鎖、臨時限速、車載、軌旁、G網(wǎng)、仿真管理器等共10個設(shè)備模塊,部分仿真設(shè)備編碼如表1所示。
表1 仿真設(shè)備編碼
CTCS-3級列車運行控制系統(tǒng)聯(lián)邦成員交互數(shù)據(jù)幀采用統(tǒng)一格式。案例數(shù)據(jù)存儲在Access數(shù)據(jù)庫中,在程序中一鍵調(diào)用。當需要交互信息時,例如故障注入事件觸發(fā),故障注入聯(lián)邦成員通過RTI接口將注入數(shù)據(jù)信息發(fā)布出去,目標聯(lián)邦成員接收到發(fā)布的信息后進行處理,即目標仿真設(shè)備做出故障反應(yīng),并將反饋信息通過RTI發(fā)布,故障注入仿真模塊接收反饋信息后加以分析,直觀地顯示出來。
將無信號、通信中斷等常見設(shè)備故障按序編碼,故障注入信息按照事先定義好的數(shù)據(jù)幀格式訂購和發(fā)布,與仿真模型中的其他模塊格式一致。故障類型編碼如表2所示。
表2 故障類型編碼
列車運行控制仿真系統(tǒng)各模塊之間的通信可以采用UDP通信協(xié)議,但UDP是一種無連接協(xié)議,會出現(xiàn)丟包、重復(fù)、無序等情況,數(shù)據(jù)的安全性、完整性無法保證,對于列車運行控制系統(tǒng)這樣一個復(fù)雜大系統(tǒng)的仿真來說并不適用。而高層體系結(jié)構(gòu)HLA(High Level Architecture)能盡量涵蓋 M&S(Modeling and Simulation)領(lǐng)域中所涉及的各種類型的仿真系統(tǒng),并利用它們之間的互操作和重用性以及不斷發(fā)展的新技術(shù),來滿足復(fù)雜大系統(tǒng)的仿真需求,仿真成員之間數(shù)據(jù)交互的實時性、安全性也可以得到保證。
在基于HLA的仿真系統(tǒng)中,每個模塊都作為一個聯(lián)邦成員加入到系統(tǒng)之中,聯(lián)邦 (Federation)是指用于達到某一特定仿真目的的分布仿真系統(tǒng),由若干個相互作用的聯(lián)邦成員構(gòu)成。所有參與聯(lián)邦運行的應(yīng)用程序都可以稱為聯(lián)邦成員。聯(lián)邦中的成員有多種類型,如用于聯(lián)邦數(shù)據(jù)采集的數(shù)據(jù)記錄器成員,用于和實物接口的實物仿真代理成員,以及用于聯(lián)邦管理的聯(lián)邦管理器成員等,其中最典型的一種聯(lián)邦成員是仿真應(yīng)用。仿真應(yīng)用是使用實體的模型來產(chǎn)生聯(lián)邦中的某一實體的動態(tài)行為。聯(lián)邦成員由若干相互作用的對象構(gòu)成,對象是聯(lián)邦的基本元素。HLA定義了聯(lián)邦和聯(lián)邦成員構(gòu)件、描述和交互的基本準則和方法。需要說明的是,聯(lián)邦可以作為一個成員加入到一個更大的聯(lián)邦中,由此可以仿真極其復(fù)雜的系統(tǒng)。
采用HLA的技術(shù)體制,可以將單個仿真應(yīng)用連接起來組成一個大型的虛擬世界。在這個虛擬世界中,可以進行大規(guī)模多系統(tǒng)體系仿真,特別適用于列車運行控制仿真系統(tǒng)的構(gòu)建,也易于進行基于仿真的故障注入。在本仿真實驗中,采用Pitch公司的pRTI1.3版本軟件作為HLA仿真應(yīng)用的基礎(chǔ)軟件層。
CTCS-3級列車運行控制系統(tǒng)包括地面設(shè)備和車載設(shè)備。地面設(shè)備由RBC(無線閉塞中心)、TCC(列控中心)、ZPW-2000系列軌道電路、應(yīng)答器、GSM-R通信接口設(shè)備組成;車載設(shè)備由車載安全計算機、GSM-R無線通信單元、軌道電路信息接收單元、應(yīng)答器信息傳輸模塊、記錄單元、人機界面、列車接口單元等組成。
根據(jù)CTCS-3級列車運行控制系統(tǒng)結(jié)構(gòu)及接口關(guān)系,基于HLA的CTCS-3級列車運行控制仿真聯(lián)邦的邏輯模型如圖2所示。
作為故障注入工具的測試驗證平臺,基于HLA的列車運行控制仿真系統(tǒng)的每一個模塊都有相應(yīng)的故障-安全機制設(shè)計,在現(xiàn)有的平臺基礎(chǔ)上,對測試模塊進行研究分析,給出與實際相符的故障案例庫,并按照預(yù)先設(shè)計的數(shù)據(jù)格式對故障案例進行編碼。
在實驗室現(xiàn)有的基于HLA的列控仿真平臺上,研究關(guān)鍵設(shè)備的故障注入方法,將仿真測試和故障注入相結(jié)合,仿真被測系統(tǒng)處于特定失效場景下,驗證當屬于某已定義故障空間的故障出現(xiàn)時目標系統(tǒng)是否能夠正確處理,以及系統(tǒng)的響應(yīng)是否符合軟件設(shè)計的要求,同時也可以用來挖掘系統(tǒng)中的安全隱患。在仿真環(huán)境中,通過向系統(tǒng)引入故障,加速系統(tǒng)的失效,在短時間內(nèi)模擬方案長期執(zhí)行的效果,通過觀測系統(tǒng)運行結(jié)果,對系統(tǒng)方案的安全性能進行驗證和評估。
做好前期的分析設(shè)計工作后,設(shè)計相應(yīng)的測試軟件即故障注入軟件,并能夠?qū)崿F(xiàn)如下基本功能。
1.實時數(shù)據(jù)傳輸。隔斷并采集即將輸入到列車運行控制系統(tǒng)的各類數(shù)字、模擬信號,同時將注入故障后的各類信號實時送入控制系統(tǒng)中。應(yīng)能針對各類信號的特點選擇不同的采樣頻率,確保不影響原系統(tǒng)運行的實時性。
2.故障設(shè)置。能夠根據(jù)用戶要求靈活設(shè)置各類故障,可選擇的故障盡可能包括列車運行控制系統(tǒng)的各種常見故障,如應(yīng)答器丟失、應(yīng)答器報文錯誤、車載電源電壓不穩(wěn)、干擾故障、通信錯誤故障、軌道電路損壞等。
3.故障注入。按用戶要求在特定的時間向特定的故障位置注入規(guī)定數(shù)量的故障。用戶可以在故障注入過程中隨時監(jiān)視故障注入情況。
4.試驗結(jié)果保存分析。能夠直觀顯示故障注入情況,并以文件形式保存試驗數(shù)據(jù),以評測列車運行控制系統(tǒng)的各項性能指標。此外,故障注入系統(tǒng)應(yīng)具有較好的可擴展性,以便系統(tǒng)功能升級。
根據(jù)以上要求,由VC++語言實現(xiàn)軟件的編寫。設(shè)計故障注入工具包含數(shù)據(jù)庫操作模塊,實現(xiàn)故障案例的導(dǎo)入與編輯;故障注入模塊,包括選取案例的注入發(fā)送按鈕與故障注入撤銷按鈕;案例分析顯示模塊,截獲TCC、RBC、車載的數(shù)據(jù)信息實時顯示,并生成列車速度-距離模式曲線。
通過對列車運行控制系統(tǒng)的調(diào)研分析,歸納部分故障案例,建立故障案例數(shù)據(jù)庫。故障案例數(shù)據(jù)庫作為故障注入軟件的支撐數(shù)據(jù),可直接從工具中調(diào)用和實施后續(xù)的故障注入仿真實驗,并可以方便地進行改進和完善。
故障案例數(shù)據(jù)庫格式:案例編號→故障位置及描述→目標系統(tǒng)期望行為響應(yīng)。
故障案例示例如下。
1.區(qū)間軌道電路:進路前方軌道電路故障,鎖閉進路狀態(tài)為“使用”,RBC將向列車發(fā)送緊急停車信息CEM;車載設(shè)備生成一個縮短行車許可SMA并向RBC發(fā)送確認已執(zhí)行有條件緊急停車信息CEM,列車根據(jù)縮短行車許可SMA實施制動。
2.道岔:道岔失去表示,聯(lián)鎖無法辦理進路,司機將根據(jù)調(diào)度命令以目視行車模式 (OS)進行接發(fā)車作業(yè);列車進入完全監(jiān)控區(qū)段并獲得新行車許可后,列車將自動轉(zhuǎn)換到完全監(jiān)控模式 (FS)行車。
3.RBC:RBC設(shè)備因故障停止工作,冗余設(shè)備正常啟用繼續(xù)工作;冗余設(shè)備故障,列車中斷與RBC連接,通信超時后實施制動,降級運行;故障RBC刪除列車注冊信息,列車與RBC重新建立連接并獲得行車許可后轉(zhuǎn)換到C3控車。
4.無線通信設(shè)備:GSM-R單元故障損壞,RBC與列車中斷連接,列車實施最大常用制動,降級運行,待重新連接后轉(zhuǎn)入C3行車。
5.車載設(shè)備:車載無線通信設(shè)備單元故障,列車實施制動,運行速度降為C2允許速度后轉(zhuǎn)為C2模式行車。
6.應(yīng)答器:在期望窗口之前發(fā)現(xiàn)期望的應(yīng)答器組或者應(yīng)答器組的數(shù)據(jù)不可讀,車載設(shè)備只向RBC發(fā)送位置報告,并報告應(yīng)答器故障信息而不做其他應(yīng)急反應(yīng),位置報告將還使用原來的位置參考應(yīng)答器。列車通過了一組錯誤方向的應(yīng)答器組,列車將實施緊急制動停車。
以道岔失表故障為例,選取道岔失去表示故障進行系統(tǒng)響應(yīng)測試。當車站接、發(fā)車進路還未辦理或鎖閉時,站內(nèi)道岔發(fā)生失去表示的故障,車站聯(lián)鎖設(shè)備將無法辦理接發(fā)車進路,司機將根據(jù)調(diào)度命令以目視行車模式 (OS)進行接發(fā)車作業(yè)。列車以目視行車模式 (OS)出站。
3.2.1 設(shè)置測試故障案例
運行故障注入軟件后,導(dǎo)入故障案例數(shù)據(jù)庫,選擇所要注入的故障,對目標系統(tǒng)實施故障注入。點擊“故障注入”按鈕之后,仿真系統(tǒng)被注入指定故障案例,即道岔模塊發(fā)生失表故障,此時其余模塊正常工作,并根據(jù)相應(yīng)的故障-安全機制作出反應(yīng),并反饋到故障注入模塊的分析區(qū)顯示。
3.2.2 故障案例分解
對于道岔失去表示故障,列控仿真系統(tǒng)應(yīng)檢測到故障并作如下響應(yīng):發(fā)車進路道岔故障聯(lián)鎖無法辦理進路,人工確認道岔位置;在請示調(diào)度員后,司機按壓“越行”按鈕;車載設(shè)備向RBC報告后自動轉(zhuǎn)入OS,然后按固定限速40 km/h監(jiān)控列車運行。列車越過出站信號機,向區(qū)間方向運行。當列車前端通過SN信號點處應(yīng)答器組后,列車將向RBC報告列車位置。只有當新的進路占用與列車報告位置的時間間隔在6 s(待定)以內(nèi)時,RBC才會給列車發(fā)送完全監(jiān)控行車許可。否則列車將繼續(xù)以O(shè)S向39信號點運行。列車進入完全監(jiān)控區(qū)段并獲得新行車許可后,將自動轉(zhuǎn)換到完全監(jiān)控模式 (FS)行車。列車運行示意如圖3所示。
圖3 列車運行示意圖
3.2.3 實驗分析
車站聯(lián)鎖發(fā)現(xiàn)采集不到相應(yīng)道岔的狀態(tài)信息后,即檢測到了道岔的故障信息,將進站信號機關(guān)閉,而RBC此時也根據(jù)聯(lián)鎖發(fā)送的進路信息,向列車發(fā)送緊急停車消息,列車經(jīng)過計算開始減速,并且列車計算結(jié)果可以在出站信號機前停車。在對比曲線中也可以看到,正常運行時列車是以140 km/h的速度通過車站,在故障注入后即開始減速,最終停車。如圖4和圖5所示,列車行車許可縮短緊急停車。
對該故障案例進行5次測試,測試記錄如表3所示。
表3 故障概率統(tǒng)計
測試結(jié)果表明,該故障注入工具可以有效地對仿真系統(tǒng)的安全功能進行測試驗證。經(jīng)過故障概率的大量實驗測試,表明該故障案例不會對系統(tǒng)造成致命傷害,仿真系統(tǒng)對于該故障案例已經(jīng)設(shè)置了處理機制,且功能完好。對于其他故障案例均進行了相關(guān)驗證,有效測試了基于HLA的列車運行控制仿真系統(tǒng)的故障處理機制及相關(guān)功能設(shè)計。
故障注入是一種有效的系統(tǒng)安全性能測試手段,不同的系統(tǒng)應(yīng)當采用相適應(yīng)的故障注入方法,針對列車運行控制系統(tǒng)的復(fù)雜性及特殊性,采用基于仿真的故障注入方法,為系統(tǒng)中的各個設(shè)備建立完整的故障測試案例數(shù)據(jù)庫,并逐條進行有關(guān)測試,經(jīng)試驗證明切實可行。本文以典型故障案例為例,結(jié)合道岔失表故障對列車運行控制仿真系統(tǒng)關(guān)鍵設(shè)備的故障-安全機制作出了功能驗證分析。通過基于仿真的故障注入驗證,提高了系統(tǒng)測試效率,降低了系統(tǒng)測試成本,對于真實列車運行控制系統(tǒng)的安全保證具有實際意義。
[1] 石君友,李鄭,駱明珠,陳帥.故障注入控制軟件的設(shè)計與實現(xiàn)[J] .測控技術(shù),2008,27(4):64-70.
[2] 王勝文,基于軟件的故障注入方法研究[D] .哈爾濱:哈爾濱工業(yè)大學(xué)學(xué)位論文,2005.
[3] JEAN ARLAT,MARTINE AGUERA,F(xiàn)ault Injection for Dependability Validation:A Methodology and Some Applications,IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,VOL.16.NO.2.FEBRUARY 1990
[4] Mealing S W,Hinsley W.System assurance by in-service reliability evaluation[C] .IEEE,2008
[5] 馮軒.軟件故障注入方法探究.計算機光盤軟件與應(yīng)用[J] .2010,16.
[6] 萬林,范明.列車運行控制系統(tǒng)仿真平臺的研究.鐵道通信信號[J] .2010,46(7):71-74.
[7] 張曙光.CTCS-3級列控系統(tǒng)總體技術(shù)方案[M] .北京:中國鐵道出版社,2008.