張俊楠,段菲凡,賈 睿,歐陽芙,王 威
(1.北京宇航系統(tǒng)工程研究所,北京,100076;2.中國家用電器研究院,北京,100037;3.中國運(yùn)載火箭技術(shù)研究院,北京,100076)
運(yùn)載火箭可靠、快速發(fā)射的能力一直備受關(guān)注。在確保發(fā)射可靠性的基礎(chǔ)上盡可能縮短發(fā)射準(zhǔn)備時間,對提升火箭的快速反應(yīng)能力具有重要意義。受制造工藝水平限制,國產(chǎn)器件性能參數(shù)浮動范圍較大。為確保發(fā)射程序穩(wěn)妥可靠、萬無一失,傳統(tǒng)運(yùn)載火箭發(fā)射程序設(shè)計采用延時查詢機(jī)制,基于設(shè)備收到指令并完成規(guī)定動作的設(shè)計指標(biāo),考慮參數(shù)浮動及一度故障等因素,設(shè)置合適的固定延時并留有安全余量。發(fā)射流程由地面測發(fā)系統(tǒng)驅(qū)動,對火箭進(jìn)行射前功能的全面檢查,主要完成地面準(zhǔn)備、箭體射前檢查、衛(wèi)星射前準(zhǔn)備、方向?qū)?zhǔn)、指揮節(jié)點授權(quán)等多項技術(shù)準(zhǔn)備工作,協(xié)同工作多,發(fā)射程序耗時長[1]。同時,隨著航天發(fā)射服務(wù)業(yè)務(wù)拓展,地面測發(fā)系統(tǒng)日漸龐大,由多個分系統(tǒng)相互協(xié)作完成主線發(fā)射任務(wù),同時各系統(tǒng)內(nèi)部有自己獨(dú)立的工作流程。由于各系統(tǒng)處于異步并行工作狀態(tài),并受硬件資源、通信條件等因素影響,會造成各系統(tǒng)完成工作流程的實際時間存在離散性[2-3]。當(dāng)主控機(jī)延時查詢進(jìn)行工作狀態(tài)巡檢時,不僅造成了時間資源的浪費(fèi)并且會在通信網(wǎng)絡(luò)上傳遞大量無用數(shù)據(jù)[4-6],致使發(fā)射流程有效時間未被充分利用、總線負(fù)載占用率大,影響發(fā)射流程的可靠性及任務(wù)效率。
面向事件驅(qū)動的流程設(shè)計,由任務(wù)執(zhí)行方在完成工作的第一時間向需要驅(qū)動的外系統(tǒng)發(fā)送驅(qū)動事件,最大限度節(jié)省數(shù)據(jù)引擎周期調(diào)用或主控機(jī)延時查詢的時間間隔損失。僅通過指令幀傳遞驅(qū)動流程運(yùn)行,相較周期巡檢模式在大量節(jié)省了通信資源[7-8]的同時對通信接口可靠性提出更高的要求。為保證驅(qū)動事件被可靠地接收并執(zhí)行,需要重點解決驅(qū)動幀收發(fā)的可靠性問題[9-10]。
針對這一問題,通信領(lǐng)域開始研究基于事件驅(qū)動的控制方法,摒棄主控程序周期查詢機(jī)制,將流程需要外部輸入條件才能繼續(xù)下一步工作的事件作為驅(qū)動,觸發(fā)各系統(tǒng)流程并行工作。其中文獻(xiàn)[11]提出非線性切換系統(tǒng)的異步事件驅(qū)動控制,解決子系統(tǒng)與控制器之間的異步切換帶來的系統(tǒng)的不穩(wěn)定問題;文獻(xiàn)[12]基于事件驅(qū)動采用網(wǎng)絡(luò)套接字技術(shù),提高網(wǎng)絡(luò)通信的高并發(fā)與穩(wěn)定性;文獻(xiàn)[13]提出基于事件驅(qū)動函數(shù)的分布式協(xié)同控制方案,有效降低了控制輸入更新頻次及信息交互量。上述文獻(xiàn)分別從提高子系統(tǒng)切換控制器全局穩(wěn)定性、增強(qiáng)網(wǎng)絡(luò)服務(wù)器多進(jìn)程實時處理能力、降低控制輸入更新頻次的不同角度,證明了事件驅(qū)動對于高并發(fā)異步工作流程的良好適應(yīng)性。
本文面向運(yùn)載火箭發(fā)射流程設(shè)計,以確??焖倏煽堪l(fā)射為目標(biāo),提出基于事件驅(qū)動的異步并行自動流程設(shè)計方法,改變傳統(tǒng)基于主控機(jī)延時查詢機(jī)制的流程設(shè)計思路,不再設(shè)置固定延時等待,以事件驅(qū)動發(fā)射支持、控制系統(tǒng)、衛(wèi)星控制、定位定向、指揮通信和安全控制六大系統(tǒng)流程并發(fā)異步自動運(yùn)行,最大限度地縮減各系統(tǒng)間串行等待時間。同時采用基于時間差分的重傳校驗方法,驅(qū)動多線流程可靠并行工作,實現(xiàn)運(yùn)載火箭可靠快速發(fā)射。
基于事件驅(qū)動的異步并行自動流程設(shè)計程序如圖1所示,具體步驟如下:
圖1 自動流程設(shè)計程序Fig.1 Automatic process design program
a)將主線任務(wù)進(jìn)程按照時間順序進(jìn)行排列,生成全系統(tǒng)動作時間鏈;
b)按照動作要求向各系統(tǒng)分解任務(wù)要求,分系統(tǒng)執(zhí)行該任務(wù)也存在各自不同的流程順序,生成分系統(tǒng)動作時間鏈;
c)將能夠由分系統(tǒng)獨(dú)立執(zhí)行,不需要外部輸入條件的工作流程劃分為獨(dú)立子流程,分系統(tǒng)動作時間鏈將被劃分為多個獨(dú)立子流程的串聯(lián)關(guān)系;
d)滿足每個獨(dú)立子流程需要的外部輸入條件,即驅(qū)動子流程順序執(zhí)行的觸發(fā)條件;
e)對觸發(fā)條件進(jìn)行合并歸類,順序排列后生成驅(qū)動事件隊列,每個動作執(zhí)行完畢的時間為生成驅(qū)動事件的時間總和;
f)通過對首個驅(qū)動事件的觸發(fā),檢驗自動流程執(zhí)行的匹配性和耗時指標(biāo)的可達(dá)性。
全系統(tǒng)相互協(xié)作的目的是完成主線任務(wù),而主線任務(wù)可以切分為若干個動作,這些動作在時間線上是串行排列的。將主線任務(wù)進(jìn)程動作按時間順序排列,即全系統(tǒng)動作時間鏈。
對應(yīng)每一個動作,均可以分解為若干分系統(tǒng)任務(wù),當(dāng)各任務(wù)均完成后,判定該動作執(zhí)行完畢。
對應(yīng)每個單項任務(wù),分系統(tǒng)在時間鏈上也要按照流程執(zhí)行不同動作,其中一些流程可以在分系統(tǒng)內(nèi)部閉環(huán),但一些流程點上需要與其他分系統(tǒng)合作,需要一定條件才能完成。
將能夠由分系統(tǒng)獨(dú)立閉環(huán)執(zhí)行的工作流程劃為獨(dú)立子流程,那么分系統(tǒng)動作時間鏈將被切分為多個獨(dú)立子流程的串聯(lián)關(guān)系表示。
對于每個分系統(tǒng)任務(wù),串行獨(dú)立子流程間存在多個需要滿足的外部輸入條件,以驅(qū)動子流程順序執(zhí)行。將能夠產(chǎn)生滿足條件的驅(qū)動稱為驅(qū)動事件,而驅(qū)動事件是由其他任務(wù)子流程生成的,在時間線程呈現(xiàn)串行排列。
通過觸發(fā)首個驅(qū)動事件,驅(qū)動事件隊列將按照邏輯順序自動運(yùn)行,觸發(fā)各分系統(tǒng)以并行異步方式自動完成相互協(xié)作,推進(jìn)流程自動運(yùn)行直至主線任務(wù)執(zhí)行完畢。多次觸發(fā)自動流程,統(tǒng)計全流程時間消耗數(shù)據(jù),檢驗自動流程運(yùn)行匹配性的同時,評估流程耗時指標(biāo)。
全系統(tǒng)動作時間鏈如圖2 所示,主線任務(wù)由N個動作串行完成,對于動作1,又需要n1個分系統(tǒng)任務(wù)均執(zhí)行完畢作為進(jìn)行下一動作的條件。
圖2 全系統(tǒng)動作時間鏈Fig.2 Full system action time chain
分系統(tǒng)任務(wù)1在n個事件點上需要外部驅(qū)動條件,被切分為n+1個獨(dú)立子流程的分系統(tǒng)動作時間鏈,分系統(tǒng)動作時間鏈如圖3所示。
圖3 分系統(tǒng)動作時間鏈Fig.3 Subsystem action time chain
分系統(tǒng)任務(wù)1 的子流程2 開始執(zhí)行的條件為滿足驅(qū)動事件1,該事件由分系統(tǒng)任務(wù)n1的子流程1生成。分系統(tǒng)任務(wù)n1的驅(qū)動事件2由分系統(tǒng)任務(wù)1的子流程2生成。分系統(tǒng)任務(wù)1 切分為n+1個子流程,分系統(tǒng)任務(wù)n1切分為m+1個子流程,則分系統(tǒng)任務(wù)的協(xié)同流轉(zhuǎn)可以表示為n+m+1個驅(qū)動事件的時間隊列,最后一個分系統(tǒng)長線任務(wù)即分系統(tǒng)任務(wù)1的子流程n+1,生成驅(qū)動事件n+m+1,等同為n1個分系統(tǒng)任務(wù)均執(zhí)行完畢,驅(qū)動主線任務(wù)的下一個動作繼續(xù)執(zhí)行,驅(qū)動事件隊列如圖4所示。
圖4 驅(qū)動事件隊列Fig.4 Drive event queue
2.3.1 發(fā)送重傳流程
發(fā)送方實時監(jiān)聽通信端口,隨時響應(yīng)驅(qū)動事件。完成規(guī)定任務(wù)后發(fā)出指令幀,為與重傳幀區(qū)別,發(fā)送幀序號+1,確認(rèn)標(biāo)識位置1,等待應(yīng)答。
為了確保事件驅(qū)動指令發(fā)送的可靠性,基于時間差分方法設(shè)計發(fā)送重傳機(jī)制,若發(fā)送方未在發(fā)出該幀后Ta時間內(nèi)收到應(yīng)答,則重發(fā)該幀,幀序號不變,重發(fā)次數(shù)加1。若重發(fā)C次后仍未收到應(yīng)答幀,提示錯誤,發(fā)送方的指令超時時間為C×Ta。幀發(fā)送重傳流程如圖5所示。
圖5 發(fā)送方重傳機(jī)制Fig.5 Transmitter retransmission mechanism
2.3.2 通信幀完整性判別
接收方收到通信幀后,首先進(jìn)行通信幀完整性判別,對于結(jié)構(gòu)不完整、協(xié)議未規(guī)定、校驗不正確等情況的通信幀進(jìn)行前端剔除,不對該幀進(jìn)行處理及應(yīng)答,等待發(fā)送方重新發(fā)送。保證進(jìn)入后續(xù)合理性判別的通信幀均為符合協(xié)議的完整幀,降低通信干擾,提高通信效率。通信幀完整性判別流程如圖6所示。
圖6 通信幀完整性判別流程Fig.6 Communication frame integrity determination flowchart
2.3.3 通信幀合理性判別
完整性合格幀將進(jìn)入合理性判別流程,基于時間差分方法剔除幀序號相同的重傳幀,保證系統(tǒng)可靠響應(yīng)新的驅(qū)動幀。合理性判別流程如圖7所示。
接收方將幀序號不同的通信幀作為新幀處理,但發(fā)射系統(tǒng)組成復(fù)雜,在異步工作過程中,經(jīng)常存在設(shè)備重啟或備份切換的情況,此時發(fā)送方的幀序號將重新累加,可能與前序幀重復(fù),為避免被接收方判定為重復(fù)幀誤丟棄,基于時間差分方法將Tc時間外的幀序號相同幀識別為新幀。
接收方Ta時間內(nèi)發(fā)送應(yīng)答幀,表示正確接收,丟棄Tc時間內(nèi)幀序號相同的通信幀。為了保證重傳幀的工作可靠,時間差分Tc>C×Ta。
全系統(tǒng)動作時間鏈得到主線任務(wù)總耗時T:
式中N為主線任務(wù)動作數(shù);Ti為動作完成時間。
動作i分解為ni個分系統(tǒng)任務(wù),其中第j個分系統(tǒng)任務(wù)切分為mij個子流程,則完成動作i可以表示為Li個驅(qū)動事件的序列:
設(shè)第k個驅(qū)動事件生成的時間為Qik,每個驅(qū)動事件需要組幀發(fā)送,網(wǎng)絡(luò)延時為Yik,幀重發(fā)次數(shù)Cik,則動作i完成時間為Ti可以表示為
綜合上式,最終全系統(tǒng)動作時間鏈得到主線任務(wù)總耗時T可以表示為
以事件驅(qū)動異步并行自動流程設(shè)計方法,構(gòu)建發(fā)射支持、控制系統(tǒng)、衛(wèi)星控制、定位定向、指揮通信和安全控制六大系統(tǒng)流程自驅(qū)運(yùn)行模式,開展任務(wù)進(jìn)程耗時的仿真驗證并與周期查詢機(jī)制對比。
發(fā)射流程從啟動發(fā)射程序至點火起飛共分為支架調(diào)平、諸元裝訂、定向瞄準(zhǔn)、解鎖授權(quán)、能源轉(zhuǎn)換5個動作。運(yùn)用本文方法,以支架調(diào)平動作為例,需要控制系統(tǒng)、發(fā)射支持、定位定向、指揮通信4個分系統(tǒng)協(xié)同完成,其中控制系統(tǒng)可以拆分為加電自檢、上傳飛行程序、靜態(tài)功能檢查3個子流程,發(fā)射支持系統(tǒng)、定位定向系統(tǒng)、指揮通信系統(tǒng)分別由7、5、2個子流程構(gòu)成。發(fā)射流程系統(tǒng)動作時間鏈如圖8所示。
圖8 火箭發(fā)射流程全系統(tǒng)動作時間鏈Fig.8 Full system action time chain of rocket launch process
根據(jù)系統(tǒng)動作時間鏈,按照子流程間的執(zhí)行條件提取驅(qū)動事件,以支架調(diào)平動作為例,控制系統(tǒng)、發(fā)射支持、定位定向和指揮通信協(xié)同完成規(guī)定動作??刂葡到y(tǒng)加電自檢后,由發(fā)射支持系統(tǒng)配電完畢后驅(qū)動上傳飛行程序流程,待發(fā)射支持系統(tǒng)發(fā)射架穩(wěn)定后執(zhí)行靜態(tài)功能檢查流程,其余子流程協(xié)同動作見圖9,構(gòu)成驅(qū)動事件隊列,最終以支架調(diào)平好驅(qū)動下一主線動作開始執(zhí)行。其中控制系統(tǒng)需要2個驅(qū)動事件完成全部子流程,發(fā)射支持、定位定向和指揮通信系統(tǒng)分別需要7、4、1個驅(qū)動事件。
圖9 驅(qū)動事件隊列Fig.9 Drive event queue
根據(jù)火箭發(fā)射系統(tǒng)構(gòu)建通信仿真環(huán)境,為方便對比事件驅(qū)動方法與周期查詢方法在時間消耗上的差異,設(shè)置相同的網(wǎng)絡(luò)通信質(zhì)量參數(shù)及重傳校驗參數(shù)。設(shè)定以太網(wǎng)發(fā)送延時Ta=100 ms,誤碼率1%,重傳時間Tc=1 s,重傳次數(shù)C=3。
圖8 主線任務(wù)由N=5 個動作串行完成,對于每個動作切分為子流程任務(wù)量為矩陣n:
每個分系統(tǒng)任務(wù)切分為子流程數(shù)矩陣m:
如圖9對應(yīng)構(gòu)建驅(qū)動事件隊列,每個驅(qū)動事件的單機(jī)時間按照設(shè)計指標(biāo)進(jìn)行賦值,生成時間矩陣Q=[Q1Q2Q3Q4Q5],以第1個主線動作“支架調(diào)平”為例,矩陣Q1為
在系統(tǒng)間協(xié)作過程中,周期查詢機(jī)制的機(jī)理是通過主控周期查詢狀態(tài)來驅(qū)動流程,待子流程工作完畢后回復(fù)主控滿足執(zhí)行下一步工作的條件。相較事件驅(qū)動的流程機(jī)制,相同網(wǎng)絡(luò)條件下,完成協(xié)作動作需要一查一回兩次通信,而事件驅(qū)動則只需要通信一次,通過對兩種機(jī)制的發(fā)射流程耗時進(jìn)行1 000 次仿真計算,全系統(tǒng)主線任務(wù)動作總耗時T隨仿真次數(shù)的分布見圖10。由圖10 可以看出,相同的網(wǎng)絡(luò)拓?fù)浼巴ㄐ艆?shù)條件下,兩種通信機(jī)制的流程動作時間和隨通信仿真次數(shù)的分布基本穩(wěn)定在一定時間帶內(nèi)。事件驅(qū)動機(jī)制耗時小于周期查詢機(jī)制,具體流程耗時差見圖11,流程仿真計算結(jié)果見表1。
表1 全流程仿真計算結(jié)果Tab.1 Full process simulation calculation results
圖10 流程動作時間隨仿真次數(shù)分布Fig.10 Distribution of process action time vs simulation count chart
圖11 兩種模式的時間差分布Fig.11 Distribution of time difference between two modes
從仿真結(jié)果可以看出,事件驅(qū)動機(jī)制能夠有效提升任務(wù)時間效率,分析原因如下:
a)通信過程中周期查詢機(jī)制需要主控查詢1次再接收狀態(tài)反饋1次,原理上其通信次數(shù)是事件驅(qū)動的2倍,時間消耗隨網(wǎng)絡(luò)通信時延線性增加。
b)當(dāng)誤碼發(fā)生后,周期查詢機(jī)制會間隔一個通信周期重新查詢,時間消耗隨網(wǎng)絡(luò)通信時延線性增加。
c)若周期查詢時間先于子流程完成時間,主程序會等待下一周期查詢結(jié)果,直至收到子流程完畢的回復(fù),存在查詢周期內(nèi)的時間資源浪費(fèi),時間消耗隨異步查詢的次數(shù)線性增加。
與周期查詢不同,事件驅(qū)動機(jī)制由任務(wù)執(zhí)行方在子流程工作完畢后第一時間主動發(fā)出驅(qū)動,觸發(fā)各接收方異步并行執(zhí)行子流程任務(wù),縮短了系統(tǒng)間的等待時間,降低了網(wǎng)絡(luò)通信頻率。本文面向運(yùn)載火箭發(fā)射流程設(shè)計,提出基于事件驅(qū)動的異步并行自動流程設(shè)計方法,以全系統(tǒng)時間鏈最優(yōu)為目標(biāo),結(jié)合基于時間差分的重傳校驗方法,既節(jié)約了網(wǎng)絡(luò)資源又保證了可靠驅(qū)動六大系統(tǒng)異步運(yùn)行,實現(xiàn)了火箭快速可靠發(fā)射。