劉 波,李 靜,朱金慧
(中國人民解放軍63796部隊,西昌,615000)
航天發射試驗任務中,運載火箭飛行中速度、位置等實時狀態在測控系統實時顯示,但是其內部各系統的運行狀態不可知,直接影響對火箭飛行狀態的評判。航天發射試驗任務快速評估系統(簡稱:快速評估系統),就是從火箭起飛開始,實時收集并實時判定飛行數據及航天器入軌情況,完成對飛行關鍵事件、各系統工作情況、運載火箭飛行情況及飛行任務結果的分析及故障定位,依據評定準則,得出飛行任務的快速分析評定結論[1]。
快速評估系統實現了飛行數據實時判讀、智能評估、自動報表,提高領域專家分析評定的效率和質量,是一款準實時軟件,其實時數據驅動的自動判讀、智能評估、實時顯示是其重點關鍵技術,對于其它實時軟件的設計與實現具有重要參考價值。
快速評估依據實時飛行數據對火箭飛行情況進行評估,其核心是劃分層次結構及構建判斷矩陣。對運載火箭飛行結果的評估分解為對分系統的評估,對分系統的評估進一步分解為對設備/子系統和關鍵參數(具有決定性指標)的評估,從而形成自上而下的按層次逐層支配的關系。
分系統、設備/子系統、火箭(關鍵)參數統稱為評估對象,具有層次性結構,利用組合模式建立系統評估模型[2],如圖1所示。

圖1 評估對象模型示意Fig.1 A Schematic for Evaluation Object Model
快速評估系統硬件組成包括接口微機、數據庫服務器、數臺評估終端、網絡打印等,通過任務IP網與中心機通信。系統采用典型3層Client/Server結構設計[3],數據層提供來自于網絡的實時飛行數據和來自于數據庫的參數判讀規則、系統評估規則及其它各類基本信息;功能層提供各類評估業務模型,包括參數及其判讀模型、子系統及其評估模型、飛行時序事件模型、飛行結果評估模型;表示層提供人機交互接口,包括任務管理、評估規則管理、數據管理和實時評估等界面,如圖2所示。

圖2 快速評估系統邏輯結構Fig.2 Logic Architecture of the Fast Evaluation System
對各評估對象的分析評估歸根結底是對火箭參數的分析判讀,數據是進行評估的基礎。系統從中心機接收數據處理為分類數據,再分發到每個參數成為其當前值(有些參數還需要系統進一步計算處理才能得到),參數對當前值判讀得到其判讀結果,然后子系統、系統等評估要素根據評估模型進行評估得到評估結果。軟件界面UI實時顯示參數當前值、數據曲線和判讀結果以及分系統、關鍵動作等評估對象的評估結果。系統數據流視圖如圖3所示。

圖3 數據流視圖Fig.3 Data Flow Diagram
運載火箭參數較多(一般2000個以上,某些型號多達5000余個),采樣頻率較高(至少10 Hz),如果每接收到一包網絡實時數據后都要完成解算、處理、判讀、評估、顯示等工作,整個處理周期耗時較長,必然影響下一包數據的接收,因此需要采取異步調用或多線程技術對數據處理流程進行動態解耦。
根據系統工作特點,實時數據評估可分為網絡接收解算數據、實時數據評估、更新顯示界面3個步驟,分別工作在 3個不同的工作線程,實現動態解耦,具體實現方法如下:
a)數據管理器增加一個鏈表用于緩存內部接口送來的數據,稱為待處理數據鏈表;
b)內部接口接收解算中心機數據后,將數據提交給數據管理器,數據管理器將數據緩存到待處理數據鏈表中立即返回,此時內部接口準備好接收下一包中心機數據;
c)創建一個輔助線程用于驅動整個實時評估業務過程,該線程循環檢查待處理數據鏈表,若有數據,從鏈表中取出、處理、分發,進而驅動參數判讀和(子)系統評估,但基本不直接更新界面(個別情況例外);
d)主線程設置定時器周期更新界面,其處理序列如圖4所示。

圖4 多線程下的實時評估序列Fig.4 Multi-thread Real-time Evaluation Sequence Diagram
e)綜上,待處理數據鏈表為兩個線程所共享,根據多線程工作原則,需要對鏈表加鎖同步操作以避免沖突[4],如圖5所示。

圖5 待處理數據鏈表多線程同步處理Fig.5 Multi-threaded Synchronization Processing of Pending Data Linked List
火箭飛行時序是火箭飛行過程中發出的時間程序指令集合,是根據火箭飛行狀態實時計算后發出的浮動基準時間指令,和起飛信號一起,組成飛行時序的基準指令。時串是以箭機發出的時序信號為基礎,按以時序時間為基準的預定時間發出步序和時串控制信號,以引爆和控制相應火工品和電磁閥門等受控對象,控制火箭各個飛行段的動作。當特定指令發生,火箭參數的動態特性將會發生變化,一個或多個評估對象將被評估。例如 tk1為箭載計算機發出的一級關機信號,當其發生時,火箭一級相關參數將停止自動判讀,二級相關參數將啟動判讀,同時對火箭各分系統一級飛行段工作情況進行評估。
火箭時序時串指令的特性在 C#中使用事件(event)類型進行描述,而且使用事件類型之后,可應用觀察者模式對參數判據改變、啟動評估等功能進行設計,降低對象間的耦合性,將靜態的組合關系變為運行時的動態組合關系。
系統實現了兩種實時事件,一種是特定類別事件,依賴于多個參數或某一類別參數,中心機提供的數據包括遙測、外測、安控、通信等多種類別信息,不同類別的信息按表進行組織,特定類別信息的出現,本身代表現實事件,如衛星入軌參數出現表明星箭已經分離并且初軌已經確定,另一種是時序時串發生事件,這類事件依賴于單個具體參數。時序時串發生事件的生成算法如圖6所示。數據管理器向參數分發數據時,調用參數的新數據到來響應函數,根據參數的不同類別,新數據到來響應函數有不同行為,時序時串參數首先檢查新值與其當前值是否一致,如果不一致,則通過時序時串表來檢查該值是否是一個有效的時序時串,如果是,則設置為當前值,并激發時序時串發生事件,否則不予處理。

圖6 時序時串發生事件生成算法Fig.6 Timing Sequence Generation Algorithm
火箭參數在飛行過程中通常具有動態特性,不同時段其范圍要求不同,可以用參數的分時段判據描述,一般表示為 JC={P,Tb,Te,Max,Min},各項要素說明如表1所示。

表1 判據要素說明表Tab.1 Criterion Elements Specification
按200個關鍵參數、每個參數平均10條分時段判據計,則規則庫多達2000條記錄。若每個參數每個數據判讀均查詢規則庫,數據采樣頻率計10 Hz,則每秒需平均遍歷記錄1萬條。這種額外的消耗對實時系統非常不利。因此提高判據調度和參數判讀的效率是提高系統實時性的關鍵。
系統采用基于時間同步的參數判據調度算法,在恰當時機為每個參數指定判據,從而使參數判讀過程中無需查詢規則庫,提高效率,算法序列如圖7所示。

圖7 參數判據調度算法序列圖Fig.7 Parameter Criterions Scheduling Algorithm Sequence Diagram
算法主要包括4步:
a)初始化判據集合。
程序初始化階段,數據管理器從參數判讀規則庫中載入判據,并初始化 3個集合,鏈表List<JC>toLoadList用于按Tb升序排列已有確定的開始時刻的判據,鏈表List<JC>toUnloadList用于按Te升序排列已有確定的結束時刻的判據,字典Dictionay<RocketParam,List<JC>>tsDict用于存放與特定時序時串相關的判據鏈表。
b)更新判據集合。
當時序時串事件發生時,數據管理器根據該時序時串參數更新tsDict中相應的Tb值和/或Te值,并更新到toLoadList和toUnloadList中。
c)基于時間同步的判據調度。
在實時評估線程中,數據管理器處理每一包數據時,先獲取飛行時間fTime,遍歷toUnloadList,卸載Te值小于fTime的所有判據,并從toUnloadList中刪除;toLoadList類似處理。
d)數據分發和判讀。
依次調用參數的新數據到來響應函數,向每個參數分發新的數據,每個參數調用數據判讀函數依據判據進行判讀。為進一步提高判讀效率,使用NullObject模式用于判據不存在的情況[5]。
評估結果最終要以數值、文字、表格、曲線方式顯示,因為顯示界面(UI)工作于主線程,而數據處理、判讀、評估工作于后臺線程。在C#中后臺線程直接或間接訪問界面控件會引起跨線程操作異常。為解決這一問題,利用Control.Invoke方法將調用封送到主線程中,從而“感覺上”實現了跨線程更新[6],跨線程更新UI的步驟為:
a)將直接或間接更新 UI的操作重構為界面更新函數;
b)在原來更新UI操作的位置查詢控件或窗體的InvokeRequired屬性,若為true,則以界面更新函數的委托為參數調用Control.Invoke,否則直接調用界面更新函數。
系統在顯示當前評估時段、起飛時間等界面上采用此操作。跨線程更新UI的優點是在事件響應函數中更新UI,邏輯清晰易于維護。
快速評估系統通常需要顯示數十個參數的曲線,如果每個參數收到一次數據都更新自身曲線,將需要每秒更新數百次,而更新顯示是占用CPU較高的“昂貴”操作,此種情況下,系統必將不堪重負,故采取定時刷新技術。參數曲線、參數數據列表等更新頻率為1~2次/秒,飛行時間、北京時間等變化較快的信息更新頻率為3~5次/秒,這樣既減輕系統CPU占用率,又減少實時評估線程和主線程之間的耦合,同時也能滿足判讀、觀察的需要。
快速評估系統分為主、副兩個界面,主界面涵蓋軟件功能區和系統評估區,用于顯示參數實時判讀情況、系統評估結果,載入預先定制界面,監測臨時特定參數;副界面根據用戶需求,自由組合各類參數以表格、曲線等方式進行細節顯示,較好地滿足了參數數量繁多性、顯示形式多樣性、顯示效果清晰化和用戶操作快捷化等需求。同時,運載火箭本身是一個復雜的巨系統,對其飛行結果評估本身也有一個不斷深化的過程,快速評估系統支持對評估要素、評估規則、顯示形式、布局方式等全方位定制,較好地滿足了評估不斷“升級”的需求。軟件投入使用以來,既在數十次成功發射中輔助崗位人員對運載火箭飛行結果進行快速、全面、準確的評估,也在如CZ-5 Y2發射任務定位飛行失利的原因過程中發揮了重大作用,同時軟件的設計方法對于其他實時評估系統的設計具有借鑒意義。
快速評估系統通過綜合使用多線程、實時事件、封裝調用、定時更新等技術實現了基于實時數據驅動的自動判讀和智能評估,通過應用不同的配置,能夠完成CZ-3A、CZ-5、CZ-7等多個型號火箭的航天發射任務飛行結果快速分析,即使在長達7個多小時的特殊飛行任務中,系統能夠在緩存大量實時數據的同時,具備良好的實時性和有效性。