孫雪嬌 劉學士 束韶光
北京航天自動控制研究所,北京 100854
隨著末制導技術、總線技術、系統冗余技術的應用,控制系統功能的復雜多變,導致飛行控制系統的軟件規模日益龐大,傳統單CPU的中斷+控制環模式無論從性能還是容錯能力方面都已經無法滿足現代任務的需求。隨著飛行控制軟件系統結構越來越復雜,軟件的復雜程度也迅速增加。傳統的軟件架構已經力不從心,尤其在多個控制任務并發時,調度難度增大,難以保證系統可靠性、實時性要求。
本文從功能和性能需求出發,提出了一種基于戰星實時操作系統的多核分布式飛行控制軟件架構設計方案,以4核DSP為硬件平臺,設計了具有高可靠性高實時性的多核分布式飛行控制軟件架構,提高了飛行控制系統的處理能力和容錯能力。該飛行控制軟件架構開發維護方便,擴展性和可移植性強。
無人機的飛行軟件架構發展較早,美國Cloud Cap公司自主研發的無人機的飛行控制系統Piccolo具有很高的靈活性和可靠性,在國內外的小型無人機系統中得到了多次應用[1]。加拿大的MicroPilot公司設計了一款性能良好、體積小、功耗也低的飛行控制系統MP2028g,該飛行控制系統集成了多種類型的傳感器,已成功應用于Snake eye、Helispy等多款小型無人機[2]。
歐洲空間局(European Space Agency,ESA)的航天航空開放接口架構(Space Avionics Open Interface Architecture,SAVOIR)是在主控單元中基于 CPU 的系統軟件平臺。它構成了一個通用軟件執行平臺,支持上層應用,下層使用不同的接口。應用層根據各自的專業特征構建不同的應用模塊。
美國國家航空航天NASE(National Aeronautics and Space Administration)開發的CFS(Core Flight Software)是一種基于CPU和操作系統之上,可以獨立運行的飛行軟件架構,該架構可以直接重用,也可根據需要二次開發。CFS可以縮短飛行軟件開發的時間,提高質量,減少項目計劃和費用的不確定性,提高軟件重用率,降低工程維護成本,支持多種跨部門的工具和標準,允許多組織的協同合作。目前CFS架構已經由戈達德推廣到NASA所屬的各個航天中心和研究機構,以及日本和韓國,應用在一些航天任務中,如月球勘測軌道器、全球降水測量衛星任務等。
近年來國內飛行控制系統領域也取得了較多研究成果。北京航天控制技術研究所提出了一種基于構件的運載器控制系統飛行控制軟件架構[3],該軟件架構采用分層的控制體系及結構模式,能夠有效提高飛行軟件的研制效率及軟件質量。重用技術可以提高軟件的質量和可靠性,縮短任務研制周期,降低成本[4]。為了改善飛行控制軟件傳統的前后臺開發模式,適應“多模式”、“多冗余”的需求,研究多任務的實時操作系統成為了重點。
飛行控制軟件的主要功能是實現飛行器在飛行過程中的實時控制算法,包括:輸入信息的采集、轉換、導航、制導、姿控、組合導航及時序控制等功能。飛行控制軟件功能需求越來越復雜,對飛行控制軟件的各種要求也越來越高,一方面要求飛行控制軟件能夠實時采集傳感器和外圍設備信息,獲取當前飛行器的飛行狀態,進行制導律和控制解算,并根據解算結果實現點火、轉級、關機等飛行指令,同時還要求飛行控制軟件能夠將飛行狀態信息和控制信息等數據發送至遙測系統。另一方面要求飛行控制軟件能夠實現對多種功能的管理,包括傳感器數據信息的綜合管理、故障檢測功能管理等,飛行控制軟件需要對這些功能模塊進行統一管理,使其有機結合并有序運行,保證飛行器能夠高效完成要求的飛行任務[5]。
飛行控制軟件高性能和高可靠性是安全完成飛行任務的重要保障,因此飛行控制軟件的性能應滿足如下條件:
1) 實時性要求
實時性是飛行控制軟件基礎的要求之一,飛行控制軟件中所有任務都有嚴格的時間性能指標。例如對于執行機構輸出延時和控制周期總延時,如果飛行控制軟件實時性超標或較差,可能導致飛行控制系統無法正常工作,甚至可能會造成災難性后果[6]。
飛行控制軟件任務要求多而雜,既包含多種周期性任務,也包含各類非周期性的任務,對于多個CPU分布運行的飛行控制軟件還需要考慮各CPU間的通信任務。因此為了能夠保障飛行控制軟件的實時性,需要綜合考慮所有任務執行的時序和要求,合理創建、分配及調度任務。
2) 高內聚低耦合要求
在傳統的飛行控制系統開發時,劃分的功能模塊之間常有很高的數據耦合性,因為單個功能模塊的開發往往需要綜合考慮其他模塊的影響、各個模塊之間的調度關系以及各個模塊的安全性,導致軟件開發時間變長,開發成本增加,研制效率降低。
因此有必要降低各個模塊之間的耦合性,使各個功能模塊專注于封裝自己的內部屬性。功能模塊之間相互獨立能夠使飛行控制系統更加安全和可靠。
3) 可靠性要求
由于飛行任務及飛行環境復雜多變,飛行過程中的微小不確定因素都有可能造成系統巨大故障,因此必須要求飛行控制系統在出現異常情況時,能夠及時準確識別故障、處理故障,提高飛行控制軟件容錯性,保證飛行控制軟件完成要求的任務時不受部分故障的影響,確保飛行器安全可靠飛行。
4) 可擴展性與可維護性要求
傳統的飛行控制軟件各個功能模塊的信息交互非常復雜,擴展功能會導致整個系統發生變化,造成一定的不確定性。
因此要求飛行控制軟件有良好的可擴展性、可維護性和繼承性,使軟件的設計、調試和維護更加方便快捷。
基于上一節的功能性能需求分析,本文結合飛行控制計算機硬件平臺,設計了基于戰星實時操作系統的飛行控制軟件設計方案。飛行軟件架構分為5層,從下到上依次為:操作系統層、硬件接口層、框架層、應用層、重用構件層,通過各個部分之間協調運行實現軟件整體功能。飛行控制軟件架構結構圖如圖1所示。

圖1 飛行控制軟件系統結構圖
操作系統采用戰星實時操作系統,該系統是由北京航天自動控制研究所自主研發的實時多任務操作系統,具有以下特點:
1) 多任務調度管理,支持可搶占調度策略,最多可管理256個任務;
2) 透明通信、時間管理、內存管理等功能;
3) 可裁剪、可定制;
4) 支持多種處理器。
戰星實時操作系統微內核完成任務管理、調度,任務間通信、系統時間管理、內存管理、SDP核間通信等功能。
3.2.1 任務管理
操作系統實時內核需要滿足飛行控制軟件實時處理多任務的需求,因此必須支持多任務并行管理,并為這些任務分配棧空間,制定優先級,每個任務提供以下3種狀態:就緒態、運行態和掛起態,并保證任務在各狀態間正確切換。
操作系統的內核負責管理各個任務之間的通信和調度切換,同時為每個任務分配相應的CPU時間。由于實時性要求很高,響應時間要盡量短,操作系統內核采用可剝奪型內核,確保最高優先級的任務一旦就緒就可以被調度運行,得到處理器的控制權。
用戶可以依據需求進行任務的創建、刪除、掛起、恢復和調度等。
3.2.2 任務間通信
戰星實時操作系統的任務間通信功能提供透明的、任務到任務的消息傳輸。操作系統將任務間通信消息封裝成消息塊,包括消息塊的申請、釋放、發送、接收、入隊列和出隊列,以及請求接收任務答復、答復發送任務、消息通信任務掛起、消息通信任務恢復,任務間通信流程。如圖2所示。

圖2 任務間通信流程圖
3.2.3 時間管理
戰星實時操作系統提供時間管理功能,用于任務延時、超時判斷、獲取系統執行時間等。按照設定的時鐘節拍中斷處理函數實現了時間管理的相關功能。其中,時鐘節拍由特定頻率的硬件定時器產生,中斷頻率一般為10~100 Hz。時鐘中斷頻率如果較高,系統開銷也較大,因此一般根據應用的需要設置合適的中斷頻率。
時間管理功能包括:時鐘中斷處理程序、任務延時、獲取系統時間、改變系統時間等。
3.2.4 內存管理
戰星實時操作系統提供內存管理功能,包括內存分區管理,新建內存分區,內存塊的申請、釋放等。
3.2.5 SDP核間通信
針對多核處理器,戰星實時操作系統提供SDP系統服務用于DSP核間通信。SDP核間通信實現核間數據的交互,通過共享內存交互數據并同步控制邏輯。共享存儲體用于傳輸數據,信號燈控制兩個DSP核之間的同步。戰星實時操作系統將SDP作為一個系統服務駐于內核中。
核間任務需要通信時,任務先將消息發給SDP服務,SDP服務將消息寫入對應存儲體,置信號燈,然后向目的DSP核發送中斷,通知其接收消息,目的DSP核響應中斷從存儲體讀出消息再發送給相應任務。
SDP核間通信功能包括:SDP系統服務注冊、SDP核間通信全局ID路由,IPC消息接收中斷程序及SDP核間通信系統服務。
硬件接口層實現CPU初始化、定時器使用、開關量輸入、指令輸出、總線通訊、串口收發、雙口RAM收發、DA輸出等功能,根據不同的需求使能不同的硬件接口模塊。
框架層一般由主任務調度,基于框架進行配置項開發,主要完成信息輸入、數據處理、測試流程調度、數據輸出等功能。
框架層連接硬件接口層及應用層,它將常用硬件接口的使用方式抽象為“數據結構+API函數”的方式,當應用層需要與硬件打交道時,它需要定義相應的數據結構,調用框架的API來通知框架內核要做什么,框架內核會在確定的時機,根據應用層表達的需求,完成對硬件的相關操作。
應用層在框架層的基礎上由用戶進行相關應用模塊的開發,根據飛行控制軟件的功能需求、實時性需求、接口需求劃分多個不同優先級的任務。
對于可以并行執行的任務采用雙核或多核的分布式方法,多核之間采用SDP通信,核內任務采用IPC消息。用戶只需要關注任務的劃分、任務功能實現及任務間的接口。
應用層為用戶根據不同需求實現定制化的目標功能,具體包括:測試項目的實現、制導姿控算法的實現、輸入輸出的調度、時間管理、健康管理等功能。
重用構件層由基于功能模塊的重用構件組成,用于為應用層提供重用服務,重用構件是規模較小、功能較為簡單獨立的構件。在軟件開發周期的每個階段使用經過測試與認證過的重用構件可以節省成本、降低風險。
構件層由不同類型的重用構件組成,包括數據通信類、數學運算類、通用算法類及制導姿控算法類。
各個構件為相對獨立的功能模塊,構件隱藏了內部具體實現,只提供接口函數,可以根據需求對構件進行封裝或調用。
本文所提出的飛行控制軟件框架適用于多種飛行器軟件,以某飛控制軟件為例,簡述應用情況。
某飛行控制軟件運行在4核DSP6713上的兩個核上,其中,甲核運行飛控控制軟件信息的采集及處理部分,乙核運行飛行控制軟件主控部分,包括總線信息采集、開關量采集、串口收發、指令發送、測試流程處理、制導姿控解算、指令輸出等內容,兩個核之間通過SDP核間通信進行交互,軟件架構如圖3所示。其中:重用構件層共使用了21個構件,具體如表1所示。

表1 重用構件表

圖3 某型號飛行控制軟件結構
采用基于本文提出的基于戰星實時操作系統的多核分布式飛行控制軟件架構,兩個核分布式采集數據并計算,采用SDP核間通信進行交互,降低了飛行控制軟件的運行負載,提高了性能和可靠性。該軟件架構只需要關注應用層開發及層間接口,支持快速開發、可移植性強。
分析了彈箭上軟件的功能需求和性能需求,除了滿足日益復雜的功能需求外,還要求飛行控制軟件具有強實時性,強可靠性,高內聚低耦合, 可擴展性可維護性等性能要求?;诠δ芎托阅苄枨蠓治鼋Y果,提出一種基于戰星實時操作系統的分層飛行控制軟件架構,共有5層,從下至上依次為:操作系統層、硬件接口層、框架層、應用層和重用構件層。
戰星實時操作系統的內核實現各個任務的管理及調度、任務間通信、系統時間管理、內存管理等。硬件接口層實現CPU初始化、定時器使用、開關量輸入、指令輸出、總線通訊、串口收發等功能,根據不同的需求使能不同的硬件接口模塊??蚣軐又饕瓿尚畔⑤斎?、數據處理、測試流程調度、數據輸出等功能。應用層在框架層的基礎上由用戶進行相關應用模塊的開發,包括項目的實現、制導姿控算法的實現、輸入輸出的調度、時間管理、健康管理等功能。重用構件層由基于功能模塊的重用構件組成,用于為應用層提供重用服務。構件層由不同類型的重用構件組成,包括數據通信類、數學運算類、通用算法類及制導姿控算法類構件。
本文所提出的基于戰星實時操作系統的飛行控制軟件實時性高、可靠性和安全性高,可移植性強,適用于多種飛行器軟件。