許傳明,鄒 軍,安占新,王曉玲
北京航天自動控制研究所,北京 100854
目前,新一代運載火箭控制系統架構已經完成了電氣設備的數字化升級,箭載計算機的運算處理能力也大幅提高,實現了模擬控制向數字控制的跨越式進步。火箭控制系統形成了“箭載計算機+控制器”的新型分布式三冗余數字控制架構,各電氣設備、傳感器通過1553B總線、422總線以及485總線等數字總線實現了全數字通信與控制,提升了控制系統的可靠性與健康監測能力[1-4]。箭載計算機作為運載火箭的大腦,運行的飛行控制軟件承擔了箭地指令通信、彈道參數裝訂、設備狀態監測、飛行過程控制、數據采集處理等功能。該軟件經歷了由原來相對簡單的無操作系統設計到基于嵌入式實時操作系統的設計,通過合理的架構設計、設備接口封裝、任務模塊劃分、調度機制安排、冗余決策設計,可以有效地適應新一代運載火箭數字設備多、信息數據量大、智能故障檢測與重構的工程應用需求。
本文依據新一代中型運載火箭控制系統的三冗余電氣架構,設計的飛行控制軟件包括了底層、中間層和應用層的3層架構:底層采用可編程邏輯器件編程,自主承擔一部分接口通信、數據同步交換的功能,減輕應用層的處理壓力;中間層采用經過優化設計的嵌入式實時操作系統,承擔任務調度、中斷管理、I/O管理等核心功能,將面向硬件的訪問均按照統一I/O接口進行管理,提高系統的可維護性、安全性[5];應用層通過合理劃分飛行控制軟件多個任務,設計各任務的調度策略,從而最大化提高CPU利用率,軟件中的任務功能相對獨立,功能模塊滿足“高內聚、低耦合”原則,降低軟件邏輯功能復雜度,使軟件具有較好的可擴展性和移植性。本文提出的多任務設計方法可以對中斷事件產生可預期的實時響應,靈活地調度系統資源,實現了運載火箭三冗余CPU多任務運算節拍一致、數據管理高效、運行穩定可靠的目標。
火箭控制系統電氣架構由箭載計算機(簡稱“箭機”)、時序控制器(多個)、1553B總線、慣性測量組合(簡稱“慣組”)、速率陀螺、伺服控制器、地面測發控系統等組成。箭載計算機的3個冗余CPU中運行完全相同的飛行控制軟件,與上述電氣設備通信實現數據采集、指令傳輸,完成飛行控制的功能。飛行控制軟件架構以及功能任務模塊與各電氣設備連接關系如圖1所示。

圖1 飛行控制軟件系統架構
根據飛行控制軟件功能點的內聚程度、工作時段、實時性要求、安全關鍵等級對功能進行歸類,將功能耦合度高、關聯密切的功能在同一個任務中實現。應用層完成對中間層硬件支持模塊的初始化后,調用中間層的任務管理模塊任務創建接口,按照任務優先級由高到低依次創建5個任務,包括精確關機任務、飛行控制任務、數據管理任務、箭地通信任務和流程控制任務,任務情況見表1所示。

表1 飛行控制軟件的任務列表
流程控制任務在飛行控制軟件入口創建后首先執行,其優先級最低,可被其他高優先級任務搶占,主要完成系統初始化、設備注冊、參數裝訂和發射前自檢等流程控制。
精確關機任務在等待獲取1ms定時中斷釋放的信號量時處于掛起狀態,獲得信號量即滿足搶占調度執行條件,用于飛行過程精確制導關機的指令發送。
飛行控制任務在獲取其對應的信號量時任務可搶占執行,等待信號量時處于掛起狀態。飛行控制任務是火箭飛行的核心關鍵任務,調用3個功能模塊:綜合控制模塊完成與各電氣設備的指令通信、數據采集;制導控制模塊完成慣性導航計算、關機計算、導引計算及組合導航修正計算,并發送姿態角偏差、導引信號至姿態控制模塊;姿態控制模塊完成速率陀螺數據采樣、校正網絡計算、姿態控制指令計算,并將姿態控制指令發送至綜合控制模塊。
數據管理任務在飛行控制任務每控制周期驅動釋放信號量后調度執行,完成箭上電氣設備1553B總線站點遙測數據采集、串口數據轉換遙測數據、速率陀螺數據轉遙測數據等數據管理功能。數據管理任務作為飛行控制軟件與測量遙測系統的數據傳遞接口,實現對傳感器原始數據、時序輸出、儲箱增壓、伺服工況等狀態的監測,同時遙測輸出飛行控制任務實時計算的箭體姿態、伺服指令、噴管指令、導航參數、慣組冗余信息等關鍵數據。
箭地通訊任務在箭地通信中斷驅動釋放信號量后調度執行,等待信號量時處于掛起狀態。發射前,運載火箭接收地面測發控系統發送的郵箱指令,執行箭地通訊任務,完成相應的點名自檢、開中斷、時間同步、數據裝訂、姿態初始化計算等測試流程。
本文設計的飛行控制軟件任務創建及調用關系如圖2所示。箭機上電后首先執行操作系統入口調用,完成處理器初始化、操作系統內核初始化,并跳轉到飛行控制軟件系統入口執行。飛行控制軟件系統按照任務優先級由高到低依次完成各任務的創建,以及相應任務信號量的創建。信號量初始值為空,用于任務間同步。在任務中調用信號量申請接口獲取各自信號量,由于信號量為空,任務均被掛起,直到中斷信號產生,在中斷服務程序中調用信號量接口函數釋放相應信號量,任務恢復執行;任務在20 ms中斷、1 ms中斷、箭地通信中斷的驅動下,循環執行并根據優先級進行搶占調度;所述飛行控制任務主要調用綜合控制模塊、制導控制模塊和姿態控制模塊,由20 ms中斷驅動周期執行;數據管理任務由飛行控制任務驅動周期執行;精確關機控制任務由1 ms中斷驅動,實現火箭精確入軌關機;箭地通信任務完成接收地面測發控系統測試指令數據、解析及處理,由箭地通信中斷驅動,循環執行;流程控制任務完成系統初始化、設備注冊、諸元裝訂和射前自檢的流程控制,流程控制任務創建后首先執行。

圖2 飛行控制軟件的任務功能與調度關系
飛行控制任務承擔火箭飛行過程中的彈道導引計算、姿態穩定以及發動機關機等控制功能,其在箭機三CPU中的一致性運算是火箭三冗余電氣設備工作可靠、發揮冗余作用的關鍵[6-8]。該一致性運算體現為飛行控制運算的數值結果一致和運算節拍一致,即在相同的控制時間點輸出可以有效三取二的計算結果。本文為飛行控制任務設計的冗余一致性運算方法如下:
1)三CPU運行的飛行控制任務采用相同中斷源調度執行。設計相同的觸發脈沖周期信號作為三CPU控制板的外部中斷源,中斷函數釋放飛行控制任務調度執行所需信號量后,任務管理模塊根據信號量和優先級調度執行飛行控制任務。
2)三CPU運行的飛行控制任務交互共享采樣數據。在箭機的三CPU控制板之間設計內部FIFO交互接口,飛行控制任務調度執行后,先錄取本控制周期的輸入數據、I/O信號;然后,將錄取的數據發送給另兩個CPU控制板;最后,讀取另兩個CPU控制板發送來的數據和信號,三CPU使用交互共享一致的數據源作為運算的輸入。
3)設計基于同步陷阱的飛行控制任務指令級同步方法。飛行控制任務在使用FIFO交互采用數據時,寫入FIFO數據與讀取FIFO數據之間設計同步陷阱環節。三CPU在同步陷阱環節完成三機或者兩機的指令級同步。
三個處理器指令級同步過程為:CPU1落入同步陷阱將同步信號發送至CPU2/3,并無限制地等CPU2/3落入同步陷阱的信號,當CPU2落入同步陷阱發送信號后,則CPU1/2在同步陷阱環節完成同步,CPU1/2按照超時時間T等待CPU3落入同步陷阱的同步信號,如果CPU3在超時時間T內落入同步陷阱,則三機同步成功,形成三個單機同步運行的模式;否則已經同步上的CPU1/2在超時T后不再等待CPU3,繼續運行程序[9]。圖3所示為三機指令級同步示意。

圖3 控制任務指令級同步過程
通過上述設計,運行于箭機三CPU的飛行控制任務可以實現控制運算的輸入數據一致、運算節拍一致,在一度故障情況下仍可通過三取二冗余運算滿足火箭飛行的可靠性。
飛行控制軟件中各任務使用的資源有重疊部分,本文將多個任務都會使用的設備資源定義為臨界資源。臨界資源已經被其它任務占用,高優先級任務搶占調度執行后需要使用該臨界資源時,只能處于掛起等待狀態,直至該臨界資源釋放后高優先級的任務再運行。1553B總線作為一種命令/響應式分時復用數據總線設備,飛行控制任務需要使用其錄取慣組數據作為本控制周期的計算輸入,而數據管理任務需要使用其錄取箭上各電氣設備遙測數據以記錄設備工作狀態。一個任務占用1553B總線傳輸數據時,其它任務不能使用該資源而處于等待狀態,直至傳輸完成釋放總線[10-11]。本文將1553B總線設備定義為臨界資源,在軟件中為該臨界資源設置使用標志,指示其處于“占用”或“空閑”狀態。只有處于空閑狀態,才允許任務使用該資源,并將標志更新為“占用”狀態。
為保證飛行控制任務不因臨界資源被占用而處于掛起狀態,可以按觸發周期正常調度執行,并且完成三CPU的冗余同步運算,設計1553B總線使用的約束條件如下:
1)飛行控制任務運行結束時,釋放數據管理任務的就緒信號量,任務管理模塊再調度執行數據管理任務。控制周期中兩個任務依次順序執行,分時使用臨界資源。
2)飛行控制任務開始調度執行時,記錄系統時間T1;數據管理任務釋放總線臨界資源時,記錄系統時間T2。本控制周期對應的臨界資源占用時間段長度為△T=T2-T1。數據管理任務通過合理優化設計,先集中使用1553B總線處理數據,再處理各串口數據,使其占用1553B總線臨界資源時間及早釋放。設計控制周期內臨界資源占用的指標約束:△T≤16ms。保證數據管理任務對臨界資源的占用不會影響下一個控制周期飛行控制任務的調度執行。圖4為控制周期內臨界資源占用時間示意,T1至T2時間段內為臨界資源占用時間段。

圖4 控制周期內1553B總線臨界資源占用時間
本文提出的多任務設計方法已經在四種構型的新一代中型運載火箭飛行試驗中得以應用驗證,火箭以較高精度將衛星送入預定軌道。
圖5所示為根據飛行遙測數據生成的任務調度關系。在火箭飛行過程中,嵌入式操作系統響應20 ms中斷事件實時調度執行高優先級的飛行控制任務,飛行控制任務完成傳感器數據采集、制導運算、姿態控制和指令控制輸出等功能。數據管理任務在采集推力調節數據時運行時間較長,會不連續地超出20 ms控制周期的情況,但在飛行控制任務就緒時數據管理任務被掛起等待,此時1553B總線臨界資源在控制周期內占用時間為15.8 ms,滿足臨界資源占用的指標約束要求。飛行控制任務完成后,數據管理任務得以繼續完成上周期未完成的數據處理工作。相比于不使用操作系統基于無限循環的設計方法需要預留固定20%的安全余量,基于實時操作系統的多任務設計方法顯著提高了CPU 的使用效率。

圖5 任務搶占調度運行過程
表2所示為模擬飛行狀態二級發動機關機時三冗余CPU計算的火箭速度和位置,3個 CPU 計算的導航速度、位置、關機時間數據對比一致,可以驗證3個 CPU 在傳感器數據錄取、數據交互、冗余計算方面表現完全同步,實現了冗余控制機制。

表2 火箭模擬飛行時二級關機的速度和位置
根據新一代運載火箭三冗余電氣架構特點和飛行控制要求,提出了基于嵌入式實時操作系統的飛行控制軟件多任務設計方法。本方法設計的多任務功能劃分合理,調度執行策略清晰,提高了CPU使用率,具有良好的移植、裁剪能力,已在四種構型的新一代中型運載火箭飛行試驗中成功應用,并且滿足火箭數字化控制的可靠性要求。