張亞航 袁珺 郭堅
(北京空間飛行器總體設計部,北京 100094)
航天器遙測是把航天器上各種被測信息,經感知、采集和調制,通過天線傳輸到地面接收站,再經過解調、記錄和處理的測量全過程[1]。星載遙測系統是航天器數據管理系統或綜合電子軟件的重要功能組成部分。
不同航天器型號任務,往往對遙測參數設置、采集頻率、存儲方式和下傳方式等需求不同。我國航天器一般采用高級在軌系統(AOS)遙測體制[2],但是不同型號通常對遙測數據源包組包、調度和虛擬信道調度等方面有不同的需求。傳統星載遙測軟件設計方法,軟件邏輯處理與用戶需求緊密耦合,因此,不同的型號任務需要單獨開發一套遙測處理模塊,難以重用,造成了許多重復性勞動,耗費了大量人力物力。
本文首先對AOS鏈路協議[2]、空間包協議[3]、包調度方法[4]和航天器遙測需求[5-6]等一般遙測技術涉及的內容進行分析和研究,其次介紹了星載軟件構件技術[7],并在此基礎之上,提出基于構件的通用遙測軟件設計方法。該方法通過參數配置和組裝的方式滿足不同的遙測需求,從而實現通用化遙測軟件模塊,可以作為其他航天器軟件構件化設計的參考。
航天器遙測模塊,一般包括遙測數據采集、存儲、組織和調度下傳等子功能模塊[1],屬于星載軟件重要的模塊之一。現有衛星型號,為了實現對遙測數據更加靈活的處理和調度,進行標準的數據組裝,往往采用國際上空間數據系統咨詢委員會(CCSDS)規定的AOS遙測體制。傳統遙測處理軟件,其典型的設計方式是將軟件分為多個時間片,每個時間片按照順序做不同的事情,共同協調完成遙測數據采集、組包、包調度、組幀和幀調度等相關功能。其流程如圖1所示。

圖1 典型遙測處理流程Fig.1 Typical TM process
遙測系統設計分為源包的調度和虛擬信道的調度。對于源包級別的調度,包括源包的生成和下傳。遙測系統根據源包各自的生成周期完成源包生成,并根據源包各自的下傳周期安排下傳。對于虛擬信道的調度,主要是對虛擬信道進行同步調度或者異步調度等方式,以滿足數據按照不同優先級或頻率占用信道的需求。雖然不同的衛星型號任務遙測模塊完成的基本功能類似,都包含遙測采集、組包、包調度、組幀、虛擬信道調度和最終下傳等功能。但是,由于衛星型號軟件的設計方法仍然是基于傳統的代碼編寫方式,在實際任務中各個功能模塊之間的耦合非常大。以圖1為例,顯然該遙測模塊與衛星型號具體需求和結構緊密綁定。具體來說,傳統設計的遙測模塊,其子功能模塊耦合性主要體現在以下方面:①遙測采集功能和型號任務對遙測參數的定義和來源耦合緊密;②源包組織和遙測采集后的數據存儲方式耦合緊密;③源包組織和源包調度算法緊密耦合;④源包調度和VC幀組織緊密耦合;⑤VC幀組織和VC調度算法耦合緊密。
除此之外,即便是針對相同或極為相似的衛星型號需求,不同設計師實現的結果,在代碼級一般存在較大的差異。由于以上原因,從軟件角度來看,導致兩個問題:①由于軟件與具體衛星型號任務需求耦合度高,因此,無法實現不同衛星型號之間代碼構件級復用,進而影響衛星型號軟件開發效率;②由于軟件模塊間耦合度高,因此星載軟件需求變化適應能力低,難以應對衛星型號需求在研制過程中的變化,同樣也影響軟件健壯性。
為了提高遙測模塊的通用性和適應性,進而提高軟件開發效率和可靠性,本文采用構件化方式設計遙測各子功能模塊,并通過構件的組裝,完成遙測模塊整體的設計。應用程序將通過參數設置的方式,完成不同任務需求。
星載軟件構件[3](簡稱構件),指的是一個可獨立發布,并可以由第三方進行組裝的功能模塊,它滿足一定的航天器軟件需求,并通過接口提供服務。它應具備4個基本屬性:①獨立性,構件發布,必須與所在的環境和其他構件分離,除了基本運行環境,不能依賴構件以外的數據或代碼;②完整性,構件發布時,構件使用方不能訪問構件內部細節,且不可拆分;③組裝性,構件用戶能夠根據既定規則將構件進行組裝;④功能性,必須具備具體的、明確的一個或多個功能,并且能夠被用戶調用,并在預定的運行環境下正確運行。
如圖2所示,典型的星載軟件模型由對外接口、實現體和構件規約三個要素組成。其中,對外接口是構件向用戶提供服務的唯一渠道;實現體為具有一定功能的源程序片段,實現對外接口所提供的服務;構件規約作為對構件的描述,是構件使用說明書。其中,對外接口和構件規約對外可見,被用戶調用或閱讀;實現體對外不可見,從而保證構件的信息隱藏和獨立性。

圖2 星載軟件構件模型Fig.2 Spacecraft software components model
通過對衛星遙測需求的梳理,遙測處理模塊TmProc主要處理遙測采集、存儲、組包、包調度和虛擬信道調度等工作。因此,根據需求設計5種構件,分別是數據池構件(DataPool)、空間包構件(SpacePacket)、元素周期調度構件(PeriodSelector)、虛擬信道構件(AosVc)和同步異步調度構件(SynAynSelecotr)。其中構件DataPool完成對星載軟件數據(包括遙測數據)的統一索引和存取;構件SpacePacket完成空間包組織;構件PeriodSelector實現元素周期性調度算法;構件AosVc實現幀組織;構件SynAynSelecotr實現元素同步/異步調度算法。
這些構件所封裝的主要是處理邏輯和算法,并不與具體的用戶數據(如遙測參數表、遙測大綱等)綁定。用戶(即應用程序)根據具體的需求,通過初始化接口,完成對構件實例基本參數的設置,再通過調用構件對用戶提供的功能接口,滿足不同的型號任務需求,即可通過有限個通用的構件,來實現不同衛星型號的多樣化任務。
下面將從基本功能、初始化接口和對外功能接口等方面,分別對每個構件的詳細設計進行說明。
3.2.1 數據池構件(DataPool)
(1)基本功能:提供對不同長度數據按照統一索引進行存儲、更新和獲取等服務,用于滿足對整星數據(包括遙測數據)的采集、存儲、更新和獲取需求。
(2)初始化接口參數:①data_size_arr,數據池中預定義的數據項長度數組;②data_size_arr_len,數據池預定義數據項長度數組的長度。
(3)功能接口:①GetDataSingle,獲取單個數據項;②SetDataSingle,設置單個數據項;③GetDataBlock,獲取包含多個數據項的數據塊;④SetDataBlock,設置包含多個數據項的數據塊。
3.2.2 空間包構件(SpacePacket)
(1)基本功能:提供CCSDS標準空間包協議服務,滿足遙測包組裝、發送等需求。
(2)初始化接口參數:①type,包類型,1bit,1為遙測,0為遙控;②sec_hdr_flag,副導頭標識,1為有,0為無;③apid,應用過程標識,11bit;④seq_flags,包序列控制標志;⑤data_msg,包數據組成結構。
(3)功能接口:BuildPacketWithDataInput,根據包數據域進行包組織和生成。
3.2.3 元素周期調度構件(PeriodSelector)
(1)基本功能:提供對元素按照一定的周期,按照一定的算法進行調度,用于滿足遙測包生成調度和下傳調度控制需求。
(2)初始化接口:①elem_arr,被調度元素數組;②elem_num,參數elem_arr數組長度。
(3)功能接口:①ResetPeriodSingle,重置單個元素的周期。若該元素無周期,其輸入的初始周期和設定周期為同一值。元素的查找是通過元素指針或者元素序號;②SelElemSingle,選擇一個優先級最高的元素;③SelElemAll,選擇所有到期的元素;④DecWait,所有元素的計時自減。若某元素無周期,不自減;若某元素計時為零時,不自減。
3.2.4 虛擬信道構件(AosVc)
(1)基本功能:提供CCSDS標準AOS鏈路協議虛擬信道中的包裝業務、多路復用業務、組幀業務等服務,用于滿足數據組幀的需求。
(2)初始化接口:①Scid,有效航天器標志;②Vcid,有效VC 標志;③input_type,輸入數據類型;④ctrl_field_flag,操作控制域;⑤frame_len,幀長;⑥insert_len,插入域長;⑦circle_count_flag,VCDU 幀長;⑧pri_freq,VC 在被調度時的輸出優先級或頻率;⑨Buf,虛擬信道IO 緩存;⑩buf_size,虛擬信道IO 緩存長度。
(3)功能接口:①SendData,往虛擬信道中發送源包E_PDU、虛擬信道數據訪問單元VCA_SDU或位流數據單元B_PDU;②OutputExist,查詢VC中是否有輸出數據;③DownOutput,根據包數據域進行包組織和生成遙測包;④GetMpduIdleBytes,獲取當前組織的多路復用協議數據單元(MPDDU)中剩余字節數。
3.2.5 同步異步調度構件(SynAynSelector)
(1)基本功能:元素同步異步調度構件,提供對元素的同步、異步和多級調度服務,用于滿足對虛擬信道同步異步調度需求。
(2)初始化接口:①elem_arr,元素數組;②elem_arr_len,當前元素對子元素同步或異步調度;③syn_ayn,應用過程標志;④pri_freq,優先級或輸出頻率。
(3)功能接口:SelectElem,根據同步或者異步方式調度元素。
在各個功能模塊的構件化設計之后,需要將各個模塊進行有效的組裝,以形成完整的遙測系統,實現遙測源包的生成、下傳和存儲等功能。采用統一建模語言UML[8]類圖描述其靜態結構,如圖3 所示。其中TmProc表示遙測模塊。該圖重點描述模塊的構成,且在本文3.2節已經詳細描述了各個構件對外提供的功能接口和功能,因此本圖不再詳細描述各個構件自身的屬性和函數,均以空格表示。

圖3 遙測模塊軟件構件組裝關系Fig.3 Relationship of software components in TM module
為了實現星載遙測軟件的通用化,本文通過軟件構件化設計,通過對構件配置接口參數設置和構件功能結構參數設置,從而滿足不同衛星型號任務的需求。構件化的遙測模塊對構件對象初始化后,周期性進行操作。構件化遙測模塊通過調用各個構件實例完成遙測采集、組包、包調度、組幀和虛擬信道調度等功能,其處理流程如圖4所示,整個流程在任務啟動后不斷循環。

圖4 通用遙測模塊任務處理流程Fig.4 Flow chart of generalized TM module
本節對基于構件的通用星載遙測處理方法的應用情況進行分析,并對虛擬型號軟件在應用該方法前后的開發效率、模塊復雜度和資源消耗情況進行比對。
以Mission 1、Mission 2、Mission 3 和Mission 4等衛星型號為例進行試驗驗證,其中Mission 1采用傳統的軟件實現方式,Mission 2繼承Mission 1遙測模塊,并在Mission 1的基礎上進行了適應性的改進。Mission 3采用了構件化設計,Mission 4繼承Mission 3遙測模塊。相關數據見表1。

表1 星載軟件構件應用相關數據Table 1 Spacecraft software component utilization data
兩種不同的遙測功能實現方法,在軟件研制效率和復雜度方面存在著較大的差異。
由圖5可以看出,首次采用構件化設計的Mission 3,其效率并沒有比普通型號提高多少。但是對于其后繼承Mission 3 的型號Mission 4,與繼承Mission 1的傳統型號Mission 2相比,其研制效率迅速提高了3~5倍。
由圖6 可知,使用了構件化的Mission 3 和Mission 4,應用程序所需要涉及的全局變量數量大幅度降低,不到Mission 1的1/4。即使是Mission 2對Mission 1 進行了優化,變量數量也是Mission 3或Mission 4 的3 倍以上。在定義的結構體方面,Mission 3和Mission 4應用程序所定義的結構體數量為0,即使是算上構件數量,也只是5 個,少于Mission 1和Mission 2的1/3。

圖5 不同型號任務軟件開發效率對比分析Fig.5 Analysis of efficiency of SW development in different space missions

圖6 衛星型號任務應用程序設計復雜度分析Fig.6 Analysis of software complexity of different space missions
由此可見,采用了構件化設計后的型號Mission 3和Mission 4,其研制效率得到極大提高,應用程序復雜度大幅度簡化,其優勢表現在:①基于構件的通用星載遙測軟件設計方法,極大地提高了對不同型號任務的適應程度,降低了型號任務開發時間和工作量;②基于構件的通用星載遙測軟件設計方法,降低了型號任務應用程序的復雜度,一定程度上提高了系統健壯性。
從對存儲資源的占用(即軟件代碼量)角度對比構件化的遙測模塊與傳統遙測模塊,考慮不同衛星型號任務對遙測參數的定義數量存在較大差異,為了保證一般性,只對不同衛星型號任務的邏輯代碼行數進行比較(見圖7)。

圖7 衛星型號任務遙測模塊代碼總行數Fig.7 Analysis of total code linage in different space missions
分析圖7的數據,隨著衛星型號對軟件構件復用個數的增加,遙測模塊涉及的總代碼行數不但沒有上升,反而呈下降趨勢。可見通用遙測軟件設計方法不會增加對資源的需求,反而在一定程度上節約了資源。
本文提出了一種基于構件化設計的可配置通用遙測軟件方法,并經試驗驗證,對應用效果進行了統計和分析,研究表明:構件化的遙測模塊通過參數配置的方式,能夠將處理邏輯和用戶需求分離,即構件化的功能設計,可提高軟件的適應性、通用性,進而大幅度提高軟件的開發效率;而且降低了代碼設計的復雜度,提高了代碼健壯性。除此之外,構件化設計的通用遙測模塊,并未增加軟件對資源的占用。本文的研究結果,可為星載遙測軟件設計和其他星載軟件設計提供參考。
(References)
[1]譚維熾,顧瑩琪,空間數據系統[M].北京:中國科學技術出版社,2004
Tan Weichi,Gu Yingqi.Space data system[M].Beijing:China Science and Technology Press,2004(in Chinese)
[2]CCSDS,AOS Data Link Protocol.Recommendation for space data system standards,CCSDS 732.0-B-2.blue book[S].Issue 1.Washington D.C.:CCSDS,2006
[3]Space Packet Protocol.Recommendation for space data system standards,CCSDS 133.0-B-1[S].Issue 1.Washington D.C.:CCSDS,2003
[4]王向暉,王同桓,李寧寧,等.一種AOS遙測源包多路調度算法[J].航天器工程,2011,20(5):83-87
Wang Xianghui,Wang Tonghuan,Li Ningning,et al.An efficient scheduling algorithm of multiplexing TM service based on the AOS[J].Spacecraft Engineering,2011,20(5):83-87(in Chinese)
[5]趙和平,李寧寧.CCSDS標準在軍用航天任務中的應用[J].航天器工程,2007,16(4):78-82
Zhao Heping,Li Ningning.Implementation of CCSDS standard in military space mission[J].Spacecraft Engineering,2007,16(4):78-82(in Chinese)
[6]楊仁寶,祝轉民.組件化遙測處理方法的設計與實現[J].測試技術學報,2010,24(4):299-303
Yang Renbao,Zhu Zhuanmin.Design and implementation of component method for telemetry processing[J].Journal of Test And Measurement Technology,2010,24(4):299-303(in Chinese)
[7]張亞航,張猛.基于C語言的綜合電子星載軟件構件技術研究[C]//第一屆高分辨率對地觀測學術研討會.北京:中國航天科技集團公司,2012
Zhang Yahang,Zhang Meng.Research of space-borne integrated electronic software components based on C language[C]//Conference on High Graphics Earth Observation Technology.Beijing:China Aerospace Science and Technology Corporation,2012(in Chinese)
[8]Object Management Group.OMG unified modeling language specification[S].Needham:Object Management Group,2003