李利群, 龐建國, 孫海晶, 李飛晟, 朱紅運
(1.太原衛星發射中心,山西 太原 030027; 2.北京東方計量測試研究所,北京 100086)
隨著航天技術的不斷發展與應用,現代小衛星技術已經滲透到各個領域,在對地觀測、電子偵察、通信、空間攻防、空間目標監視、在軌服務、戰術快響、空間科學探測、空間天氣等領域的應用能力穩步提升,并且已經成為空間系統的重要組成部分[1]。與傳統的大衛星相比,小衛星具有功能密度高、質量輕、研制成本低、有效載荷種類多、飛行任務靈活多樣、性能指標千差萬別的特點[2-3]。隨著航天事業的快速發展,小衛星的研制周期不斷縮短、數量不斷增多,“一箭多星”的發射模式已成為常態[2-3]。為了統籌發射任務,小衛星在發射前通常需要進行長時間的貯存,在貯存期間要定時對小衛星進行健康檢查,以確保小衛星隨時具備發射狀態,并將故障衛星信息反饋給生產廠家以便其及時對故障衛星進行維修。
傳統的衛星測試軟件是針對型號專用測試設備配套研制的,只為實現特定的測試功能,不具有通用性;對于測試過程中用到多種測試設備的情況,需要多個測試軟件共同實現控制功能,通用性及可擴展性不強;每研制一類新的衛星幾乎都要重新開發一套測試軟件;且測試軟件專業性強,普通人員難以掌握。由此導致在小衛星長貯期間進行測試時,存在測試設備多、占用空間大、測試人員需要掌握各種測試軟件的使用等問題。為了解決以上問題,本文設計并開發了小衛星快速一體化測試軟件,以插件形式對前端設備進行統一管控,測試設備增加時,只需要增加相應插件即可實現對測試設備的擴展;通過參數配置的方式滿足不同型號小衛星測試參數各類需求。該測試軟件具有通用性好、結構簡單、上手速度快等特點,可涵蓋不同型號小衛星的功能測試,測試者可通過該軟件實現“一鍵式”測試,推廣前景好,可為小衛星的電性能通用化測試系統設計提供參考。
小衛星快速一體化測試軟件的主要任務是實現小衛星的快速自動化測試,因此系統軟件應該具備對各硬件模塊的集中監控能力,提供測試數據服務,同時具有測試數據查詢和測試流程自動執行等功能。用戶在應用客戶端的交互界面上實時監視各模塊功能的當前數據,以曲線的方式顯示數據趨勢并保存到數據庫。同時用戶在界面上完成對綜合測試系統硬件設備的控制以及各設備參數的設置。用戶還可以查詢已經保存到數據庫中的歷史數據,并以表格或曲線的方式呈現。軟件設計構架如圖1所示。

圖1 系統設計架構框圖
小衛星快速一體化測試軟件包括前端設備管理、數據服務系統、應用客戶端、分布式消息中間件和數據庫[4-5]。
① 前端設備是面向被測小衛星的接口,它通過插件的方式管理各分系統前端設備,采集硬件設備數據,并對硬件設備進行監控,實現與分系統軟件的數據和指令交互。
② 測試服務系統采用后臺服務模式,實現測試數據處理、判讀、存儲、分系統設備控制、指令發送、測試序列和數據定義等基礎信息管理的業務接口等功能。
③ 應用客戶端為人機交互接口,實現衛星自動測試、實時數據顯示、數據查詢分析和基礎信息管理等功能。
④ 分布式消息中間件實現測試數據緩存、數據訂閱和發布、消息隊列功能,作為數據服務系統與應用客戶端、數據服務系統內部各功能模塊之間數據與指令的交互接口。
⑤ 數據庫用于存儲衛星型號信息、測試設備參數、指令列表、指令判據、參數列表、參數判據、測試項和測試細則等,為自動測試提供基礎信息;同時存儲測試結果數據和過程數據,用于歷史數據查詢和分析。
Redis是一個功能強大、性能高效的開源數據結構服務器,可廣泛應用于消息隊列、數據堆棧和數據緩存等多種場合。利用Redis的訂閱發布功能,能夠建立分布式通信系統[6]。本文中消息中間件采用Redis作為各種數據、消息分發的消息中間件,通過提供消息傳遞和消息隊列模型,可以在分布式環境下擴展進程間的通信。消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統集成。Redis本身采用服務器/客戶端的連接模式,一個Redis-server可以連接多個本機或者遠程的客戶端,保證了系統的可擴展性[7]。在本軟件中,Redis主要實現以下功能。
① 遙測數據的緩存。用于在測試界面上查看實時遙測數據,Redis高速存取的特性可以很好地保證數據讀取的實時性和讀取效率。
② 各個設備回采數據的緩存。
③ 判讀測試各參數最新工程值的狀態緩存。用于在各執行單元判讀時,快速讀取到最新采集到的工程值或遙測參數。
④ 測試任務的狀態緩存。通過Redis中間件的緩存,可以讓前端Web程序和后端服務程序進行測試任務狀態的溝通交互,從而實現從前端頁面控制任務啟動、暫停和中斷。
⑤ 持久化存儲信息存放在消息隊列內,由持久化數據服務將隊列中的數據按照左進右出的順序將數據讀出并持久化到關系型數據庫中。
⑥ 登錄憑據的存儲。為了方便以后擴展多臺服務器,使用Redis存儲用戶登錄的Token信息,這樣以后無論新增多少臺測試服務器,用戶登錄信息都可以統一讀取使用。
⑦ 常用數據的存儲。系統中有一些常用且不常修改的參數配置,為了加快讀取速度,將其緩存到Redis中。
⑧ 分布式雙檢鎖。在緩存數據時,需要保證只有一個線程可以寫入Redis,這時候為了保證以后程序的擴展性,利用Redis分布式特性,實現了分布式鎖。將鎖存放于Redis中,即使以后擴展設備和進程,各進程也可以正常獲取鎖信息,而不會重復向緩存中寫入數據。
各型號衛星都有一些特定的測試需求,故所用的專用測試分系統的測試設備也會不同,本文采用前端設備管理插件的形式,解決通用性問題。采用插件的優點為:① 各個插件可以并行開發,縮短了軟件研發周期;② 插件的動態加載和卸載無須重新編譯核心源代碼,便于代碼的調試和維護;③ 無須更改框架部分的代碼就可以增加新功能,提高了軟件的可拓展性[8]。
通用前端設備管理通過插件模塊的方式集中管理各分系統前端設備集群,可以通過擴展插件的形式擴展分系統設備,無須修改系統其他部分功能[9]。系統主要包括兩個功能:① 前端設備遠程控制功能,能夠接收消息中間件中的設置命令,對不同的前端設備進行遠程命令設置,并獲取設置結果;② 前端設備數據監視功能,能夠實時接收不同的前端設備采集的數據,并對數據進行必要的正確性判斷,將數據推送至消息中間件。
測試服務系統是一體化測試系統的核心業務邏輯,采用后臺服務的模式,實現測試序列下執行單元的執行、判讀,并將測試的進度和結果及時通知前端用戶接口(User Interface,UI)。測試服務流程圖如圖2所示。

圖2 測試服務流程圖
測試服務實時監聽測試任務的消息隊列,當應用客戶端操作用戶下達測試指令時,測試服務會從消息中間件中獲取到測試任務。當測試服務系統收到測試指令時,會根據測試任務所測試的衛星型號將數據庫中該型號衛星下的所有測試配置信息讀取出來(序列、子序列、測試項、執行單元、發送參數、判據信息等),用于測試任務的執行。根據該次測試任務中所有執行單元的排序,依次執行執行單元指令。如果是遙控指令,則自動發送遙測數據到測控分系統前端插件;如果是人工指令,則會等待UI前端返回人工操作的結果信息;如果是儀器指令,則會自動選擇所要操作的儀器,并發送配置好的參數數據。當發送遙控指令或儀器指令時,會根據執行單元判據對指定的一個或多個參數進行判讀。執行單元執行完成后,會將該次執行記錄寫入數據庫做持久化存儲。
本軟件選用SQL Server數據庫,用于存儲多顆衛星的測試基礎信息和測試數據。其中,測試基礎信息包括衛星參數信息、衛星遙測參數處理信息和遙控指令信息、測試序列等。衛星遙測參數解析信息包括包標識、參數字段位置、參數處理公式、參數含義等,衛星遙控指令信息包括指令代碼、指令名稱、指令類別、指令編號等[10];測試數據包括遙測原始幀、工程值、判讀結果、狀態和測量數據等[11]。數據庫還支持測試狀態和測試數據的事后按時間進行回放。
為了降低用戶的專業化程度,本軟件設計了“一鍵式”測試模式,即采用測試序列預加載技術,數據庫中存儲各個型號小衛星長貯階段健康檢查測試序列,用戶只需要登錄系統,選擇被測衛星即可對其進行測試。
在系統登錄時,將用戶類型分為維護用戶和測試用戶,維護用戶的權限可進行系統維護、測試序列編輯、測試項編輯、測試判讀管理等測試內容的設計工作;測試用戶的權限包括衛星型號選擇、測試序列選擇、測試序列執行、測試結果查詢[10]。對于測試人員,不需要自主設計測試序列等具體內容,只需根據設計好的測試內容執行測試工作,系統自動根據衛星型號及測試序列執行后臺操作,完成測試設備配置、測試參數配置等測試準備工作。該軟件改變了以往測試軟件專業化程度高、操作困難的問題。測試用戶的操作流程如圖3所示。

圖3 測試用戶操作流程
目前,影響不同型號衛星測試軟件通用性的原因主要有以下3個方面[12]。
① 衛星數據格式的定義缺乏規范化。不同衛星型號之間,所定義的衛星數據格式大多是不同的,這使得難以使用統一的軟件來對所有衛星數據進行解析和處理。
② 不同衛星項目應用數據的類型和結構各不相同。由于大多數衛星都為專用目的,其數據形式各不相同,這使得數據解析軟件也基本為專用定制,難以通用。
③ 不同衛星數據的應用處理算法不同。不同應用衛星數據存在不同處理算法,即使使用相同的算法,算法的參數也可能各不相同,需要專門的解析代碼來進行處理。
為保證系統能夠滿足各類小衛星設計的測試需求,需對一體化軟件進行通用化設計,包括兩種通用化設計方案。
① 數據庫通用:各衛星廠家提供遙測解析方法、工程值轉換方式、指令處理方式(同步字、方式字、校驗等)等信息,將上述信息進行歸納總結,以相同格式存儲到數據庫中。其優點在于:利于知識積累,解析協議方式、指令處理發生變化時只需修改數據庫即可,便于升級;缺點在于:工作量大、數據庫設計要求高。
② 接口函數通用:各個衛星廠家提供接口庫函數,實現遙測信息解析、遙控指令處理。其優點在于:工作量小、基礎數據庫設計相對容易,保護了各個衛星生產廠商的協議不被公開;缺點在于:不便于升級,需要升級時,衛星廠家需提供新的接口函數。
通過對比兩套方案的優缺點和難易程度,根據目前衛星生產的現狀,獲得所有衛星生產廠家的通信協議有一定的難度,本文按照方案②進行設計。
當一個新型號衛星接入時,可以從系統中配置與其相關的衛星型號、衛星識別序號、遙測參數、測試序列、子序列、測試項、執行單元、儀器配置等數據。只需要衛星廠家提供接口函數進行遙測參數解析,即可快速完成一套可執行的測試邏輯[13]。
為驗證小衛星快速一體化測試軟件的有效性,結合小衛星快速一體化測試硬件搭建測試系統,針對2型小衛星進行了測試,測試結果如表1所示。

表1 本軟件應用于2型小衛星測試結果
測試結果表明,小衛星快速一體化測試軟件能夠實現不同型號的衛星測試,通用型好,人員投入少,耗時短,具有廣闊的應用前景。
在充分研究不同型號小衛星長貯階段測試需求的基礎上,設計并實現了的小衛星快速一體化測試軟件。重點介紹了軟件的架構設計、模塊設計、“一鍵式”測試設計和通用性設計,與以往的專用軟件相比,通用化、集成化程度更高,所以滿足小衛星當前型號多樣、測試周期短、密度高、測試人員專業化程度低的需求。軟件為不同用戶設置了不同的使用權限,既適合專業衛星測試人員使用維護,又適合測試用戶的日常訓練,滿足其測試需求,可大幅降低測試設備種類和數量,降低人力成本,為小衛星新型測試提供支撐。