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