賀彥博 徐曉輝 彭立章 徐峰
摘 ?要:空間飛行器研制正在由專用化向通用化方向轉(zhuǎn)型,因此必須改變當(dāng)前為每個型號重新開發(fā)業(yè)務(wù)軟件的現(xiàn)狀。本文闡述了層次化軟件基礎(chǔ)平臺的設(shè)計思想,引入國際標(biāo)準(zhǔn),結(jié)合空間飛行器業(yè)務(wù)需求建立了可通用的主控計算機(jī)軟件架構(gòu)。
關(guān)鍵詞:空間飛行器;飛行軟件;軟件架構(gòu)
中圖分類號:TP311.1 ? ? 文獻(xiàn)標(biāo)識碼:A
Abstract:Spacecraft development is transforming from specialization to generalization,so the current status of software redevelopment for each project must be changed.This paper describes the design hierarchy based software platform,introduces international standards,establishes a main control computer software architecture that can be generalized in combination with the requirements of spacecraft industry.
Keywords:spacecraft;flight software;software architecture
1 ? 引言(Introduction)
隨著航天科技的持續(xù)發(fā)展,航天工業(yè)部門面臨日益增長的研制壓力。相比以往,研制任務(wù)更加繁重而研制周期不斷縮短,同時客戶又對航天器任務(wù)提出了更高的可擴(kuò)展性要求。包括美國航空航天局和歐空局在內(nèi)的主要國際航天組織均面臨空間任務(wù)愈加復(fù)雜、軟件規(guī)模持續(xù)增長的情況。以歐空局為例,該組織管轄下的空間任務(wù)飛行器主控計算機(jī)軟件的規(guī)模在過去的30多年里持續(xù)增長,如表1所示。
軟件規(guī)模的持續(xù)增長使得歐空局面臨較大的研制壓力,于是歐空局提出了空間航電開放接口體系(SAVOIR)作為空間電子設(shè)備的參考體系,該參考體系提出如下軟件工程要求[1]:
(a)軟件生產(chǎn)效率
縮短軟件開發(fā)時間,節(jié)省軟件確認(rèn)和驗證消耗,避免重復(fù)開發(fā),提高效費比,保持并提高軟件產(chǎn)品質(zhì)量。
(b)增加反應(yīng)性
緩解項目后期需求變動帶來的沖擊,簡化并協(xié)調(diào)故障檢測、隔離和恢復(fù)(FDIR)。
(c)增加靈活性
支持不同類型的系統(tǒng)集成策略,支持工業(yè)界策略和商用標(biāo)準(zhǔn),支持多軟件供應(yīng)商策略,支持分發(fā)活動,以及未來其他需求。
滿足上述要求的關(guān)鍵是軟件構(gòu)件的可重用性:
(a)體系結(jié)構(gòu)重用:標(biāo)準(zhǔn)化、可組裝、功能可組合的組件模型。
(b)功能重用:業(yè)務(wù)的標(biāo)準(zhǔn)化及軟件組件的可重用性。
以往針對特定任務(wù)目標(biāo)重新研制專用飛行軟件的方式使得空間飛行器的成本高昂,因此亟待改變研制模式,在未來用途廣泛、性能先進(jìn)而價格可承受的通用空間飛行器基礎(chǔ)軟件平臺將是研制的主流方向。空間飛行器基礎(chǔ)軟件平臺需在各個型號中復(fù)用,在軌運行過程中也需要持續(xù)拓展飛行任務(wù),因此要求軟件基礎(chǔ)平臺具備架構(gòu)易復(fù)用、模塊易維護(hù)、功能易擴(kuò)展、在軌易重構(gòu)和研制成本可負(fù)擔(dān)的特性。
2 ? 當(dāng)前面臨的問題(Current problems)
對于空間高可靠性計算機(jī)系統(tǒng)而言,特別是對器件中的各種存儲單元,單粒子效應(yīng)是影響并制約系統(tǒng)可靠性及其使用壽命的主要因素。
在傳統(tǒng)的飛行器中,主控計算機(jī)一般使用具有抗輻射指標(biāo)的可編程只讀存儲器(PROM)、SRAM的硬件配置。由于PROM在抗單粒子方面具有高可靠性,飛行軟件一般在PROM中運行,而將SRAM作為程序運行的緩存區(qū)。在默認(rèn)流程中系統(tǒng)自動執(zhí)行飛行軟件業(yè)務(wù)流程以完成系統(tǒng)主要功能,當(dāng)需要進(jìn)行軟件調(diào)試時,則啟動調(diào)試功能從串口加載測試軟件。
該模式在行業(yè)內(nèi)廣泛應(yīng)用,技術(shù)成熟,爭議最少,但該模式具有明顯的缺陷。具體如表2所示。
現(xiàn)階段空間飛行器中,大多將軟件劃分為設(shè)備管理軟件和應(yīng)用軟件兩個層次,在應(yīng)用軟件層并未做更具體的分層設(shè)計,該模式適用于針對專用裝備研制專用軟件的任務(wù),易于硬件研制單位與總體設(shè)計單位分工協(xié)作。
目前已存在部分新型號將軟件劃分為設(shè)備訪問層、服務(wù)組件層和應(yīng)用任務(wù)層,具備了現(xiàn)代大型軟件架構(gòu)的雛形,但缺乏參考標(biāo)準(zhǔn)和操作系統(tǒng)支持,層次劃分不夠清晰、業(yè)務(wù)軟件組件間的耦合仍然較多、軟件復(fù)用率較低,若面臨新的業(yè)務(wù)需求仍會引發(fā)大規(guī)模代碼變更。
傳統(tǒng)的軟件設(shè)計方法在當(dāng)下型號研制工作中仍然具有參考價值,但新型的多用途空間飛行器對軟件提出了更高的可復(fù)用性和可維護(hù)性要求,因此亟待將更先進(jìn)的軟件技術(shù)投入工程應(yīng)用。需解決的問題如下所示:
(a)降低軟件維護(hù)的代價
目前,飛行器研制過程中軟件部署流程復(fù)雜且固化后難以更改,導(dǎo)致軟件研制成本居高不下、軟件難以快速迭代,進(jìn)而影響軟件產(chǎn)品的質(zhì)量;若在飛行器型號正樣階段軟件固化后再次發(fā)現(xiàn)程序缺陷,由此帶來的計算機(jī)下器處理會導(dǎo)致型號進(jìn)度受到嚴(yán)重影響;處于在軌飛行階段時進(jìn)行大規(guī)模軟件升級較為困難,也會極大制約飛行器空間任務(wù)拓展能力。
(b)建立軟件參考架構(gòu)
現(xiàn)階段軟件架構(gòu)層次劃分不清、模塊間耦合過多、各型號軟件架構(gòu)差異過大,導(dǎo)致軟件復(fù)用率較低,研發(fā)效率不高,研制成本居高不下。歐空局、NASA等機(jī)構(gòu)的軟件參考架構(gòu)難以直接在我國工業(yè)部門的軟件研制中落地,因此需要根據(jù)具體業(yè)務(wù)有針對性的引入行業(yè)標(biāo)準(zhǔn),并設(shè)計適合于我國空間飛行器需求的軟件參考架構(gòu)。
3 ? 軟件參考體系設(shè)計(Software reference architecture)
3.1 ? 部署與運行
為解決軟件在研和在軌過程中維護(hù)代價過高的問題,要求空間飛行器主控計算機(jī)平臺配置的存儲硬件為PROM、FLASH/EEPROM和SRAM三者結(jié)合的方式。相比傳統(tǒng)模式,由于FLASH/EEPROM的抗單粒子性能遠(yuǎn)不及PROM,在該新模式下如何應(yīng)對單粒子效應(yīng)的影響是較為重要的問題。另外,基于FLASH/EEPROM芯片的固有特性,通過設(shè)計在線燒寫軟件功能,使得系統(tǒng)具備了更加靈活的軟件部署能力。芯片特性對軟件的影響情況如表3所示。
基于該硬件配置,軟件系統(tǒng)在PROM中部署系統(tǒng)bootloader(啟動、加載)軟件和最小模式軟件,在FLASH/EEPROM中部署飛行軟件。其中boot功能實現(xiàn)計算機(jī)資源的初始化,loader功能實現(xiàn)從串口或從FLASH/EEPROM加載飛行軟件兩種運行模式,最小模式軟件用以進(jìn)行緊急故障應(yīng)對和大規(guī)模軟件在軌重構(gòu)。
最小模式軟件可實現(xiàn)系統(tǒng)在軌應(yīng)急狀況下的安全處置,并支持在軌和地面研制過程中對軟件進(jìn)行全部更新。在軌期間,當(dāng)系統(tǒng)出現(xiàn)嚴(yán)重故障或者需要大規(guī)模修改時,將軟件切換至最小模式,該模式以系統(tǒng)最簡配置保證平臺的姿態(tài)、能源安全,建立應(yīng)急通信通道和故障反饋機(jī)制,使得飛行器具備通過地面干預(yù)而恢復(fù)正常工作狀態(tài)的能力。
啟動加載軟件運行后通過倒計時等待用戶選擇加載對象,若超過倒計時無操作則自動加載飛行軟件,工作模式如下所示:
(a)默認(rèn)模式
在軌期間飛行器平臺上電或復(fù)位后,首先從PROM運行啟動加載軟件,而后自動以三取二方式加載FLASH/EEPROM中的飛行軟件到RAM中,并跳轉(zhuǎn)到RAM中開始執(zhí)行飛行軟件功能。
(b)故障模式
當(dāng)系統(tǒng)發(fā)生嚴(yán)重故障或需要大規(guī)模重構(gòu)時可切換進(jìn)入最小模式軟件,在保障系統(tǒng)能源、溫控與姿態(tài)安全的基礎(chǔ)上進(jìn)行故障監(jiān)測和在軌軟件重構(gòu)。
(c)調(diào)試模式
在地面研制過程中,可在倒計時時刻選擇串口接收加載功能,用于對FLASH/EEPROM中的程序和數(shù)據(jù)進(jìn)行重新編程。
3.2 ? 軟件架構(gòu)設(shè)計
軟件系統(tǒng)實現(xiàn)飛行器核心管理控制,整合程控、導(dǎo)航、姿軌控、機(jī)構(gòu)控制、遙控遙測、能源管理、溫度控制、健康安全維護(hù)等功能。
應(yīng)用實時操作系統(tǒng),建立層次化、組件化和標(biāo)準(zhǔn)化的開放式軟件架構(gòu),提高產(chǎn)品的靈活性、減小維護(hù)升級的代價,實現(xiàn)系統(tǒng)的靈活管理控制,為核心軟件組件及飛行任務(wù)的持續(xù)革新提供良好的基礎(chǔ)平臺。
3.2.1 ? 軟件層次設(shè)計
軟件設(shè)計方式由以往面向系統(tǒng)硬件資源處理的設(shè)計方式,轉(zhuǎn)而面向基于系統(tǒng)需求的功能組織[2];軟件設(shè)計中將設(shè)備面與應(yīng)用面分離,以設(shè)備面實現(xiàn)硬件資源的訪問處理,以應(yīng)用面實現(xiàn)系統(tǒng)平臺的靈活功能定義。
設(shè)計遵循策略與機(jī)制分離的原則,以軟件定義飛行器為基本設(shè)計思想,建立基于分層體系結(jié)構(gòu)的開放式軟件架構(gòu)。
(a)策略與機(jī)制分離
軟件設(shè)計中將平臺的管理和控制功能劃分為飛行任務(wù)策略和平臺基礎(chǔ)機(jī)制兩部分,加強(qiáng)平臺基礎(chǔ)機(jī)制的完備性和穩(wěn)定性,并以此為基礎(chǔ)構(gòu)建靈活多變的飛行任務(wù)策略,同時要求任務(wù)策略具備可快速全面重構(gòu)的能力。
(b)體系結(jié)構(gòu)開放性
借鑒工業(yè)界軟件定義網(wǎng)絡(luò)與歐空局軟件定義衛(wèi)星的設(shè)計思想,確立將應(yīng)用面與設(shè)備面分離的原則,以應(yīng)用面重定義實現(xiàn)飛行任務(wù)的靈活擴(kuò)展。
軟件設(shè)計實現(xiàn)縱向?qū)哟位蜋M向組件化,支持設(shè)備的即插即用管理,支持因適應(yīng)技術(shù)進(jìn)步或任務(wù)變化而對局部或全部軟件實施快速變更,使得體系結(jié)構(gòu)具有良好的開放性和較強(qiáng)的適應(yīng)性。
軟件實施層次化設(shè)計,借鑒通用開放式結(jié)構(gòu)(GOA)標(biāo)準(zhǔn)將各項功能分解到應(yīng)用任務(wù)管理、系統(tǒng)服務(wù)組件和設(shè)備資源訪問三個層次[3],如圖5所示。
(a)應(yīng)用任務(wù)管理層使用實時操作系統(tǒng)調(diào)度各系統(tǒng)任務(wù),實現(xiàn)平臺資源的管理和試驗流程的控制。
(b)系統(tǒng)服務(wù)組件層包含程控機(jī)制、平臺內(nèi)務(wù)管理、姿態(tài)軌道控制、機(jī)構(gòu)控制、安全可靠性支持和應(yīng)用支持庫等,為任務(wù)系統(tǒng)提供基礎(chǔ)應(yīng)用組件支持。
(c)設(shè)備資源訪問層管理平臺硬件資源并提供平臺狀態(tài)信息和平臺命令執(zhí)行的操作接口。
3.2.2 ? 軟件多維度解耦及可維護(hù)性設(shè)計
主控計算機(jī)軟件實現(xiàn)操作系統(tǒng)內(nèi)核與應(yīng)用軟件、控制面與設(shè)備面、應(yīng)用軟件與應(yīng)用軟件之間等多個層次和緯度的解耦,如圖6所示。
(a)建立平臺設(shè)備抽象層以將應(yīng)用業(yè)務(wù)與設(shè)備資源分離,并實現(xiàn)應(yīng)用面的通用化和可維護(hù)性。
(b)將操作系統(tǒng)內(nèi)核與應(yīng)用軟件分離編譯[4],并啟用權(quán)限分級機(jī)制。
(c)應(yīng)用RTP實時進(jìn)程機(jī)制[4],實現(xiàn)應(yīng)用軟件之間的空間隔離。
(d)將基礎(chǔ)業(yè)務(wù)框架實現(xiàn)為動態(tài)鏈接庫,以供各個應(yīng)用程序調(diào)用。
(e)應(yīng)用SOIS星上接口業(yè)務(wù)標(biāo)準(zhǔn),實現(xiàn)設(shè)備與平臺設(shè)備管理軟件的解耦。
飛行軟件將各應(yīng)用業(yè)務(wù)作為獨立的應(yīng)用程序,操作系統(tǒng)實時進(jìn)程(RTP)機(jī)制保證了任務(wù)調(diào)度的實時性、存儲空間與時間資源的確定性[4]。內(nèi)核與應(yīng)用軟件的隔離保證了應(yīng)用程序的崩潰不影響內(nèi)核的穩(wěn)定性,應(yīng)用軟件之間的隔離保證系統(tǒng)的整體穩(wěn)定性,具體飛行任務(wù)與基礎(chǔ)業(yè)務(wù)框架的分離使得軟件基礎(chǔ)平臺的可復(fù)用程度得以提高。
系統(tǒng)基于實時操作系統(tǒng)內(nèi)核系統(tǒng)調(diào)用和用戶層軟件組件庫,支持應(yīng)用軟件和基礎(chǔ)業(yè)務(wù)框架的獨立開發(fā)和調(diào)試,并支持通過安裝不同的應(yīng)用程序?qū)崿F(xiàn)地面快速集成和部署。在軌飛行期間,通過增加、刪除或更改應(yīng)用程序和動態(tài)鏈接庫以實現(xiàn)飛行任務(wù)的快速重構(gòu)。
3.2.3 ? 行業(yè)標(biāo)準(zhǔn)參考
可通過應(yīng)用行業(yè)標(biāo)準(zhǔn)降低研制成本和提高產(chǎn)品質(zhì)量,可參照的行業(yè)標(biāo)準(zhǔn)或協(xié)議如表4所示。
3.2.4 ? 軟件架構(gòu)設(shè)計
依據(jù)軟件協(xié)同設(shè)計思想,通過縱向分層和橫向組件化設(shè)計,建立資源訪問、服務(wù)組件和系統(tǒng)任務(wù)等三個軟件層面,制定各層次和各組件的標(biāo)準(zhǔn)業(yè)務(wù)及接口規(guī)范,如圖8所示。
各層次功能劃分如下所示:
(a)資源訪問層——設(shè)備層和驅(qū)動層
設(shè)備層由構(gòu)成飛行器的各種硬件設(shè)備構(gòu)成。除處理器、存儲器、時基、通訊接口、看門狗等計算機(jī)資源外,還包括通過總線連接的推進(jìn)、載荷、電源、姿軌控傳感器與執(zhí)行器等飛行器設(shè)備。
驅(qū)動層包含了實時操作系統(tǒng)和各類設(shè)備驅(qū)動,為上層應(yīng)用提供訪問底層設(shè)備的API接口、三模輸出數(shù)據(jù)表決和多任務(wù)管理機(jī)制等支持。
(b)資源訪問層——平臺設(shè)備抽象層
抽象層根據(jù)平臺敏感器、執(zhí)行器等設(shè)備的不同類別,對驅(qū)動層提供的操作接口進(jìn)行封裝,向上提供設(shè)備訪問的標(biāo)準(zhǔn)接口,屏蔽底層軟件實現(xiàn)細(xì)節(jié),屏蔽硬件設(shè)備的細(xì)節(jié)差異,使得服務(wù)組件層的設(shè)計不至過度耦合平臺設(shè)備特殊性。
通過平臺設(shè)備抽象設(shè)計,實現(xiàn)了上層軟件與設(shè)備特殊性的解耦,降低對硬件平臺的依賴,最大限度保證軟件的可復(fù)用性,推動未來發(fā)展中平臺設(shè)備功能與接口的標(biāo)準(zhǔn)化。
(c)服務(wù)組件層
服務(wù)層包含飛行器管理控制領(lǐng)域常用的應(yīng)用組件,為任務(wù)系統(tǒng)提供基礎(chǔ)支撐。業(yè)務(wù)、通信和內(nèi)務(wù)管理組件參照歐空局星地操控基礎(chǔ)協(xié)議建立監(jiān)視業(yè)務(wù)、測試業(yè)務(wù)和事件報告業(yè)務(wù)等16個子服務(wù)[7],利用遙控包和遙測源包監(jiān)視和控制星上各分系統(tǒng),以及有效載荷;軌道與姿態(tài)控制組件包括導(dǎo)航、姿控和軌控等常用基礎(chǔ)算法模塊;機(jī)構(gòu)控制組件包括天線、太陽翼等常用機(jī)構(gòu)控制算法庫;應(yīng)用支持庫包括常用數(shù)學(xué)庫、安全C語言庫等;數(shù)據(jù)與任務(wù)管理器提供整器狀態(tài)數(shù)據(jù)的集中管理、飛行器設(shè)備狀態(tài)采集和指令分發(fā)等基礎(chǔ)管理。
(d)應(yīng)用任務(wù)層
任務(wù)層包括了系統(tǒng)配置與設(shè)備管理、規(guī)劃與自動執(zhí)行、在軌測試管理、系統(tǒng)模式管理、AOCS管理、能源管理、中心FDIR和固態(tài)存儲管理等飛行器頂層功能。
其中系統(tǒng)配置與設(shè)備管理任務(wù)實現(xiàn)飛行器設(shè)備配置的動態(tài)管理;系統(tǒng)模式管理任務(wù)負(fù)責(zé)飛行器在不同硬件配置情況或不同飛行階段時工作模式的預(yù)置和切換;規(guī)劃與自動執(zhí)行任務(wù)負(fù)責(zé)飛行器飛行任務(wù)的子事件規(guī)劃、動作執(zhí)行和反饋狀態(tài)監(jiān)控等;在軌測試管理任務(wù)負(fù)責(zé)整器的自動測試與狀態(tài)報告匯總下行功能;中心FDIR負(fù)責(zé)故障的自主診斷、隔離和處理功能;在軌維護(hù)模塊負(fù)責(zé)軟件的在軌重構(gòu)功能[4]。
4 ? 應(yīng)用情況(Application situation)
經(jīng)實踐檢驗,基于FLASH/EEPROM的軟件部署與運行模式可有效增強(qiáng)軟件研制過程中的可維護(hù)能力和在軌飛行過程中的可重構(gòu)能力,大大提高了型號軟件研制的效率和質(zhì)量。但對于需要長期留軌執(zhí)行任務(wù)的空間飛行器,該模式在復(fù)雜空間環(huán)境中的可靠性和安全性仍有待進(jìn)一步驗證。
引入工業(yè)界技術(shù)成熟的操作系統(tǒng)可解決軟件研制中目前存在的業(yè)務(wù)間高耦合、程序難維護(hù)等問題,但由于目前星載設(shè)備中處理器性能和存儲空間均嚴(yán)重受限,且對軟件的可靠性、安全性要求較高,因此對操作系統(tǒng)實時進(jìn)程、動態(tài)鏈接庫和可加載內(nèi)核模塊等技術(shù)的應(yīng)用仍處于試驗驗證階段。
軟件參考架構(gòu)的制定使得空間飛行器主控軟件的開發(fā)工作有章可循,軟件模塊的復(fù)用率有所提高。隨著軟件設(shè)計方法的改進(jìn)和軟件組件復(fù)用率的提高,輔助以地面研制階段在線更新和在軌運行階段軟件任務(wù)拓展等技術(shù)手段,軟件的研制效率、反應(yīng)性和靈活性均有所提升,推動了型號整體研制效率的提高并有效降低了綜合研發(fā)成本。但該參考框架中提及的ESA-PUS等標(biāo)準(zhǔn)協(xié)議在當(dāng)前星載軟件業(yè)務(wù)中的應(yīng)用仍處于探索階段,需要在對現(xiàn)有成熟業(yè)務(wù)模式進(jìn)行充分分析的基礎(chǔ)上,結(jié)合用戶實際需求,從器地一體化設(shè)計的角度對飛行器操控模式和地面應(yīng)用系統(tǒng)進(jìn)行整體技術(shù)革新。
5 ? 結(jié)論(Conclusion)
隨著空間飛行器平臺由專用化向通用化的發(fā)展,必須改變針對特定飛行器重新開發(fā)飛行軟件的研制模式,對飛行軟件的可維護(hù)性、可復(fù)用性和研制成本等提出了更高的要求,因此構(gòu)建通用化基礎(chǔ)軟件平臺具有重要意義。本文描述了空間飛行器軟件基礎(chǔ)平臺的設(shè)計要點,參照國際標(biāo)準(zhǔn),確立了層次化、組件化的設(shè)計原則,設(shè)計了可通用的新型主控計算機(jī)軟件參考架構(gòu)。
新型軟件參考架構(gòu)在實際項目中的落地仍需一個長期持續(xù)的過程,需要改進(jìn)軟件設(shè)計方法,并建立與之適應(yīng)的技術(shù)管理體制,才能真正提高星載軟件的研制質(zhì)量和研制效率。
參考文獻(xiàn)(References)
[1] ESA.SAVOIR-FAIRE[EB/OL].http://savoir.estec.esa.int,2018-5-29.
[2] 蒲小勃.現(xiàn)代航空電子系統(tǒng)與綜合[M].北京:航空工業(yè)出版社,2013:386.
[3] AS4893,Generic open architecture (GOA) framework[S].USA:SAE,2002.
[4] 美國風(fēng)河系統(tǒng)公司北京辦事處.風(fēng)河全面整合DO-178B和IEC 61508新安全平臺[EB/OL].http://www.ipcm.com.cn/yjdt/20101020162643.htm,2010-10-20.
[5] CCSDS 732.0-B-3,AOS Space Data Link Protocol[S].Washington,DC,USA:CCSDS,2015.
[6] CCSDS 850.0-G-2,Spacecraft Onboard Interface Services[S].Washington,DC,USA:CCSDS,2013.
[7] ECSS-E-70-41A,Space engineering—Ground systems and operations[S].Noordwijk,The Netherlands:ESA-ESTEC,2003.
作者簡介:
賀彥博(1984-),男,碩士,高級工程師.研究領(lǐng)域:航天器軟件設(shè)計.
徐曉輝(1975-),男,碩士,高級工程師.研究領(lǐng)域:航天項目管理.
彭立章(1984-),男,碩士,高級工程師.研究領(lǐng)域:航天器軟件設(shè)計.
徐 ?峰(1976-),男,碩士,研究員.研究領(lǐng)域:航天器總體設(shè)計.