張思碩,郝 朝,山 壽
(中國飛行試驗研究院,陜西 西安 710089)
目前在飛行試驗中使用的機載測試系統會將參數測量結果形成標準的PCM[1]數據流進行遙測傳輸和記錄,機載測試系統普遍遵循IRIG106遙測標準[2]。在某型飛機的飛行試驗中需要測量超大容量的參數,因此采用了網絡化架構的機載測試系統來解決參數數量龐大的問題。網絡化系統將測量結果形成IENA/INET[3]結構的網絡數據包進行傳輸和記錄,網絡數據包具有數據包靈活、數據包分散、數據量大、參數多等顯著特點,其結構與IRIG106遙測標準的PCM數據流完全不同。在網絡化測試系統中,由網絡交換機對前端數據采集系統采集的飛行數據進行打包發送到數據記錄器,記錄器以一定格式對采集的網絡數據包進行記錄。
為了滿足型號試飛數據處理需求,提出了基于iNET的網絡數據分析軟件設計方案,通過對機載記錄網絡數據進行處理,對新型網絡化測試系統的iNET網絡協議進行分析研究,實現對該測試系統采集的網絡數據的解包分析,保證了型號任務的順利進行。
美國試驗中心和項目評估投資機構(CTEW)于2004年10月啟動了增強遙測綜合網(integrated network enhanced telemetry,iNET)項目開發計劃,目的是為試驗場和試驗基地自主開發綜合增強型遙測網絡系統。iNET由3個部分組成:vNET機載網絡系統、rfNET遙測射頻傳輸網絡系統、gNET地面網絡系統,即建立空、地一體化的遙測網絡系統[4]。
iNET是CIA(CTEIP integrated architecture)試驗集成結構框架中的重要組成部分,包括遙測網絡系統(telemetry network system,TmNS)[5]、機載測試系統(外圍設備)和各種操作、控制的應用軟件。iNET可通過中間件實現與TENA(test and training enabling architecture)的聯接[6]。
隨著新型航空武器飛行試驗發展的需要,中國飛行試驗測試為滿足新機飛行試驗的要求,采用了基于IENA/INET的網絡架構。這樣對試飛數據處理也提出了新的要求。該系統是在機載采用新的網絡化架構測試系統后,地面數據處理必須要解決的一個問題,否則,機載網絡化測試系統便不能投入實際使用。
iNET數據包格式[7]如圖1所示。一個iNET數據包由包頭和數據組成。數據包包頭占24字節。第1個字段為配置項,占4個字節;第2個字段為數據包ID,占4個字節,標識唯一的一個數據包;第3個字段為包計數,占4個字節,代表同一個數據包的計數值,可以用來判斷數據包的丟包情況;第4個字段為包長度,占4個字節,代表當前iNET數據包長度,包括包頭長度和有效數據字節數;第5個字段為時間戳,占8個字節,代表當前數據包采集時間。iNET數據包采用8字節的UDP頭、20字節的IP頭和14字節的MAC頭依次進行封裝,然后記錄為*.enet網絡包文件。
現代飛行器的試飛階段通常需要處理發動機、性能、品質、航電、火控等多種試飛科目的數據,某型飛機在試飛階段需要采集一百多條數據流,處理二十多個科目的數據,包含四萬多個參數、不同科目的參數采樣率從1到4 096不等。傳統的數據處理方式只能一次處理單架次單科目的數據,操作復雜,處理效率低,在多科目數據處理過程中會耗費大量的時間。為了達到試飛任務要求,提高數據處理效率,該文提出了面向多科目的試飛數據處理方法。
多科目數據處理具有如下幾個特點:
(1)每個試飛科目都有一個處理參數組,數據處理時需按照任務書要求和每個科目的參數組處理數據,將結果發送給課題人員;
(2)許多基本參數如氣壓高度、俯仰角、馬赫數等,在不同科目中都需要處理;
(3)各個科目需求的參數采樣率不同,同一參數在不同科目中所需的采樣率也可能不同。
傳統的數據處理方式對不同科目中的重復參數處理多次,是對計算資源的浪費,并且這種參數組與科目相對應的數據處理方式將大量時間花費在對參數的輪詢查找上,處理時間較長。
基于上述分析,為解決試飛數據量的快速增長與數據處理效率之間的矛盾,針對不同科目中的重復參數,提出一種更高效的方法,“整體—分流”方法:
(1)將不同科目的參數組按照參數的信息合并成一個參數列表,合并過程中會剔除重復的參數;
(2)按照合并后的參數列表處理所有參數,讀取每個網絡包的數據,按照帶頭中參數的校線將碼值轉化為物理量,得到原始數據;
(3)對原始數據進行分流得到各科目的預處理結果。
算法流程如圖2所示,所有重復的參數只需處理一次,并且數據只需對參數進行一遍輪詢查找,極大地提高了數據處理效率。
基于iNET的網絡數據分析軟件分為帶頭文件管理模塊、校準曲線管理模塊和數據處理模塊,如圖3所示。帶頭文件是對機載格式格柵文件進行轉換后便于數據處理讀取使用的文件[8],包括數據包采集信息、參數相關信息(校準曲線、有效位、偏移字等)。校準曲線就是用已知試飛測試參數輸入試飛測試傳感器及連接的測試系統獲得的響應曲線,代表碼值與工程量轉換的對應關系。校準曲線文件一般為Excel文件。帶頭文件管理模塊包括機載格式格柵轉換和參數管理(編輯、刪除、增加和查找)功能。校準曲線管理模塊包括校線編輯、校線替換和校線批導入。數據處理模塊包括參數提取、丟包分析和批處理。
在進行數據處理前,首先需要將機載格式格柵轉換為帶頭文件,以后每次數據處理只需要讀取帶頭文件即可。由于機載記錄網絡數據包括視頻數據、振動數據、普通數據等各種類型數據,因此需要對機載網絡數據進行分流提取處理[9],得到需要的普通網絡數據包。然后讀取帶頭文件獲得參數信息,經過參數碼值提取、工程量轉換寫入結果文件。網絡數據處理流程如圖4所示。
傳統的文件讀取一般采用文件指針模式,這種模式需要對原始數據文件頻繁地執行I/O操作。采用此種方式處理PCM數據影響不大,因為PCM幀結構存儲形式比較整齊規范,一幀數據長度相同,處理邏輯與算法相對比較簡單。在處理大量的網絡包數據時,需不斷地進行讀取數據、判斷、跳過等操作。如果沿用過去的做法,使用文件指針模式去讀寫數據,在效率上無法滿足海量網絡數據處理的需求。運用計算機內存映射文件技術[10],將不必再對文件執行I/O操作,實現快速地讀取原始網絡數據。運用內存映射文件技術,將LST文本文件映射到內存后文件中的每個數據位置就會有對應的內存地址。Win32提供了內存映射函數CreateFileMapping,使用內存映射文件處理存儲于磁盤上的文件時,減少了大量不必要的I/O操作,并節約了內存空間,在數據處理過程中起到了相當重要的作用。
對海量網絡數據,應用內存映射技術進行大數據量的讀取,實現一次讀入,快速提取技術。步驟如下:
(1)創建/打開一個文件內核對象;
(2)在進程的虛擬地址空間中創建一個文件映射;
(3)將文件映射對象的全部或部分映射到創建的文件映射中;
(4)通過指向文件映射的指針對文件進行訪問;
(5)從進程的地址空間撤消文件映射內核對象;
(6)關閉文件映射內核對象;
(7)關閉文件內核對象。
目前參數校準曲線是以Excel文件的形式存在的[11],如果通過人工對帶頭文件中的參數校準曲線進行手動輸入,必然后會導致效率低下,甚至出現錯誤。校準曲線的格式固定統一,為了提高校線錄入效率,軟件設計了Excel校線文件模版及其工程化轉換之后的存儲格式(見圖5),采用基于OLE(object linking and embedding)[12]的Excel交互技術,實現參數校線的自動識別與導入。
校線文件讀取步驟如下:
(1)讀取帶頭參數并存入數組;
(2)打開多個Excel校線文件;
(3)遍歷校線文件,讀取參數名,如果帶頭中存在該參數,則獲取碼值及物理量,然后按照碼值進行排序;
(4)遍歷完成后將參數信息寫入帶頭文件。
新型飛機包含大量加裝的測試參數,若為參數結構體數組分配固定長度會占用大量內存空間,并且影響軟件的擴展性,因此采用TList的方法動態調整參數數組內存,開辟單獨的線程進行校線導入,防止界面假死。
基于OLE的Excel校線文件批量快速讀取技術如圖6所示。
WINDOWS是一個支持多進程的多任務操作系統[13]。而進程本質上是一個正在執行著的程序,每個進程可以有一個或多個線程,進程中至少有一個主執行線程,它是由系統自動創建的。用戶可以根據需要在應用程序中創建其他線程,多個線程并發地運行于同一進程。這樣可以將一些占用時間長的程序任務放到后臺去處理,提高程序的運行速度、占用更少的資源等等。處理多任務時,線程間的切換比進程間的切換要快得多,并且線程間的通信通常比進程間的通信要更快、更容易[14],多數情況下,程序可以采用多線程方法實現多任務處理功能。在試飛數據處理的環境下,采用多線程計算的開銷更小,效率更高,程序的運行速度更快。
常規的數據處理方法為預處理軟件每次處理一個試飛科目的數據,處理完成后部分科目還需要進行二次處理。當需要處理的試飛科目較多時,全部試飛科目數據處理完成需要花費較長時間。
針對網絡數據包文件數據量較大和多個試飛科目,若采用常規的數據處理方法對各個科目逐個進行處理,效率較低。因此先對合并后的參數列表進行整體處理,再采用多線程并行處理技術(見圖7),開辟多個數據處理線程將處理結果分流到各個試飛科目中。先將每時刻的預處理數據寫入緩存,如果該科目無需進行二次處理,則直接寫入各科目的結果文件;否則將數據發送給二次處理程序進行二次處理。多科目并行處理打破常規的數據處理方式,一次處理完成后自動進行二次處理,減少預處理結果文件的重復讀寫操作,有效提高數據處理效率。
網絡數據包的結構與上述遙測標準的PCM數據流截然不同,具有數據量大、參數多、數據包分散、數據包靈活等顯著特點[15]。每個網絡數據包有單獨的時間戳,而且網絡包在整個原始文件中可能存在亂序的問題。
針對網絡數據包的這些特性,在進行數據包參數提取前,首先將數據包放入緩沖區,設計單獨線程對緩沖區中的數據包按照時間戳進行排序,數據處理線程從緩沖區中依次讀取數據包通過判斷網絡包KEY值進行參數提取,在參數數據包按照KEY字排序的過程中,統計相同時間戳數據包的個數,若某個時間戳的網絡數據包個數少于帶頭文件中記載的個數,則視為丟包,將這個數據包舍棄。設計時間對齊算法實現多個網絡數據包處理參數的時間統一,采用計算標識符來表示當前參數組開始提取的標識,網絡數據包快速解析技術整體流程如圖8所示。
軟件具有實時顯示、保存與數據處理功能。界面如圖9所示。開始處理前需要選擇飛機帶頭與組播地址設置處理結果保存路徑以及選擇需要二次處理的科目,軟件會自動讀取對應科目的二次處理程序。應用效果表明,該軟件能夠實現iNET數據包的實時數據處理,滿足遙測數據處理的實時性和穩定性要求。
為了快速分析處理海量網絡數據,對機載網絡化測試系統中采集記錄的網絡數據包進行了深層次的理解和分析,并對網絡試飛數據同步分析技術進行研究,應用先進的計算機技術設計了網絡數據處理軟件。提出整體—分流數據處理方法,并采用文件內存映射技術和多線程技術,大大提高了飛行試驗海量網絡數據處理軟件的處理效率,使其能夠滿足大量iNET網絡數據快速處理需求,解決了在某型飛機飛行試驗的數據處理問題。該iNET網絡數據處理軟件目前已在某型機中得到驗證,保障了多個科目的試飛工作順利進行,同時為將來其他型號的飛行試驗網絡化測試應用打下技術基礎。