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