飛行試驗實時分析決策方法研究與實現(xiàn)
覃楊森1,范彥勤2,聶睿1,喬東峰1
(1.中國飛行試驗研究院陜西西安710089;2.西安遠方航空技術發(fā)展總公司陜西西安710089)
依靠單一的數值分析及數據演算判斷很難提高對實時試飛科目的評判效率,并嚴重影響了險情處置時的快速決策。將實時試飛數據分析結果進行結構化存儲,采用列模式內存對齊方法,提高單個參數的檢索查詢及圖形輸出操作效率;對C++builder標準組件類屬性及方法進行擴充,實現(xiàn)對常規(guī)和特殊飛行科目定制結果曲線圖的繪制輸出;嵌入VC++動態(tài)計算庫,利用進程調用方式,融合Matlab平臺GUI應用程序,共享試飛科目數據分析常用算法庫,擴展軟件綜合輸出功能。實現(xiàn)了對試飛實時數據分析結果的可視化輸出,為飛行決策提供了更直觀的數據參考。
飛行試驗;數據分析;可視化輸出;C++builder繪圖
在國內的飛行試驗過程中,通過采集飛機姿態(tài)及狀態(tài)參數,利用遙測鏈路將飛行數據實時傳回地面,經解算后顯示輸出到監(jiān)控畫面中,以幫助試飛工程師及地面指揮員及時判斷飛行狀態(tài)是否達到飛機設計指標要求[1]。同時在飛機遇到險情時,數據的實時監(jiān)控輸出能夠為準確決策出恰當的處置方案提供最直觀最可靠的判斷分析依據。因此,在試飛實時監(jiān)控環(huán)境下,需要及時對試飛數據分析結果做出評判。而如何對分析決策結果的可視化輸出,以全面準確反映出飛機各個系統(tǒng)交聯(lián)狀態(tài)的參數信息,突出飛行試驗中特定時刻下的關鍵數據,是完成評判決策環(huán)節(jié)的重要步驟[2]。
目前,在分析決策過程中常用的origin軟件生成方法雖然形式豐富,但由于其著重于軟件通用性設計,反而使得針對性功能薄弱,無法針對試飛科目評判圖將數據輸出。因此,較簡便針對性強的分析決策方法就更有利于數據分析的完成:除了具備使用便捷、平臺可擴展及能夠完成特殊飛行科目曲線繪制等特性外,同時應可對常用的Matlab GUI應用程序提供必要的方法接口,充分具備平臺融合的綜合可視化輸出特點?;贑++builder環(huán)境下試飛數據實時分析決策方法,擴展了標準繪圖構件類屬性及方法,結合結構體的內存存儲特點,解決與Matlab平臺的調用及進程管理問題,有針對性完成了相應的分析決策可視化綜合輸出功能的設計與實現(xiàn)。
試飛數據實時分析決策方法分為數據結構化存儲、數據時間段選取及預處理、參數數據導出、特殊曲線繪制和擴展平臺綜合輸出五個階段步驟。步驟間通過進程控制信號或者數據流指針等接口實現(xiàn)內存數據區(qū)的交互和共享[3],總體架構如圖1所示。
圖1 總體架構圖
步驟一:數據結構化存儲通過輸入進程事件觸發(fā)。選擇需要進行分析的文件路徑,由此獲得文件句柄,依次完成對文件內部數據的內存導入,進行文件元素的遍歷,完成對文件存儲結構體的構造,同時根據文件的信息,初始化下一階段內存區(qū)域及進程控制信號[4]。
步驟二:在數據時間段選取及預處理階段中,對需要畫圖的參數進行標記,觸發(fā)相應圖形區(qū)域的繪制信號量。創(chuàng)建數據檢索進程,查找出參數的最大最小值,自主完成畫圖區(qū)域的上下限設定,并根據相應的操作控制事件進行手動調節(jié),通過不同區(qū)域的圖形繪制進程的同步控制,使得需要導出的參數進行時間點和選取時間段的同步。在確定時間段后,對該段數據進行預處理,包括對數據跳點識別、剔除、平滑及濾波等,進而挑選出所需要的評判參數組。
步驟三:將選定的參數時間段數據進行另存操作。以選取好的時間段為基準,對全部或者部分參數數據以文本格式導出分析平臺,進而可以將數據在其他平臺中進一步分析。對于導出的分析結果,可以創(chuàng)建新的內存緩沖區(qū)塊,構造生成圖片格式的保存或者打印,以運用于分析報告的編寫。
步驟四:繪制指定科目特殊曲線。根據飛行實時繪圖評判需求,完成例如參數對曲線圖、1對1曲線圖、1對N曲線圖及散點評判圖等圖形顯示,由定制曲線繪制進程單獨完成,并利用進程的內存空間,獲取數據指針信息,完成相應的圖片格式儲存及打印輸出。
步驟五:通過平臺擴展接口,結合科目分析中常用的DLL算法動態(tài)庫,操作數據指針及內存模塊,進行一些頻譜分析或伯特圖輸出。同時,利用進程控制信號與Matlab平臺應用程序進行內存數據交互調用,將數據與狀態(tài)參數綜合顯示到指定繪圖區(qū)域中,以實現(xiàn)對實時分析決策結果的綜合輸出。
根據試飛數據實時分析決策方法過程,基于C++builder開發(fā)平臺進行可視化輸出軟件設計與實現(xiàn)。C++builder平臺有著豐富的圖形繪制功能,以控件模塊的實現(xiàn)方式更容易對操作事件及控制信號進行管理和響應。在對數據進行處理過程中,可以利用列對齊管理方式,通過系統(tǒng)本身的信號收發(fā)機制響應動作句柄,并建立共享緩存區(qū)域,發(fā)揮C++builder與VC++平臺的兼容性及結合Matlab的工具箱,獲得圖形結果的綜合顯示輸出。整體實現(xiàn)方案如圖2所示。
圖2 軟件整體框圖
2.1數據結構化存儲
由于編譯器在對內存進行分配管理時,對于結構體的存放遵循列對齊管理模式,有別于數組內存管理的順序存放模式,所以在考慮到數據量大小的前提下,采用結構化存儲方式。獲取數據在內存中的文件句柄之后,對文件元素進行遍歷,依次完成結構體的構造。根據實際使用需求,大部分操作都是由參數列為引導,以完成各功能之間的關聯(lián)與融合。因此,采用的列模式元素遍歷方式,即將數據與其參數名稱關聯(lián),存放入同一個結構體中[5]。在節(jié)省了內存開銷的同時,也可以提高對各個參數的操作效率。由于時間信息不是特定的數據類型,因而采用了包含String數組的結構體存放,并與數據點數一一對應,方便了時間段的檢索和起始點的選擇。
2.2時間段截取及預處理
對于某一飛行科目而言,所涉及到的參數之間,都存在著某種必然的關系。因此,在進行數據時間段截取的過程中,就必須充分了解各個參數在同一時間點的數據狀態(tài)。根據參數間的相互應證關系,去分析和判斷飛機的飛行狀態(tài)。為此,可視化輸出軟件提供了四種參數顯示頁面模式,分別可以同時在同一頁面顯示兩個、四個、六個及九個參數之間的曲線關系。同時,也可以將所有的圖形操作同步到總體控制滑塊上,以完成不同顯示畫面上參數的操作關聯(lián)。
在進行參數曲線顯示時,使用C++builder環(huán)境下的標準TChart控件,因而對于單個的控件而言,所包含的屬性值及方法都是私有的,要完成它們相互之間的同步顯示,必須在窗體類TFrom下定義公共的類,其中的屬性和方法能夠被外部控件所獲取和修改[6]。另外,在窗體類下嵌套定義的曲線顯示公用類,還可以避免標準控件TChart使用析構函數釋放資源時引起的溢出異常。由于C++builder環(huán)境下的標準組件內都封裝了與之相匹配的析構函數,用于被調用結束后會釋放系統(tǒng)資源,而析構函數本身是不可以被重載和覆蓋的。因此,如果對標準組件的內部屬性或者方法進行修改后,必然會引起系統(tǒng)資源使用的變化,使得析構函數不能完整釋放資源空間,導致容器構件的運行異常,出現(xiàn)不確定性的錯誤[7]。在軟件中,自定義的公共類及方法接口類的UML類圖如圖3表示。
圖3 自定義UML類圖
基于以上的類關聯(lián)設計,可以完成參數之間X軸方向上的上下限同步操作。同時,還可以根據參數Y軸方向上的數值變化范圍,分別調整相應的上下限,將不需要的變化范圍進行過濾。在對某一參數完成起始點的確定后,其他參數自動顯示對應的起始標記線,與之同步操作。
數據時間段確定后,將調用外部預處理算法動態(tài)庫,利用指針地址操作,對數據緩存區(qū)進行跳點識別及剔除運算。根據不同飛行科目的評判分析要求,進而完成對數據的平滑和濾波計算,最終確定需要導出的參數組。
2.3數據導出
將參數數據導出到外部文件中,使得可以借助其他軟件對相關參數完成進一步的分析??梢暬敵鲕浖O計了按照時間段截取方式對所有參數或者部分參數導出到數據文本的操作。當確定好數據時間段的起始標記線以后,可以通過鼠標操作,在參數名稱列表中進行導出標記。如果沒有標記其中某一參數時,軟件默認將所有參數導出,否則,只導出已被標記選中的參數。導出的參數以文本格式進行存儲,可以使用Origin、matlab或其他數據分析軟件直接讀取。另外,對于某些特殊的參數,需要通過圖片或者打印將曲線圖輸出。軟件平臺對每一個圖形曲線都綁定提供了這兩種操作。軟件將需要保存圖片或打印的曲線圖加載到內存緩沖區(qū)中,實例化為圖片或者打印的對象。如果是保存圖片操作,則根據選取的圖片格式進行壓縮輸出;如果是打印操作,則啟動打印機,根據畫面大小,調整分辨率后,打印輸出文件,可以選擇pdf打印格式或者是系統(tǒng)默認的mdi格式。
2.4特定曲線繪制
在某些飛行科目的數據分析中,經常利用橫縱軸去分別表示不同的參數,以得到更準確的評判結果。類似于這樣的曲線圖,在軟件中作為特殊構圖處理。根據目前的分析需要,分為3種特殊圖形類:1)在同一個曲線圖中同時繪制多條曲線,即1對N模式;2)在等級評判分析圖中顯示數據點分布狀態(tài),即散點分布圖模式;3)可以同時設定橫縱軸所表示的參數,即參數對曲線模式。
對于第1)種特殊曲線圖,需要用不同的曲線標記區(qū)別不同的參數曲線,以使得圖形能夠清晰表示出參數的變化情況,并在圖形右上方顯示不同標記與參數的對應關系。在該種曲線圖中,也融合了右鍵快捷菜單的“關聯(lián)”、“圖片導出”及“打印”操作,以方便與其他頁面模式下的參數進行關聯(lián)分析,并能夠便捷的將曲線結果保存和輸出。
等級評判分析主要針對類似姿態(tài)敏捷、動力升限和振動狀態(tài)評估等需求應用。在此類圖形的構建中,首先需要明確各等級的坐標關系,繪制出等級判別曲線。通過右鍵快捷菜單,以描點曲線類型的顯示方式,導入需要繪制的結果數據。同樣的,可以對曲線進行圖片保存及打印操作。
在雙軸曲線繪圖中,需要對橫軸和縱軸分別設定相對應的參數。曲線圖將會根據實際的數據,分別設定出圖形的上下限。在分析過程中,可根據需要更改各個軸方向上所表示的參數,并且可以使用上下限設置按鈕,合理設置圖形所顯示的放大或縮小倍數。最終,可以以圖片格式對結果進行保存。
2.5擴展接口實現(xiàn)
由于各個飛行科目參數的計算分析方法不盡一致,因此,需要根據每個科目的具體要求,設計相關的算法。這些算法可以直接嵌套到軟件平臺的控件操作中,也可以外部程序調用的方式實現(xiàn)。對于嵌套式的算法調用,最便捷的方式是通過按鈕控件進行觸發(fā)加載VC++平臺的DLL動態(tài)計算庫,并可以利用指針地址傳遞操作程序體內存中的相關變量[8]。同時,嵌套式動態(tài)庫調用與軟件平臺使用同樣的進程資源,在交互計算操作上更有效率,也不需要對同樣的數據進行多次內存分配。
對于一些較復雜的算法,在構件的方法下實現(xiàn)起來比較困難,因而可以借助Matlab計算平臺,將這些算法結合到計算分析過程中[9]。可視化輸出軟件中設計的與Matlab平臺接口,主要是通過可執(zhí)行程序的交互調用來實現(xiàn)。在Matlab平臺下,將需要使用的算法庫寫成函數形式的M文件,可以在函數體中對算法庫直接調用,也可以是嵌套調用。在函數形式的M文件中定義需要使用到的參數接口,這將影響到用戶界面GUI的輸入組件設計。完成函數的參數接口定義之后,創(chuàng)建Matlab圖形用戶界面工程,根據參數接口定義的情況,對應分布輸入組件,針對組件綁定的callback屬性,與函數建立起對應關系,并由此獲取到算法中需要的計算參數。如果是文件,則需要啟用文件選擇對話框交互,獲取到文件句柄,形成傳遞參數,完成算法參數的響應。接著,針對GUI工程中的M文件,啟用Matlab命令deploytool,以exe工程方式新建項目,將GUI工程編譯形成可執(zhí)行exe文件,并生成對應的說明文本。在此,便可以在C++builder環(huán)境下,以進程應用程序的調用語句,即可將在軟件界面上添加入matlab的交互執(zhí)行觸發(fā)動作,方法如圖4所示。
圖4Matlab可執(zhí)行程序調用方法
對于此方式的調用,需要通過單獨的共享數據區(qū)實現(xiàn)兩個平臺的數據操作,不可以通過全局變量定義或變量外部調用。另外,命令deploytool在Matlab2012b版本下使用更為方便,對于早期的版本,可以借鑒使用comtool命令。如果需要在沒有Matlab軟件環(huán)境下使用exe程序,則需要在對M文件打包過程中,在文件包中包含入MCR(Matlab Compiler Runtime)安裝包,用于在無Matlab安裝的環(huán)境下解析形成的exe程序,以實現(xiàn)跨平臺的應用。
將基于試飛數據實時分析決策方法開發(fā)實現(xiàn)的可視化輸出軟件運行于實時遙測數據監(jiān)控平臺系統(tǒng)客戶端中,接收實際飛行數據,根據試驗任務書的需要進行了多種圖形的輸出,給飛行指揮員及試飛工程師提供了多種飛行姿態(tài)的評判參考。經對比驗證表明:結構化數據存儲,以列模式內存對齊檢索,方便了功能實現(xiàn)。由于計算機運行時,對于內存塊的利用并不是連續(xù)的,因此如果定義了較大的數組存儲空間時,會因為在內存中無法找到同樣大小的連續(xù)內存塊而溢出。但如果以結構體存放,則可以使用動態(tài)內存空間申請的方式,因而避免了溢出的發(fā)生。
同時,軟件實現(xiàn)中對C++builder標準構件類進行屬性及方法的擴展,為構件間的關聯(lián)操作提供了更便捷的途徑。將標準構件的關聯(lián)屬性及方法定義到容器構件類的公用定義范圍內,有效避免了標準構件類內部的析構函數運行時產生內存泄露的異常。
另外,實現(xiàn)的可視化輸出軟件提供了與Matlab計算平臺融合應用的接口管理。除了有DLL算法庫的調用關系以外,兼容了GUI界面與用戶進行交互。由于帶有GUI組件的Matlab程序,不是單一的函數M文件,因此編譯生成的可執(zhí)行文件在C++builder主程序中以進程應用程序方式調用,合理分配了計算資源。
試飛數據實時分析決策方法及其可視化輸出軟件實現(xiàn)以參數時間段同步選取導出為基本功能,結合并擴展了開發(fā)平臺下各個標準構件之間的關聯(lián)屬性及方法,提供了便于曲線結果導出的圖形保存及打印輸出功能。同時,根據實際科目分析需求,實現(xiàn)了特殊曲線圖形的繪制。在與Matlab[10]平臺結合應用的過程中,考慮了兩個平臺之間的進程調用及任務資源的管理關系,以提高參數操作效率。另外,在可視化輸出實現(xiàn)過程中可以現(xiàn)階段的功能應用為基礎,繼續(xù)深入探索兩個平臺之間在程序混合編譯過程中的差異,為提高平臺函數庫互用的計算效率做更多工作。
[1]劉丹,霍建華,郭世偉.新一代遙測網絡系統(tǒng)及其傳輸組網方式研究分析[J],計算機測量與控制,2015,23(3):1023-1025.
[2]黨懷義.典型大數據倉庫-飛行試驗數據倉庫設計[J].計算機測量與控制,2015,23(4):1407-1409,1413.
[3]李千目.軟件體系結構設計[M].北京:清華大學出版社,2008.
[4]盛勇,白光豐,范旭明.實時反射內存網絡在試飛實時監(jiān)控系統(tǒng)中的應用[J].計算機測量與控制,2014,22(7):2297-2300.
[5]潘愛民.Windows內核原理與實現(xiàn)[M].北京:電子工業(yè)出版社,2010.
[6]莫歐,凱尼格.C++沉思錄[M].北京:人民郵電出版社,2002.
[7]劉濱,C++Builde高級編程實例精解[M].北京:國防工業(yè)出版社,2000.
[8]顧聞,周飛,楊宏兵.基于C#.NET與MATLAB混合編程的動態(tài)調度軟件系統(tǒng)開發(fā)[J].計算機應用與軟件,2014(12):17-20.
[9]王世香.精通MATLAB接口與編程[M].北京:電子工業(yè)出版社,2007.
[10]王昊遠,施展,崔永進.基于Matlab的IIR數字濾波器快速設計[J].西安工程大學學報,2015(12):150-152.
Research and implementation of real-time analysis and decision-making method for flight test
QIN Yang-sen1,F(xiàn)AN Yan-qin2,NIE Rui1,QIAO Dong-feng1
(1.Chinese Flight Test Establishment,Xi'an 710089,China;2.Xi'an YuanFang General Aviation Technology Development Corporation,Xi'an 710089,China)
Depend on single numerical analysis and data calculation,it's hart to improve the evaluation efficiency of real-time flight test subjects and will have severely impact on quick decision in time of danger.Use the structured storage technology store the analytic result of flight test data,and employ the column mode memory alignment method to increase the efficiency of retrieval,inquiry and plotted output of single parameter,expand the class attributes and methods of the C++builder standard component,realize the customized result graph output for the routine and specific flight subjects;Imbed VC++dynamic calculation library with the process calls,syncretize the GUI programs of MATLAB,and share the common algorithm library of data analysis in test subjects to expand the synthetic output functions of the software.It realize the visual output to the result of real-time data analytics in flight test,and provide aeronautical decision making with more intuitive data references
flight test;data analysis;visual output;C++builder graphics
TN98
A
1674-6236(2016)17-0018-04
2015-09-03稿件編號:201509021
國防基礎科研項目(A0520132031)
覃楊森(1986—),男,廣西柳州人,碩士,工程師。研究方向:飛行試驗測試數據處理技術。