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