尚葳蕤, 黨紀紅, 張錦江, 張丹瑤, 李經松
(北京控制工程研究所, 北京 100094)
隨著空間站等復雜航天任務的實施,軟件作為航天重大工程系統的關鍵組成部分發揮著越來越重要的作用,同時隨著航天器越來越智能化和自主化,其軟件規模和復雜度持續增長。 為滿足空間站這類載人復雜航天器長期在軌高可靠穩定運行的要求,軟件在緩解復雜性、提高可靠性、具有可擴展能力[1]等方面面臨挑戰。 欒恩杰[2]在針對航天器軟件復雜度的問題中指出,在不可能取消其本質復雜性的條件下,將面臨如何應對軟件復雜性帶來的問題、風險、防護等方面的挑戰。
NASA 建立了一套科學、規范、有效的軟件工程和質量保證標準體系[3?4],并對飛行軟件的規模和復雜度進行了深入研究,于2009 年發布了《NASA 飛行軟件復雜度研究報告》[5],提出了降低和管理復雜度的建議,探索和驗證了設計模式和架構設計對于緩解復雜度的關鍵意義。 核心飛行軟件系統(core Flight software System,cFS)[6?7]是由NASA 戈達德空間飛行中心(Goddard Space Flight Center,GSFC)推出的一套飛行軟件通用框架,它是一個與硬件平臺、操作系統和特定型號項目無關的可重用軟件,其設計優點中的分層架構、基于組件的設計、動態運行、運行時命令/表參數機制等對于降低復雜度有重要意義。 目前cFS 已經推廣到NASA 的各個航天中心和研究機構以及日本、韓國等,得到了廣泛的應用。
歐空局也非常重視軟件框架設計,很早就發布了關于AOCS(Attitude and Orbit Control Sys?tem)軟件框架設計的研究報告[8],描述了相關設計思路和最佳實踐。 報告中專門提到了數據池的應用,指出在共享數據設計模式中應用數據池能夠最大程度地實現數據產生者與數據消費者之間的解耦,并描述了基于數據池的數據交換模型的實踐實例。 此外,還提出了航天航空開放接口架構(Space Avionics Open Interface aRchitecture,SAVOIR)[9],通過使用和航天器接口服務(Space?craft Onboard Interface Service,SOIS)定義的一系列服務以及自定義服務,構成了一個通用軟件執行平臺來支持上層應用,形成了可配置、可即插即用、基礎夯實、向上開放并可不斷擴展的體系架構。
現代航空飛行器系統也已將開放式系統架構思想引入機載軟件開發中,如分布式綜合模塊化航空電子系統(Distributed Integrated Modular Avi?onics, DIMA)[10]和未來機載能力環境(Future Airborne Capability Environment,FACE)標準[11],旨在航電系統中通過定義軟件標準接口、建立標準組件來滿足不同系統間軟件復用的要求。FACE 標準包含5 個組件段,通過功能分段、封裝隔離的方式實現了軟硬件之間的解耦。 其中,平臺特定服務、傳輸服務和IO 服務組件段都是為解決系統間的數據傳輸業務設計的,提供了標準化數據接口,實現數據的獲取和傳遞,同時還實現了多信息源數據融合、資源共享以及多操作面的功能分配,進行實時動態的數據分發,為可移植單元間的數據交互提供了一種互操作方法。
制導、導航與控制(Guidance, Navigation and Control, GNC)系統作為空間站任務的核心分系統,完成空間站多艙段的姿態與軌道控制任務,其控制軟件規模大、功能復雜。 按照GJB8000-2013《軍用軟件研制能力等級要求》[12]的規定,超過十萬行的嵌入式軟件屬于巨型規模,空間站GNC 系統控制軟件已步入巨型規模的范疇。
在調研國外航天航空機構在大規模復雜軟件框架設計和可擴展性標準化數據設計思路和經驗的基礎上,本文針對空間站GNC 系統控制軟件復雜度高、可靠性和可擴展性要求高等特點對軟件框架設計開展研究,提出基于數據池的軟件框架設計方法,并給出應用效果。
空間站由多個航天器在軌組裝建造而成,是具有長壽命、高可靠、可維修等特點的載人航天器。 其中,GNC 系統作為航天器的關鍵分系統,能夠完成空間站整個飛行和組裝建造階段的姿態軌道控制任務。 天和、問天、夢天各艙段各自具有完整的GNC 系統,分別作為目標器以及追蹤器完成在軌交會對接等組裝建造,并在形成組合體之后完成不同構型的姿態軌道控制任務。 實現GNC 系統任務的控制軟件具有如下需求特點:
1)穿艙總線信息架構復雜,多艙資源融合使用、冗余備份,IO 數據管理復雜。 為實現空間站各艙控制系統資源的融合使用,多艙GNC 系統設計了4 條超200 m 的1553 總線,交叉聯通了各艙的200 余臺套設備,構建了基于1553B 總線的GNC 多艙段信息架構,實現了整站各艙所有控制系統資源的完全融合使用、冗余備份和動態重構,是目前國內在軌應用的總線長度最長、設備數據最多、規模最為龐大的1553B 信息架構,需要軟件具有多艙段多總線資源管理的能力。 同時由于總線掛接部件多,如果采用傳統控制軟件針對每個部件定制式的IO 處理方式,軟件將非常復雜,要緩解復雜度需要軟件針對IO 處理進行通用化設計。
2)控制器采用拜占庭四機容錯結構[13],四機軟件數據無容差同步運行。 空間站四機容錯系統中每個單機控制不同的總線完成不同的IO 工作,四機需要協同完成分布式數據采集和控制量輸出,而控制算法計算和控制輸出決策需要四機熱備份系統以無容差方式完全一致運行,因此需要軟件實現四機之間IO 數據的實時交互和數據無容差同步運行的需求。
3)空間站對擴展能力的要求,需要在設計階段考慮可擴展性。 空間站早期構想階段就提出了擴展需求,指出空間站建造完成后,應具備良好的艙段擴展、能源擴展和應用支持擴展能力[1],需要軟件能夠適應后續更多擴展艙段的資源管理。因此軟件需要在架構設計時考慮可擴展需求,以軟件定義標準化數據接口、建立標準組件等思路開展軟件框架設計。
基于上述需求特點和設計難點,空間站控制軟件需要在多艙軟件統一框架設計和數據設計上尋求突破,使得軟件框架具備多艙段多機多總線的資源管理能力、可靠高效的數據管理能力和可移植和可擴展能力。
參考FACE 標準IO 服務段和傳輸服務段關于交互數據標準化接口的設計思路,針對空間站多艙多機多總線信息融合和冗余管理的特點,本文引入數據池的思想進行IO 數據的獲取和傳遞,并將所有交互數據進行抽象,設計統一的格式開辟數據池。 如圖1 所示,在原始通信和數據處理之間增加設計了2 個數據池,分別存放輸入交換比對數據和輸出交換比對數據。 同時該方法不局限于1553 總線體系,也適用于CAN 總線、串口、SPW 總線等各種類型的接口。

圖1 IO 數據池的開辟Fig.1 Development of IO data pool
每個數據池的數據項按照不同的部件分別存放,數據池中每個數據項有唯一標識,需明確數據的標識符、屬性以及數據內容等信息。 通過數據標識與其實際部件和設備來源進行掛接,并根據系統實際需求來分配數據項的大小。 數據池的格式示例見圖2,數據池中數據項格式示例見表1。

表1 IO 數據池數據項格式定義Table 1 Definition of data item format in IO data pool

圖2 IO 數據池格式Fig.2 Format of IO data pool
基于空間站GNC 系統多艙段多機多總線容錯系統的信息融合及冗余管理架構,需要將四機分布式獲取的數據進行交互、融合和同步。 針對該問題軟件提出了拜占庭四機容錯結構的實時無容差同步運行技術方案,設計了四機數據交換比對同步方法,通過對數據池中的數據進行多輪交換實現了多機信息共享,設計了多策略綜合選舉算法,實現了多機數據的實時融合對齊,實現了四機之間單源數據、多源同步數據、多源異步數據等不同類型且大數據量交互IO 數據的無容差精確同步。 IO 數據同步設計方法示意圖如圖3 所示。

圖3 IO 數據同步設計Fig.3 IO data synchronous design
由于空間站數據池中數據項非常多,且每個控制周期的采集、處理和輸出等多個環節需要多次訪問,如果采用遍歷查詢,將嚴重影響實時控制軟件的性能。 軟件設計了如圖4 所示的快速訪問機制,通過對多艙、多機、多總線和數據之間的關系進行建模,建立了數據標識、數據屬性和數據內容之間復雜的分層關聯關系和相互映射的多層緩沖機制。 同時為確保數據訪問性能最壞情況可確定,建立了2 級靜態索引表訪問和動態查詢關系表相結合的方法,實現了在數據采集、輸入交換比對、控制算法計算、輸出交換比對、控制輸出等數據實時處理全過程的高效、可靠訪問管理。

圖4 數據項快速訪問機制設計Fig.4 Design of fast access mechanism for data items
進行基于數據池的空間站多艙軟件統一框架整體設計,主要原則包括:
1)分層設計。 將功能分為接口層、通用服務層和應用層,層間通過通用接口訪問,實現通用功能和可變功能分離;同時解除頂層應用算法與IO數據耦合,解除IO 數據與硬件、協議的耦合;
2)功能模塊化。 將每層劃分為多個功能單元,針對功能單元通過代碼模板明確接口形式,確保功能單元之間僅有較少的、清晰且穩定的接口;
3)數據接口標準化。 通過提供IO 數據獲取、傳遞、融合、同步和管理的標準化數據接口和組件,緩解軟件復雜度,提高可移植性和擴展性。
空間站大規模復雜控制軟件基于數據池的軟件框架設計如圖5 所示。

圖5 基于數據池的軟件框架設計Fig.5 Design of software framework based on data pool
空間站3 個艙的GNC 系統控制軟件使用上述基于數據池的軟件框架設計方法進行了分層、功能模塊化和數據接口標準化的統一設計,使得多艙軟件的底層接口層和通用服務層框架代碼完全一致。 同時設計了多個包含總線配置、單機設備配置、通信狀態設置等眾多信息的配置參數表來區分數據池數據的屬性,實現了約300 個輸入數據項、200 個輸出數據項,共超過32 KBytes 采集數據和8 KBytes 輸出數據的高效存儲、訪問和同步,以輸入交換比對數據池為例,相關設計及應用結果如表2 所示。

表2 輸入交換比對數據池設計結果Table 2 Design results of input exchange comparison data pool
該框架解決了空間站大規模復雜控制軟件多艙段多機多總線資源管理和具備可擴展性的難題,實現了軟件復雜的底層通信與上層應用處理之間的數據隔離和解耦,使得多艙軟件復用率達到70%,并具備后續可擴展能力。 相比國外先進航天航空機構的成熟軟件架構,本文設計方法重點在嵌入式軟件框架的數據標準化設計方面取得了研究成果,還未能形成如cFS、FACE 等的行業軟件標準架構。 后續可以進一步抽象提煉航天器軟件的基本系統組織,包含構件、構件之間、構件與環境之間的關系,建立開放、動態和可擴展的構件運行環境,通過文檔化和模型化不斷提高構件接口成熟等級,形成模型化的軟件復用能力。
空間站GNC 系統控制軟件在研制過程中應用了本文提出的基于數據池的軟件框架設計方法,形成了層次化、模塊化和數據標準化的統一框架,有效解決了軟件復雜性問題,提高了軟件復用率和可擴展能力。
為了有效保證空間站GNC 系統控制軟件這類大規模復雜軟件的質量和研制進度需求,還應形成以軟件架構為核心的軟件開發過程,即以軟件架構描述為系統藍圖,以共性點、差異點和關注點等特征模型為設計起點,基于中間件技術通過組裝、部署和維護的方式進行開發。
后續將進一步貫徹“硬件標準通用,軟件定義系統”的系統設計理念,在建立航天器軟件行業通用架構模型,形成跨組織的軟件復用標準和資產方面繼續開展研究。