馬 馳,喬 添,王 瀟,襲 奇,王 婧,張怡豐
(1.上海飛機(jī)客戶服務(wù)有限公司,上海 200241;2.華南師范大學(xué) 數(shù)據(jù)科學(xué)與工程學(xué)院,廣東 汕尾 516622)
目前的民機(jī)航線數(shù)據(jù)分析,航中階段數(shù)據(jù)主要為ACARS報(bào)文[1],雖然具有實(shí)時(shí)性,但帶寬低、費(fèi)用高、可供分析數(shù)據(jù)有限;航后階段數(shù)據(jù)主要為QAR(quick access recorder)數(shù)據(jù),QAR數(shù)據(jù)采集參數(shù)豐富、采樣頻率高,能較好滿足數(shù)據(jù)分析的需求。航后QAR數(shù)據(jù)一般待飛機(jī)落地、發(fā)動(dòng)機(jī)關(guān)車(chē)后,通過(guò)地面蜂窩基站或Wifi熱點(diǎn)將QAR數(shù)據(jù)下傳至航空公司以及飛機(jī)主制造商的服務(wù)器上[2]。航后數(shù)據(jù)分析延遲較大,難以用于部署實(shí)時(shí)性要求較高的分析模型。受限于通信鏈路帶寬限制,基于飛行過(guò)程中實(shí)時(shí)數(shù)據(jù)的分析尚未普及。
衛(wèi)星通信的發(fā)展和ATG (air to ground)通信技術(shù)的日臻完善將突破民機(jī)飛行中數(shù)據(jù)傳輸?shù)钠款i[3],使QAR數(shù)據(jù)實(shí)時(shí)傳輸成為可能。目前海事衛(wèi)星提供基于I4衛(wèi)星網(wǎng)絡(luò)的SBB航空數(shù)據(jù)服務(wù),每路通信速率最高可達(dá)432 kbps,且每比特通信成本日益降低[4];ATG技術(shù)通過(guò)地面專用基站和空中機(jī)載設(shè)備通信,將4G、5G信號(hào)覆蓋至空中,實(shí)現(xiàn)飛機(jī)與地面之間的實(shí)時(shí)無(wú)線寬帶互聯(lián)[5]。
目前,民機(jī)航線數(shù)據(jù)分析主要使用航后QAR數(shù)據(jù),即待飛機(jī)落地、發(fā)動(dòng)機(jī)關(guān)車(chē)后,通過(guò)地面蜂窩基站或Wifi熱點(diǎn)將QAR數(shù)據(jù)下傳至航空公司和飛機(jī)主制造商的服務(wù)器上,對(duì)實(shí)時(shí)QAR數(shù)據(jù)的相關(guān)研究較為有限。QAR數(shù)據(jù)的實(shí)時(shí)傳輸對(duì)航線譯碼技術(shù)帶來(lái)新挑戰(zhàn)與新機(jī)遇。目前流行的商用QAR譯碼軟件均針對(duì)航后數(shù)據(jù),如AGS、Airfase等[6],采用逐個(gè)航班譯碼的方式。每個(gè)航班數(shù)據(jù)為一個(gè)ARINC 717格式的dat文件,該文件包含一次飛行中的全部參數(shù)記錄。與航后數(shù)據(jù)不同,實(shí)時(shí)QAR數(shù)據(jù)采用流式傳輸[7],飛機(jī)上每秒采集的傳感器記錄數(shù)據(jù)拆被分成若干個(gè)IP數(shù)據(jù)包[8],數(shù)據(jù)包生成后立即經(jīng)衛(wèi)星或ATG等寬帶網(wǎng)絡(luò)發(fā)送至地面。地面接收到XML(extensible markup language)格式的流式數(shù)據(jù)包,譯碼軟件需實(shí)現(xiàn)實(shí)時(shí)接收、實(shí)時(shí)譯碼。按照QAR數(shù)據(jù)記錄規(guī)則,將XML數(shù)據(jù)轉(zhuǎn)換為各傳感器參數(shù)的工程值,并轉(zhuǎn)存至數(shù)據(jù)庫(kù)供后續(xù)分析使用。實(shí)時(shí)QAR譯碼是民航數(shù)據(jù)分析從航后、事后分析走向全航段、全過(guò)程分析的必不可少的環(huán)節(jié),相關(guān)技術(shù)研究和程序開(kāi)發(fā)具有重要意義和價(jià)值。
文獻(xiàn)[9-10]提出了基于ATG網(wǎng)絡(luò)的實(shí)時(shí)數(shù)據(jù)的應(yīng)用方案,包括機(jī)艙音視頻實(shí)時(shí)監(jiān)控、客艙無(wú)線網(wǎng)絡(luò)、QAR數(shù)據(jù)實(shí)時(shí)譯碼與監(jiān)控等模塊,但其中QAR譯碼并沒(méi)有進(jìn)針對(duì)實(shí)時(shí)數(shù)據(jù)的特性進(jìn)行專門(mén)優(yōu)化。本文提出基于緩存數(shù)據(jù)結(jié)構(gòu)的實(shí)時(shí)QAR譯碼方法,將傳統(tǒng)的譯碼表轉(zhuǎn)換為專門(mén)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行緩存,避免譯碼時(shí)對(duì)配置表的全表搜索,加快譯碼速度。本文采用Go語(yǔ)言[11]、Redis緩存[12]、Influxdb2數(shù)據(jù)庫(kù)[13]和監(jiān)控系統(tǒng)[14]搭建了實(shí)時(shí)QAR數(shù)據(jù)譯碼平臺(tái),對(duì)ATG網(wǎng)絡(luò)的實(shí)時(shí)QAR測(cè)試數(shù)據(jù)展開(kāi)模擬測(cè)式。測(cè)試結(jié)果表明,所提方法能夠高效處理實(shí)時(shí)QAR數(shù)據(jù)。
QAR數(shù)據(jù),即快速存取記錄器數(shù)據(jù),是目前民航業(yè)用于航后飛行品質(zhì)監(jiān)控、燃油效率分析、維修分析等工作的主要數(shù)據(jù)依據(jù)。QAR數(shù)據(jù)的記錄規(guī)范由美國(guó)航空無(wú)線電協(xié)會(huì) ARINC(aeronautical radio inc)制定[15]。機(jī)載傳感器數(shù)據(jù)通過(guò)飛機(jī)總線傳輸,如ARINC 429總線[16]或AFDX總線[17]。QAR記錄設(shè)備從總線上獲取數(shù)據(jù),再根據(jù)記錄配置表將采集到的數(shù)據(jù)以二進(jìn)制數(shù)據(jù)流的形式存儲(chǔ)指到記錄文件中。
以目前常用的ARINC 717協(xié)議為例,記錄過(guò)程以4秒為一個(gè)周期,即 4秒為一個(gè)幀,每個(gè)幀又分為4個(gè)子幀,每個(gè)子幀對(duì)應(yīng)1秒鐘內(nèi)的數(shù)據(jù)記錄。子幀內(nèi)可包含256/512/1024個(gè)字槽(Word),每個(gè)字槽占12比特(bits)。字槽可記錄一個(gè)或多個(gè)機(jī)載傳感器數(shù)據(jù),數(shù)據(jù)幀內(nèi)各字槽記錄的數(shù)據(jù)情況通過(guò)譯碼表進(jìn)行配置。
受通信鏈路限制,目前商用航班的QAR數(shù)據(jù)以航后傳輸為主,即待飛機(jī)落地后,通過(guò)地面蜂窩或Wifi網(wǎng)絡(luò)傳輸數(shù)據(jù)。衛(wèi)星通信和ATG通信的發(fā)展,為QAR數(shù)據(jù)在飛行中的實(shí)時(shí)傳輸提供了支撐。以4G-ATG網(wǎng)絡(luò)實(shí)際測(cè)試為例,各基站的上行(空對(duì)地)數(shù)據(jù)峰值傳輸速率可達(dá)11.74 Mbps,平均速率為6.37 Mbps。各ATG基站的下行(地對(duì)空)數(shù)據(jù)峰值傳輸速率為16.46 Mbps;平均速率為8.65 Mbps。對(duì)于每秒1 024 Words的實(shí)時(shí)QAR數(shù)據(jù),ATG網(wǎng)絡(luò)完全滿足QAR數(shù)據(jù)實(shí)時(shí)傳輸需求。
ATG技術(shù)是一種新型空地?cái)?shù)據(jù)傳輸解決方案,通過(guò)在航路沿線架設(shè)地對(duì)空通信基站,建立上下行數(shù)據(jù)傳輸鏈路。具有高帶寬、低成本、低時(shí)延等特點(diǎn),能夠滿足飛機(jī)航行過(guò)程中空地海量數(shù)據(jù)通信的需求。目前基于ATG技術(shù)的空地?cái)?shù)據(jù)鏈路傳輸在民航領(lǐng)域應(yīng)用已比較成熟。美國(guó)GoGo公司所部署的ATG網(wǎng)絡(luò)已對(duì)美國(guó)全境和加拿大部分區(qū)域?qū)崿F(xiàn)了立體覆蓋,占據(jù)了美國(guó)各大主流航空公司飛機(jī)上網(wǎng)超過(guò)50%的市場(chǎng)份額。歐洲Inmarsat公司聯(lián)合德國(guó)電信、泰勒斯、空客等構(gòu)建EAN(歐洲4G版的ATG)網(wǎng)絡(luò),已經(jīng)完成300個(gè)基站的部署,并投入商用。隨著國(guó)內(nèi)5G 網(wǎng)絡(luò)的成熟,5G ATG將進(jìn)一步加大差異化競(jìng)爭(zhēng)優(yōu)勢(shì),將會(huì)成為民航產(chǎn)業(yè)智慧飛行、智慧運(yùn)營(yíng)的重要基礎(chǔ)保障。2021年4月,民航局正式發(fā)布《中國(guó)民航新一代航空寬帶通信技術(shù)路線圖》,首次明確提出以5G為代表的新一代航空寬帶通信技術(shù)應(yīng)用于中國(guó)民航的系統(tǒng)性實(shí)施路徑。
圖1 基于ATG網(wǎng)絡(luò)的實(shí)時(shí)QAR傳輸
對(duì)實(shí)時(shí)QAR數(shù)據(jù)進(jìn)行解析,是航線數(shù)據(jù)譯碼工作的新挑戰(zhàn)。數(shù)據(jù)譯碼是指將原始二進(jìn)制的QAR記錄還原為飛行真實(shí)數(shù)據(jù)的過(guò)程,還原后的數(shù)據(jù)也被稱為工程值數(shù)據(jù),工程值數(shù)據(jù)可分為兩大類,一類是模擬量參數(shù),例如發(fā)動(dòng)機(jī)轉(zhuǎn)速、空調(diào)出口溫度、液壓系統(tǒng)壓力等關(guān)鍵部件狀態(tài),又如飛行高度、空速、滾轉(zhuǎn)角、偏航角、俯仰角度等速度姿態(tài)信息,模擬量參數(shù)在譯碼配置時(shí)需要記錄精度信息;另一類是開(kāi)關(guān)量參數(shù),例如發(fā)動(dòng)機(jī)啟動(dòng)活門(mén)開(kāi)關(guān)狀態(tài)、液壓系統(tǒng)泵的開(kāi)關(guān)狀態(tài)、發(fā)動(dòng)機(jī)是否出現(xiàn)火警等,開(kāi)關(guān)量參數(shù)一般只反映兩種狀態(tài),在二進(jìn)制記錄中用1個(gè)bit表示。模擬量、開(kāi)關(guān)量等參數(shù)分別記錄在不同的Word和子幀中,每個(gè)子幀中的不同Word記錄哪些參數(shù),可以通過(guò)QAR記錄設(shè)備進(jìn)行客戶化配置,地面系統(tǒng)再根據(jù)不同架次的配置信息將二進(jìn)制記錄還原為工程值。
傳統(tǒng)的航后譯碼是在航班落地后,接收到本次飛行完整的QAR記錄,再將整段記錄轉(zhuǎn)換為工程值。譯碼時(shí)按照譯碼配置表,逐個(gè)參數(shù)地解析二進(jìn)制記錄。由于實(shí)時(shí)傳輸情況下,每次傳輸?shù)臄?shù)據(jù)只包含一秒鐘內(nèi)容部分Word信息,且這些Word并不是按照序號(hào)依次排列的,因此傳統(tǒng)的航后譯碼軟件并不能直接解析實(shí)時(shí)QAR數(shù)據(jù),需要開(kāi)發(fā)專門(mén)的譯碼工具。
為提升實(shí)時(shí)QAR數(shù)據(jù)譯碼效率,本文提出基于緩存結(jié)構(gòu)的譯碼方法。傳統(tǒng)航后QAR譯碼方法將譯碼配置以表格形式存儲(chǔ),例如采用MySQL等關(guān)系型數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)進(jìn)行存儲(chǔ)。而對(duì)于實(shí)時(shí)數(shù)據(jù),需要進(jìn)行逐個(gè)Word的譯碼,在接收到Word信息后,譯碼程序?qū)ε渲帽磉M(jìn)行全表搜索,匹配到對(duì)應(yīng)的譯碼信息。以每秒鐘收到275個(gè)Word的配置情況為例,傳統(tǒng)譯碼方法需要進(jìn)行275次關(guān)系型數(shù)據(jù)庫(kù)的全表搜索,效率相對(duì)較低。本文提出基于Redis(remote dictionary server )緩存的實(shí)時(shí)QAR數(shù)據(jù)譯碼方法。所提方法將傳統(tǒng)譯碼表轉(zhuǎn)換為索引-參數(shù)記錄結(jié)構(gòu),該結(jié)構(gòu)由索引區(qū)和記錄區(qū)構(gòu)成,在收到實(shí)時(shí)QAR數(shù)據(jù)后,根據(jù)Word序號(hào)和子幀序號(hào),讀取對(duì)應(yīng)索引位置上的偏移量,再根據(jù)偏移量跳轉(zhuǎn)至記錄區(qū),直接讀取該Word的譯碼信息,避免了配置表全表搜索,降低了譯碼復(fù)雜度。本文所提譯碼配置結(jié)構(gòu)由Redis緩存存儲(chǔ),避免了硬盤(pán)讀取延遲,可實(shí)現(xiàn)配置結(jié)構(gòu)的快速讀入。
實(shí)時(shí)QAR數(shù)據(jù)由機(jī)載WQAR設(shè)備生成,并由機(jī)載傳輸設(shè)備封裝為IP數(shù)據(jù)包,再通過(guò)ATG網(wǎng)絡(luò)或衛(wèi)星網(wǎng)絡(luò)傳輸至地面系統(tǒng)。實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)形式為XML格式[18],如圖2所示。每秒鐘的ARINC 717子幀記錄被劃分為多條XML記錄, 每一條XML記錄包含多個(gè)Words信息。以本文中使用的實(shí)驗(yàn)數(shù)據(jù)為例,每秒的子幀記錄分為16條XML文檔,每條XML文檔中包含16至17個(gè)Word記錄,每個(gè)子幀內(nèi)共275個(gè)Word記錄。
圖2 . XML格式的實(shí)時(shí)QAR數(shù)據(jù)示例
XML記錄通過(guò)樹(shù)形結(jié)構(gòu)存儲(chǔ)數(shù)據(jù), WQAR設(shè)備生成的XML記錄格式如圖2所示。每條XML記錄對(duì)應(yīng)的樹(shù)形結(jié)構(gòu)的根節(jié)點(diǎn)名為publishAvionicParameters,子節(jié)點(diǎn)refreshperiod記錄數(shù)據(jù)更新頻率,為一秒鐘一次;context節(jié)點(diǎn)記錄具體的信息,其TOTAL_MSG_PARTS子節(jié)點(diǎn)記錄本報(bào)文中宗的XML記錄個(gè)數(shù),SEQUENCE_ID子節(jié)點(diǎn)記錄本條XML對(duì)應(yīng)的序號(hào);機(jī)載傳感器參數(shù)信息包含在
表1 實(shí)時(shí)QAR數(shù)據(jù)
為提升實(shí)時(shí)QAR數(shù)據(jù)的譯碼效率,本文提出了基于緩存數(shù)據(jù)結(jié)構(gòu)的譯碼方法。所提譯碼配置結(jié)構(gòu)由索引區(qū)和參數(shù)記錄區(qū)構(gòu)成,如圖3所示。
圖3 基于緩存的譯碼配置結(jié)構(gòu)
不同Word的譯碼配置信息存儲(chǔ)在參數(shù)記錄區(qū)。參數(shù)記錄區(qū)由參數(shù)記錄單元構(gòu)成。每個(gè)單元記錄單個(gè)參數(shù)的譯碼配置信息,包括參數(shù)名稱長(zhǎng)度(占用字節(jié)數(shù))、參數(shù)名稱、起始位(lsb)、終止位(msb)、正負(fù)情況(sign)、精度(slope)。在一個(gè)子幀內(nèi),單個(gè)Word可存儲(chǔ)多個(gè)機(jī)載傳感器參數(shù),因此其譯碼配置信息中可包含多個(gè)參數(shù)記錄單元,如圖3所示。在參數(shù)記錄區(qū),參數(shù)記錄單元連續(xù)存儲(chǔ),同一子幀同一Word對(duì)應(yīng)的參數(shù)記錄單元存儲(chǔ)在一起,對(duì)于單個(gè)參數(shù)記錄單元,所存儲(chǔ)內(nèi)容依次如下:
1)參數(shù)名稱長(zhǎng)度, 占用1字節(jié);
2)參數(shù)名稱,按其長(zhǎng)度以字符型存儲(chǔ);
3)lsb,起始位,占用1字節(jié)
4)msb、終止位,占用1字節(jié)
5)sign,正負(fù)情況,占用1字節(jié)
6)slope,精度,解碼時(shí)將二進(jìn)制記錄轉(zhuǎn)為十進(jìn)制后再乘以精度,為傳感器記錄值,采用浮點(diǎn)型存儲(chǔ),占用4字節(jié)。
一個(gè)Word-子幀中可包含多個(gè)參數(shù)記錄單元。如表2中, Word 283, 子幀1共記錄了3個(gè)參數(shù),分別為WINDSHST、WSALRTLV和ALERTNO,表示風(fēng)切變狀態(tài)、風(fēng)切變告警級(jí)別和風(fēng)切變告警代碼[20]。
表2 Word-子幀對(duì)應(yīng)的譯碼配置信息示例
參數(shù)記錄單元連續(xù)地存儲(chǔ)在參數(shù)記錄區(qū)中。已知記錄數(shù)據(jù)所在子幀和Word序號(hào),可通過(guò)索引區(qū)查找其對(duì)應(yīng)的譯碼配置信息在記錄區(qū)中的位置。索引區(qū)總大小為NUM_WORDS × NUM_SUBFRAMES×4字節(jié),其中NUM_WORDS為Word總數(shù),NUM_SUBFRAMES為子幀總數(shù),對(duì)于當(dāng)前主流民航機(jī)型,NUM_WORDS=1024,NUM_SUBFRAMES =4。索引區(qū)為每個(gè)給定的Word和子幀分配4字節(jié)存儲(chǔ)空間,用于記錄所對(duì)應(yīng)的譯碼信息在記錄區(qū)的偏移量。根據(jù)Word和子幀序號(hào)由小到大的次序,偏移量在索引區(qū)依次排列。譯碼時(shí),根據(jù)Word序號(hào)和子幀序號(hào),從索引區(qū)讀取偏移量,再跳轉(zhuǎn)到記錄區(qū)對(duì)應(yīng)位置。由于給定子幀和Word可對(duì)應(yīng)多個(gè)參數(shù)記錄單元,該位置前4個(gè)字節(jié)記錄該子幀和Word記錄的參數(shù)個(gè)數(shù)。
以上譯碼數(shù)據(jù)結(jié)構(gòu)通過(guò)Redis存儲(chǔ)。Redis,即遠(yuǎn)程字典服務(wù),是開(kāi)源的緩存鍵-值型數(shù)據(jù)庫(kù),采用ANSI C語(yǔ)言編寫(xiě),具有存取效率高、支持網(wǎng)絡(luò)等優(yōu)勢(shì)、其數(shù)據(jù)存儲(chǔ)可基于內(nèi)存,亦可提供持久化保存,并提供多種語(yǔ)言的API接口[12]。
由于各架次飛機(jī)采用的譯碼配置不同,實(shí)時(shí)QAR以UDP數(shù)據(jù)流[19]的形式發(fā)送至地面。當(dāng)?shù)孛娣?wù)器接收到實(shí)時(shí)QAR數(shù)據(jù)報(bào)文后,首先獲取架次信息,再根據(jù)該架飛機(jī)的譯碼配置從Redis中獲取譯碼緩存數(shù)據(jù)結(jié)構(gòu),然后解析數(shù)據(jù)包中各Word的記錄值并在緩存結(jié)構(gòu)中匹配到譯碼信息,將二進(jìn)制記錄值轉(zhuǎn)換為參數(shù)工程值。
整體譯碼流程如圖4所示,具體譯碼過(guò)程如下:
1)通過(guò)數(shù)獲取模塊接收實(shí)時(shí)QAR數(shù)據(jù)報(bào)文。機(jī)載WQAR設(shè)備將從飛機(jī)ARINC總線上采集到的機(jī)載傳感器數(shù)據(jù)轉(zhuǎn)換為XML記錄并以IP數(shù)據(jù)文的形式發(fā)送給機(jī)載傳輸設(shè)備,如ATG設(shè)備,傳輸設(shè)備對(duì)XML數(shù)據(jù)進(jìn)行整理,將一秒鐘內(nèi)的XML記錄整合成一個(gè)UDP(user datagram protocol)格式的數(shù)據(jù)包;傳輸設(shè)備對(duì)數(shù)據(jù)包進(jìn)行RSA加密、CRC校驗(yàn)之后通過(guò)ATG網(wǎng)絡(luò)或衛(wèi)星網(wǎng)絡(luò)發(fā)給網(wǎng)絡(luò)服務(wù)商的地面數(shù)據(jù)中心;網(wǎng)路服務(wù)商對(duì)機(jī)載傳輸數(shù)據(jù)進(jìn)行解密和校驗(yàn),并將解密后的數(shù)據(jù)發(fā)送給數(shù)據(jù)使用方,如航空公司或飛機(jī)主制造商,傳輸過(guò)程也采用UDP模式。實(shí)時(shí)數(shù)據(jù)的譯碼工作由數(shù)據(jù)使用方完成,圖4中的UDP Server模塊與網(wǎng)絡(luò)服務(wù)商建立傳輸連接,接收數(shù)據(jù)報(bào)文,并提取報(bào)文類型、MSN號(hào)、發(fā)送時(shí)間等信息,再轉(zhuǎn)發(fā)至數(shù)據(jù)解析模塊。
圖4 譯碼流程示意
2)實(shí)時(shí)數(shù)據(jù)報(bào)文內(nèi)容采用UTF-8編碼,具體格式為:
類型&機(jī)號(hào)&時(shí)間&XML 數(shù)據(jù)體
其中“&”為數(shù)據(jù)分隔符;“類型”為R或H,R 表示實(shí)時(shí)數(shù)據(jù), H 表示歷史數(shù)據(jù);“機(jī)號(hào)”為飛機(jī)尾號(hào);“時(shí)間”為數(shù)據(jù)發(fā)送時(shí)間,時(shí)間格式“yyyyMMddHHmmssSSS”(年月日時(shí)分秒毫秒);“XML 數(shù)據(jù)體”:機(jī)載QAR數(shù)據(jù)內(nèi)容,采用 XML 方式組織數(shù)據(jù),具體介紹見(jiàn)上文中2.1小節(jié)。數(shù)據(jù)包格式示例如下:
R&B6556&20170613142130123&
3)根據(jù)報(bào)文中的飛機(jī)尾號(hào)信息,如B6556,獲取對(duì)應(yīng)架次的譯碼版本。
4)根據(jù)譯碼版本,從Redis緩存中獲取相應(yīng)的譯碼數(shù)據(jù)結(jié)構(gòu);
5)根據(jù)XML記錄起始標(biāo)記,對(duì)數(shù)據(jù)報(bào)文中的XML數(shù)據(jù)體進(jìn)行分割,依次獲取XML記錄;
6)對(duì)于各條XML記錄,根據(jù)
7)序號(hào)為1的Word為同步字。QAR記錄中采用巴克碼[8]標(biāo)識(shí)子幀序號(hào)。巴克碼是一種具有特殊規(guī)律的二進(jìn)制碼組,其自相關(guān)函數(shù)的主瓣峰值是 旁瓣峰值 的13 倍,因此常用于幀同步。根據(jù)Word1的記錄值可得到當(dāng)前數(shù)據(jù)包對(duì)應(yīng)的子幀序號(hào),如表3所示;
表3 Word1記錄值所代表的子幀序號(hào)
8)根據(jù)Word-子幀序號(hào),從譯碼緩存結(jié)構(gòu)中讀取參數(shù)個(gè)數(shù)及各參數(shù)的譯碼信息;
9)根據(jù)各參數(shù)的起始位和終止位,獲取記錄中相應(yīng)的bit信息,再根據(jù)正負(fù)情況轉(zhuǎn)換為十進(jìn)制,乘以精度后得到各參數(shù)記錄的工程值;
10)將譯碼結(jié)果結(jié)果寫(xiě)入實(shí)時(shí)數(shù)據(jù)庫(kù)。
對(duì)于部分精度較高的參數(shù),當(dāng)其所需的記錄bit數(shù)超過(guò)12位時(shí),采用多個(gè)Word或同一Word的多個(gè)子幀進(jìn)行記錄。參數(shù)記錄跨多個(gè)子幀時(shí),由于各子幀信息分布在不同的數(shù)據(jù)報(bào)文上,難以在單個(gè)報(bào)文的譯碼中中直接計(jì)算,本文在采用時(shí)序數(shù)據(jù)庫(kù)中的聚合功能進(jìn)行處理。
以某機(jī)型經(jīng)度和緯度參數(shù)配置為例,經(jīng)度參數(shù)由Word 228第一子幀和第二子幀記錄,緯度參數(shù)由Word 228 第三子幀和第四子幀記錄。 譯碼時(shí),分別解析各子幀上的工程值,記為 LATH、LATL、LONGH和LONGL,并寫(xiě)入時(shí)序數(shù)據(jù)庫(kù)。在使用經(jīng)度和緯度信息時(shí),對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行聚合,聚合代碼如圖5所示。首先提取數(shù)據(jù)庫(kù)中的LONGH、LONGL、LATH、LATL字段,通過(guò)時(shí)序數(shù)據(jù)庫(kù)提供的arregateWindow語(yǔ)句[13],進(jìn)行窗口聚合操作,窗口大小為8秒鐘,聚合后計(jì)算各字段平均值,再分別將LONGH與LONGL,LATH與LATL的平均值相加,得到經(jīng)度和緯度計(jì)算結(jié)果。
圖5 跨子幀參數(shù)的聚合計(jì)算示例
本文采用InfluxDB時(shí)序數(shù)據(jù)庫(kù)存儲(chǔ)譯碼后的工程值結(jié)果。InfluxDB是由InfluxData開(kāi)發(fā)的開(kāi)源時(shí)序型數(shù)據(jù)庫(kù),專注于海量時(shí)序數(shù)據(jù)的高性能讀、高性能寫(xiě)、高效存儲(chǔ)與實(shí)時(shí)分析,數(shù)據(jù)庫(kù)中每條記錄均帶有時(shí)間戳。InfluxDB使用場(chǎng)景廣泛,在目前主流時(shí)序數(shù)據(jù)庫(kù)中裝機(jī)量排名前列,其典型應(yīng)用包括智慧物聯(lián)網(wǎng)監(jiān)控分析,如石油化工、采礦、智能制造等領(lǐng)域內(nèi)的設(shè)備數(shù)據(jù)采集、分析、告警,以及金融、可穿戴醫(yī)療設(shè)備、車(chē)聯(lián)網(wǎng)、智慧城市等多種行業(yè)。同時(shí),InfluxDB還廣泛用于日志數(shù)據(jù)存儲(chǔ)與分析、大數(shù)據(jù)平臺(tái)軟件及系統(tǒng)監(jiān)控等業(yè)務(wù)領(lǐng)域。實(shí)時(shí)QAR每條數(shù)據(jù)報(bào)文均帶有時(shí)間戳,符合時(shí)序數(shù)據(jù)庫(kù)的存儲(chǔ)特性,本文將InfluxDB應(yīng)用于航空實(shí)時(shí)數(shù)據(jù)存儲(chǔ),以提升數(shù)據(jù)的存儲(chǔ)和讀取效率。InfluxDB中的數(shù)據(jù)操作可采用InfluxQL語(yǔ)句。InfluxQL是用于在InfluxDB中進(jìn)行數(shù)據(jù)增加、查詢、探索的類似于SQL的查詢語(yǔ)法。在InfluxDB中,每條時(shí)序數(shù)據(jù)被稱為一個(gè)數(shù)據(jù)點(diǎn)(point),一系列存儲(chǔ)點(diǎn)構(gòu)成的數(shù)據(jù)集形成一個(gè)存儲(chǔ)桶。圖5中的示例代碼采用FluxQL語(yǔ)句編寫(xiě),語(yǔ)句from(bucket:”atg”)表示對(duì)名為atg的存儲(chǔ)桶(bucket)進(jìn)行數(shù)據(jù)操作。針對(duì)每個(gè)存儲(chǔ)桶可制定一個(gè)保留策略,即每個(gè)數(shù)據(jù)點(diǎn)保留的持續(xù)時(shí)間,從而減少失去時(shí)效性的歷史數(shù)據(jù)對(duì)存儲(chǔ)空間的擠占。圖五中range(start:-2h)表示選取近兩個(gè)小時(shí)內(nèi)的數(shù)據(jù),確定時(shí)間段后通過(guò)filter語(yǔ)句篩選經(jīng)緯度字段。由于經(jīng)度參數(shù)和緯度參數(shù)記錄均跨越了兩個(gè)子幀。因此采用aggregateWindow語(yǔ)句進(jìn)行數(shù)據(jù)聚合,得到8秒鐘窗口內(nèi)的數(shù)據(jù)記錄。由于8秒鐘的時(shí)間窗口可覆蓋一個(gè)完整的幀,因此可進(jìn)行跨子幀數(shù)據(jù)計(jì)算,得到經(jīng)緯度記錄的工程值。
本文采用Python將傳統(tǒng)譯碼配置表轉(zhuǎn)換為緩存譯碼結(jié)構(gòu)并在Redis中存儲(chǔ);采用Go語(yǔ)言開(kāi)發(fā)譯碼程序,譯碼后的工程值采用Influxdb2時(shí)序數(shù)據(jù)庫(kù)存儲(chǔ), 并搭建了數(shù)據(jù)監(jiān)控界面。
為驗(yàn)證本文所提實(shí)時(shí)譯碼方案的性能,采用ATG測(cè)試飛行中的實(shí)測(cè)數(shù)據(jù)作為輸入,開(kāi)展模擬譯碼實(shí)驗(yàn)。實(shí)驗(yàn)中Redis、Influxdb2、前端展示平臺(tái)和譯碼程序運(yùn)行在同一臺(tái)計(jì)算上,CPU型號(hào)為11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz,RAM大小16.0 GB。實(shí)驗(yàn)結(jié)果顯示,針對(duì)每秒鐘的實(shí)時(shí)QAR數(shù)據(jù),平均譯碼時(shí)間約為5 ms,表明本文所提方法能夠高效譯碼實(shí)時(shí)QAR數(shù)據(jù)。
圖6根據(jù)譯碼參數(shù)生成的飛行軌跡監(jiān)控圖。飛行軌跡根據(jù)不同時(shí)刻的經(jīng)緯度數(shù)據(jù)繪制。經(jīng)緯度的計(jì)算方法在2.4小節(jié)中給出。
圖6 基于實(shí)時(shí)QAR譯碼結(jié)果的飛行軌跡圖
實(shí)時(shí)QAR數(shù)據(jù)可用于飛機(jī)關(guān)鍵部件的狀態(tài)監(jiān)控,與基于ACARS報(bào)文的實(shí)時(shí)監(jiān)控相比,可利用數(shù)據(jù)量大幅增長(zhǎng)。例如,對(duì)于發(fā)動(dòng)機(jī)振動(dòng),傳統(tǒng)報(bào)文監(jiān)控在一次航班中只能發(fā)送起飛、巡航的若干固定時(shí)刻的數(shù)據(jù),或當(dāng)振動(dòng)值超出一定門(mén)限值時(shí)發(fā)送告警報(bào)文。報(bào)文方式數(shù)據(jù)量的限制分析能力和實(shí)時(shí)性。
圖7為發(fā)動(dòng)機(jī)低壓轉(zhuǎn)子(N1)振動(dòng)和轉(zhuǎn)速監(jiān)控圖,可用于發(fā)動(dòng)機(jī)性能的實(shí)時(shí)監(jiān)控。 在飛行中,發(fā)動(dòng)機(jī)振動(dòng)監(jiān)控儀接收4個(gè)加速度傳感信號(hào)(每臺(tái)發(fā)動(dòng)機(jī)2個(gè)加速度傳感器)傳來(lái)的振動(dòng)信號(hào)和4個(gè)發(fā)動(dòng)機(jī)轉(zhuǎn)速信號(hào),通過(guò)窄幅范圍內(nèi)的振動(dòng)計(jì)算得到發(fā)動(dòng)機(jī)的不平衡狀態(tài),進(jìn)而計(jì)算出振動(dòng)值。本文所提方法可用于在飛行過(guò)程中監(jiān)測(cè)發(fā)動(dòng)機(jī)振動(dòng)狀態(tài),導(dǎo)致發(fā)動(dòng)機(jī)振動(dòng)原因可歸為兩類:一類屬于與轉(zhuǎn)子轉(zhuǎn)速有關(guān)的規(guī)律性振動(dòng),如轉(zhuǎn)子不平衡、以及由轉(zhuǎn)子帶動(dòng)的傳動(dòng)齒輪等其他結(jié)構(gòu)產(chǎn)生的激振力;另一類屬于與轉(zhuǎn)速無(wú)關(guān)的非規(guī)律性激振力,如靜轉(zhuǎn)子磨損、壓氣機(jī)喘振、振蕩燃燒等。通過(guò)監(jiān)控振動(dòng)異常值及趨勢(shì)變化,結(jié)合用戶自定義的預(yù)警值提前執(zhí)行維修工作,將維修關(guān)口前移,避免振動(dòng)異??赡軐?dǎo)致的空停風(fēng)險(xiǎn),降低對(duì)發(fā)動(dòng)機(jī)葉片、轉(zhuǎn)靜子葉片的損耗,延長(zhǎng)發(fā)動(dòng)機(jī)在翼時(shí)間,提升可靠新,降低維修成本,避免AOG,提升旅客舒適度。
圖7 基于實(shí)時(shí)QAR譯碼結(jié)果的發(fā)動(dòng)機(jī)轉(zhuǎn)速振動(dòng)監(jiān)控
圖8為發(fā)動(dòng)機(jī)滑油壓力實(shí)時(shí)監(jiān)控示例,以監(jiān)控發(fā)動(dòng)機(jī)滑油管路堵塞等故障。潤(rùn)滑系統(tǒng)是航空發(fā)動(dòng)機(jī)重要子系統(tǒng),其主要功能包括潤(rùn)滑、冷卻、清潔等3個(gè)方面。發(fā)動(dòng)機(jī)滑油系統(tǒng)設(shè)計(jì)的目的是保護(hù)發(fā)動(dòng)機(jī)并將發(fā)動(dòng)機(jī)損傷降到最小程度。 發(fā)動(dòng)機(jī)異常運(yùn)行時(shí),多個(gè)發(fā)動(dòng)機(jī)信號(hào)監(jiān)控發(fā)動(dòng)機(jī)滑油系統(tǒng)的性能, 包括滑油位、 滑油壓力和滑油溫度?;蛪毫κ呛娇瞻l(fā)動(dòng)機(jī)的重要運(yùn)行參數(shù),滑油壓力過(guò)高或過(guò)低都會(huì)對(duì)發(fā)動(dòng)機(jī)運(yùn)行造成影響,尤其是當(dāng)滑油壓力低于門(mén)限值時(shí)需要飛行機(jī)組關(guān)停發(fā)動(dòng)機(jī),以避免發(fā)動(dòng)機(jī)在潤(rùn)滑不良狀態(tài)下運(yùn)行而造成損傷。油壓力傳感器的作用將相應(yīng)的直流輸出信號(hào)( 等于軸承的供油壓力) 提供給飛機(jī)。 滑油壓力傳感器一般測(cè)量滑油泵出口和齒輪箱之間的壓力差。 并將壓力差轉(zhuǎn)換成電信號(hào)發(fā)送到數(shù)據(jù)總線上。對(duì)滑油壓力參數(shù)的實(shí)時(shí)監(jiān)控能夠使地面人員及時(shí)識(shí)別飛機(jī)狀態(tài),當(dāng)狀態(tài)出現(xiàn)異常時(shí)協(xié)助飛行人員提早采取措施,提升飛行安全性,并提前在地面做好維護(hù)準(zhǔn)備,以縮短飛機(jī)停場(chǎng)時(shí)間,提升維護(hù)效率。
圖8 基于實(shí)時(shí)QAR譯碼結(jié)果的發(fā)動(dòng)機(jī)滑油壓力監(jiān)控
除上述飛機(jī)關(guān)鍵部件參數(shù)監(jiān)控應(yīng)用外,基于本文所提實(shí)時(shí)數(shù)據(jù)譯碼方法,還可以開(kāi)展空地寬帶環(huán)境下的實(shí)時(shí)數(shù)據(jù)分析服務(wù),解決目前實(shí)時(shí)監(jiān)控帶寬小(ACARS-5 kHz)、費(fèi)用貴(800/M)的問(wèn)題。結(jié)合機(jī)載端ATG設(shè)備取證工作和衛(wèi)星融合通訊的推進(jìn),可面向航司提供含ATG/海事/KaKu衛(wèi)星等綜合地面實(shí)時(shí)監(jiān)控和分析能力。特別是針對(duì)空中突發(fā)的瞬態(tài)異常,如滑油急性泄漏、發(fā)動(dòng)機(jī)喘振等問(wèn)題。
本文針對(duì)實(shí)時(shí)QAR數(shù)據(jù)的特性,設(shè)計(jì)了基于緩存的譯碼配置數(shù)據(jù)結(jié)構(gòu),基于緩存數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)了實(shí)時(shí)QAR譯碼算法?;贕o語(yǔ)言,實(shí)現(xiàn)了所提譯碼算法,譯碼過(guò)程中,根據(jù)Word和子幀序號(hào)能夠直接匹配到相應(yīng)的譯碼信息,避免了譯碼表全表搜索,提升了譯碼效率。根據(jù)真實(shí)ATG試飛實(shí)驗(yàn)的數(shù)據(jù),本文搭建了地面模擬系統(tǒng),測(cè)試結(jié)果顯示,所提方法能夠高效譯碼實(shí)時(shí)QAR數(shù)據(jù)。通過(guò)航中實(shí)時(shí)數(shù)據(jù)與地面航后數(shù)據(jù)的融合分析,可對(duì)關(guān)鍵參數(shù)實(shí)現(xiàn)全航段、全周期的連續(xù)監(jiān)控,進(jìn)一步擴(kuò)展現(xiàn)有故障識(shí)別的范圍和精度。實(shí)時(shí)QAR數(shù)據(jù)分析是民航領(lǐng)域新興的技術(shù),也是未來(lái)的發(fā)展趨勢(shì),目前相關(guān)研究較少。在本文的研究基礎(chǔ)上,還可以進(jìn)一步開(kāi)展以下方面的研究:
實(shí)時(shí)QAR數(shù)據(jù)清洗技術(shù):能夠處理不同記錄頻率(1/4 Hz、1/2 Hz、8 Hz等)的參數(shù),并對(duì)譯碼結(jié)果進(jìn)行數(shù)據(jù)校準(zhǔn),識(shí)別異常值并處理,對(duì)異常值或空值通過(guò)算法進(jìn)行插補(bǔ);
多架次實(shí)時(shí)數(shù)據(jù)并行處理技術(shù):探索基于GPU的加速算法,支持航線多架次、高通量數(shù)據(jù)的并發(fā)QAR數(shù)據(jù)的實(shí)時(shí)接收處理,采用多進(jìn)程等技術(shù)并行處理各架機(jī)的實(shí)時(shí)數(shù)據(jù),同時(shí)對(duì)數(shù)據(jù)丟包、飛行參數(shù)不連續(xù)、數(shù)據(jù)安全性等問(wèn)題逐一研究。
實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)與分析技術(shù):通過(guò)機(jī)理+數(shù)據(jù)混合模型,計(jì)算能夠反映飛機(jī)關(guān)鍵部件性能的監(jiān)控指標(biāo),并對(duì)超出警戒值的指標(biāo)告警。通過(guò)建立算法、模型對(duì)監(jiān)控的實(shí)時(shí)數(shù)據(jù)進(jìn)行評(píng)估。
實(shí)時(shí)QAR數(shù)據(jù)動(dòng)態(tài)緩存技術(shù):探索實(shí)時(shí)數(shù)據(jù)高效緩存方法,優(yōu)化實(shí)時(shí)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),能夠同步存儲(chǔ)譯碼后的實(shí)時(shí)數(shù)據(jù);提供高效讀寫(xiě)接口,能夠支持基于實(shí)時(shí)數(shù)據(jù)開(kāi)展實(shí)時(shí)狀態(tài)監(jiān)控、飛行品質(zhì)分析、燃油效能分析等工作;設(shè)計(jì)數(shù)據(jù)動(dòng)態(tài)釋放機(jī)制,根據(jù)數(shù)據(jù)時(shí)效性、系統(tǒng)內(nèi)存容量、讀寫(xiě)耗時(shí)等因素,優(yōu)化存儲(chǔ)性能[21]。