張 恬
(中鐵第一勘察設(shè)計(jì)院集團(tuán)有限公司,西安 710043)
計(jì)算機(jī)聯(lián)鎖(CBI,Computer Based Interlocking)系統(tǒng)通過技術(shù)手段建立信號機(jī)、軌道電路以及進(jìn)路上道岔之間的相互制約關(guān)系[1]。隨著鐵路信號工程的集成化發(fā)展,CBI 系統(tǒng)接入和控制的設(shè)備種類不斷增加。目前,城市軌道交通的CBI 系統(tǒng)增加了屏蔽門、防淹門、車庫門等設(shè)備與接口,高速鐵路的CBI 系統(tǒng)增加了與列控中心(TCC)的接口[2],以及與相鄰車站CBI 系統(tǒng)[3]等的信息交互接口。不斷擴(kuò)展的功能要求使得CBI 系統(tǒng)軟件復(fù)雜度日益增加,給CBI系統(tǒng)的軟件開發(fā)和維護(hù)帶來很大的壓力。
CBI 系統(tǒng)應(yīng)工作可靠,符合故障-安全原則,滿足GB/T 28809-2012 規(guī)定的SIL4 安全等級要求[4];其安全性除了依靠采用冗余結(jié)構(gòu)的系統(tǒng)硬件,還應(yīng)注重其軟件的安全性[5]。
高安全性應(yīng)用程序開發(fā)環(huán)境(SCADE,Safety Critical Application Development Environment)是由法國研制的一個(gè)高安全性應(yīng)用程序開發(fā)環(huán)境,提供了一套由模型驅(qū)動(dòng)的軟件開發(fā)工具包。目前,SCADE被廣泛應(yīng)用于高安全性需求的應(yīng)用領(lǐng)域,例如航空、軌道交通、核電等。近年來,SCADE 開始應(yīng)用于國內(nèi)鐵路行業(yè)信息系統(tǒng)開發(fā)。文獻(xiàn)[6] 對基于SCADE的安全軟件開發(fā)方法展開研究,文獻(xiàn)[7] 研究并實(shí)現(xiàn)了基于SCADE 的聯(lián)鎖列控一體化系統(tǒng),文獻(xiàn)[8] 提出采用SCADE 實(shí)現(xiàn)閉塞分區(qū)邏輯功能的建模。
本文基于SCADE 的軟件開發(fā)流程,依據(jù)CBI 系統(tǒng)的軟件需求規(guī)約,研究利用SCADE 進(jìn)行CBI 系統(tǒng)軟件的開發(fā)。
SCADE 是一種由模型驅(qū)動(dòng)的軟件開發(fā)方法,軟件開發(fā)過程圍繞形式化模型展開。為保證模型滿足功能需求,在各個(gè)開發(fā)階段可對所建立的模型進(jìn)行仿真和驗(yàn)證,避免功能實(shí)現(xiàn)出現(xiàn)偏離。
基于SCADE 的軟件開發(fā)流程見圖1 所示。
圖1 基于SCADE 的軟件開發(fā)流程
SCADE 提供了一組支持工具,覆蓋從軟件需求分析到代碼實(shí)現(xiàn)、驗(yàn)證測試全過程的軟件開發(fā)工作,方便開發(fā)人員驗(yàn)證模型實(shí)現(xiàn)的正確性。其中,SCADE Architect 為系統(tǒng)建模與驗(yàn)證工具,SCADE Suite 為基于模型的控制軟件建模、仿真、驗(yàn)證和自動(dòng)代碼生成工具,SCADE Test 為模型級自動(dòng)化測試工具,SCADE Simulation MTC 為模型覆蓋率測試和分析工具。SCADE 可根據(jù)經(jīng)過驗(yàn)證的模型自動(dòng)生成代碼,支持自動(dòng)化單元測試。因此,在SCADE 環(huán)境下,軟件開發(fā)的核心工作是軟件需求規(guī)約和設(shè)計(jì),軟件開發(fā)人員采用直觀的、易于理解的圖形化方式完成需求建模和軟件設(shè)計(jì);此外,集成測試和系統(tǒng)測試是通過基于軟件結(jié)構(gòu)的覆蓋率分析和嚴(yán)格的形式化驗(yàn)證實(shí)現(xiàn),可保證軟件實(shí)現(xiàn)的正確性。
CBI 系統(tǒng)的主要任務(wù)是監(jiān)視和控制進(jìn)路上相關(guān)設(shè)備按照一定約束和程序動(dòng)作,進(jìn)而自動(dòng)完成進(jìn)路控制。信號機(jī)、道岔、軌道電路是主要室外設(shè)備,室內(nèi)設(shè)備主要包括人機(jī)交互層、聯(lián)鎖控制層及I/O 接口層[9]。CBI 通過車站室外現(xiàn)場設(shè)備、TCC 及調(diào)度集中(CTC)等其它子系統(tǒng)提供的信息進(jìn)行邏輯運(yùn)算,再向車站室外控制設(shè)備輸出控制指令,并將安全信息傳送給TCC 等其它子系統(tǒng)。CBI 系統(tǒng)軟件基礎(chǔ)功能描述見表1。
表1 CBI 系統(tǒng)軟件基礎(chǔ)功能
CBI 系統(tǒng)分為邏輯運(yùn)算層、平臺層、子系統(tǒng)接口層,聯(lián)鎖軟件的開發(fā)主要是實(shí)現(xiàn)邏輯運(yùn)算層。
對于具體的CBI 車站,車站配置的其它信號設(shè)備或有不同,如CTC、TCC、信號集中監(jiān)測(CSM)系統(tǒng)等。為此,除了實(shí)現(xiàn)通用基礎(chǔ)功能的處理邏輯,還需定義其具體的外部系統(tǒng)接口邏輯,形成適用于本站工程環(huán)境的CBI 邏輯。CBI 系統(tǒng)的基本結(jié)構(gòu)如圖2 所示。
圖2 CBI 系統(tǒng)基本結(jié)構(gòu)示意
CBI 系統(tǒng)由室外現(xiàn)場設(shè)備的輸入驅(qū)動(dòng),且需要與CTC、TCC 進(jìn)行實(shí)時(shí)通信,是一種典型的面向數(shù)據(jù)流和變化傳播的反應(yīng)式系統(tǒng)。對于這樣的系統(tǒng),系統(tǒng)建模不僅需要考慮系統(tǒng)各個(gè)狀態(tài)間的轉(zhuǎn)換關(guān)系,還需考慮在同一步驟中狀態(tài)與環(huán)境之間復(fù)雜的約束關(guān)系,CBI 系統(tǒng)的總體功能模型如圖3 所示。
圖3 CBI 系統(tǒng)總體功能模型
總體功能采用層次化結(jié)構(gòu)設(shè)計(jì),按照基礎(chǔ)功能可劃分為進(jìn)路控制模塊、信號控制模塊、道岔控制模塊,各個(gè)子功能模塊間相互獨(dú)立。邏輯處理模塊通過對子功能模塊接口函數(shù)的調(diào)用來完成各模塊的輸入、輸出和邏輯處理,實(shí)現(xiàn)聯(lián)鎖基礎(chǔ)邏輯功能。
SCADE 提供數(shù)據(jù)流圖和安全狀態(tài)機(jī)2 種圖形化建模方法[9-10]。其中,數(shù)據(jù)流圖是一種基于LUSTRE語言的建模語言,以圖形化方式展現(xiàn)數(shù)據(jù)在系統(tǒng)中的流動(dòng)和處理過程,主要用于連續(xù)性系統(tǒng)的建模。安全狀態(tài)機(jī)是一種基于同步假設(shè)的可視化建模語言,能直觀的描述系統(tǒng)控制流和邏輯判定功能,主要用于離散系統(tǒng)的建模。
以進(jìn)路鎖閉模塊為例,在SCADE 中建立其對應(yīng)的數(shù)據(jù)流圖模型,包括“鎖閉檢查”和“鎖閉執(zhí)行”2 部分。其中,進(jìn)路鎖閉檢查數(shù)據(jù)流見圖4。
圖4 進(jìn)路鎖閉檢查數(shù)據(jù)流
在鎖閉條件檢查階段,重復(fù)檢查進(jìn)路上各個(gè)控制對象的狀態(tài),要求軌道電路區(qū)段處于空閑狀態(tài)、所有道岔位置正確、本咽喉區(qū)沒有建立敵對進(jìn)路,且另一咽喉區(qū)也沒有建立迎面敵對進(jìn)路。在圖4 中,輸入的現(xiàn)場道岔、敵對信號、道岔及照查數(shù)據(jù),分別 由CheckSecZy、Check Opp Signal Open、Check Switch Position 完成邏輯運(yùn)算后,輸出結(jié)果Lock Con;若Lock Con=ture,表示滿足進(jìn)路鎖閉條件;反之,表示進(jìn)路鎖閉條件不滿足。
鎖閉執(zhí)行功能的狀態(tài)圖如圖5 所示,包含初始狀態(tài)(init)、進(jìn)路鎖閉成功(RouteLockSucc)、進(jìn)路鎖閉失?。≧outeLockfail)3 個(gè)狀態(tài)。
圖5 進(jìn)路鎖閉執(zhí)行功能的狀態(tài)
當(dāng)進(jìn)路鎖閉條件滿足,轉(zhuǎn)移到RouteLockSucc 狀態(tài),同時(shí)將進(jìn)路標(biāo)志設(shè)置為信號開放(opening),并將信號機(jī)、道岔、區(qū)段鎖閉到規(guī)定位置,發(fā)送進(jìn)路鎖閉成功命令(LockSuccess);當(dāng)進(jìn)路鎖閉條件不滿足(LockCon==false),則轉(zhuǎn)移到RouteLockfail狀態(tài),發(fā)送進(jìn)路鎖閉失敗命令。
SCADE Simulation MTC 可檢查和分析狀態(tài)圖和數(shù)據(jù)流圖模型具體實(shí)現(xiàn)的需求以及未覆蓋的需求。以聯(lián)鎖邏輯模型中的任意節(jié)點(diǎn)為例,對該節(jié)點(diǎn)進(jìn)行MTC 覆蓋率分析。當(dāng)節(jié)點(diǎn)插裝完畢后,運(yùn)行一個(gè)周期,得到該節(jié)點(diǎn)初始測試用例結(jié)果的MTC 覆蓋率分析情況。按照MC/DC 覆蓋準(zhǔn)則,需增加7 個(gè)輸入條件分別有且僅有一個(gè)為假的情況,依據(jù)提示信息增加或修改測試案例,最終使得覆蓋率達(dá)到100%。測試結(jié)果如圖6 所示。
圖6 SCADE Suite 測試結(jié)果
SCADE Suite 中KCG 工具能夠自動(dòng)生成聯(lián)鎖系統(tǒng)工程的C 語言代碼,如圖7 所示。C 語言代碼覆蓋系統(tǒng)模型的所有輸入、輸出和功能邏輯,保證模型與代碼的一致性。
圖7 SCADE Suite 中KCG 工具自動(dòng)生成的C 語言代碼文件
傳統(tǒng)的CBI 軟件開發(fā)方法中,需求規(guī)約、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)多為自然語言描述,易出現(xiàn)定義模糊和二義性問題,且軟件開發(fā)以耗時(shí)費(fèi)力的代碼編寫和測試為主,代碼的準(zhǔn)確性和可讀性難以保證,加重后期維護(hù)的難度。此外,單元測試和集成測試需要借助第三方驗(yàn)證工具和編寫大量測試用例,工作量大,存在驗(yàn)證不充分的問題。
SCADE 提供的開發(fā)工具涵蓋需求管理、模型建立、模型驗(yàn)證、代碼生成、驗(yàn)證測試全過程,開發(fā)過程清晰、直觀、連貫;利用SCADE 開發(fā)軟件,開發(fā)工作的重點(diǎn)集中在前期階段,且確認(rèn)工作與開發(fā)過程能夠同步進(jìn)行,支持V 模型軟件快速開發(fā)模式,幫助開發(fā)人員有效管控軟件開發(fā)風(fēng)險(xiǎn);SCADE 代碼生成器可快速產(chǎn)生面向工程的C 語言代碼,自動(dòng)生成的代碼規(guī)范、可讀性好,且可追溯。
經(jīng)過初步測試驗(yàn)證,利用SCADE 工具開發(fā)的CBI 系統(tǒng)軟件功能符合預(yù)期,可大幅縮短開發(fā)時(shí)間。