劉 波,李 靜,朱金慧
(中國(guó)人民解放軍63796部隊(duì),西昌,615000)
航天發(fā)射試驗(yàn)任務(wù)中,運(yùn)載火箭飛行中速度、位置等實(shí)時(shí)狀態(tài)在測(cè)控系統(tǒng)實(shí)時(shí)顯示,但是其內(nèi)部各系統(tǒng)的運(yùn)行狀態(tài)不可知,直接影響對(duì)火箭飛行狀態(tài)的評(píng)判。航天發(fā)射試驗(yàn)任務(wù)快速評(píng)估系統(tǒng)(簡(jiǎn)稱:快速評(píng)估系統(tǒng)),就是從火箭起飛開(kāi)始,實(shí)時(shí)收集并實(shí)時(shí)判定飛行數(shù)據(jù)及航天器入軌情況,完成對(duì)飛行關(guān)鍵事件、各系統(tǒng)工作情況、運(yùn)載火箭飛行情況及飛行任務(wù)結(jié)果的分析及故障定位,依據(jù)評(píng)定準(zhǔn)則,得出飛行任務(wù)的快速分析評(píng)定結(jié)論[1]。
快速評(píng)估系統(tǒng)實(shí)現(xiàn)了飛行數(shù)據(jù)實(shí)時(shí)判讀、智能評(píng)估、自動(dòng)報(bào)表,提高領(lǐng)域?qū)<曳治鲈u(píng)定的效率和質(zhì)量,是一款準(zhǔn)實(shí)時(shí)軟件,其實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)判讀、智能評(píng)估、實(shí)時(shí)顯示是其重點(diǎn)關(guān)鍵技術(shù),對(duì)于其它實(shí)時(shí)軟件的設(shè)計(jì)與實(shí)現(xiàn)具有重要參考價(jià)值。
快速評(píng)估依據(jù)實(shí)時(shí)飛行數(shù)據(jù)對(duì)火箭飛行情況進(jìn)行評(píng)估,其核心是劃分層次結(jié)構(gòu)及構(gòu)建判斷矩陣。對(duì)運(yùn)載火箭飛行結(jié)果的評(píng)估分解為對(duì)分系統(tǒng)的評(píng)估,對(duì)分系統(tǒng)的評(píng)估進(jìn)一步分解為對(duì)設(shè)備/子系統(tǒng)和關(guān)鍵參數(shù)(具有決定性指標(biāo))的評(píng)估,從而形成自上而下的按層次逐層支配的關(guān)系。
分系統(tǒng)、設(shè)備/子系統(tǒng)、火箭(關(guān)鍵)參數(shù)統(tǒng)稱為評(píng)估對(duì)象,具有層次性結(jié)構(gòu),利用組合模式建立系統(tǒng)評(píng)估模型[2],如圖1所示。
圖1 評(píng)估對(duì)象模型示意Fig.1 A Schematic for Evaluation Object Model
快速評(píng)估系統(tǒng)硬件組成包括接口微機(jī)、數(shù)據(jù)庫(kù)服務(wù)器、數(shù)臺(tái)評(píng)估終端、網(wǎng)絡(luò)打印等,通過(guò)任務(wù)IP網(wǎng)與中心機(jī)通信。系統(tǒng)采用典型3層Client/Server結(jié)構(gòu)設(shè)計(jì)[3],數(shù)據(jù)層提供來(lái)自于網(wǎng)絡(luò)的實(shí)時(shí)飛行數(shù)據(jù)和來(lái)自于數(shù)據(jù)庫(kù)的參數(shù)判讀規(guī)則、系統(tǒng)評(píng)估規(guī)則及其它各類基本信息;功能層提供各類評(píng)估業(yè)務(wù)模型,包括參數(shù)及其判讀模型、子系統(tǒng)及其評(píng)估模型、飛行時(shí)序事件模型、飛行結(jié)果評(píng)估模型;表示層提供人機(jī)交互接口,包括任務(wù)管理、評(píng)估規(guī)則管理、數(shù)據(jù)管理和實(shí)時(shí)評(píng)估等界面,如圖2所示。
圖2 快速評(píng)估系統(tǒng)邏輯結(jié)構(gòu)Fig.2 Logic Architecture of the Fast Evaluation System
對(duì)各評(píng)估對(duì)象的分析評(píng)估歸根結(jié)底是對(duì)火箭參數(shù)的分析判讀,數(shù)據(jù)是進(jìn)行評(píng)估的基礎(chǔ)。系統(tǒng)從中心機(jī)接收數(shù)據(jù)處理為分類數(shù)據(jù),再分發(fā)到每個(gè)參數(shù)成為其當(dāng)前值(有些參數(shù)還需要系統(tǒng)進(jìn)一步計(jì)算處理才能得到),參數(shù)對(duì)當(dāng)前值判讀得到其判讀結(jié)果,然后子系統(tǒng)、系統(tǒng)等評(píng)估要素根據(jù)評(píng)估模型進(jìn)行評(píng)估得到評(píng)估結(jié)果。軟件界面UI實(shí)時(shí)顯示參數(shù)當(dāng)前值、數(shù)據(jù)曲線和判讀結(jié)果以及分系統(tǒng)、關(guān)鍵動(dòng)作等評(píng)估對(duì)象的評(píng)估結(jié)果。系統(tǒng)數(shù)據(jù)流視圖如圖3所示。
圖3 數(shù)據(jù)流視圖Fig.3 Data Flow Diagram
運(yùn)載火箭參數(shù)較多(一般2000個(gè)以上,某些型號(hào)多達(dá)5000余個(gè)),采樣頻率較高(至少10 Hz),如果每接收到一包網(wǎng)絡(luò)實(shí)時(shí)數(shù)據(jù)后都要完成解算、處理、判讀、評(píng)估、顯示等工作,整個(gè)處理周期耗時(shí)較長(zhǎng),必然影響下一包數(shù)據(jù)的接收,因此需要采取異步調(diào)用或多線程技術(shù)對(duì)數(shù)據(jù)處理流程進(jìn)行動(dòng)態(tài)解耦。
根據(jù)系統(tǒng)工作特點(diǎn),實(shí)時(shí)數(shù)據(jù)評(píng)估可分為網(wǎng)絡(luò)接收解算數(shù)據(jù)、實(shí)時(shí)數(shù)據(jù)評(píng)估、更新顯示界面3個(gè)步驟,分別工作在 3個(gè)不同的工作線程,實(shí)現(xiàn)動(dòng)態(tài)解耦,具體實(shí)現(xiàn)方法如下:
a)數(shù)據(jù)管理器增加一個(gè)鏈表用于緩存內(nèi)部接口送來(lái)的數(shù)據(jù),稱為待處理數(shù)據(jù)鏈表;
b)內(nèi)部接口接收解算中心機(jī)數(shù)據(jù)后,將數(shù)據(jù)提交給數(shù)據(jù)管理器,數(shù)據(jù)管理器將數(shù)據(jù)緩存到待處理數(shù)據(jù)鏈表中立即返回,此時(shí)內(nèi)部接口準(zhǔn)備好接收下一包中心機(jī)數(shù)據(jù);
c)創(chuàng)建一個(gè)輔助線程用于驅(qū)動(dòng)整個(gè)實(shí)時(shí)評(píng)估業(yè)務(wù)過(guò)程,該線程循環(huán)檢查待處理數(shù)據(jù)鏈表,若有數(shù)據(jù),從鏈表中取出、處理、分發(fā),進(jìn)而驅(qū)動(dòng)參數(shù)判讀和(子)系統(tǒng)評(píng)估,但基本不直接更新界面(個(gè)別情況例外);
d)主線程設(shè)置定時(shí)器周期更新界面,其處理序列如圖4所示。
圖4 多線程下的實(shí)時(shí)評(píng)估序列Fig.4 Multi-thread Real-time Evaluation Sequence Diagram
e)綜上,待處理數(shù)據(jù)鏈表為兩個(gè)線程所共享,根據(jù)多線程工作原則,需要對(duì)鏈表加鎖同步操作以避免沖突[4],如圖5所示。
圖5 待處理數(shù)據(jù)鏈表多線程同步處理Fig.5 Multi-threaded Synchronization Processing of Pending Data Linked List
火箭飛行時(shí)序是火箭飛行過(guò)程中發(fā)出的時(shí)間程序指令集合,是根據(jù)火箭飛行狀態(tài)實(shí)時(shí)計(jì)算后發(fā)出的浮動(dòng)基準(zhǔn)時(shí)間指令,和起飛信號(hào)一起,組成飛行時(shí)序的基準(zhǔn)指令。時(shí)串是以箭機(jī)發(fā)出的時(shí)序信號(hào)為基礎(chǔ),按以時(shí)序時(shí)間為基準(zhǔn)的預(yù)定時(shí)間發(fā)出步序和時(shí)串控制信號(hào),以引爆和控制相應(yīng)火工品和電磁閥門等受控對(duì)象,控制火箭各個(gè)飛行段的動(dòng)作。當(dāng)特定指令發(fā)生,火箭參數(shù)的動(dòng)態(tài)特性將會(huì)發(fā)生變化,一個(gè)或多個(gè)評(píng)估對(duì)象將被評(píng)估。例如 tk1為箭載計(jì)算機(jī)發(fā)出的一級(jí)關(guān)機(jī)信號(hào),當(dāng)其發(fā)生時(shí),火箭一級(jí)相關(guān)參數(shù)將停止自動(dòng)判讀,二級(jí)相關(guān)參數(shù)將啟動(dòng)判讀,同時(shí)對(duì)火箭各分系統(tǒng)一級(jí)飛行段工作情況進(jìn)行評(píng)估。
火箭時(shí)序時(shí)串指令的特性在 C#中使用事件(event)類型進(jìn)行描述,而且使用事件類型之后,可應(yīng)用觀察者模式對(duì)參數(shù)判據(jù)改變、啟動(dòng)評(píng)估等功能進(jìn)行設(shè)計(jì),降低對(duì)象間的耦合性,將靜態(tài)的組合關(guān)系變?yōu)檫\(yùn)行時(shí)的動(dòng)態(tài)組合關(guān)系。
系統(tǒng)實(shí)現(xiàn)了兩種實(shí)時(shí)事件,一種是特定類別事件,依賴于多個(gè)參數(shù)或某一類別參數(shù),中心機(jī)提供的數(shù)據(jù)包括遙測(cè)、外測(cè)、安控、通信等多種類別信息,不同類別的信息按表進(jìn)行組織,特定類別信息的出現(xiàn),本身代表現(xiàn)實(shí)事件,如衛(wèi)星入軌參數(shù)出現(xiàn)表明星箭已經(jīng)分離并且初軌已經(jīng)確定,另一種是時(shí)序時(shí)串發(fā)生事件,這類事件依賴于單個(gè)具體參數(shù)。時(shí)序時(shí)串發(fā)生事件的生成算法如圖6所示。數(shù)據(jù)管理器向參數(shù)分發(fā)數(shù)據(jù)時(shí),調(diào)用參數(shù)的新數(shù)據(jù)到來(lái)響應(yīng)函數(shù),根據(jù)參數(shù)的不同類別,新數(shù)據(jù)到來(lái)響應(yīng)函數(shù)有不同行為,時(shí)序時(shí)串參數(shù)首先檢查新值與其當(dāng)前值是否一致,如果不一致,則通過(guò)時(shí)序時(shí)串表來(lái)檢查該值是否是一個(gè)有效的時(shí)序時(shí)串,如果是,則設(shè)置為當(dāng)前值,并激發(fā)時(shí)序時(shí)串發(fā)生事件,否則不予處理。
圖6 時(shí)序時(shí)串發(fā)生事件生成算法Fig.6 Timing Sequence Generation Algorithm
火箭參數(shù)在飛行過(guò)程中通常具有動(dòng)態(tài)特性,不同時(shí)段其范圍要求不同,可以用參數(shù)的分時(shí)段判據(jù)描述,一般表示為 JC={P,Tb,Te,Max,Min},各項(xiàng)要素說(shuō)明如表1所示。
表1 判據(jù)要素說(shuō)明表Tab.1 Criterion Elements Specification
按200個(gè)關(guān)鍵參數(shù)、每個(gè)參數(shù)平均10條分時(shí)段判據(jù)計(jì),則規(guī)則庫(kù)多達(dá)2000條記錄。若每個(gè)參數(shù)每個(gè)數(shù)據(jù)判讀均查詢規(guī)則庫(kù),數(shù)據(jù)采樣頻率計(jì)10 Hz,則每秒需平均遍歷記錄1萬(wàn)條。這種額外的消耗對(duì)實(shí)時(shí)系統(tǒng)非常不利。因此提高判據(jù)調(diào)度和參數(shù)判讀的效率是提高系統(tǒng)實(shí)時(shí)性的關(guān)鍵。
系統(tǒng)采用基于時(shí)間同步的參數(shù)判據(jù)調(diào)度算法,在恰當(dāng)時(shí)機(jī)為每個(gè)參數(shù)指定判據(jù),從而使參數(shù)判讀過(guò)程中無(wú)需查詢規(guī)則庫(kù),提高效率,算法序列如圖7所示。
圖7 參數(shù)判據(jù)調(diào)度算法序列圖Fig.7 Parameter Criterions Scheduling Algorithm Sequence Diagram
算法主要包括4步:
a)初始化判據(jù)集合。
程序初始化階段,數(shù)據(jù)管理器從參數(shù)判讀規(guī)則庫(kù)中載入判據(jù),并初始化 3個(gè)集合,鏈表List<JC>toLoadList用于按Tb升序排列已有確定的開(kāi)始時(shí)刻的判據(jù),鏈表List<JC>toUnloadList用于按Te升序排列已有確定的結(jié)束時(shí)刻的判據(jù),字典Dictionay<RocketParam,List<JC>>tsDict用于存放與特定時(shí)序時(shí)串相關(guān)的判據(jù)鏈表。
b)更新判據(jù)集合。
當(dāng)時(shí)序時(shí)串事件發(fā)生時(shí),數(shù)據(jù)管理器根據(jù)該時(shí)序時(shí)串參數(shù)更新tsDict中相應(yīng)的Tb值和/或Te值,并更新到toLoadList和toUnloadList中。
c)基于時(shí)間同步的判據(jù)調(diào)度。
在實(shí)時(shí)評(píng)估線程中,數(shù)據(jù)管理器處理每一包數(shù)據(jù)時(shí),先獲取飛行時(shí)間fTime,遍歷toUnloadList,卸載Te值小于fTime的所有判據(jù),并從toUnloadList中刪除;toLoadList類似處理。
d)數(shù)據(jù)分發(fā)和判讀。
依次調(diào)用參數(shù)的新數(shù)據(jù)到來(lái)響應(yīng)函數(shù),向每個(gè)參數(shù)分發(fā)新的數(shù)據(jù),每個(gè)參數(shù)調(diào)用數(shù)據(jù)判讀函數(shù)依據(jù)判據(jù)進(jìn)行判讀。為進(jìn)一步提高判讀效率,使用NullObject模式用于判據(jù)不存在的情況[5]。
評(píng)估結(jié)果最終要以數(shù)值、文字、表格、曲線方式顯示,因?yàn)轱@示界面(UI)工作于主線程,而數(shù)據(jù)處理、判讀、評(píng)估工作于后臺(tái)線程。在C#中后臺(tái)線程直接或間接訪問(wèn)界面控件會(huì)引起跨線程操作異常。為解決這一問(wèn)題,利用Control.Invoke方法將調(diào)用封送到主線程中,從而“感覺(jué)上”實(shí)現(xiàn)了跨線程更新[6],跨線程更新UI的步驟為:
a)將直接或間接更新 UI的操作重構(gòu)為界面更新函數(shù);
b)在原來(lái)更新UI操作的位置查詢控件或窗體的InvokeRequired屬性,若為true,則以界面更新函數(shù)的委托為參數(shù)調(diào)用Control.Invoke,否則直接調(diào)用界面更新函數(shù)。
系統(tǒng)在顯示當(dāng)前評(píng)估時(shí)段、起飛時(shí)間等界面上采用此操作??缇€程更新UI的優(yōu)點(diǎn)是在事件響應(yīng)函數(shù)中更新UI,邏輯清晰易于維護(hù)。
快速評(píng)估系統(tǒng)通常需要顯示數(shù)十個(gè)參數(shù)的曲線,如果每個(gè)參數(shù)收到一次數(shù)據(jù)都更新自身曲線,將需要每秒更新數(shù)百次,而更新顯示是占用CPU較高的“昂貴”操作,此種情況下,系統(tǒng)必將不堪重負(fù),故采取定時(shí)刷新技術(shù)。參數(shù)曲線、參數(shù)數(shù)據(jù)列表等更新頻率為1~2次/秒,飛行時(shí)間、北京時(shí)間等變化較快的信息更新頻率為3~5次/秒,這樣既減輕系統(tǒng)CPU占用率,又減少實(shí)時(shí)評(píng)估線程和主線程之間的耦合,同時(shí)也能滿足判讀、觀察的需要。
快速評(píng)估系統(tǒng)分為主、副兩個(gè)界面,主界面涵蓋軟件功能區(qū)和系統(tǒng)評(píng)估區(qū),用于顯示參數(shù)實(shí)時(shí)判讀情況、系統(tǒng)評(píng)估結(jié)果,載入預(yù)先定制界面,監(jiān)測(cè)臨時(shí)特定參數(shù);副界面根據(jù)用戶需求,自由組合各類參數(shù)以表格、曲線等方式進(jìn)行細(xì)節(jié)顯示,較好地滿足了參數(shù)數(shù)量繁多性、顯示形式多樣性、顯示效果清晰化和用戶操作快捷化等需求。同時(shí),運(yùn)載火箭本身是一個(gè)復(fù)雜的巨系統(tǒng),對(duì)其飛行結(jié)果評(píng)估本身也有一個(gè)不斷深化的過(guò)程,快速評(píng)估系統(tǒng)支持對(duì)評(píng)估要素、評(píng)估規(guī)則、顯示形式、布局方式等全方位定制,較好地滿足了評(píng)估不斷“升級(jí)”的需求。軟件投入使用以來(lái),既在數(shù)十次成功發(fā)射中輔助崗位人員對(duì)運(yùn)載火箭飛行結(jié)果進(jìn)行快速、全面、準(zhǔn)確的評(píng)估,也在如CZ-5 Y2發(fā)射任務(wù)定位飛行失利的原因過(guò)程中發(fā)揮了重大作用,同時(shí)軟件的設(shè)計(jì)方法對(duì)于其他實(shí)時(shí)評(píng)估系統(tǒng)的設(shè)計(jì)具有借鑒意義。
快速評(píng)估系統(tǒng)通過(guò)綜合使用多線程、實(shí)時(shí)事件、封裝調(diào)用、定時(shí)更新等技術(shù)實(shí)現(xiàn)了基于實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)判讀和智能評(píng)估,通過(guò)應(yīng)用不同的配置,能夠完成CZ-3A、CZ-5、CZ-7等多個(gè)型號(hào)火箭的航天發(fā)射任務(wù)飛行結(jié)果快速分析,即使在長(zhǎng)達(dá)7個(gè)多小時(shí)的特殊飛行任務(wù)中,系統(tǒng)能夠在緩存大量實(shí)時(shí)數(shù)據(jù)的同時(shí),具備良好的實(shí)時(shí)性和有效性。
導(dǎo)彈與航天運(yùn)載技術(shù)2018年5期