(航天東方紅衛(wèi)星有限公司,北京 100094)
經(jīng)過近30年的發(fā)展,小衛(wèi)星在各領(lǐng)域的應(yīng)用已全方位展開,包括遙感、通信、導(dǎo)航、空間探測(cè)、空間科學(xué)研究、技術(shù)演示驗(yàn)證等。隨著效費(fèi)比的不斷提升,小衛(wèi)星逐漸成為全球航天發(fā)展熱點(diǎn),發(fā)射數(shù)量急劇增長,在民用、軍用和商業(yè)航天體系中占據(jù)越來越重要的地位。
小衛(wèi)星應(yīng)用領(lǐng)域的不斷擴(kuò)展、功能和結(jié)構(gòu)的日趨復(fù)雜,以及數(shù)量的急劇攀升,必然要求星載軟件具有與之相適應(yīng)的軟件體系結(jié)構(gòu)和可復(fù)用設(shè)計(jì)模式。針對(duì)這種情況,世界各個(gè)航天技術(shù)強(qiáng)國均在積極探索,希望找到低成本、高效率、短周期的衛(wèi)星軟件開發(fā)方式。2005年,美國空軍研究實(shí)驗(yàn)室提出了SPA體系結(jié)構(gòu)(Space Plug-and-Play Avionics)和衛(wèi)星數(shù)據(jù)模型,通過即插即用特性來支持衛(wèi)星軟件快速集成[1-2]。2010年,NASA AMES航天中心提出了SMART(the Small Multi-purpose Advanced Reconfigurable Technology)架構(gòu)以實(shí)現(xiàn)低成本可重構(gòu)小衛(wèi)星的設(shè)計(jì)和開發(fā)[3]。歐空局提出了基于時(shí)空劃分的模塊化綜合電子軟件架構(gòu)[4]。洛克希德馬丁公司開發(fā)了基于JAVA的分布式體系結(jié)構(gòu),支持面向服務(wù)的航天器模型,通過規(guī)范化的服務(wù)來支持上層軟件的復(fù)用[52]。德國Constance大學(xué)和瑞士ETH Zurich大學(xué)提出了OBS(On-Board Software)軟件框架和AOCS(Attitude and Orbit Control System)軟件框架等技術(shù)來提高星載軟件設(shè)計(jì)開發(fā)的可復(fù)用性和可擴(kuò)展性[6-7]。在衛(wèi)星標(biāo)準(zhǔn)化上,空間數(shù)據(jù)系統(tǒng)咨詢委員會(huì)提出了星上互聯(lián)協(xié)議和標(biāo)準(zhǔn)接口服務(wù)(SOIS :spacecraft onboard interface services)[8]。
本文首先分析了面向體系應(yīng)用的星載軟件功能和技術(shù)需求,然后對(duì)星載軟件體系架構(gòu)進(jìn)行了分層模塊化設(shè)計(jì),最后針對(duì)星務(wù)主機(jī)軟件,詳細(xì)描述了基于軟件框架和構(gòu)件技術(shù)的星載軟件靜態(tài)結(jié)構(gòu),動(dòng)態(tài)結(jié)構(gòu)以及可復(fù)用構(gòu)件的運(yùn)行模式。
圖1 星載軟件在空間系統(tǒng)中的功能關(guān)系界面
面向體系應(yīng)用,星載軟件應(yīng)該具有如下功能:1)支持虛擬衛(wèi)星的任務(wù)設(shè)計(jì)迭代過程;通過衛(wèi)星數(shù)據(jù)和服務(wù)模型來支撐任務(wù)策劃階段的衛(wèi)星任務(wù)仿真、開發(fā)和迭代調(diào)試過程;2)支持星載設(shè)備快速開發(fā)調(diào)試;通過通用軟件框架和衛(wèi)星數(shù)據(jù)和服務(wù)模型支持星載軟件的開發(fā)、調(diào)試和虛擬聯(lián)試;3)支持整星AIT階段的快速測(cè)試;提供各分系統(tǒng)自測(cè)試功能實(shí)現(xiàn)平臺(tái),實(shí)現(xiàn)各分系統(tǒng)的快速自測(cè)試,配合整星系統(tǒng)測(cè)試;4)支持衛(wèi)星發(fā)射場(chǎng)階段的快速任務(wù)裝訂;可以根據(jù)不同優(yōu)先級(jí)的發(fā)射預(yù)案,靈活快速的對(duì)任務(wù)參數(shù)進(jìn)行裝訂,如任務(wù)軌道、任務(wù)位置、數(shù)據(jù)傳輸說明、臨時(shí)地面站等信息;5)實(shí)現(xiàn)衛(wèi)星的各項(xiàng)在軌功能。如圖1所示,星載軟件的功能涉及空間體系中的各個(gè)組成部分和各個(gè)操作階段。
面向體系應(yīng)用的星載軟件應(yīng)該具有三個(gè)主要技術(shù)特點(diǎn):軟件的可復(fù)用性;軟件運(yùn)行的硬件平臺(tái)無關(guān)性;軟件開發(fā)的快速性;這三個(gè)技術(shù)特點(diǎn)決定著星載軟件的技術(shù)需求,主要包括:軟件框架技術(shù)、軟件中間件(即軟總線技術(shù))技術(shù)、衛(wèi)星數(shù)據(jù)和服務(wù)模型技術(shù)。
軟件框架技術(shù)是實(shí)現(xiàn)軟件可重構(gòu),可復(fù)用的關(guān)鍵技術(shù)。軟件框架通過建立可復(fù)用的領(lǐng)域模型,然后依據(jù)領(lǐng)域模型產(chǎn)生出該領(lǐng)域應(yīng)用軟件的體系結(jié)構(gòu),以此為基礎(chǔ)識(shí)別、提煉和開發(fā)該領(lǐng)域的構(gòu)件,形成構(gòu)件庫,同時(shí)將控制流抽象為軟件功能接口,最后通過例化實(shí)現(xiàn)具體的星載軟件。軟件中間件技術(shù)是實(shí)現(xiàn)硬件平臺(tái)無關(guān)性的關(guān)鍵途徑。中間件軟件駐留在多個(gè)星載設(shè)備節(jié)點(diǎn)上,屏蔽了底層硬件具體信息,管理連接到這些節(jié)點(diǎn)上的設(shè)備和服務(wù)。衛(wèi)星數(shù)據(jù)和服務(wù)模型是面向體系應(yīng)用星載軟件快速開發(fā)的重要技術(shù)。該模型對(duì)硬件設(shè)備的功能進(jìn)行抽象描述,為軟件集成提供數(shù)據(jù)和服務(wù)支持。該技術(shù)從數(shù)據(jù)的角度來描述衛(wèi)星,將傳統(tǒng)意義上衛(wèi)星各個(gè)分立設(shè)備的功能用“數(shù)據(jù)模型”和“服務(wù)”來分類描述,以便于衛(wèi)星軟件的設(shè)計(jì)、維護(hù)和擴(kuò)展。
圖2 星上綜合電子系統(tǒng)介紹
國內(nèi)小衛(wèi)星一般采用分布式設(shè)計(jì),如圖2所示,包括星務(wù)主機(jī)、星上網(wǎng)絡(luò)、嵌入式管理執(zhí)行單元(management executive unit,MEU)和星上其它設(shè)備。星上網(wǎng)包括星上控制網(wǎng)和信息網(wǎng)兩種。星上控制網(wǎng)將星上各功能模塊有機(jī)地連接起來,實(shí)現(xiàn)星上信息交換和共享,實(shí)時(shí)地完成星上運(yùn)行的管理、測(cè)量、控制和任務(wù)調(diào)度,實(shí)現(xiàn)衛(wèi)星運(yùn)行操作控制。星上信息網(wǎng)作為整星高速信息總線,實(shí)現(xiàn)星上大容量的信息交換、處理和傳送。嵌入式管理執(zhí)行單元實(shí)現(xiàn)各設(shè)備的網(wǎng)絡(luò)通信的接口[9]。
為了實(shí)現(xiàn)面向體系應(yīng)用的星載軟件,需要從整星的角度對(duì)星上軟件進(jìn)行設(shè)計(jì)。整星軟件的體系結(jié)構(gòu)如圖3所示,包括管理層、功能層、服務(wù)層、協(xié)議層。管理層包括衛(wèi)星配置管理,衛(wèi)星平臺(tái)管理和衛(wèi)星載荷任務(wù)管理以及系統(tǒng)故障診斷與恢復(fù)管理;功能層提供管理層各個(gè)模塊所需的各種服務(wù),例如飛行動(dòng)力學(xué)計(jì)算模塊、能源管理模塊、通信管理模塊等;服務(wù)層就像駐留在每個(gè)星上網(wǎng)節(jié)點(diǎn)上的軟件交換機(jī)(或軟件總線)一樣實(shí)現(xiàn)縱向和橫向的數(shù)據(jù)交換。協(xié)議層主要包含各種硬件設(shè)備的驅(qū)動(dòng)。
圖3 整星分層模塊化體系結(jié)構(gòu)
圖3中的軟件體系結(jié)構(gòu)是從整星的角度對(duì)軟件進(jìn)行分層設(shè)計(jì),從單機(jī)角度來看,每個(gè)單機(jī)不一定具有所有的層次。如圖4所示,例如星務(wù)主機(jī)具有任務(wù)的所有層次,某些星上設(shè)備只具有中間件層和協(xié)議層。在這種軟件體系結(jié)構(gòu)中,中間件層同軟件交換機(jī)一樣完成縱向和橫向的數(shù)據(jù)交換。
圖4 分布在各單機(jī)上的軟件
星載核心控制軟件的靜態(tài)框架包括四層:管理層、功能層、服務(wù)層和協(xié)議層,如圖5所示。管理層包括同步管理構(gòu)件、遙測(cè)管理構(gòu)件、遙控管理構(gòu)件、故障診斷恢復(fù)管理構(gòu)件、控制器管理構(gòu)件、在軌操作構(gòu)件、數(shù)據(jù)流管理構(gòu)件,這些構(gòu)件主要實(shí)現(xiàn)各層功能構(gòu)件的協(xié)調(diào)和管理。功能層主要包括各種算法構(gòu)件、數(shù)據(jù)池和事件池。管理層構(gòu)件是實(shí)現(xiàn)軟件框架技術(shù)的核心組成部分。
1)同步管理構(gòu)件:整個(gè)軟件的運(yùn)行嚴(yán)格地遵守時(shí)間片約定,該構(gòu)件用于對(duì)各層構(gòu)件的同步運(yùn)行管理;
2)遙測(cè)管理構(gòu)件:用于調(diào)度相關(guān)的功能層構(gòu)件向數(shù)據(jù)池發(fā)送最新的遙測(cè)數(shù)據(jù),或者從數(shù)據(jù)池中收集所需要的遙測(cè)數(shù)據(jù);
3)遙控管理構(gòu)件:用于從事件池中讀取并解析遙控指令,根據(jù)解析結(jié)果向事件池發(fā)送消息;
4)故障診斷恢復(fù)管理構(gòu)件: 該功能構(gòu)件包括了兩部分,一部分位于管理層,用于對(duì)事件池中的故障消息進(jìn)行檢測(cè)并作出相應(yīng)的處理。另一部分嵌入在服務(wù)層構(gòu)件和協(xié)議層構(gòu)件上用于報(bào)告故障消息,并接收管理層的故障診斷恢復(fù)指令。
5)控制器管理構(gòu)件:用于對(duì)各個(gè)算法構(gòu)件運(yùn)行的管理;
6)在軌操作管理構(gòu)件:用于根據(jù)遙控指令和控制器管理構(gòu)件運(yùn)行的結(jié)果完成對(duì)各種驅(qū)動(dòng)器的操作控制;
7)數(shù)據(jù)流管理構(gòu)件:用于對(duì)數(shù)據(jù)池和事件池的管理和更新操作。
圖5 星載核心控制軟件的靜態(tài)結(jié)構(gòu)
星載核心控制軟件的動(dòng)態(tài)框架如圖6所示。在單位運(yùn)行周期內(nèi),軟件運(yùn)行分為若干個(gè)時(shí)隙,每個(gè)時(shí)隙中運(yùn)行管理層的部分管理構(gòu)件。在運(yùn)行管理層構(gòu)件時(shí),該構(gòu)件會(huì)完成其余三層相關(guān)功能的調(diào)用。此外,在每個(gè)時(shí)隙中都存在一個(gè)刷新存儲(chǔ)系統(tǒng)的背景任務(wù)。例如,時(shí)隙1={同步管理;遙控管理;故障診斷恢復(fù)管理;數(shù)據(jù)流管理};時(shí)隙3={同步管理;控制器管理;故障診斷恢復(fù)管理;數(shù)據(jù)流管理;在軌操作管理}。
圖6 星載核心控制軟件的動(dòng)態(tài)結(jié)構(gòu)
管理層中的每個(gè)構(gòu)件都對(duì)應(yīng)著動(dòng)態(tài)變化的對(duì)象鏈表。這些對(duì)象鏈表的節(jié)點(diǎn)分別對(duì)應(yīng)著各種算法對(duì)象,遙測(cè)數(shù)據(jù)對(duì)象,異常消息對(duì)象等。管理層構(gòu)件運(yùn)行時(shí),將輪詢鏈表中的對(duì)象節(jié)點(diǎn)。對(duì)象節(jié)點(diǎn)中包括該對(duì)象的數(shù)據(jù)和對(duì)該類數(shù)據(jù)需要進(jìn)行的操作。如圖7所示,以同步管理構(gòu)件對(duì)應(yīng)的同步對(duì)象鏈表和遙測(cè)管理構(gòu)件對(duì)應(yīng)的遙測(cè)數(shù)據(jù)對(duì)象鏈表為例,當(dāng)同步管理構(gòu)件運(yùn)行時(shí)會(huì)輪詢管理層各個(gè)構(gòu)件。當(dāng)輪詢到遙測(cè)管理構(gòu)件時(shí),遙測(cè)管理構(gòu)件調(diào)用其對(duì)應(yīng)的遙測(cè)數(shù)據(jù)對(duì)象鏈表,如果有新的數(shù)據(jù)產(chǎn)生,遙測(cè)管理構(gòu)件不對(duì)遙測(cè)數(shù)據(jù)進(jìn)行操作,而是由遙測(cè)數(shù)據(jù)對(duì)象中的操作(類中的成員函數(shù))負(fù)責(zé)將新數(shù)據(jù)送至數(shù)據(jù)池中,完成遙測(cè)數(shù)據(jù)采集的工作。這種運(yùn)行機(jī)制實(shí)現(xiàn)了領(lǐng)域模型和具體特例的解耦,從而提高了軟件的可復(fù)用性。
圖7 星務(wù)主機(jī)軟件架構(gòu)中鏈表示例
圖9 軟件動(dòng)態(tài)運(yùn)行結(jié)構(gòu)圖
以小衛(wèi)星為例,其核心控制軟件即星務(wù)中心計(jì)算機(jī)軟件采用多任務(wù)加多中斷的工作模式,來滿足多狀態(tài)多功能需求的實(shí)時(shí)性操作要求。控制軟件由系統(tǒng)軟件和應(yīng)用軟件組成,主要負(fù)責(zé)衛(wèi)星運(yùn)行期間的遙控?cái)?shù)據(jù)管理、遙測(cè)數(shù)據(jù)發(fā)送管理、星上時(shí)間系統(tǒng)的管理、溫度測(cè)量和溫控的管理、整星各分系統(tǒng)和設(shè)備的管理、整星信息資源的調(diào)度和分配管理以及整星安全運(yùn)行管理等,是衛(wèi)星能夠正常運(yùn)行的核心系統(tǒng)。系統(tǒng)軟件主要包括實(shí)時(shí)多任務(wù)操作系統(tǒng)和中斷服務(wù)程序。應(yīng)用軟件主要由數(shù)據(jù)處理程序及運(yùn)行管理程序組成,根據(jù)所需完成的功能,主要包括初始化任務(wù)、調(diào)度管理任務(wù)、遙控遙測(cè)數(shù)據(jù)處理任務(wù)、時(shí)間程控任務(wù)、內(nèi)存刷新任務(wù)等模塊,各模塊構(gòu)成靜態(tài)框架層中的管理層部分,管理層的實(shí)施運(yùn)行完成整星功能的構(gòu)建。
通過將軟件靜態(tài)框架進(jìn)行分層設(shè)置,應(yīng)用軟件開發(fā)人員即可不必關(guān)注協(xié)議層的具體操作方式,主要通過設(shè)置各任務(wù)間的序列方式、對(duì)不同任務(wù)內(nèi)部的具體功能進(jìn)行具體化修改達(dá)到完成整星預(yù)設(shè)功能的目的如圖8所示。
圖8 軟件靜態(tài)結(jié)構(gòu)組成
星務(wù)中心計(jì)算機(jī)軟件采用實(shí)時(shí)操作系統(tǒng),為多任務(wù)運(yùn)行模式。首先在初始化任務(wù)中執(zhí)行初始化功能、創(chuàng)建各種其它的功能任務(wù),再通過中斷機(jī)制每秒激活調(diào)度管理任務(wù),由該任務(wù)按照一定順序和要求依次調(diào)用遙控遙測(cè)任務(wù)、時(shí)間程控任務(wù)、內(nèi)存刷新等任務(wù)。軟件運(yùn)行動(dòng)態(tài)控制流程如圖9所示。
每個(gè)任務(wù)在基于DFH-OS系統(tǒng)的基礎(chǔ)上,在軟件初始時(shí)設(shè)置好優(yōu)先級(jí),軟件開始運(yùn)行后,即按照默認(rèn)順序執(zhí)行,完成整星的數(shù)據(jù)管理功能。為了保證在軌軟件的正確運(yùn)行及應(yīng)對(duì)不同突發(fā)情況導(dǎo)致的軟件變更,整星軟件中運(yùn)行有故障診斷恢復(fù)模塊和上注任務(wù)模塊。當(dāng)對(duì)遙測(cè)輪詢采集數(shù)據(jù)構(gòu)成的數(shù)據(jù)池進(jìn)行特定數(shù)據(jù)分析,如果選取的特征數(shù)據(jù)在一定時(shí)間達(dá)到軟件內(nèi)容的預(yù)設(shè)條件,整星軟件將根據(jù)預(yù)先設(shè)計(jì)好的算法邏輯采取動(dòng)作,保證軟件恢復(fù)到正確狀態(tài);同時(shí)由于整星一些參數(shù)在前期的不確定性,并需保證軟件的可復(fù)用性和測(cè)試覆蓋性,因此在整星測(cè)試階段,首先預(yù)設(shè)好相關(guān)參數(shù),對(duì)可變化的參數(shù)設(shè)置變更鏈接,然后進(jìn)行整星測(cè)試,待最終一些參數(shù)確定后,通過上注變更相應(yīng)鏈接即可達(dá)到完善最終軟件的目的,增強(qiáng)軟件的復(fù)用性。
當(dāng)無法通過更新計(jì)劃內(nèi)的構(gòu)件對(duì)應(yīng)的對(duì)象鏈表來達(dá)到完善修改軟件的目的時(shí),即當(dāng)衛(wèi)星在軌運(yùn)行期間出現(xiàn)一些突發(fā)意外情況需要變更某些未計(jì)劃改變的軟件構(gòu)件時(shí),此時(shí)即可通過上注附加任務(wù)來完成變更,既保證了軟件的完整性和復(fù)用性,又能適應(yīng)多種不同情況保證正確性。
基于該靜態(tài)和動(dòng)態(tài)結(jié)構(gòu)設(shè)計(jì),針對(duì)某具體小衛(wèi)星星務(wù)中心計(jì)算機(jī)軟件,軟件設(shè)計(jì)師在開發(fā)軟件階段,選擇好復(fù)用軟件構(gòu)件部分后,可只重點(diǎn)關(guān)注特定型號(hào)的特定需求及各中斷模塊、各任務(wù)模塊之間的關(guān)聯(lián)及變化,無須關(guān)注修改模塊內(nèi)部的具體實(shí)施方式。以某些衛(wèi)星數(shù)據(jù)為例,經(jīng)統(tǒng)計(jì),星務(wù)中心計(jì)算機(jī)軟件新增加的、修改的代碼行數(shù)約占代碼總行數(shù)的10%~20%,可復(fù)用的代碼行數(shù)約占代碼總行數(shù)的80%~90%,極大地提高了軟件的可復(fù)用性。
在小衛(wèi)星向體系化應(yīng)用發(fā)展的趨勢(shì)下,星載軟件規(guī)模和復(fù)雜性快速提高,軟件可復(fù)用性設(shè)計(jì)變得日益重要。本文在分析了面向體系應(yīng)用的星載軟件功能需求和技術(shù)需求的基礎(chǔ)上,對(duì)小衛(wèi)星典型軟件體系架構(gòu)進(jìn)行了設(shè)計(jì),提出采用軟件框架技術(shù)實(shí)現(xiàn)軟件可復(fù)用性設(shè)計(jì)。該框架技術(shù)通過軟件構(gòu)件、對(duì)象鏈表和數(shù)據(jù)池實(shí)現(xiàn)了領(lǐng)域模型和具體特例的分離,實(shí)現(xiàn)了星載軟件的復(fù)用性,為星載軟件的快速開發(fā)、測(cè)試和集成打下良好的基礎(chǔ)。