陳詠梅
(中國商飛民用飛機試飛中心,上海201323)
試飛數據實時監控系統作為民機試飛過程中的重要決策性支持系統,主要功能是利用可視化控件實時顯示試飛數據,反應飛機當前的試飛狀態、試驗效果等信息,為指揮人員、保障人員、飛機設計人員等提供決策依據。因此,構建實時性能卓越、功能豐富的試飛數據實時監控系統對于增強試飛安全、改進試飛方法策略、提高試飛效率等具有重要意義。
在當前試飛模式下,國內的主流試飛機構往往采用Labview、DataView、VC++等環境開發實時監控程序,在試飛過程中顯示試飛數據,而不能進行復雜分析和處理[5],對于試驗點有效性的確認以及飛機安全性狀態的判斷需要技術人員進行二次解析、分析,這一重復性步驟降低了試飛效率,不利于縮短試飛周期。
本文立足于民機試飛模式,從試飛安全監控、實時分析等兩個角度,基于數據、邏輯、顯示三層架構,利用 WPF(Windows Presentation Foundation)技術設計了試飛數據監控系統。該系統采用多線程同步技術在傳統監控形式上集成了數據實時存儲、實時分析、實時回放、信息標記與共享等功能,系統特點包括:
1)應用WPF技術能夠逼真的模擬PFD、MFD等機載畫面;
2)三層架構易于系統維護;
3)業務邏輯、運算、分析與顯示相互獨立,實時性能得到較大提高。
試飛數據實時監控系統采用數據層、業務邏輯層與顯示層的三層結構,其原理如圖1所示。
在數據層,試飛參數通過網絡接口傳入實時數據服務器,由實時數據服務器經數據解析、封裝,然后以UDP廣播的方式發送至監控終端和應用服務器。應用服務器作為應用層主要設備,常駐運行數據備份緩存、同步、標記與共享、告警、實時分析等服務線程,同時與監控終端之間建立面向連接的TCP協議,以響應監控終端請求完成數據實時回放、分析等功能。主要服務功能如下:
1)備份緩存服務:負責接收數據層發送的數據,并將數據以二進制流的格式寫進數據文件以作備份,以響應監控終端的請求數據回放的請求。
2)同步服務:負責實現監控終端數據的實時回放功能,同步服務為每一臺接入系統的監控終端建立10 min~15 min的數據緩沖池,當接收到監控終端的回放請求時,同步服務根據監控終端的請求時刻從緩沖池中選擇相應時長的試飛數據、封裝后傳輸至監控終端,若請求時刻不在緩沖池中,則同步服務會從備份二進制文件中讀取相應的數據發送給監控終端進行回放。
3)實時分析:負責對試飛數據進行實時分析,并將分析結果發送給監控終端進行實時顯示;
4)告警服務:負責調用告警事件對試飛數據進行告警判斷,同時間結果發送給實時監控終端。
表示層為運行于實時監控終端的監控畫面程序,采用WPF技術,利用C#編程語言編輯開發,數據的顯示方式包括動態曲線、雙態燈、數值顯示、虛擬儀表、刷新列表。
實時監控程序通過各類顯示控件實時刷新數據,包括前臺UI和參數驅動兩個部分。監控程序的前臺UI基于WPF中的XAML語言[4],采用其矢量圖繪制引擎實現,本系統主要顯示數據的趨勢、具體數值、參數狀態等,由繪制的曲線繪制框、條圖儀、虛擬儀表、數值顯示框以及結合 Grid、StackPanel、DockPanel等布局控件組成,其結構如圖2所示:
利用多線程和DataBinding可實現參數與現實控件的綁定與驅動。處理原則如下:
1)數據顯示刷新率不大于60 Hz采用 Data Binding:利用數據驅動顯示控件的依賴屬性實現,其模型如圖3所示。

圖2 前臺UI和參數驅動

圖3 WPF數據驅動模型
程序語言可描述為:DisplayControl.SetBinding(DependencyProperty dp, Bindingbase binding),其中:
(1) DisplayControl——顯示控件,作為 Binding目標;
(2) DependencyProperty——以 DependObject為宿主的依賴屬性,借助其SetValue及GetValue方法進行讀取和寫入;
(3)Bindingbase——用以聲明Binding的數據源。
2)數據顯示刷新率大于60Hz或曲線動態繪制采用多線程,利用委托統一主輔線程顯示數據,流程如圖4所示。

圖4 多線程顯示
如前所述,數據備份緩存及同步服務主要是利用數據文件及內存實時存儲數據,以作為實時回放的數據源,實現流程如圖5所示。
首先從數據緩沖區中提取數據,并判斷數據數組長度;當獲取的數據長度大于0(即緩沖區中有數據)時,提取數據字節數組;最后將提取的字節寫入數據存儲文件。
實時回放是指在試飛數據實時監控的過程中監控人員可對歷史數據進行實時回看,以檢查數據有效性和飛行異常,回放過程與實時監控鏈路相對獨立,回放結束后可切換至實時監控狀態。根據實際需求,本系統支持5 min~10 min以及全時間歷程的數據回放。系統工作時,應用服務器偵聽實時監控終端的回放請求,根據回放時間刻度從內存數據文件中提取歷史數據完成回放,其工作流程如圖6所示。
本系統基于實際試飛需求,集成了快速傅里葉變化(FFT)和數字濾波等典型數據分析方法,同時對實時分析狀態下的系統性能進行了分析。
2.4.1 快速傅里葉變換(FFT)
對于復數序列 x0,x1,...,xn-1,其離散傅里葉變換可以表示為:


式中:

2.4.2 數字濾波
本系統采用Buttertworth數字濾波器,主要涉及參數包括濾波器階數和截止頻率,可通過式(4)計算得出[2]。

式中:
ωc—— 截止頻率;
N——濾波器階數;
ωs—— 阻帶邊界頻率;
Rs—— 阻帶衰減(dB)。
實時分析過程利用多線程技術實現,應用服務器根據實時監控終端請求完成數據計算過程,同時將計算結果發送給訂閱的實時監控終端,實現流程如圖7所示。

圖7 數據實時分析流程
試驗數據源為仿真數據源,采用UDP廣播通信方式,每隔100ms發出200個參數,應用層格式協議如圖8所示。

圖8 基于UDP的應用層協議格式
其中:
連接字符為“&”;標識字符為參數名稱;分隔字符為“,”;結束字符為“#”。
因此,應用層數據可表示為 “12:23:59:242&Time,7.6284&Param1,…,4.6790&Param200#”。實時監控程序與應用服務器在收到數據后,首先將Byte數組按照約定編碼格式(即Unicode)轉換成字符串[3],然后以分隔符(“,”)將字符串拆分為參數數組,最后對該數組進行輪循,針對每一項按照連接字符(“&”)拆分并根據參數標識符定位、綁定參數。實時監控程序運行狀態如圖9所示。

圖9 實時監控程序運行狀態
試驗中用于實時分析的參數由三個正弦信號復合而成,頻率分別為 0.5、1、1.5,幅值為 10、5、15,如式(5)所示:

分析結果如圖10所示,表1為原始信號,表2為濾波后幅值為15的正弦信號,表3、表4分別是原始信號及濾波后信號的FFT分析結果。根據式(6)、(7)計算信號頻率成分及對應幅值。

式中:
f——信號頻率;
n——數據量;
fs——FFT計算后的頻率;
N——FFT幅頻譜數據點數,這里取值512;
A——信號幅值;
Af——FFT計算后的幅值。

圖10 數據實時分析結果
根據FFT分析出的雙邊幅頻譜可見,FFT分析過程準確地識別了信號中的頻率成分。系統延時可利用同步狀態下的絕對時間差計算Δt=|t1-t2|=77ms,其中t1是接收數據的絕對時間,t2是完成處理后的絕對時間。
本文數據層、業務邏輯層、表示層三層架構,采用WPF技術設計了試飛數據實時監控系統。通過試驗,系統模擬了試飛狀態,以UDP/IP為傳輸協議,在保證系統實時性能的前提下,合理的調配任務線程實現了在實時監控過程中對試飛數據的實時存儲、備份、分析和回放等功能,為試飛數據監控模式技術創新提供了新的參考依據。