李俊, 惠力, 聶睿
(中國飛行試驗(yàn)研究院測試所, 西安 710089)
飛行試驗(yàn)通常是在真實(shí)飛行條件下科學(xué)地獲取和處理能夠表征試驗(yàn)研究對象性能、功能與作戰(zhàn)效能的過程,由于該過程風(fēng)險(xiǎn)性強(qiáng)、代價(jià)高且周期長[1-3],因此通過遙測實(shí)時(shí)監(jiān)控過程可以有效保證試飛安全、提高試飛效率。遙測實(shí)時(shí)監(jiān)控系統(tǒng)作為試飛空地一體化綜合監(jiān)控網(wǎng)絡(luò)的終端,通常是基于C/S傳統(tǒng)架構(gòu)[4-5],對遙測數(shù)據(jù)實(shí)時(shí)處理與分析,并以圖、表與數(shù)據(jù)等形式表征飛行器及機(jī)載系統(tǒng)試驗(yàn)狀態(tài)[6-7]。基于傳統(tǒng)遙測實(shí)時(shí)監(jiān)控架構(gòu),劉語喬等[8]通過分類判決告警信息以及設(shè)計(jì)虛警抑制機(jī)制實(shí)現(xiàn)機(jī)組告警信息的地面監(jiān)控。葉冰等[9]提出了飛行試驗(yàn)綜合安全監(jiān)控思想,采用多類型告警、準(zhǔn)實(shí)時(shí)數(shù)據(jù)處理以及應(yīng)急輔助決策技術(shù),實(shí)現(xiàn)了試飛狀態(tài)監(jiān)控、故障告警、準(zhǔn)實(shí)時(shí)計(jì)算和應(yīng)急處置決策支持。劉濤等[10]采用多線程調(diào)度后端解析,增加數(shù)據(jù)回放、復(fù)雜算法計(jì)算等新功能,保證萬余個(gè)試驗(yàn)參數(shù)的實(shí)時(shí)計(jì)算與轉(zhuǎn)發(fā)。雖然多位作者提出了優(yōu)化遙測實(shí)時(shí)監(jiān)控服務(wù)質(zhì)量的方法,提高了地面監(jiān)控對飛行試驗(yàn)帶來的安全效能,但是集中在故障預(yù)測、告警分析等單一分析功能,缺乏對飛行全歷程數(shù)據(jù)的綜合分析,特別是試飛架次信息全面采集、海量遙測數(shù)據(jù)統(tǒng)計(jì)分析等能力。
鑒于此,面向遙測數(shù)據(jù)量大、高實(shí)時(shí)計(jì)算的遙測實(shí)時(shí)監(jiān)控場景,突破傳統(tǒng)計(jì)算架構(gòu),采用大數(shù)據(jù)分布式計(jì)算框架,設(shè)計(jì)了一種試飛遙測實(shí)時(shí)監(jiān)控分析報(bào)告自動(dòng)生成系統(tǒng),采集試飛過程的重要信息,全歷程數(shù)據(jù)統(tǒng)計(jì)分析,并自動(dòng)生成監(jiān)控分析報(bào)告,為后續(xù)飛行試驗(yàn)提供輔助決策與支持,對于提升試飛質(zhì)量、提高試飛效率具有重要意義。
系統(tǒng)需要實(shí)時(shí)采集遙測數(shù)據(jù),并對數(shù)據(jù)進(jìn)行解析處理,解析后的數(shù)據(jù)不但需要發(fā)送至實(shí)時(shí)監(jiān)控終端用于采集試驗(yàn)點(diǎn),而且需要存入數(shù)據(jù)存儲系統(tǒng),便于在飛行結(jié)束后對該歷程數(shù)據(jù)統(tǒng)計(jì)分析。另外,系統(tǒng)還需要采集在試飛監(jiān)控過程中的用戶信息和各類飛機(jī)信息,這些信息與統(tǒng)計(jì)分析結(jié)果一并存入分析報(bào)告,確保在本架次飛行結(jié)束后快速提供給相關(guān)技術(shù)人員使用。具體系統(tǒng)總體實(shí)現(xiàn)流程如圖1所示。

圖1 總體實(shí)現(xiàn)流程圖Fig.1 Overall implementation flow chart
根據(jù)系統(tǒng)總體實(shí)現(xiàn)流程,系統(tǒng)需要具備包括數(shù)據(jù)實(shí)時(shí)采集、數(shù)據(jù)實(shí)時(shí)計(jì)算、數(shù)據(jù)統(tǒng)計(jì)分析、數(shù)據(jù)分類存儲以及監(jiān)控報(bào)告管理關(guān)鍵功能,參見圖2試飛實(shí)時(shí)監(jiān)控報(bào)告生成系統(tǒng)功能結(jié)構(gòu)圖。下面對關(guān)鍵功能模塊做以說明。

圖2 系統(tǒng)功能結(jié)構(gòu)圖Fig.2 System functional structure diagram
(1)數(shù)據(jù)實(shí)時(shí)采集。對實(shí)時(shí)遙測接收機(jī)數(shù)據(jù)、用戶信息以及各類飛機(jī)信息的采集,飛機(jī)信息涉及飛行架次基本信息、試飛任務(wù)信息、采集試驗(yàn)點(diǎn)信息和實(shí)時(shí)監(jiān)控記錄等內(nèi)容。
(2)數(shù)據(jù)實(shí)時(shí)計(jì)算。結(jié)合飛機(jī)的格式格柵信息,通過解析實(shí)時(shí)遙測數(shù)據(jù),計(jì)算得到試驗(yàn)涉及的關(guān)鍵試飛參數(shù)數(shù)值。
(3)數(shù)據(jù)統(tǒng)計(jì)分析。通過統(tǒng)計(jì)量分析方法對整個(gè)架次的關(guān)鍵參數(shù)值統(tǒng)計(jì)分析,包括均值分析、極值分析、超限分析、穩(wěn)定性分析和相關(guān)性分析等。
(4) 數(shù)據(jù)分類存儲。系統(tǒng)對不同類型的數(shù)據(jù)持久化存儲,存儲數(shù)據(jù)類型包括原始遙測數(shù)據(jù)、關(guān)鍵參數(shù)數(shù)據(jù)、統(tǒng)計(jì)分析結(jié)果、各類飛機(jī)信息以及用戶信息。
(5)分析報(bào)告管理。系統(tǒng)具有分析結(jié)果可視化分析和報(bào)告下載功能。分析結(jié)果可視化是對飛行架次基本信息、試飛任務(wù)信息、實(shí)時(shí)監(jiān)控記錄和關(guān)鍵參數(shù)統(tǒng)計(jì)量分析結(jié)果以統(tǒng)計(jì)表形式呈現(xiàn),通過飛行水平剖面圖、垂直剖面圖和試驗(yàn)點(diǎn)分布圖、飛行機(jī)組告警系統(tǒng)(crew alerting system,CAS)信息統(tǒng)計(jì)圖描述本架次飛機(jī)基本狀態(tài)。
為滿足試飛多機(jī)多鏈路海量遙測數(shù)據(jù)的實(shí)時(shí)解析以及離線分析的場景,提高實(shí)時(shí)多鏈路低延遲、高吞吐的采集能力以及離線數(shù)據(jù)統(tǒng)計(jì)分析速度,系統(tǒng)由基礎(chǔ)設(shè)施層、大數(shù)據(jù)平臺層、展示層以及用戶訪問層組成,系統(tǒng)體系架構(gòu)如圖3所示。

圖3 系統(tǒng)體系架構(gòu)圖Fig.3 System architecture diagram
(1)基礎(chǔ)設(shè)施層。基礎(chǔ)設(shè)施層為系統(tǒng)提供基礎(chǔ)設(shè)施環(huán)境,包括網(wǎng)絡(luò)系統(tǒng)、數(shù)據(jù)存儲系統(tǒng)、數(shù)據(jù)計(jì)算與分析系統(tǒng)以及遙測接收機(jī)等硬件系統(tǒng)。
(2)大數(shù)據(jù)平臺層。大數(shù)據(jù)平臺層是系統(tǒng)核心層,包括數(shù)據(jù)存儲層、數(shù)據(jù)處理層以及業(yè)務(wù)應(yīng)用層。
數(shù)據(jù)存儲層由分布式文件系統(tǒng)HDFS、列族數(shù)據(jù)庫HBASE、內(nèi)存型數(shù)據(jù)庫Redis以及關(guān)系型數(shù)據(jù)庫MySQL組成。對于原始遙測數(shù)據(jù)以二進(jìn)制文件塊的形式存儲在HDFS,解析后的關(guān)鍵參數(shù)數(shù)據(jù)根據(jù)時(shí)間序列逐幀存儲在HBASE,對于頻繁查詢檢索的各類數(shù)據(jù)或者信息存儲在Redis,統(tǒng)計(jì)分析結(jié)果、飛行架次基本信息、試飛任務(wù)信息和實(shí)時(shí)監(jiān)控記存儲在MySQL。
數(shù)據(jù)處理層由實(shí)時(shí)流計(jì)算引擎Storm和離線批處理計(jì)算引擎Spark組成。Storm分布式、低延遲、高容錯(cuò)和高可靠性的特點(diǎn)[11],可以有效適應(yīng)多架機(jī)、多鏈路并行采集、處理的海量遙測數(shù)據(jù)的場景;Spark由于使用內(nèi)存計(jì)算,從而減少磁盤I/O[12-13],可以快速并準(zhǔn)確地對海量關(guān)鍵參數(shù)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。
業(yè)務(wù)應(yīng)用層以Boostrap和Thymeleaf構(gòu)建視圖層,實(shí)現(xiàn)系統(tǒng)管理、飛機(jī)信息管理、數(shù)據(jù)存儲管理、實(shí)時(shí)監(jiān)控管理、分析報(bào)告管理和數(shù)據(jù)綜合分析業(yè)務(wù)。系統(tǒng)管理包括用戶、角色、部門等信息管理,飛機(jī)信息管理包括關(guān)鍵參數(shù)、CAS信息、飛行包線和參數(shù)列表等信息管理;實(shí)時(shí)監(jiān)控管理基于安全監(jiān)控和任務(wù)監(jiān)控開展的監(jiān)控記錄和試驗(yàn)點(diǎn)采集業(yè)務(wù);分析報(bào)告管理包括生成報(bào)告和報(bào)告下載;數(shù)據(jù)綜合分析包括飛行信息可視化和關(guān)鍵參數(shù)對比分析。
(3)展示層。展示層以門戶網(wǎng)站的形式為用戶提供登錄入口,用戶根據(jù)Restful接口訪問系統(tǒng)執(zhí)行操作。
(4)用戶訪問層。系統(tǒng)面向用戶為課題人員、型號辦人員、指揮員以及監(jiān)控值班人員等四類用戶,系統(tǒng)通過權(quán)限設(shè)置,為不同用戶提供應(yīng)用服務(wù)。
針對多架試驗(yàn)機(jī)、多條數(shù)據(jù)鏈路帶來的實(shí)時(shí)遙測數(shù)據(jù)量大,計(jì)算要求延遲低、速度快等特點(diǎn),系統(tǒng)采用Storm計(jì)算引擎實(shí)現(xiàn)試飛實(shí)時(shí)數(shù)據(jù)流計(jì)算。通過創(chuàng)建多個(gè)JVM進(jìn)程實(shí)現(xiàn)多架機(jī)、多鏈路的并行計(jì)算,單架機(jī)、單條鏈路、單個(gè)進(jìn)程內(nèi)實(shí)現(xiàn)從網(wǎng)絡(luò)數(shù)據(jù)接收、工程物理量轉(zhuǎn)換、數(shù)據(jù)計(jì)算、數(shù)據(jù)存儲和數(shù)據(jù)封裝轉(zhuǎn)發(fā)的過程,最終獲取轉(zhuǎn)發(fā)到消息隊(duì)列Kafka內(nèi)的數(shù)據(jù)并推送到實(shí)時(shí)監(jiān)控終端,該過程如圖4所示。

TCP為傳輸控制協(xié)議
根據(jù)Storm流式計(jì)算原理,每條鏈路可以對應(yīng)創(chuàng)建一個(gè)拓?fù)浣Y(jié)構(gòu)圖topology,單條鏈路的遙測S數(shù)據(jù)實(shí)時(shí)處理過程形成一條流stream,該流內(nèi)由網(wǎng)絡(luò)接收ReceiveSpout(與接收機(jī)建立TCP連接,實(shí)時(shí)獲取遙測數(shù)據(jù))、工程物理量PCMBolt(結(jié)合飛機(jī)格式格柵、參數(shù)校線對關(guān)鍵參數(shù)從源碼解析為工程物理量)、數(shù)據(jù)計(jì)算CalculateBolt(對解碼后的參數(shù)進(jìn)行復(fù)雜二次計(jì)算)、數(shù)據(jù)存儲SaveBolt(將源碼和關(guān)鍵參數(shù)數(shù)據(jù)分別存儲在HDFS和HBASE內(nèi))以及數(shù)據(jù)封裝轉(zhuǎn)發(fā)TransferBolt(參數(shù)計(jì)算結(jié)果發(fā)送至消息隊(duì)列Kafka內(nèi)),遙測數(shù)據(jù)實(shí)時(shí)處理Storm拓?fù)鋱D如圖5所示。

圖5 遙測數(shù)據(jù)實(shí)時(shí)處理Storm拓?fù)鋱DFig.5 Telemetry data real-time processing Storm topology
為了能夠在該飛行架次結(jié)束后快速并且準(zhǔn)確地對遙測數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,系統(tǒng)采Spark實(shí)現(xiàn)上述功能。離線遙測數(shù)據(jù)統(tǒng)計(jì)分析主要包括均值分析、極值分析、超限分析、穩(wěn)定性分析和相關(guān)性分析等方法。
離線遙測數(shù)據(jù)統(tǒng)計(jì)分析,根據(jù)飛行基本信息(飛行日期-飛機(jī)型號-飛機(jī)編號-飛行架次)從HBASE中獲取到多幀關(guān)鍵參數(shù)數(shù)據(jù),將數(shù)據(jù)封裝成彈性分布式數(shù)據(jù)集RDD,通過聚合、過濾等方法求解關(guān)鍵參數(shù)均值、極值、超限狀況、標(biāo)準(zhǔn)差以及相關(guān)系數(shù),將統(tǒng)計(jì)分析結(jié)果存儲在MySQL。上述統(tǒng)計(jì)方法形成的Java包,通過Java API實(shí)現(xiàn)spark-submit命令,并將其提交到大數(shù)據(jù)計(jì)算平臺,具體算法流程如圖6所示。

圖6 離線遙測數(shù)據(jù)統(tǒng)計(jì)分析算法流程圖Fig.6 Flow chart of offline telemetry data statistical analysis algorithm
系統(tǒng)以SpringBoot敏捷開發(fā)框架為基礎(chǔ),實(shí)現(xiàn)對各類信息采集與管理。Spring Boot是一款開箱即用框架,提供各種默認(rèn)配置來簡化項(xiàng)目配置[14],提高開發(fā)和部署效率。系統(tǒng)使用Apache Shiro安全框架實(shí)現(xiàn)認(rèn)證、授權(quán)、加密、會話管理、與Web集成、緩存等功能,使用Apache MyBatis實(shí)現(xiàn)操作MySQL,通過Thymeleaf與Spring MVC框架進(jìn)行集成后作為Web應(yīng)用的模板引擎[15-16]。
實(shí)時(shí)監(jiān)控管理作為信息采集與管理的核心業(yè)務(wù),根據(jù)試飛監(jiān)控特點(diǎn)分為安全監(jiān)控和任務(wù)監(jiān)控,安全監(jiān)控主要采集用戶監(jiān)控記錄,任務(wù)監(jiān)控除了采集用戶監(jiān)控記錄外,還輔助用戶采集試驗(yàn)點(diǎn),對于試飛工程師用戶采集試驗(yàn)點(diǎn)算法流程圖如圖7所示。

圖7 試飛工程師用戶采集試驗(yàn)點(diǎn)算法流程圖Fig.7 Algorithm flow chart of flight test engineer user acquisition test point
基于大數(shù)據(jù)環(huán)境下的報(bào)表報(bào)告系統(tǒng),已經(jīng)廣泛應(yīng)用在銀行、醫(yī)療、政府管理等領(lǐng)域。在銀行領(lǐng)域,后臺進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)分析,前端將數(shù)據(jù)分析的結(jié)果用報(bào)表形式展現(xiàn),如成熟產(chǎn)品FineReport和HReport[17-18]。在醫(yī)療領(lǐng)域,基于Web的電子診斷單、利用深度學(xué)習(xí)的醫(yī)學(xué)報(bào)告自動(dòng)生成等技術(shù)已成功應(yīng)用[19]。針對分析報(bào)告內(nèi)所涉及數(shù)據(jù)的結(jié)構(gòu)特點(diǎn),提出利用可視化插件和Word模板分析引擎,搭建試飛監(jiān)控分析報(bào)告自動(dòng)生成系統(tǒng)。
選擇合理的可視化視圖方式,提高用戶對數(shù)據(jù)的直觀感受,分析報(bào)告數(shù)據(jù)內(nèi)容可視化方式如表1所示,數(shù)據(jù)可視化采用可視化ECharts插件對各類數(shù)據(jù)進(jìn)行可視化顯示,具體實(shí)現(xiàn)步驟如下。

表1 分析報(bào)告數(shù)據(jù)內(nèi)容可視化方式Table 1 Calculation results of power analysis report data content visualization method
步驟1引用echarts.js。
步驟2創(chuàng)建div容器,其為ECharts提供一個(gè)具備一定高寬的DOM容器。
步驟3基于已準(zhǔn)備的DOM容器,初始化echarts實(shí)例。
步驟4針對數(shù)據(jù)特點(diǎn),確定圖表的配置項(xiàng)和數(shù)據(jù)。
步驟5將上述圖表的配置項(xiàng)和數(shù)據(jù)注入已初始化的實(shí)例內(nèi)。
分析報(bào)告自動(dòng)生成過程使用Word模板分析引擎Freemaker將模板內(nèi)容進(jìn)行文檔輸出。Freemaker即一種基于模板和要改變的數(shù)據(jù),并用來生成輸出文本(HTML網(wǎng)頁、電子郵件、配置文件、源代碼等)的通用工具,具體實(shí)現(xiàn)步驟如下。
步驟1制作.ftl后綴的Word模板文件。①制作分析報(bào)告Word文件,并將Word文件修改成.ftl格式;②修改圖片的數(shù)據(jù)內(nèi)容使用表達(dá)式代替,在數(shù)據(jù)表格中添加循環(huán)標(biāo)簽,修改.ftl文件并生成最終的模板文件。
步驟2通過模板文件生成Word文檔。①導(dǎo)入freemarker模板jar包;②裝載.ftl模板文件;③獲取模板數(shù)據(jù),數(shù)值數(shù)據(jù)從MySQL中獲取,圖片數(shù)據(jù)通過ECharts得到base64碼值,并將數(shù)據(jù)封裝插入模板文件中;④生成統(tǒng)計(jì)分析Word報(bào)告。
經(jīng)實(shí)際工程測試,系統(tǒng)可以同時(shí)滿足至少20架試驗(yàn)機(jī)的數(shù)據(jù)采集、計(jì)算、統(tǒng)計(jì)分析以及存儲管理等功能,平均采集延遲在70 ms以內(nèi),在約100個(gè)飛行試驗(yàn)架次中自動(dòng)生成報(bào)告時(shí)間約為2.74 min。目前,系統(tǒng)平臺已經(jīng)在國產(chǎn)某大型客機(jī)試飛遙測實(shí)時(shí)監(jiān)控過程中使用,后續(xù)可以陸續(xù)推廣應(yīng)用在其他試驗(yàn)機(jī)實(shí)時(shí)遙測監(jiān)控中。
試飛遙測實(shí)時(shí)監(jiān)控分析報(bào)告自動(dòng)生成系統(tǒng)基于大數(shù)據(jù)分布式計(jì)算框架Hadoop構(gòu)建,具備數(shù)據(jù)實(shí)時(shí)采集、數(shù)據(jù)實(shí)時(shí)計(jì)算、數(shù)據(jù)統(tǒng)計(jì)分析、數(shù)據(jù)分類存儲以及監(jiān)控報(bào)告管理等關(guān)鍵功能,為后續(xù)試飛講評、飛行任務(wù)提供充分可靠的試飛數(shù)據(jù)資源,綜合提升系統(tǒng)數(shù)據(jù)分析能力,優(yōu)化遙測實(shí)時(shí)監(jiān)控服務(wù)質(zhì)量,對于提高試飛效率具有重要作用。