李利群, 龐建國, 孫海晶, 李飛晟, 朱紅運
(1.太原衛(wèi)星發(fā)射中心,山西 太原 030027; 2.北京東方計量測試研究所,北京 100086)
隨著航天技術的不斷發(fā)展與應用,現(xiàn)代小衛(wèi)星技術已經(jīng)滲透到各個領域,在對地觀測、電子偵察、通信、空間攻防、空間目標監(jiān)視、在軌服務、戰(zhàn)術快響、空間科學探測、空間天氣等領域的應用能力穩(wěn)步提升,并且已經(jīng)成為空間系統(tǒng)的重要組成部分[1]。與傳統(tǒng)的大衛(wèi)星相比,小衛(wèi)星具有功能密度高、質量輕、研制成本低、有效載荷種類多、飛行任務靈活多樣、性能指標千差萬別的特點[2-3]。隨著航天事業(yè)的快速發(fā)展,小衛(wèi)星的研制周期不斷縮短、數(shù)量不斷增多,“一箭多星”的發(fā)射模式已成為常態(tài)[2-3]。為了統(tǒng)籌發(fā)射任務,小衛(wèi)星在發(fā)射前通常需要進行長時間的貯存,在貯存期間要定時對小衛(wèi)星進行健康檢查,以確保小衛(wèi)星隨時具備發(fā)射狀態(tài),并將故障衛(wèi)星信息反饋給生產(chǎn)廠家以便其及時對故障衛(wèi)星進行維修。
傳統(tǒng)的衛(wèi)星測試軟件是針對型號專用測試設備配套研制的,只為實現(xiàn)特定的測試功能,不具有通用性;對于測試過程中用到多種測試設備的情況,需要多個測試軟件共同實現(xiàn)控制功能,通用性及可擴展性不強;每研制一類新的衛(wèi)星幾乎都要重新開發(fā)一套測試軟件;且測試軟件專業(yè)性強,普通人員難以掌握。由此導致在小衛(wèi)星長貯期間進行測試時,存在測試設備多、占用空間大、測試人員需要掌握各種測試軟件的使用等問題。為了解決以上問題,本文設計并開發(fā)了小衛(wèi)星快速一體化測試軟件,以插件形式對前端設備進行統(tǒng)一管控,測試設備增加時,只需要增加相應插件即可實現(xiàn)對測試設備的擴展;通過參數(shù)配置的方式滿足不同型號小衛(wèi)星測試參數(shù)各類需求。該測試軟件具有通用性好、結構簡單、上手速度快等特點,可涵蓋不同型號小衛(wèi)星的功能測試,測試者可通過該軟件實現(xiàn)“一鍵式”測試,推廣前景好,可為小衛(wèi)星的電性能通用化測試系統(tǒng)設計提供參考。
小衛(wèi)星快速一體化測試軟件的主要任務是實現(xiàn)小衛(wèi)星的快速自動化測試,因此系統(tǒng)軟件應該具備對各硬件模塊的集中監(jiān)控能力,提供測試數(shù)據(jù)服務,同時具有測試數(shù)據(jù)查詢和測試流程自動執(zhí)行等功能。用戶在應用客戶端的交互界面上實時監(jiān)視各模塊功能的當前數(shù)據(jù),以曲線的方式顯示數(shù)據(jù)趨勢并保存到數(shù)據(jù)庫。同時用戶在界面上完成對綜合測試系統(tǒng)硬件設備的控制以及各設備參數(shù)的設置。用戶還可以查詢已經(jīng)保存到數(shù)據(jù)庫中的歷史數(shù)據(jù),并以表格或曲線的方式呈現(xiàn)。軟件設計構架如圖1所示。
圖1 系統(tǒng)設計架構框圖
小衛(wèi)星快速一體化測試軟件包括前端設備管理、數(shù)據(jù)服務系統(tǒng)、應用客戶端、分布式消息中間件和數(shù)據(jù)庫[4-5]。
① 前端設備是面向被測小衛(wèi)星的接口,它通過插件的方式管理各分系統(tǒng)前端設備,采集硬件設備數(shù)據(jù),并對硬件設備進行監(jiān)控,實現(xiàn)與分系統(tǒng)軟件的數(shù)據(jù)和指令交互。
② 測試服務系統(tǒng)采用后臺服務模式,實現(xiàn)測試數(shù)據(jù)處理、判讀、存儲、分系統(tǒng)設備控制、指令發(fā)送、測試序列和數(shù)據(jù)定義等基礎信息管理的業(yè)務接口等功能。
③ 應用客戶端為人機交互接口,實現(xiàn)衛(wèi)星自動測試、實時數(shù)據(jù)顯示、數(shù)據(jù)查詢分析和基礎信息管理等功能。
④ 分布式消息中間件實現(xiàn)測試數(shù)據(jù)緩存、數(shù)據(jù)訂閱和發(fā)布、消息隊列功能,作為數(shù)據(jù)服務系統(tǒng)與應用客戶端、數(shù)據(jù)服務系統(tǒng)內部各功能模塊之間數(shù)據(jù)與指令的交互接口。
⑤ 數(shù)據(jù)庫用于存儲衛(wèi)星型號信息、測試設備參數(shù)、指令列表、指令判據(jù)、參數(shù)列表、參數(shù)判據(jù)、測試項和測試細則等,為自動測試提供基礎信息;同時存儲測試結果數(shù)據(jù)和過程數(shù)據(jù),用于歷史數(shù)據(jù)查詢和分析。
Redis是一個功能強大、性能高效的開源數(shù)據(jù)結構服務器,可廣泛應用于消息隊列、數(shù)據(jù)堆棧和數(shù)據(jù)緩存等多種場合。利用Redis的訂閱發(fā)布功能,能夠建立分布式通信系統(tǒng)[6]。本文中消息中間件采用Redis作為各種數(shù)據(jù)、消息分發(fā)的消息中間件,通過提供消息傳遞和消息隊列模型,可以在分布式環(huán)境下擴展進程間的通信。消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)集成。Redis本身采用服務器/客戶端的連接模式,一個Redis-server可以連接多個本機或者遠程的客戶端,保證了系統(tǒng)的可擴展性[7]。在本軟件中,Redis主要實現(xiàn)以下功能。
① 遙測數(shù)據(jù)的緩存。用于在測試界面上查看實時遙測數(shù)據(jù),Redis高速存取的特性可以很好地保證數(shù)據(jù)讀取的實時性和讀取效率。
② 各個設備回采數(shù)據(jù)的緩存。
③ 判讀測試各參數(shù)最新工程值的狀態(tài)緩存。用于在各執(zhí)行單元判讀時,快速讀取到最新采集到的工程值或遙測參數(shù)。
④ 測試任務的狀態(tài)緩存。通過Redis中間件的緩存,可以讓前端Web程序和后端服務程序進行測試任務狀態(tài)的溝通交互,從而實現(xiàn)從前端頁面控制任務啟動、暫停和中斷。
⑤ 持久化存儲信息存放在消息隊列內,由持久化數(shù)據(jù)服務將隊列中的數(shù)據(jù)按照左進右出的順序將數(shù)據(jù)讀出并持久化到關系型數(shù)據(jù)庫中。
⑥ 登錄憑據(jù)的存儲。為了方便以后擴展多臺服務器,使用Redis存儲用戶登錄的Token信息,這樣以后無論新增多少臺測試服務器,用戶登錄信息都可以統(tǒng)一讀取使用。
⑦ 常用數(shù)據(jù)的存儲。系統(tǒng)中有一些常用且不常修改的參數(shù)配置,為了加快讀取速度,將其緩存到Redis中。
⑧ 分布式雙檢鎖。在緩存數(shù)據(jù)時,需要保證只有一個線程可以寫入Redis,這時候為了保證以后程序的擴展性,利用Redis分布式特性,實現(xiàn)了分布式鎖。將鎖存放于Redis中,即使以后擴展設備和進程,各進程也可以正常獲取鎖信息,而不會重復向緩存中寫入數(shù)據(jù)。
各型號衛(wèi)星都有一些特定的測試需求,故所用的專用測試分系統(tǒng)的測試設備也會不同,本文采用前端設備管理插件的形式,解決通用性問題。采用插件的優(yōu)點為:① 各個插件可以并行開發(fā),縮短了軟件研發(fā)周期;② 插件的動態(tài)加載和卸載無須重新編譯核心源代碼,便于代碼的調試和維護;③ 無須更改框架部分的代碼就可以增加新功能,提高了軟件的可拓展性[8]。
通用前端設備管理通過插件模塊的方式集中管理各分系統(tǒng)前端設備集群,可以通過擴展插件的形式擴展分系統(tǒng)設備,無須修改系統(tǒng)其他部分功能[9]。系統(tǒng)主要包括兩個功能:① 前端設備遠程控制功能,能夠接收消息中間件中的設置命令,對不同的前端設備進行遠程命令設置,并獲取設置結果;② 前端設備數(shù)據(jù)監(jiān)視功能,能夠實時接收不同的前端設備采集的數(shù)據(jù),并對數(shù)據(jù)進行必要的正確性判斷,將數(shù)據(jù)推送至消息中間件。
測試服務系統(tǒng)是一體化測試系統(tǒng)的核心業(yè)務邏輯,采用后臺服務的模式,實現(xiàn)測試序列下執(zhí)行單元的執(zhí)行、判讀,并將測試的進度和結果及時通知前端用戶接口(User Interface,UI)。測試服務流程圖如圖2所示。
圖2 測試服務流程圖
測試服務實時監(jiān)聽測試任務的消息隊列,當應用客戶端操作用戶下達測試指令時,測試服務會從消息中間件中獲取到測試任務。當測試服務系統(tǒng)收到測試指令時,會根據(jù)測試任務所測試的衛(wèi)星型號將數(shù)據(jù)庫中該型號衛(wèi)星下的所有測試配置信息讀取出來(序列、子序列、測試項、執(zhí)行單元、發(fā)送參數(shù)、判據(jù)信息等),用于測試任務的執(zhí)行。根據(jù)該次測試任務中所有執(zhí)行單元的排序,依次執(zhí)行執(zhí)行單元指令。如果是遙控指令,則自動發(fā)送遙測數(shù)據(jù)到測控分系統(tǒng)前端插件;如果是人工指令,則會等待UI前端返回人工操作的結果信息;如果是儀器指令,則會自動選擇所要操作的儀器,并發(fā)送配置好的參數(shù)數(shù)據(jù)。當發(fā)送遙控指令或儀器指令時,會根據(jù)執(zhí)行單元判據(jù)對指定的一個或多個參數(shù)進行判讀。執(zhí)行單元執(zhí)行完成后,會將該次執(zhí)行記錄寫入數(shù)據(jù)庫做持久化存儲。
本軟件選用SQL Server數(shù)據(jù)庫,用于存儲多顆衛(wèi)星的測試基礎信息和測試數(shù)據(jù)。其中,測試基礎信息包括衛(wèi)星參數(shù)信息、衛(wèi)星遙測參數(shù)處理信息和遙控指令信息、測試序列等。衛(wèi)星遙測參數(shù)解析信息包括包標識、參數(shù)字段位置、參數(shù)處理公式、參數(shù)含義等,衛(wèi)星遙控指令信息包括指令代碼、指令名稱、指令類別、指令編號等[10];測試數(shù)據(jù)包括遙測原始幀、工程值、判讀結果、狀態(tài)和測量數(shù)據(jù)等[11]。數(shù)據(jù)庫還支持測試狀態(tài)和測試數(shù)據(jù)的事后按時間進行回放。
為了降低用戶的專業(yè)化程度,本軟件設計了“一鍵式”測試模式,即采用測試序列預加載技術,數(shù)據(jù)庫中存儲各個型號小衛(wèi)星長貯階段健康檢查測試序列,用戶只需要登錄系統(tǒng),選擇被測衛(wèi)星即可對其進行測試。
在系統(tǒng)登錄時,將用戶類型分為維護用戶和測試用戶,維護用戶的權限可進行系統(tǒng)維護、測試序列編輯、測試項編輯、測試判讀管理等測試內容的設計工作;測試用戶的權限包括衛(wèi)星型號選擇、測試序列選擇、測試序列執(zhí)行、測試結果查詢[10]。對于測試人員,不需要自主設計測試序列等具體內容,只需根據(jù)設計好的測試內容執(zhí)行測試工作,系統(tǒng)自動根據(jù)衛(wèi)星型號及測試序列執(zhí)行后臺操作,完成測試設備配置、測試參數(shù)配置等測試準備工作。該軟件改變了以往測試軟件專業(yè)化程度高、操作困難的問題。測試用戶的操作流程如圖3所示。
圖3 測試用戶操作流程
目前,影響不同型號衛(wèi)星測試軟件通用性的原因主要有以下3個方面[12]。
① 衛(wèi)星數(shù)據(jù)格式的定義缺乏規(guī)范化。不同衛(wèi)星型號之間,所定義的衛(wèi)星數(shù)據(jù)格式大多是不同的,這使得難以使用統(tǒng)一的軟件來對所有衛(wèi)星數(shù)據(jù)進行解析和處理。
② 不同衛(wèi)星項目應用數(shù)據(jù)的類型和結構各不相同。由于大多數(shù)衛(wèi)星都為專用目的,其數(shù)據(jù)形式各不相同,這使得數(shù)據(jù)解析軟件也基本為專用定制,難以通用。
③ 不同衛(wèi)星數(shù)據(jù)的應用處理算法不同。不同應用衛(wèi)星數(shù)據(jù)存在不同處理算法,即使使用相同的算法,算法的參數(shù)也可能各不相同,需要專門的解析代碼來進行處理。
為保證系統(tǒng)能夠滿足各類小衛(wèi)星設計的測試需求,需對一體化軟件進行通用化設計,包括兩種通用化設計方案。
① 數(shù)據(jù)庫通用:各衛(wèi)星廠家提供遙測解析方法、工程值轉換方式、指令處理方式(同步字、方式字、校驗等)等信息,將上述信息進行歸納總結,以相同格式存儲到數(shù)據(jù)庫中。其優(yōu)點在于:利于知識積累,解析協(xié)議方式、指令處理發(fā)生變化時只需修改數(shù)據(jù)庫即可,便于升級;缺點在于:工作量大、數(shù)據(jù)庫設計要求高。
② 接口函數(shù)通用:各個衛(wèi)星廠家提供接口庫函數(shù),實現(xiàn)遙測信息解析、遙控指令處理。其優(yōu)點在于:工作量小、基礎數(shù)據(jù)庫設計相對容易,保護了各個衛(wèi)星生產(chǎn)廠商的協(xié)議不被公開;缺點在于:不便于升級,需要升級時,衛(wèi)星廠家需提供新的接口函數(shù)。
通過對比兩套方案的優(yōu)缺點和難易程度,根據(jù)目前衛(wèi)星生產(chǎn)的現(xiàn)狀,獲得所有衛(wèi)星生產(chǎn)廠家的通信協(xié)議有一定的難度,本文按照方案②進行設計。
當一個新型號衛(wèi)星接入時,可以從系統(tǒng)中配置與其相關的衛(wèi)星型號、衛(wèi)星識別序號、遙測參數(shù)、測試序列、子序列、測試項、執(zhí)行單元、儀器配置等數(shù)據(jù)。只需要衛(wèi)星廠家提供接口函數(shù)進行遙測參數(shù)解析,即可快速完成一套可執(zhí)行的測試邏輯[13]。
為驗證小衛(wèi)星快速一體化測試軟件的有效性,結合小衛(wèi)星快速一體化測試硬件搭建測試系統(tǒng),針對2型小衛(wèi)星進行了測試,測試結果如表1所示。
表1 本軟件應用于2型小衛(wèi)星測試結果
測試結果表明,小衛(wèi)星快速一體化測試軟件能夠實現(xiàn)不同型號的衛(wèi)星測試,通用型好,人員投入少,耗時短,具有廣闊的應用前景。
在充分研究不同型號小衛(wèi)星長貯階段測試需求的基礎上,設計并實現(xiàn)了的小衛(wèi)星快速一體化測試軟件。重點介紹了軟件的架構設計、模塊設計、“一鍵式”測試設計和通用性設計,與以往的專用軟件相比,通用化、集成化程度更高,所以滿足小衛(wèi)星當前型號多樣、測試周期短、密度高、測試人員專業(yè)化程度低的需求。軟件為不同用戶設置了不同的使用權限,既適合專業(yè)衛(wèi)星測試人員使用維護,又適合測試用戶的日常訓練,滿足其測試需求,可大幅降低測試設備種類和數(shù)量,降低人力成本,為小衛(wèi)星新型測試提供支撐。