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