張煜昕,李永剛,史鳴謙,郭力兵,楊海民,胡上成
(1.中國衛星海上測控部,江蘇 江陰 214431;2.上海航天控制技術研究所,上海 201109)
船載外測數據處理主要是對外測設備的測量數據進行量綱復原和系統誤差修正,用精確的計算方法進行處理,以獲取飛行器精確的彈道參數。船載外測數據處理和陸基外測數據處理很多方面是相同的,但因前者有其特殊性,增加了數據處理的復雜性,它還必須對船搖引起的船體姿態變化、風浪引起的船體變形和船位移動進行處理,才能獲取精確的外測數據[1,2]。船載外測設備主要包括單脈沖雷達、C波段微波統一系統(UCB(Union C Band))、經緯儀以及慣性導航和變形測量等輔助測量設備[3]。現有的外測數據實時處理方法[4,5]采用基于時間驅動的軟件架構,即每一個數據處理周期是根據設備數據采樣周期來中斷觸發的,其處理模式簡單有效,避免了復雜的時序問題。但是,隨著航天測控任務的多樣性和復雜性不斷增加,特別是數據采樣頻率的變化調整,原有的時間驅動處理模式已經逐漸不能滿足需求,以致于時間驅動的軟件架構開發的外測軟件日益復雜,維護難度不斷增加。這種情況下,船載外測軟件需要一種適應性和可擴展性更強的軟件架構,以滿足不同測控體制下外測數據的處理需求,并且可通過配置適應不同的任務模式。
數據驅動的船載外測數據實時處理方法以采集到的不同來源和不同類型的數據作為基礎,首先進行數據預處理,然后通過不同計算方法求解精確的彈道參數。數據驅動的數據處理方法在很多領域得到了應用。文獻[6]提出一種基于Hadoop架構的數據驅動的Adaboost-SVM增量學習算法,利用不同的分類器對不同分區的數據進行處理,在保證分類精度的基礎上提高了SVM算法對大規模數據的處理能力。文獻[7]對基于數據驅動的微小故障診斷方法進行了綜述,主要包括基于統計分析、基于信號處理和基于人工智能的方法。朱銳等[8]以軟件過程數據為研究對象,提出了一種雙層次的軟件過程挖掘方法,解決了軟件過程數據因活動信息和案例屬性的缺失而無法應用傳統過程挖掘方法的問題,實驗結果表明了該方法的可行性和正確性。文丹艷等[9]以新聞文本數據與股價技術指標數為基礎,基于人工神經網絡方法設計了一種多源數據驅動的股票自動交易決策模型,實驗表明該方法在預測準確率上得到了提升。劉昊俁等[10]利用安裝于高鐵沿線的風速傳感器所包含的時空信息,提出一種新穎的依靠風速預測的風速報警解除時間調整方案,能夠適應復雜多變的環境,有效減少了報警冗余時長,提高了列車運行效率。結合上述分析,數據驅動的思想可以應用到船載外測數據實時處理軟件架構設計與實現方面。
本文提出了一種數據驅動的外測數據實時處理軟件架構,該架構沒有固定的數據處理周期,收到數據即開始相應的處理流程。在銀河麒麟操作系統下,基于該架構實現了外測軟件,該軟件包含多個由數據驅動的功能組件,各組件之間使用服務總線來實現數據交互與集成。實驗表明,基于該架構實現的外測數據實時處理軟件很好地解決了時延過大和時序交替的問題,能夠滿足當前航天任務需求。
船載外測數據實時處理軟件的主要任務是接收外測設備原始數據,然后對數據進行處理并生成引導數據,最后發送引導數據引導至外測設備。具體功能主要包括以固定周期接收各外測設備的原碼,進行量綱轉換、零值和軸系誤差修正以及合理性檢擇等預處理,根據慣導、變形數據計算各外測設備等效船搖,將外測數據進行船搖修正,得到目標慣導地平系坐標;對外測數據進行平滑修正,得到外測彈道,并進行積分預報;在飛行器入軌段,用積累的定軌數據計算初軌根數,對多組初軌根數進行優選;積累外測彈道數據,在飛行器運行段,依據一段較長的測軌數據進行軌道改進。
船載外測數據實時處理軟件具有以下特點:
(1) 接收數據種類多。各種外測設備以及輔助測量設備決定了軟件接收多種外測數據,包括單脈沖雷達、UCB、經緯儀、慣性導航和變形測量等設備獲取的原始測量信息,且隨著新型外測設備的增加,接收的數據類型也會進一步增多。
(2) 數據處理方法多[11,12]。由于外測數據種類多,不同的數據類型對應不同的數據處理方法,船載外測數據實時處理軟件需要根據不同數據類型選擇不同的數據處理方法。
現有船載外測數據實時處理軟件架構是以時間驅動為基礎的,時間驅動指的就是軟件處理流程由時統中斷信號觸發,也就是接收到時間信號后再進行數據接收和數據處理,兩者的頻率嚴格保持一致。現有船載外測數據實時處理軟件的處理過程示意圖如圖1所示。

Figure 1 Schematic diagram of time-driven software processing process圖1 時間驅動的軟件處理過程示意圖
現有的船載外測數據實時處理軟件使用A、B2個緩沖區,數據采樣周期為T,開始時A緩沖區負責數據接收,B緩沖區負責數據處理,T時間后收到時統中斷信號,2個緩沖區功能互換,即A緩沖區負責數據處理,B緩沖區負責數據接收。在時間驅動模型下,當前周期處理的數據總是上一個周期已經接收完成的各類測量數據,這樣能夠避免復雜的時序問題,簡單高效。不足之處有以下幾點:
(1) 數據處理有T時延;
(2) 只能處理采樣周期固定為T的數據;
(3) 對網絡環境的要求較高,時延較大、重幀和丟幀等情況對數據處理的精度有一定影響;
(4) 軟件的耦合度高,不能敏捷地適應任務需求的變化,對于不同類型的任務,需要管理多個軟件配置項版本,軟件的維護與擴展成本較高。
針對現有時間驅動軟件架構的不足,本文提出了基于數據驅動的船載外測數據實時處理軟件架構。數據驅動指的是處理流程由數據本身直接觸發,沒有固定的數據處理周期,收到數據即開始相應的處理流程。數據驅動的數據處理方式時延小,對網絡環境要求不高。數據驅動模型的核心是組件化,組件是指精確定義、封裝完善、獨立于其他組件所處環境和狀態的功能單元,各組件接收并處理特定類型的數據。根據船載外測數據的處理流程,本文將船載外測數據實時處理軟件分解為7個基于數據驅動處理的功能組件,包括船姿船位數據處理功能組件、引導數據處理功能組件、通信數據處理功能組件、脈沖雷達數據處理功能組件、UCB數據處理功能組件、經緯儀數據處理功能組件和界面顯示與操作功能組件。各個組件功能如表1所示。

Table 1 Function component name and function description表1 功能組件名稱和功能說明
整個軟件架構主要包括組件內的數據驅動處理和組件間的數據驅動處理。組件內數據驅動處理主要關注組件內數據處理流程,而組件間數據驅動處理主要關注組件之間的數據交互。
各個功能組件內的數據驅動處理流程可以分為以下幾個步驟:
(1) 時標檢驗。時標檢驗是指根據數據時標判斷重幀、丟幀和亂序等情況,及時進行剔除異常數據、內插補幀等處理。以設備數據發送周期T為例,其時標檢驗流程如圖2所示,其中,tk和tk-1是2個變量,分別用于記錄收到當前數據時標時刻和收到上一個數據時標時刻。
(2) 數據預處理。該流程與現有船載外測數據實時處理軟件的數據預處理流程一致,對測量數據進行零值修正、連續化、合檢和軸系誤差修正等處理。
(3) 數據積累。保存預處理之后的數據,與其他組件進行數據交互時使用。

Figure 2 Flow chart of time scale inspection 圖2 時標檢驗流程圖
與時間驅動模式相比,組件內的數據驅動處理不需要等待周期為T的時統中斷信號,收到數據即開始相應的數據處理流程,具有更強的實時性,并且增加的時標檢驗流程,能夠對網絡異常數據進行甄別和處理,一定程度上提高了系統的穩定性和數據處理精度。
如果各個組件采取點對點的直接交互方式,勢必增加系統的復雜度和耦合性,本文采取服務總線[13 - 16]對各組件之間的關系進行解耦。服務總線將應用程序的不同功能單元(即服務),通過服務之間定義的良好接口和契約聯系起來。所謂服務,就是精確定義、封裝完善、獨立于其它服務所處環境和狀態的功能單元。服務一般獨立于具體實現技術細節,封裝了可復用的業務功能,通常是大粒度業務,如業務過程、業務活動等;接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種各樣系統中的服務可以以一種統一和通用的方式進行交互。
組件間的數據驅動處理示意圖如圖3所示。

Figure 3 Architecture of the measured data’s real-time processing 圖3 外測數據實時處理架構圖
數據驅動的船載外測數據實時處理軟件架構的關鍵是服務抽象。應用程序的不同功能單元被包裝為服務,每個服務帶有明確可調用的接口,它們可以通過統一、通用的方式進行交互。本文中各功能組件的服務接口定義如表2所示。

Table 2 Description of function component service interface表2 功能組件服務接口說明
在總線式集成方式下,各功能組件只需關心自身功能和服務接口的實現,而不必關心數據交互的具體細節,大量的編程問題局部化,軟件的更新和維護變得快速和容易,通過部署不同的組件類型與數量即可適應飛船外測、衛星外測、校飛外測和探月外測等不同的任務模式;在需求變更時,可通過修改已有的組件實現或者加入新的功能組件來實現新的功能,可擴展性強;各組件是獨立運行的,具有標準的服務接口,提供了更高粒度的可重用性。
本文在麒麟操作系統下,利用Qt Creator平臺采用C++語言編程實現了數據驅動的船載外測數據實時處理軟件,具體包括服務端的服務注冊和服務運行、客戶端的服務請求。服務總線為服務端提供了服務注冊、服務運行的接口,使用的關鍵技術包括多路復用技術和線程池技術。其中,多路復用指的是在一個統一的事件循環中監聽給定的多個文件描述符,當其中某一個或多個文件描述符發生可讀、可寫和關閉等事件時,系統會喚醒事件循環并給出發生的事件集合。
麒麟操作系統提供的多路復用接口函數為:intepoll_wait(int_epfd,structepoll_event*__events,int __maxevents,int __timeout),其中,__epfd為統一的文件描述符,用來監控預先給定的多個文件描述符所發生的事件,__maxevents為每一次事件循環喚醒時返回事件個數的最大值,__timeout為超時時間,取值為-1時表示永久等待,直到有事件發生。當函數返回時,所發生的事件集合會寫入__events參數。基于麒麟操作系統所提供的多路復用接口,服務總線架構會為每一個注冊的服務生成一個文件描述符,并將它們加入到epoll_wait的等待隊列中,當客戶端發來服務請求時,對應的文件描述符會發生可讀事件,事件循環線程會被喚醒并執行相應的服務函數。服務注冊、運行和請求示意圖如圖4所示。

Figure 4 Service registration,operation and request圖4 服務注冊、運行和請求
本節以某型號任務理論彈道為數據源進行外測數據仿真,分別采用時間驅動的軟件和數據驅動的軟件進行外測數據處理,對處理結果進行對比驗證。
以UCB數據處理為例,具體測試方案為:
(1) 啟動仿真軟件發送慣性導航、變形以及UCB測角、測距和測速數據,其中數據采樣周期為T,慣性導航和變形數據的時延波動范圍設置為0~T/2 ms,UCB測角、測距和測速數據的發送周期為Tms,共發送6 000Tms的有效數據,時延波動范圍均設置為0~T+5 ms;
(2) 啟動衛星外測軟件,接收仿真數據并進行實時處理,記錄數據處理情況,測試結果如表3所示,其中,數據積累每50Tms一次,UCB彈道是由各測量數據綜合計算得出的。

Table 3 Time-driven software testing results表3 時間驅動的軟件測試結果
以UCB設備數據處理為例,具體測試方案為:
(1) 啟動仿真軟件發送慣性導航、變形和UCB測角、UCB測距和UCB測速數據,仿真設置與第3節相同;
(2) 由于數據驅動模型采用組件化系統架構,這里選用船姿船位數據處理組件處理慣導數據和變形數據,選用UCB數據處理組件處理UCB數據即可,記錄數據處理情況,測試結果如表4所示,其中,數據積累每50Tms一次,UCB彈道是由各測量數據綜合計算得出。

Table 4 Data-driven software testing results表4 數據驅動的軟件測試結果
通過實驗結果可以看出,由于UCB設備測量數據的波動范圍超過了設置的幀頻T,并且測角、測距和測速數據的時序出現了交替,相對于數據驅動模型,時間驅動模型不能進行適應性處理,數據積累出現了較多丟點。
經分析確認,時間驅動模型中出現的無效幀數是因為在網絡時延0~T+5 ms波動下,前后幀的數據有可能出現亂序,例如k時刻采樣的數據時延為T+5 ms,而k+T時刻采樣的數據時延為0 ms。目前時間驅動模型還不能很好地解決同類測量數據亂序的問題,而數據驅動模型很好地解決了時延過大和時序交替的問題,保證了數據處理的實時性。
本文在介紹船載外測數據實時處理軟件功能及特點的基礎上,分析了目前時間驅動的外測數據實時處理軟件的特點與局限性,提出了一種數據驅動的船載外測數據實時處理軟件架構,在銀河麒麟操作系統下,基于該架構實現了外測數據實時處理軟件。在數據驅動架構下,邏輯復雜、時序嚴格的外測數據實時處理流程被分解為多個由數據驅動處理的功能組件,各組件基于服務總線進行數據交互與集成,提高了系統的實時性、可移植性、可擴展性和可重用性,有效降低了系統開發和維護難度。實驗表明,基于該架構實現的外測數據實時處理軟件很好地解決了時延過大和時序交替的問題,能夠滿足當前航天任務需求。