王加熙,劉 濤,馮 燦,高 祥
(中國商飛民用飛機(jī)試飛中心 測試工程部,上海 200231)
試飛是在真實(shí)的環(huán)境下對飛機(jī)的性能和功能進(jìn)行測試的過程,是民機(jī)投放市場前的必經(jīng)之路[1]。用于試飛的飛機(jī)會加裝各類傳感器和測試設(shè)備,對那些表征飛機(jī)關(guān)鍵系統(tǒng)狀態(tài)的參數(shù)進(jìn)行采集、處理和記錄,這些參數(shù)就是試飛數(shù)據(jù)[2]。試飛數(shù)據(jù)是民機(jī)試飛中最重要的產(chǎn)物,其應(yīng)用貫穿了整個試飛過程,是用于判斷試飛架次有效性、驗(yàn)證飛機(jī)設(shè)計(jì)合理性以及向局方表明符合性的重要依據(jù)。試飛數(shù)據(jù)經(jīng)機(jī)載采集器采集編碼后進(jìn)行傳輸,并利用記錄設(shè)備對所有數(shù)據(jù)進(jìn)行實(shí)時記錄,這類數(shù)據(jù)被稱作原始數(shù)據(jù)。原始數(shù)據(jù)必須使用總線的ICD(interface control documentation)和傳感器的校線進(jìn)行解碼后才能使用,這個解碼過程被稱為工程量轉(zhuǎn)換(即將二進(jìn)制編碼的原始數(shù)據(jù)轉(zhuǎn)換為物理量),也叫試飛數(shù)據(jù)預(yù)處理[3]。試飛數(shù)據(jù)預(yù)處理是進(jìn)行數(shù)據(jù)分析、判斷飛機(jī)狀態(tài)、決定飛機(jī)是否再次飛行的基礎(chǔ),對飛機(jī)飛行安全至關(guān)重要[4-5]。國內(nèi)的主流試飛機(jī)構(gòu)一般在飛行試驗(yàn)結(jié)束后對機(jī)載記錄的原始數(shù)據(jù)進(jìn)行卸載,并通過相關(guān)軟件實(shí)現(xiàn)過程量轉(zhuǎn)換,最后輸出數(shù)據(jù)文件(為txt或者csv的文本文件)[6]。隨著先進(jìn)航電總線在民機(jī)上的大量使用以及網(wǎng)絡(luò)采集系統(tǒng)的普及,試飛數(shù)據(jù)的數(shù)量越來越多、體量也越發(fā)龐大,例如空客380的試飛參數(shù)數(shù)量就達(dá)到了十幾萬個,而國產(chǎn)某大型客機(jī)的試飛數(shù)據(jù)也突破了80 000個,單個架次的原始數(shù)據(jù)超過了100 GB,同時試飛數(shù)據(jù)的類型也更為復(fù)雜,包括了總線、各類傳感器以及音視頻這些結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù),參數(shù)采樣率也從1 Hz跨度到了16 kHz,除此之外,為了保證試飛安全、提高試飛效率,人們對試飛數(shù)據(jù)的時效性要求也越來越高[7-11]。傳統(tǒng)的預(yù)處理技術(shù)往往很難滿足以上需求,存在以下不足:
1)試飛數(shù)據(jù)預(yù)處理周期過長。一般情況下,試飛數(shù)據(jù)的預(yù)處理過程往往需要4~5個小時甚至更長的時間,為試飛數(shù)據(jù)的分析和試驗(yàn)點(diǎn)有效性的快速判斷帶來了障礙,不利于一天多架次的試飛;
2)試飛數(shù)據(jù)的監(jiān)控方式不靈活。試飛數(shù)據(jù)的監(jiān)控一般采用被動接收的方式,無法根據(jù)實(shí)際的試飛狀態(tài)靈活變化;
3)試飛數(shù)據(jù)的分析效率較為低下。試飛數(shù)據(jù)仍以文本文件方式輸出,不利于數(shù)據(jù)的檢索、查詢和關(guān)聯(lián)分析,這嚴(yán)重制約了試飛數(shù)據(jù)的分析效率。
國內(nèi)外的試飛機(jī)構(gòu)在試飛數(shù)據(jù)的預(yù)處理處理方面也在不斷的探索和研究,例如中國飛行試驗(yàn)研究院利用VxWorks嵌入式系統(tǒng)實(shí)現(xiàn)了110 Mbps帶寬下網(wǎng)絡(luò)數(shù)據(jù)的接收和處理,但處理能力僅能達(dá)到8 000個參數(shù)[12-14],空客所研制的預(yù)處理設(shè)備仍然需要在航后進(jìn)行二次解析。
因此,為了縮短試飛周期,提高試飛效率,降低試飛運(yùn)營成本,需要探索一種新的試飛數(shù)據(jù)預(yù)處理技術(shù),實(shí)現(xiàn)縮短試飛數(shù)據(jù)預(yù)處理周期、改變監(jiān)控模式、提高分析效率的目的。
本文提出了在實(shí)時狀態(tài)下進(jìn)行試飛數(shù)據(jù)預(yù)處理的理念,研制了一套試飛數(shù)據(jù)機(jī)載在線完全預(yù)處理系統(tǒng),功能是在機(jī)載環(huán)境下,實(shí)現(xiàn)試飛數(shù)據(jù)的實(shí)時接收、工程量轉(zhuǎn)換和數(shù)據(jù)庫存儲,達(dá)到飛機(jī)落地即輸出數(shù)據(jù)文件的目的。
系統(tǒng)包括機(jī)載數(shù)據(jù)處理服務(wù)器和實(shí)時預(yù)處理軟件兩大部分,其中在線完全預(yù)處理軟件包括配置信息生成軟件、數(shù)據(jù)實(shí)時在線處理軟件、監(jiān)控調(diào)試軟件、地面數(shù)據(jù)卸載軟件、機(jī)載高頻監(jiān)控軟件等五大子軟件。
主要業(yè)務(wù)流程如圖1所示,分為試飛任務(wù)配置、試飛任務(wù)運(yùn)行和試飛任務(wù)結(jié)束以及數(shù)據(jù)卸載交付等四大環(huán)節(jié):
1)試飛任務(wù)配置。測試工程師根據(jù)實(shí)際試飛任務(wù)的具體信息,在地面環(huán)境下使用配置信息生成軟件以機(jī)載配置文件、總線ICD文件、參數(shù)組導(dǎo)出文件、監(jiān)控轉(zhuǎn)發(fā)文件為輸入,按照既定格式生成試驗(yàn)信息文件,并導(dǎo)入機(jī)載數(shù)據(jù)處理服務(wù)器完成系統(tǒng)配置。其中,機(jī)載配置文件為XML(extensible markup language)格式,描述了機(jī)載測試系統(tǒng)的相關(guān)信息,包括系統(tǒng)架構(gòu)和采集器、交換機(jī)等設(shè)備信息;總線ICD文件主要記錄了ARINC664(aeronautical radio Inc.)、ARINC429以及IMB(inter model bus)等機(jī)載總線的信息,如參數(shù)的取位、類型和計(jì)算方法等,是總線參數(shù)解析的關(guān)鍵;參數(shù)組導(dǎo)出文件規(guī)定了每個數(shù)據(jù)輸出文件所包含的參數(shù)名稱,可根據(jù)實(shí)際試飛任務(wù)需求動態(tài)更新;監(jiān)控轉(zhuǎn)發(fā)文件說明了試飛數(shù)據(jù)的轉(zhuǎn)發(fā)頻率和轉(zhuǎn)發(fā)順序。
2)試飛任務(wù)運(yùn)行。在試飛任務(wù)開展過程中,數(shù)據(jù)實(shí)時在線處理軟件首先加載試驗(yàn)信息文件,完成軟件初始化,并啟動軟件內(nèi)部各模塊,按照設(shè)置自動開始進(jìn)行數(shù)據(jù)在線處理任務(wù);監(jiān)控調(diào)試軟件對整個系統(tǒng)的軟硬件狀態(tài)進(jìn)行監(jiān)控、統(tǒng)計(jì)和顯示;數(shù)據(jù)實(shí)時在線處理軟件以機(jī)載測試系統(tǒng)原始數(shù)據(jù)流為輸入,完成試飛數(shù)據(jù)的工程量轉(zhuǎn)換、計(jì)算分析、分發(fā)和參數(shù)組導(dǎo)出以及IoTDB的時序數(shù)據(jù)庫存儲;機(jī)載高頻監(jiān)視軟件以實(shí)時數(shù)據(jù)驅(qū)動方式刷新監(jiān)控畫面完成振動、電源等高頻數(shù)據(jù)的實(shí)時監(jiān)控。
3)試飛任務(wù)結(jié)束時(飛機(jī)落地后至切斷整機(jī)電源系統(tǒng)前),數(shù)據(jù)實(shí)時在線處理軟件對落盤存儲的數(shù)據(jù)文件進(jìn)行在線壓縮處理。
4)數(shù)據(jù)卸載交付。技術(shù)人員從機(jī)載數(shù)據(jù)處理服務(wù)器取出數(shù)據(jù)磁盤,并掛載到數(shù)據(jù)分發(fā)設(shè)備(即計(jì)算機(jī))后,運(yùn)行在該設(shè)備上的地面數(shù)據(jù)卸載軟件識別磁盤及數(shù)據(jù)文件,結(jié)合交付策略使用FTP(file transfer protocol)等方式將數(shù)據(jù)分發(fā)至各目標(biāo)終端。
機(jī)載實(shí)時處理服務(wù)器是實(shí)時預(yù)處理軟件的運(yùn)行載體,采用成熟的組件并通過加固方式實(shí)現(xiàn),結(jié)構(gòu)如圖2所示。
圖2 機(jī)載數(shù)據(jù)處理服務(wù)器組成框架
機(jī)載數(shù)據(jù)處理服務(wù)器各功能模塊如下。
1)主板模塊:含CPU(central processing unit)、板載內(nèi)存、板載RAID(redundant array of independent disks)卡及網(wǎng)卡等組件,其中CPU采用Intel Xeon Gold 6148處理器,內(nèi)存為DDR4,容量為256 GB,使用板貼芯片替代傳統(tǒng)槽加方式,加強(qiáng)主板的抗振動沖擊能力;
2)背板模塊:由背板、對外/內(nèi)連接器組成,主要為整個設(shè)備各模塊間接口提供互聯(lián),包括千兆網(wǎng)口、USB、VGA等,各模塊間接口采用CPCIE連接器(如圖3(a)所示);
3)存儲模塊:包含硬盤背板及2塊模塊化硬盤,通過鍥塊結(jié)構(gòu)與存儲模塊支架緊固,可方便進(jìn)行插拔(如圖3(b)所示);
4)電源模塊:將直流28 V電源轉(zhuǎn)化為主板需要的直流12 V電源和硬盤所需的直流5 V電源;
5)時統(tǒng)模塊:提供PTP(precise time protocol)輸入對時,IRIG-B碼輸出功能,用于時間同步;
6)控制模塊:提供一路控制信號用于整個系統(tǒng)存儲服務(wù)的啟動和停止。
機(jī)載數(shù)據(jù)處理服務(wù)器采用加固模式,設(shè)計(jì)尺寸如圖3(c)所示。
圖3 模塊及設(shè)計(jì)尺寸
實(shí)時預(yù)處理軟件是整個系統(tǒng)的核心,運(yùn)行時通過組播方式實(shí)時接收機(jī)載測試系統(tǒng)的原始數(shù)據(jù)流,按照總線類型和具體參數(shù)配置,進(jìn)行工程量轉(zhuǎn)換、時間對齊,并將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行兩路并行輸出,一路存儲至IoTDB時序數(shù)據(jù)庫,一路以文本文件存儲于硬盤中。同時,軟件集成了Redis內(nèi)存數(shù)據(jù)庫,主要負(fù)責(zé)數(shù)據(jù)的緩存和轉(zhuǎn)發(fā),用來集中管理預(yù)處理階段各類統(tǒng)計(jì)信息,驅(qū)動監(jiān)控調(diào)試軟件完成狀態(tài)監(jiān)控。
配置信息生成軟件工作在試飛準(zhǔn)備階段,主要功能是以機(jī)載配置文件、總線ICD文件、傳感器校線文件、試飛參數(shù)分組文件為輸入,生成試驗(yàn)信息文件。軟件包括機(jī)載配置處理、總線ICD處理、校線文件處理、試驗(yàn)信息處理、日志管理、顯示與查詢等功能模塊,處理流程和架構(gòu)如圖4所示。
圖4 處理流程和架構(gòu)
1)機(jī)載配置處理模塊主要負(fù)責(zé)機(jī)載配置文件(描述了機(jī)載采集系統(tǒng),如機(jī)箱、板卡與參數(shù)之間詳細(xì)結(jié)構(gòu)關(guān)系的XML文件)的加載、編輯、解析和保存,并以機(jī)箱為單位對試飛參數(shù)進(jìn)行結(jié)構(gòu)化定義;
2)總線ICD處理模塊主要負(fù)責(zé)對ARINC429、ARINC664、IMB等總線的ICD信息進(jìn)行判讀、校驗(yàn)、加載和解析,并對參數(shù)的取位、數(shù)據(jù)類型、系數(shù)等基本屬性進(jìn)行編輯,生成參數(shù)對象;
3)校線文件處理模塊負(fù)責(zé)對傳感器的校線文件進(jìn)行加載和解析,校準(zhǔn)類型主要定義以下四種形式:
(2)Bit Weighted基于比特位進(jìn)行描述,即比特位與其系數(shù)形成映射關(guān)系,當(dāng)碼值中比特為1時,取其對應(yīng)系數(shù),最終得到參數(shù)工程量數(shù)據(jù),并且按照最低位比特系數(shù)保留參數(shù)工程量精度;
(3)Lookup Table基于點(diǎn)對之間插值,輸入多達(dá)32對輸入和輸出點(diǎn),輸入數(shù)據(jù)點(diǎn)之間的值將被插值。
4)試驗(yàn)信息處理模塊主要完成試驗(yàn)信息文件的生成,通過上述機(jī)載配置模塊、ICD處理模塊、校線模塊處理完成后得到的參數(shù)關(guān)聯(lián)信息,聯(lián)合參數(shù)組配置文件內(nèi)容,生成可用于實(shí)時預(yù)處理軟件可加載的配置文件。
3.2.1 總體設(shè)計(jì)
數(shù)據(jù)實(shí)時在線處理軟件包含解析導(dǎo)出和DB存儲兩個子軟件,底層采用了多線程無鎖隊(duì)列基礎(chǔ)框架,集成了Tinyxml、NanoMsg消息隊(duì)列以及Redis內(nèi)存數(shù)據(jù)庫等成熟組件[15],使用C++11標(biāo)準(zhǔn)編程語言實(shí)現(xiàn)。
解析導(dǎo)出子軟件作為核心預(yù)處理解析軟件,包括配置解析、數(shù)據(jù)接收及處理、數(shù)據(jù)解析、數(shù)據(jù)緩存管理、監(jiān)控轉(zhuǎn)發(fā)、參數(shù)組導(dǎo)出存儲、狀態(tài)管理、實(shí)時數(shù)據(jù)轉(zhuǎn)發(fā)等八個功能模塊(DB存儲子軟件與解析導(dǎo)出子軟件共用配置解析、數(shù)據(jù)接收、數(shù)據(jù)解析模塊、數(shù)據(jù)緩存管理四個模塊,除此之外,集成了IoTDB時序數(shù)據(jù)庫,用于實(shí)現(xiàn)試飛數(shù)據(jù)的數(shù)據(jù)庫存儲)。數(shù)據(jù)工程量轉(zhuǎn)換、參數(shù)組導(dǎo)出、監(jiān)控轉(zhuǎn)發(fā)等核心業(yè)務(wù)流程如圖5所示。
首先,軟件在啟動時分別讀取試驗(yàn)信息文件和監(jiān)控列表文件,使用配置解析模塊對試驗(yàn)信息文件內(nèi)各總線機(jī)箱及參數(shù)進(jìn)行處理,在內(nèi)存中形成“總線-參數(shù)”的結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu),構(gòu)建所有參數(shù)解析所需屬性信息,并對監(jiān)控列表中各參數(shù)進(jìn)行位置映射;
其次,數(shù)據(jù)接收及預(yù)處理模塊根據(jù)配置對象中關(guān)于采集機(jī)箱IP端口的描述,創(chuàng)建UDP(user datagram protocol)網(wǎng)絡(luò)連接,實(shí)時接收數(shù)據(jù)流,調(diào)用包頭處理線程按照協(xié)議格式判讀包頭類型及通道信息,對數(shù)據(jù)進(jìn)行分類轉(zhuǎn)發(fā)至解析模塊(例如NPD(network packet data)包頭類型為0x35A1代表ARINC429總線或模擬量數(shù)據(jù),按照機(jī)箱通道和SFID(sub frame ID)映射關(guān)系轉(zhuǎn)發(fā)至子幀處理線程;若是0x35A8則代表ARINC664和總線數(shù)據(jù),按VLID(virtual link ID)標(biāo)識循環(huán)提取Message對應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)至總線解析線程;如果是0x35B0,代表IMB總線數(shù)據(jù),按照Label分類提取Message數(shù)據(jù)并轉(zhuǎn)發(fā))[16-17];
第三,使用數(shù)據(jù)解析模塊接收經(jīng)過包頭處理、數(shù)據(jù)區(qū)提取后的數(shù)據(jù)進(jìn)行工程量轉(zhuǎn)換,其中,針對ARINC429總線或模擬量數(shù)據(jù),需要進(jìn)一步進(jìn)行單幀提取處理,并按照各總線規(guī)則解析,每個參數(shù)工程量轉(zhuǎn)換完成后立即轉(zhuǎn)發(fā);
第四,使用數(shù)據(jù)緩存管理模塊對接收所有參數(shù)工程量,用鏈表數(shù)據(jù)結(jié)構(gòu)方式存儲至內(nèi)存空間中(每個參數(shù)對應(yīng)一個鏈表結(jié)構(gòu)),每個參數(shù)對應(yīng)的鏈表存儲空間則根據(jù)導(dǎo)出完成狀態(tài)自動刪除歷史工程量數(shù)據(jù);
第五,自動根據(jù)事先在試驗(yàn)信息文件中配置好的一個或多個導(dǎo)出參數(shù)組設(shè)置,從參數(shù)鏈表中按照規(guī)定的導(dǎo)出設(shè)定進(jìn)行數(shù)據(jù)采樣提取,并按照規(guī)定導(dǎo)出文件格式進(jìn)行存盤,在導(dǎo)出時,高低頻參數(shù)組導(dǎo)出分開處理,當(dāng)預(yù)處理完成后,對所有參數(shù)組文件進(jìn)行壓縮處理;
圖5 核心業(yè)務(wù)流程
第六,針對需要高頻轉(zhuǎn)發(fā)、分析的參數(shù),軟件在初始化階段按參數(shù)個數(shù)和頻率申請固定大小內(nèi)存空間,每次參數(shù)工程量解析完成后,改寫對應(yīng)位置數(shù)據(jù),滿足轉(zhuǎn)發(fā)頻率的數(shù)據(jù)長度要求后,按照協(xié)議格式進(jìn)行組包,并使用TCP/UDP實(shí)時轉(zhuǎn)發(fā)。
3.2.2 軟件架構(gòu)設(shè)計(jì)
數(shù)據(jù)實(shí)時在線處理軟件采用超高速線程并行處理技術(shù)在實(shí)時狀態(tài)下完成NPD或者IENA等數(shù)據(jù)流的實(shí)時處理。各個線程與功能模塊的映射關(guān)系如表1所示。
表1 功能模塊與線程對應(yīng)表
以NPD數(shù)據(jù)流為例,并行處理的示意圖和時序圖如圖6所示。
圖6 數(shù)據(jù)實(shí)時在線處理軟件并行處理流程和線程時序示意圖
如圖6所示,針對網(wǎng)絡(luò)數(shù)據(jù)流,軟件包括包頭處理、數(shù)據(jù)解析、數(shù)據(jù)緩存以及數(shù)據(jù)存儲等4大類線程,所有線程通過線程池統(tǒng)一管理和調(diào)度,運(yùn)行原理如下:
1)當(dāng)軟件啟動時,主調(diào)度線程將試驗(yàn)信息文件中的信息進(jìn)行對象化,并傳遞至各個子線程;
2)網(wǎng)絡(luò)接收線程根據(jù)組播地址和端口實(shí)時接收NPD數(shù)據(jù)包;
3)包頭處理線程對所有的數(shù)據(jù)包進(jìn)行順序處理,提取有效數(shù)據(jù),同時建立數(shù)據(jù)類型、采集機(jī)箱和有效數(shù)據(jù)之間的映射關(guān)系;
4)根據(jù)3)所創(chuàng)建的映射關(guān)系新建解析線程和數(shù)據(jù)緩存線程,創(chuàng)建原則是每一個機(jī)箱對應(yīng)一個解析和緩存線程,多個機(jī)箱數(shù)據(jù)進(jìn)行并行處理;
5)解析后的數(shù)據(jù)被緩存至內(nèi)存鏈表,等待訂閱;
6)根據(jù)試驗(yàn)信息文件中的參數(shù)組信息創(chuàng)建參數(shù)導(dǎo)出線程,每一個參數(shù)組為一個單獨(dú)線程;
7)參數(shù)導(dǎo)出線程從鏈表中提取對應(yīng)數(shù)據(jù)并寫入數(shù)據(jù)文件。
為了保證軟件運(yùn)行的穩(wěn)定性,在線程以及資源的使用上做以下優(yōu)化:
首先,對數(shù)據(jù)解析、參數(shù)導(dǎo)出、時間對齊等高負(fù)載線程,與CPU核心數(shù)線程進(jìn)行了綁定,避免系統(tǒng)自動分配搶占計(jì)算資源;
其次,參數(shù)緩存線程按照試驗(yàn)信息文件中的通道數(shù)量進(jìn)行分配,每個參數(shù)緩存線程管理和存儲該機(jī)箱通道內(nèi)的所有參數(shù)工程量,各參數(shù)存儲方式使用鏈表數(shù)據(jù)結(jié)構(gòu),減少數(shù)據(jù)拷貝開銷;
第三,針對參數(shù)組導(dǎo)出存儲線程,區(qū)分高頻和低頻參數(shù),在數(shù)據(jù)解析前,按照參數(shù)組導(dǎo)出配置,根據(jù)高、低頻參數(shù)數(shù)量進(jìn)行線程分配,提升參數(shù)導(dǎo)出效率。
3.2.3 配置解析模塊
配置解析模塊主要對配置信息生成軟件產(chǎn)生輸出的XML格式文件進(jìn)行加載,處理機(jī)箱與參數(shù)屬性關(guān)系,針對不同的總線,定義不同結(jié)構(gòu)體描述層級關(guān)系:
1)針對ARINC429總線,形成機(jī)箱通道-Message(SFID)-參數(shù)-EuFunction的層級結(jié)構(gòu);
2)針對ARINC664總線,形成機(jī)箱通道-Message(VLID)-參數(shù)-數(shù)據(jù)類型的層級結(jié)構(gòu);
3)針對IMB總線,形成機(jī)箱通道-Label-參數(shù)-數(shù)據(jù)類型的層級結(jié)構(gòu)。
3.2.4 數(shù)據(jù)接收及處理模塊
數(shù)據(jù)接收及處理模塊主要接收網(wǎng)絡(luò)中各采集機(jī)箱發(fā)來的NPD或者IENA實(shí)時數(shù)據(jù)流(每個機(jī)箱對應(yīng)一個實(shí)時組播流接收線程),按照總線類型和機(jī)箱信息對數(shù)據(jù)進(jìn)行分組和數(shù)據(jù)包頭處理以及子幀提取,形成總線Message,該處理過程屬于試飛數(shù)據(jù)進(jìn)行工程量轉(zhuǎn)換前的預(yù)處理過程,經(jīng)預(yù)處理后的各個總線Message轉(zhuǎn)發(fā)至數(shù)據(jù)解析模塊。
3.2.5 數(shù)據(jù)解析模塊
數(shù)據(jù)解析模塊是軟件的核心模塊,承擔(dān)各類總線數(shù)據(jù)的工程量轉(zhuǎn)換。
3.2.5.1 NPD-ARINC429[18]
1)首先根據(jù)配置信息遍歷Message下的參數(shù)列表,對屬于該消息的所有參數(shù)源碼進(jìn)行定位;
圖7 ARINC429總線參數(shù)解析流程
2)對定位源碼進(jìn)行移位操作提取參數(shù)源碼,并根據(jù)參數(shù)類型進(jìn)行補(bǔ)碼運(yùn)算;
3)根據(jù)參數(shù)類型調(diào)用EU Function結(jié)構(gòu)對象完成工程量轉(zhuǎn)換。
表2 試驗(yàn)信息文件解析映射表
3.2.5.2 NPD-ARINC664
ARINC664總線參數(shù)的解析過程如圖8所示,當(dāng)VLID+UdpDstID一致時,遍歷參數(shù)列表,用每個參數(shù)內(nèi)的取位信息在Message對應(yīng)的數(shù)據(jù)區(qū)中定位原碼,數(shù)據(jù)類型與分辨率系數(shù)計(jì)算后得到最終的工程量。
圖8 ARINC664總此案參數(shù)解析流程
3.2.5.3 NPD-IMB
IMB總線參數(shù)的解析與ARINC664總線解析過程大致相同,流程如圖9所示。
圖9 IMB總線參數(shù)解析流程
3.2.5.4 IENA
IENA數(shù)據(jù)包的解析與NPD相似,當(dāng)從數(shù)據(jù)流中提取到數(shù)據(jù)包后,結(jié)合試驗(yàn)信息文件中機(jī)箱與參數(shù)映射關(guān)系,從參數(shù)列表中遍歷各參數(shù)的具體位置進(jìn)行原碼定位,并結(jié)合參數(shù)掩碼進(jìn)行取位,通過參數(shù)校準(zhǔn)類型進(jìn)行工程量轉(zhuǎn)換,得到最終物理量。
3.2.6 數(shù)據(jù)緩存管理模塊
數(shù)據(jù)緩存管理模塊以二維數(shù)組指針形式維護(hù)所有參數(shù)工程量在內(nèi)存中存儲,并按照參數(shù)在總參數(shù)列表中的索引位置,進(jìn)行鏈表的插入和刪除,且插入和刪除過程互斥。
插入操作:總線解析線程產(chǎn)生的參數(shù)工程量發(fā)送至數(shù)據(jù)緩存管理線程,線程依據(jù)參數(shù)名對應(yīng)的位置定位所有參數(shù)在鏈表指針,進(jìn)行拼接插入;
刪除操作:當(dāng)完成某一次時間段內(nèi)參數(shù)組導(dǎo)出后,數(shù)據(jù)緩存管理線程依據(jù)從主控線程收到的刪除時間段消息從鏈表中刪除線程內(nèi)所有參數(shù)的歷史工程量數(shù)據(jù),防止歷史數(shù)據(jù)在鏈表空間累積。
3.2.7 監(jiān)控轉(zhuǎn)發(fā)模塊
監(jiān)控轉(zhuǎn)發(fā)模塊通過加載多個監(jiān)控轉(zhuǎn)發(fā)列表文件,完成監(jiān)控參數(shù)與總參數(shù)列表的位置映射。當(dāng)數(shù)據(jù)開始解析后,按照監(jiān)控轉(zhuǎn)發(fā)列表文件設(shè)定的固定頻率從各參數(shù)的鏈表中獲取最新工程量數(shù)據(jù),以一定協(xié)議打包成二進(jìn)制數(shù)據(jù)包,通過UDP組播流形式按照預(yù)設(shè)轉(zhuǎn)發(fā)頻率周期性轉(zhuǎn)發(fā)。
3.2.8 參數(shù)組導(dǎo)出存儲模塊
參數(shù)導(dǎo)出模塊的主要功能是按照預(yù)設(shè)參數(shù)組信息,對不同采樣率的參數(shù)進(jìn)行時間對齊,完成試飛數(shù)據(jù)在數(shù)據(jù)文件中的存儲和壓縮。導(dǎo)出過程如圖10所示。
圖10 參數(shù)組導(dǎo)出過程
在參數(shù)組導(dǎo)出時,假定該組參數(shù)參數(shù)采樣率包括16 Hz和5 Hz,導(dǎo)出采樣率為16 Hz。在共同導(dǎo)出時無法得出合理的工程量數(shù)據(jù),所以必須將每個參數(shù)的采樣率進(jìn)行升序(目標(biāo)采樣率的倍數(shù)關(guān)系,如80 Hz),然后按照升序后的采樣率(80 Hz)與導(dǎo)出時采樣率(16 Hz)倍數(shù)關(guān)系,提取對應(yīng)的參數(shù)數(shù)據(jù)。由于網(wǎng)絡(luò)采集器在實(shí)際采樣過程中,會出現(xiàn)一定采樣間隔偏差,為了彌補(bǔ)這一偏差,需要在導(dǎo)出某一參數(shù)時,先按照導(dǎo)出后采樣率進(jìn)行時間計(jì)算,再根據(jù)所得到的時間在參數(shù)內(nèi)存區(qū)域查找最接近該時刻的時間戳。原理如圖11所示。
圖11 時間對齊原理
3.2.9 基于IoTDB的數(shù)據(jù)存儲模塊
IoTDB數(shù)據(jù)存儲模塊主要是將解析后的工程量數(shù)據(jù)實(shí)時寫入IoTDB時序數(shù)據(jù)庫,利用其高壓縮比的特性壓縮數(shù)據(jù)體量,方便后續(xù)的查詢及分析。在IoTDB中,每一個試飛參數(shù)就是一個時間序列,命名為“root.飛機(jī)型號.架機(jī)號.試飛任務(wù)單號.試飛地點(diǎn).試飛日期.試驗(yàn)類型.參數(shù)名稱”,其中“root.飛機(jī)型號.架機(jī)號”為存儲組。
監(jiān)控調(diào)試軟件運(yùn)行在機(jī)載監(jiān)控終端上,主要對機(jī)載處理服務(wù)器設(shè)備和數(shù)據(jù)實(shí)時處理軟件的運(yùn)行狀態(tài)以及數(shù)據(jù)存儲情況等進(jìn)行監(jiān)控、統(tǒng)計(jì)和可視化顯示,架構(gòu)如圖12所示。
圖12 信息交互示意圖
實(shí)際工作時,監(jiān)控調(diào)試軟件從Redis內(nèi)存數(shù)據(jù)庫獲取數(shù)據(jù)導(dǎo)出子軟件、DB存儲子軟件的狀態(tài)信息(其中DB存儲子軟件只發(fā)送軟件運(yùn)行狀態(tài)和日志信息,原始數(shù)據(jù)流、參數(shù)組、監(jiān)控轉(zhuǎn)發(fā)等信息均由數(shù)據(jù)導(dǎo)出子軟件產(chǎn)生)。
監(jiān)控調(diào)試軟件的界面采用Qt Widgate框架實(shí)現(xiàn)[19],用于人機(jī)交互,可展示設(shè)備的負(fù)載、軟件運(yùn)行狀態(tài)、數(shù)據(jù)參數(shù)可視化、工作日志以及參數(shù)組導(dǎo)出、監(jiān)控轉(zhuǎn)發(fā)等狀態(tài)信息,軟件界面與工作流程如圖13所示。
機(jī)載高頻參數(shù)監(jiān)控軟件包括監(jiān)控畫面編輯和監(jiān)控畫面顯示兩個子軟件,主要功能是在機(jī)載環(huán)境下,實(shí)現(xiàn)振動等采樣頻率超過8 192 Hz高頻參數(shù)的實(shí)時監(jiān)控和分析。
兩個子軟件分別對應(yīng)這監(jiān)控畫面的設(shè)計(jì)模式和運(yùn)行模式。在設(shè)計(jì)模式下,用戶使用監(jiān)控畫面編輯軟件,通過新建或者打開已有的XML文件,拖拽顯示控件進(jìn)行監(jiān)控畫面的布局設(shè)計(jì),在完成基礎(chǔ)界面設(shè)計(jì)后,通過“綁定”的方式為顯示控件加載相應(yīng)的參數(shù)和分析算法,并保存為XML文件;在運(yùn)行模式下,由監(jiān)控畫面顯示軟件加載并解析XML文件,根據(jù)指定的IP地址和端口向IoTDB時序數(shù)據(jù)庫完成數(shù)據(jù)的訂閱和實(shí)時顯示。
地面數(shù)據(jù)卸載軟件工作于地面環(huán)境,主要功能是在飛行試驗(yàn)結(jié)束后,從機(jī)載數(shù)據(jù)處理服務(wù)器中實(shí)現(xiàn)數(shù)據(jù)輸出文件的壓縮和卸載,并上傳至指定的FTP服務(wù)器,完成數(shù)據(jù)的分發(fā)和交付,包括數(shù)據(jù)導(dǎo)出和數(shù)據(jù)移交兩大功能模塊。
圖14 軟件相關(guān)信息
地面數(shù)據(jù)卸載軟件啟動后,數(shù)據(jù)導(dǎo)出模塊從數(shù)據(jù)實(shí)時在線處理軟件中讀取數(shù)據(jù)導(dǎo)出格式信息(如txt、csv等),并按照預(yù)設(shè)文件名稱自動壓縮后存儲在硬盤中;數(shù)據(jù)移交模塊的功能是將壓縮后的數(shù)據(jù)包自動推送至指定的服務(wù)器。
試飛數(shù)據(jù)預(yù)處理系統(tǒng)按照圖15的架構(gòu)在地面和機(jī)載環(huán)境進(jìn)行部署,軟件運(yùn)行環(huán)境如表3所示。
圖15 試飛數(shù)據(jù)預(yù)處理系統(tǒng)運(yùn)行架構(gòu)
將機(jī)載實(shí)時處理服務(wù)器安裝于國產(chǎn)某大型客機(jī),按照以下步驟進(jìn)行試驗(yàn):
1)啟動機(jī)載測試系統(tǒng)的ARINC429、ARINC664、IMB等總線以及模擬量采集器;
表3 測試環(huán)境參數(shù)
2)啟動機(jī)載實(shí)時處理服務(wù)器上的數(shù)據(jù)實(shí)時在線處理軟件和機(jī)載記錄器;
3)啟動監(jiān)控終端上的監(jiān)控調(diào)試軟件,對數(shù)據(jù)流量、數(shù)據(jù)實(shí)時在線處理軟件的運(yùn)行狀態(tài)以及數(shù)據(jù)存儲狀態(tài)進(jìn)行可視化監(jiān)控;
4)啟動監(jiān)控終端上機(jī)載高頻參數(shù)監(jiān)控軟件,加載監(jiān)控畫面XML文件,觀察高頻參數(shù)的時、頻域曲線;
5)NPD數(shù)據(jù)包包頭中解析出高頻參數(shù)裝包絕對時間T1,記錄高頻數(shù)據(jù)經(jīng)頻譜分析后的絕對時間T2,計(jì)算延時T2-T1;
6)系統(tǒng)持續(xù)運(yùn)行5小時后,將存儲模塊拆卸至地面,使用地面數(shù)據(jù)卸載軟件卸載數(shù)據(jù)文件;
7)利用航后預(yù)處理系統(tǒng)解析機(jī)載記錄器中的原始數(shù)據(jù),將輸出的數(shù)據(jù)文件與步驟(6)的數(shù)據(jù)文件進(jìn)行對比。
試驗(yàn)結(jié)果如表4所示。
表4 系統(tǒng)測試結(jié)果
經(jīng)試驗(yàn)測試,機(jī)載在線完全預(yù)處理系統(tǒng)在實(shí)時狀態(tài)下完成了220 Mbps流量下NPD數(shù)據(jù)包的解析,實(shí)現(xiàn)了78 837個試飛參數(shù)350個數(shù)據(jù)文件的實(shí)時存儲。
本文利用超高速線程并行處理技術(shù)設(shè)計(jì)研發(fā)了一套試飛數(shù)據(jù)預(yù)處理系統(tǒng),在機(jī)載環(huán)境下實(shí)現(xiàn)了某國產(chǎn)大型客機(jī)全量試飛數(shù)據(jù)的實(shí)時預(yù)處理,在線完成了200 Mbps帶寬下近80 000個參數(shù)的工程量轉(zhuǎn)換、在線存儲和實(shí)時監(jiān)控,將原先4~5小時的預(yù)處理周期壓縮到了20分鐘,大大提高了民機(jī)試飛效率。