錢 航,黃 晨,路長剛,王曉鵬,亓俊卿
(北京宇航系統(tǒng)工程研究所,北京,100076)
載人火箭具有故障檢測能力,并在重大故障時可實施逃逸。故障檢測處理系統(tǒng)(以下簡稱為“故檢系統(tǒng)”)是承擔(dān)載人火箭故障檢測和逃逸控制的關(guān)鍵系統(tǒng),通過檢測火箭的重要飛行參數(shù),按事先確定的判據(jù)自動進行火箭故障判別,當(dāng)發(fā)現(xiàn)故障時向有關(guān)系統(tǒng)發(fā)出逃逸指令和中止飛行指令,迅速將載人飛船的返回艙和軌道艙帶離危險區(qū),利用飛船的返回著陸系統(tǒng)完成逃逸救生任務(wù)。正常飛行至120.4 s時完成備保拋逃逸塔動作,即若逃逸塔已分離則不動作,若未分離則發(fā)出逃逸塔分離指令。完成系統(tǒng)核心功能的是兩項關(guān)鍵等級為A級的箭上軟件:故障檢測處理飛行軟件和逃逸程序控制軟件。
故障檢測處理飛行軟件(以下簡稱為“故檢軟件”)是一個嵌入式的實時測控軟件,運行于火箭儀器艙中(如圖1所示)的故障檢測處理器上。
圖1 載人火箭結(jié)構(gòu)Fig.1 Basic Components of Manned Launch Vehicle
其工作時間為:從火箭起飛前30 min開始運行到船箭分離為止,大約40 min。正常時,從外部獲取火箭狀態(tài)信息(如:過載、姿態(tài)角、分離信號、關(guān)機信號、程序角等),按照火箭故障模式判別準則進行狀態(tài)判斷,按飛行時序發(fā)出相應(yīng)的指令信號;若火箭出現(xiàn)異常,則按判據(jù)要求發(fā)出“逃逸”等控制指令。
逃逸程序控制軟件(以下簡稱為“逃逸軟件”)是一個嵌入式的實時測控軟件,運行于火箭整流罩內(nèi)(如圖1所示)的逃逸程序控制器上,其工作時間為:從火箭起飛前30 min開始運行到整流罩分離為止,大約運行33 min。正常時,完成120.4 s備保拋逃逸塔的功能,即在120.4 s檢測逃逸塔是否分離,若分離則不動作,若未分離則執(zhí)行拋逃逸塔功能。在故障時,逃逸程序控制軟件接到逃逸信號后,根據(jù)運載火箭當(dāng)時的飛行狀態(tài)輸出相應(yīng)的逃逸時序信號給火工品裝置,實現(xiàn)逃逸功能。
為保證載人運載火箭的可靠性和安全性,確保航天員的生命安全和順利執(zhí)行飛行任務(wù),故障檢測和逃逸控制軟件可靠性設(shè)計是全箭工作的重點之一。該兩項軟件作為故檢系統(tǒng)的核心箭上軟件,在滿足功能性能要求外,也需要在硬件正常情況下,軟件不會誤報也不會漏報,這要求軟件具有良好的可靠性。故檢逃逸軟件開發(fā)周期較長,需要經(jīng)過需求分析、概要設(shè)計、詳細設(shè)計、程序編碼,編碼完成后需要進行代碼規(guī)則檢查、靜態(tài)分析、代碼審查、單元測試、配置項測試、第三方測試、系統(tǒng)聯(lián)試等測試驗證項目,錯誤和缺陷會滲透到每一個環(huán)節(jié)。另一方面,該箭上軟件隨型號使用周期較長,跨度達到十多年甚至更久,中間進行若干次重要更改,型號軟件人員也不斷更迭,需要對軟件可靠性及軟件質(zhì)量進行提高和監(jiān)管。因此,該箭上軟件可靠性設(shè)計就顯得尤為重要。
故障檢測處理飛行軟件是一個嵌入式的實時測控軟件,程序結(jié)構(gòu)設(shè)計采用樹狀結(jié)構(gòu)圖,包括主處理模塊、手動逃逸中斷、起飛中斷、遙測中斷、控制系統(tǒng)中斷、同步中斷等模塊,其中主處理模塊循環(huán)執(zhí)行,周期為20 ms,在軟件啟動時執(zhí)行;5個中斷為外部中斷,中斷產(chǎn)生時執(zhí)行。另外,為防止誤中斷影響軟件的運行,設(shè)計時鐘中斷、箭地中斷和錯誤中斷占用剩余3個中斷,這些中斷進入后即退出,不做實際處理。故障檢測處理飛行軟件功能框圖給出了整個軟件的調(diào)用關(guān)系,如圖2所示。
圖2 故障檢測處理飛行軟件功能框圖Fig.2 Functional Block Diagram of Flight Software for Fault Detection and Processing
故障檢測處理飛行軟件可靠性框圖描述功能模塊的處理邏輯關(guān)系,如圖3所示。
圖3 故障檢測處理飛行軟件可靠性框圖Fig.3 Reliability Block Diagram of Flight Software for Fault Detection and Processing
逃逸程序控制軟件是一個嵌入式的實時測控軟件,程序結(jié)構(gòu)設(shè)計采用樹狀結(jié)構(gòu)圖,包括主程序模塊、緊急關(guān)機處理模塊、拋逃逸塔處理模塊、三取二判定處理模塊、逃逸處理模塊、起飛中斷模塊、逃逸中斷模塊,其中主程序模塊循環(huán)執(zhí)行,無周期,在軟件啟動時執(zhí)行;4個中斷為1個內(nèi)部中斷,為高優(yōu)先級(時鐘中斷),其他為外部中斷,為低優(yōu)先級(中斷的查詢順序:起飛中斷、逃逸中斷、接收逃逸參數(shù)中斷),中斷產(chǎn)生時執(zhí)行。逃逸程序控制軟件功能框圖給出了整個軟件的調(diào)用關(guān)系,如圖4所示。
圖4 逃逸程序控制軟件功能框圖Fig.4 Functional Block Diagram of Escape Program Control Software
逃逸程序控制軟件可靠性框圖描述功能模塊的處理邏輯關(guān)系,如圖5所示。
圖5 逃逸程序控制軟件可靠性框圖Fig.5 Reliability Block Diagram of Escape Program Control Software
FMEA是型號產(chǎn)品研制基礎(chǔ),是做好單點故障、特性分類、3類關(guān)鍵特性等工作的前提。對故檢逃逸軟件進行全面識別3類關(guān)鍵特性并采取有效控制措施。
嚴酷度是指故障模式所產(chǎn)生后果的嚴重程度,為軟件FMEA分析的重要成果,一般分為4類,即Ⅰ類(災(zāi)難的)、Ⅱ類(嚴重的)、Ⅲ類(一般的)、Ⅳ類(輕微的)。嚴酷度等級引用于中國航天行業(yè)標準QJ3050A-2011《航天產(chǎn)品故障模式、影響及危害性分析指南》,軟件故障模式影響的嚴酷度等級,見表1。
表1 軟件故障模式影響的嚴酷度等級Tab.1 Severity Level of Software Failure Mode Effects
故檢軟件根據(jù)嚴酷度等級為Ⅰ類和Ⅱ類,得出關(guān)鍵項目清單見表2。
表2 故檢軟件關(guān)鍵項目清單Tab.2 Key Projects List of Flight Software for Fault Detection and Processing
逃逸軟件根據(jù)嚴酷度等級為Ⅰ類和Ⅱ類,得出關(guān)鍵項目清單見表3。
表3 逃逸軟件關(guān)鍵項目清單Tab.3 Key Projects List of Escape Program Control Software
根據(jù)型號可靠性設(shè)計規(guī)定,以及故檢系統(tǒng)“不漏逃、不誤逃”的要求,明確了作為箭上A級軟件的故檢逃逸軟件適用范圍,主要準則要求包括:
a)系統(tǒng)應(yīng)進行初步危險分析,明確系統(tǒng)級的危險事件,軟件研制人員應(yīng)參與系統(tǒng)的初步危險分析工作,可靠性與安全性要求應(yīng)在軟件研制任務(wù)書中明確提出;
b)軟件研制各階段均應(yīng)開展可靠性與安全性工作,將結(jié)果文檔化并保持一致性和可追溯性;應(yīng)在需求分析階段開展軟件需求的安全性分析和驗證工作;應(yīng)在設(shè)計階段開展軟件設(shè)計的安全性分析和驗證工作;應(yīng)在測試、系統(tǒng)聯(lián)試階段,針對需求分析、設(shè)計、實現(xiàn)階段及其它階段未分析或驗證的安全性內(nèi)容開展軟件安全性測試;
c)對于A級軟件,必須明確其冗余和容錯要求,并進行多版本程序設(shè)計,限于條件不能進行多版本程序設(shè)計時,應(yīng)采取其他技術(shù)措施以確保安全性及可靠性;
d)對于A級軟件,失效容限為2??筛鶕?jù)實際情況,采用軟硬件結(jié)合的方法達到容限目的;
e)軟件可靠性、安全性需求中必須包括對各種不期望事件加以適當(dāng)響應(yīng)的要求;
f)對于實時嵌入性關(guān)鍵軟件成份,應(yīng)通過采用適當(dāng)?shù)牟蓸又芷诤瓦m當(dāng)?shù)能浖ぷ鲿r序來保證其可靠性和安全性;
g)應(yīng)根據(jù)型號可靠性大綱和安全性大綱的要求,進行軟件FMEA和軟件安全性分析。
故檢逃逸軟件可靠性設(shè)計的本質(zhì)是在滿足總體任務(wù)書功能性能和遵循可靠性設(shè)計準則要求的前提下,在軟件研制周期內(nèi)使用各種方法來滿足軟件的可靠性要求。這些方法分為避錯設(shè)計、查錯設(shè)計、糾錯設(shè)計、容錯設(shè)計和余量設(shè)計。這5種設(shè)計方法貫穿在整個軟件研制周期。
故檢逃逸軟件采取了以下避錯設(shè)計實施方法:
a)嚴格按照軟件工程化的方法進行設(shè)計工作。在設(shè)計階段精心完成《需求規(guī)格說明》,并同具有豐富經(jīng)驗的需求專家和軟件可靠性專家一起分析、討論,細心劃分每一項功能;在編碼階段遵循《921工程軟件工程化技術(shù)標準》中C語言安全子集以及相關(guān)編程規(guī)范,嚴格依據(jù)《概要設(shè)計》和《詳細設(shè)計》完成軟件編碼。
b)加強軟件頂層設(shè)計。軟件設(shè)計充分估計接口間的各種故障,并采取相應(yīng)措施;軟件設(shè)計采用結(jié)構(gòu)化或面向?qū)ο蟮脑O(shè)計方法,盡量采用重用模塊,提高軟件的模塊化水平,模塊要高內(nèi)聚、低耦合,注意模塊的扇入扇出數(shù)。
c)加強軟件編碼變量與邏輯避錯能力。
1)避免使用位判斷,而是將位信息轉(zhuǎn)化為字節(jié)信息,避免了因某一位跳變而引起誤判,比如,故檢軟件發(fā)送給逃逸軟件的逃逸參數(shù)中推力擋板是否打開只有兩個狀態(tài):打開與不打開,為避免位信息出錯,將該狀態(tài)位轉(zhuǎn)化為字節(jié)信息,僅該字節(jié)前4位或后4位推力擋板對應(yīng)數(shù)據(jù)位為“1010”時,表示Ⅲ象限或 Ⅳ象限控制發(fā)動機推力擋板打開;
2)不用全0或全1表示邏輯零或邏輯一,而是用有意義的46H和31H(數(shù)字之后加H或之前加0x為十六進制)來表示,比如,逃逸軟件中起飛標志、緊急關(guān)機標志、拋塔標志、逃逸標志、檢測密封板解鎖信號、檢測返回艙分離信號等所有箭上使用的標志和信號均采用46H/31H表示動作無效/有效;
3)不用0或1表示邏輯假或邏輯真,而是用有意義的0xAA和0x55來表示,比如,故檢軟件在代碼最開始就進行宏定義#define false 0xAA及#define true 0x55,相關(guān)函數(shù)中含有大量關(guān)鍵狀態(tài)邏輯判斷,通過用有意義的0xAA和0x55替換后,避免了0/1意外跳變后重大狀態(tài)誤判;
4)常數(shù)和變量的標識分開,代碼中的數(shù)字量用常量取代,比如,故檢軟件在代碼最開始采用將常量進行集中宏定義,再對全局變量進行集中定義及初始化,代碼中的數(shù)字量諸如時序T1-、T1+、T2-、T2+等用常量代替;
5)軟件低空逃逸處理邏輯采用通用化代碼,故檢逃逸軟件原固定III象限控制發(fā)動機點火變更為II象限或III象限控制發(fā)動機點火,為避免采用兩套代碼實現(xiàn)該邏輯,也為避免后續(xù)增加象限的更改需求,故檢逃逸軟件均采用通用化代碼設(shè)計,一套代碼能夠適應(yīng)4個象限,該項更改在CZ-2F Y12載人飛行任務(wù)中得到驗證;
6)故檢軟件要求實時檢測故障,避免漏檢,采用周期循環(huán)工作制,每個周期設(shè)置為20 ms;
7)為防止故檢軟件飛行時間超過船箭分離一定時間后時鐘計數(shù)器溢出,在時鐘計數(shù)器到達該時間后將其清零。
d)加強軟件測試。對程序進行了多次代碼走查,并進行了靜態(tài)測試、單元測試和確認測試,盡可能提高語句和分支覆蓋率,對某些確實難以測到的語句和分支均做了詳細的說明;完成編碼和開發(fā)方測試后提交具備資質(zhì)的第三方進行測試。
e)制定了軟件問題報告單、修改記錄單和試驗記錄,控制住軟件的修改過程。
f)編制了模塊關(guān)系樹形圖,對程序結(jié)構(gòu)一目了然。
軟件設(shè)計注意數(shù)據(jù)有效范圍,進行數(shù)值運算時對關(guān)鍵數(shù)據(jù)應(yīng)進行合理性判斷,記錄故障并采取故障隔離的處理措施。比如,故檢軟件對于故障判據(jù)信號超值域、控制通信故障和遙測故障這3種異常,會通過對相關(guān)信號多次檢測判出,記錄該故障后切換判據(jù)。
在設(shè)計接口時,對數(shù)據(jù)通訊首先確定數(shù)據(jù)傳輸協(xié)議,然后根據(jù)確定的數(shù)據(jù)傳輸協(xié)議,在數(shù)據(jù)傳輸之前對數(shù)據(jù)傳輸通道進行正確性檢測,以確保數(shù)據(jù)傳輸?shù)恼_性;數(shù)據(jù)傳輸開始后,通過奇偶校驗方法來驗證數(shù)據(jù)傳輸?shù)恼_性。
逃逸參數(shù)是故檢軟件發(fā)給逃逸軟件的數(shù)據(jù),關(guān)系到發(fā)射臺及低空逃逸的安全性。因此,逃逸參數(shù)中控制發(fā)動機點火時間、控制發(fā)動機點火方向、推力擋板是否打開這3項數(shù)據(jù)均是3遍重傳,并增加了2個字節(jié)作為校驗和。逃逸軟件接收該數(shù)據(jù)后會依次進行以下多重查錯方法:是否是完整1幀數(shù)據(jù)、校驗和是否相等、數(shù)據(jù)三取二、逃逸時間合理性判斷、擋板方向的合理性判斷,確保接收到正確的逃逸參數(shù)。該項更改在CZ-2F Y12載人飛行任務(wù)中得到驗證。
為避免干擾信號影響故障判斷的準確性,開關(guān)量信號和模擬量信號都采用了以一定時間為間隔多次采集,采集到數(shù)據(jù)后再進行可靠性判斷的方法。比如,故檢軟件中對A/D信號和開關(guān)量信號的讀入處理,為防止數(shù)據(jù)有誤,各個參數(shù)均采集3遍。
所有中斷觸發(fā)的功能在響應(yīng)中斷后還要對觸發(fā)信號進行確認,以免誤動作。比如,故檢軟件中所有中斷處理函數(shù)中還要對觸發(fā)標志或指令連續(xù)讀入3遍確認后再執(zhí)行。
為防止誤逃或漏逃,故障檢測是在連續(xù)檢測到3次同樣的故障時才發(fā)出報警或故障。
軟件中做了相關(guān)的容錯設(shè)計。如:
a)所有的故障、報警門限值采用三冗余的方法,確保查到數(shù)據(jù)的準確性;
b)由于故檢軟件一定時間之前的程序角為預(yù)置,采用3套相同數(shù)據(jù)冗余,確保正確;
c)某些重要的變量有兩個備份,做三取二判定后才使用;
d)對串口狀態(tài)進行限時判定,若硬件出問題,軟件能夠跳出該功能,避免停滯;
e)所有中斷必須進行誤中斷處理,即進入中斷后立即返回。
在遵從可靠性準則過程中,軟硬件結(jié)合共同形成整體可靠性提升。故檢逃逸軟件都使用軟件級三冗余設(shè)計,假設(shè)在飛行中1個單機(含軟件)發(fā)生故障,系統(tǒng)能夠通過比較、判斷、篩選掉異?;蝈e誤的輸出,仍滿足系統(tǒng)功能要求;故障檢測和逃逸控制軟件的各重要變量、標志、故障限、報警限均使用3冗余、3中取2判定等方法確保軟件可靠性。同時,對軟硬件性能也做了余量設(shè)計。
a)故檢軟件三冗余設(shè)計。
逃逸軟件在確定方案時,既要保證軟件可靠性指標的要求,又不要使系統(tǒng)過于復(fù)雜,采用了軟件三冗余和接口冗余的設(shè)計方案。確定設(shè)計方案為故檢軟件相互獨立冗余工作在3套CPU主機板,CPU使用了經(jīng)多次飛行考核的成熟技術(shù),而重要接口,例如對姿態(tài)角、過載信號、加速度信號、捷聯(lián)信號等模擬量的采集采用三冗余,對分離信號、指令輸入信號及切換信號的錄取也采用了三冗余的技術(shù),對指令輸出采用四重邏輯設(shè)計,輸出級采用串并結(jié)構(gòu),控制級與輸出級隔離,采用錯位控制等方法,確保防誤報以保證火箭正常時的安全飛行,不致造成由于故檢軟件誤報而造成飛行失敗。對于起飛、緊急關(guān)機、手動逃逸3個非常重要的中斷源采用三套接收,三取二判別等措施以保證中斷的可靠性。
b)逃逸軟件三冗余設(shè)計。
逃逸軟件是為了在火箭故障時,根據(jù)逃逸指令發(fā)出火工品指令,與飛船系統(tǒng)協(xié)調(diào)完成逃逸時序控制的關(guān)鍵軟件。由于其使用上的特點,系統(tǒng)要求正常動作可靠性為0.999,不誤動作的可靠性為0.9999。為此,根據(jù)可靠性指標及功能要求,在設(shè)計上,首先考慮到高可靠性要求,確定設(shè)計方案為逃逸軟件相互獨立冗余工作在3套CPU主機板,火工品時序輸出電路采取三中取二冗余表決輸出形式;同時為了滿足上述的設(shè)計思想,在電源設(shè)計上使3塊逃逸軟件CPU板相互獨立供電,火工品輸出表決電路采用并聯(lián)冗余供電模式,從而構(gòu)成一個系統(tǒng)級冗余。
c)性能余量設(shè)計。
軟件設(shè)計考慮了空間余量(軟件的內(nèi)存余量不小于20%)和時間余量(軟件運行周期的時間余量不小于20%),合理安排各功能的處理順序。
根據(jù)可靠性設(shè)計方法對FMEA識別出的關(guān)鍵項目制定控制措施,表4和表5分別給出故檢逃逸軟件控制措施。
表4 故檢軟件關(guān)鍵項目控制措施Tab.4 Key Projects Control Measures of Flight Software for Fault Detection and Processing
表5 逃逸軟件關(guān)鍵項目控制措施Tab.5 Key Projects Control Measures of Escape Program Control Software
識別出的故檢逃逸軟件嚴酷度等級為Ⅰ類和Ⅱ類關(guān)鍵項目,均應(yīng)用了可靠性設(shè)計方法提供預(yù)防、糾正措施,證明了可靠性設(shè)計方法的正確性和完備性。
通過以參與載人火箭飛行任務(wù)的故障檢測和逃逸控制軟件作為主要研究對象,先對軟件功能及可靠性邏輯進行分析,通過FMEA識別出可靠性關(guān)鍵項目,提出軟件可靠性設(shè)計準則,并以具體軟件實現(xiàn)為例說明可靠性設(shè)計的5種方法,最后根據(jù)可靠性設(shè)計方法為軟件關(guān)鍵項目提供控制措施,證明了可靠性設(shè)計方法的正確性和完備性。