蔡偉健 汪洋
【摘 要】本文描述了基于MATLAB和ActiveX對飛行仿真數據進行數據曲線自動生成方法的探索,并給出了MATLAB程序開發的設計方法和實現過程。
【關鍵詞】飛行數據;數據曲線;自動生成;ActiveX;MATLAB
中圖分類號: TJ760.331文獻標識碼: A文章編號: 2095-2457(2019)10-0079-002
DOI:10.19694/j.cnki.issn2095-2457.2019.10.032
Flight Data Plot Document Auto Generation
CAI Wei-jian WANG Yang
(China Helicopter Research And Development Institute,Jingdezhen Jiangxi 333000,China)
【Abstract】A method of Flight Data Plot Document Auto Generation Based on MATLAB and ActiveX is detailed.A program based on MATLAB script is designed and implemented.
【Key words】Flight data;Data plot;Document auto generation;ActiveX;MATLAB
0 引言
在飛行器研制過程中,會進行大量的試驗,不管是在模擬器上進行的仿真試驗,還是在真機上進行飛行測試,都能得到大量的飛行數據。工程師往往要將這些數據進行分析、整理,繪制成一系列曲線,編寫相應的試驗報告。在以往的工作中,都是在Excel或MATLAB中根據飛行數據和記錄的時間點,手動選取所需要的數據段,繪制相應的曲線,然后截圖復制到Word中,不斷重復這個過程,直到所有科目的所有參數曲線都編入報告。這樣做不但工作量巨大,報告完成周期長,而且容易出錯。因此,將連續的飛行數據和所記錄的科目信息綜合,自動生成相應的Word格式的試驗報告,能夠大大提高工作效率,降低報告錯誤率。
本文基于MATLAB和ActiveX控件,研究數據曲線文檔自動生成方法,設計并開發了MATLAB程序,實現了自動報告生成的功能,解決了工程實際問題。
1 數據曲線文檔生成方法
1.1 MATLAB簡介
MATLAB是美國MathWorks公司出品的商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。MATLAB在數學類科技應用軟件中首屈一指,能夠出色地完成數據處理和曲線生成等工作,使用其編寫腳本程序也十分方便,因此廣泛應用于工程領域。[3]
1.2 ActiveX簡介
ActiveX是Microsoft對于一系列策略性面向對象程序技術和工具的稱呼。其中主要的技術是組件對象模型(COM)。Active標準中最常用的技術有3中:控件、文檔和腳本。ActiveX是Microsoft對于一系列策略性面向對象程序技術和工具的稱呼。ActiveX插件以前也叫做OLE控件或OCX控件,它是一些軟件組件或對象,可以將其插入到WEB網頁或其它應用程序中。ActiveX也是一種標準.這種標準包括控件(Controls)、文檔(Documents)、腳本(Scripts)這三種最常用的技術,同時也包括服務器端技術和客戶端技術。
由于ActiveX插件是一套基于COM的可以使軟件組件在網絡環境中進行互操作,而不管該組件是用何種語言創建的技術,因此,在MATLAB中也可以方便地調用這種插件,從而實現Word文檔的創建、編輯、排版和保存等操作。
1.3 Word文檔對象模型
在使用ActiveX對Word進行操作時,是使用Word文檔對象模型提供的對象進行交互的。Word對象模型中最重要的兩個對象類是Application和Document類,原因是在大部分時間里,要么是在使用Word應用程序本身,要么是以某種方式處理Word文檔。Application對象表示Word應用程序,是其他所有對象的父級,它的所有成員通常作為一個整體應用于Word,可以使用該對象的屬性和方法來控制Word環境。Document對象是Word編程的中樞,當打開文檔或創建新文檔時,就創建了新的Document對象,它是Documents集合中的一個元素,可以使用其屬性或方法來打開、創建、保存、激活或者關閉文檔。Selection對象表示當前選擇的區域。整個應用程序在任何時刻,只能有一個活動的Selection對象,選定內容可以包含文檔的一塊區域,也可以被對應一個插入點。Range對象表示文檔中的一個連續的區域,由一個起始字符位置和一個結束字符位置定義,與Selection不同,它可以再文檔中擁有多個定義。
1.4 數據曲線自動生成總體思路
基本設計思路如圖1所示,首先載入飛行數據和科目配置信息,根據配置信息得到按科目劃分的數據塊,每個數據塊對應一段時間的數據,然后使用ActiveX打開Word文檔,并進行基本格式設置、寫入文檔標題等,根據配置信息,遍歷所有科目,使用MATLAB自帶的plot函數將處理好的數據繪制成曲線,然后將該科目下所有曲線寫入Word文檔;最后完成所有科目后關閉并保存文檔。
2 程序設計與開發
2.1 數據預處理
首先將數據文件導入到MATLAB的工作空間,其中包括了某一段連續時間的所有飛行數據。其次將科目信息配置文件導入到工作空間,這其中包括了所有需要從這段數據中獲取的各個科目的名稱、狀態描述、開始時間和結束時間。如果在飛行過程中沒有記錄這個時間,就需要通過其他查看試飛數據的軟件對飛行狀態進行分析,得到起止時間。
2.2 創建文檔
判斷Word是否已經打開,若已打開,就在打開的Word中進行操作,否則就打開Word。
使用actxserver接口啟動Word程序服務,并獲取Word句柄,用于對程序的控制。然后判斷文檔是否存在,如果存在則打開該文檔,并將內容全部刪除,如果不存在則創建新文檔用于寫入內容。
使用ActiveX提供的接口,獲取Document、Content、Selection句柄,根據需要,設置頁面布局、頁邊距、文檔標題,以及文字的大小、字體和段落格式等。
2.3 繪制曲線
使用plotData函數進行曲線繪制,并返回圖像句柄,用于后續寫入文檔使用。
每次生成一組曲線,即一個科目的所有數據曲線,包括操縱量、飛行姿態、角速度、線加速度、空速、地速、高度、位置、升降速度、舵面位置、以及發動機的相關參數等。
根據配置文件所列的科目信息,設置開始時間和結束時間,據此選取適當的數據段進行數據曲線繪制,如下圖所示:
2.4 寫入文檔
需要寫入文檔的內容主要包括科目標題,飛行狀態和數據曲線。通過Selection接口設置寫入標題的位置、字體、段落格式,并控制光標移動。使用Shape接口對文檔中的所有圖片進行操作。
對每個曲線句柄進行遍歷,將圖形復制到剪切板,給定起始位置,粘貼到文檔中,并設置圖片嵌入格式等。
2.5 應用
在某型直升機飛行品質仿真試驗完成后,使用本文描述的方法所編寫的程序進行試驗報告文檔生成,將原來需要兩周時間完成的試驗報告,縮短為一天,其中,數據曲線生成僅僅用時不到10分鐘。
3 結論
本文介紹了一種飛行數據曲線文檔的自動生成方法,該方法能夠根據所配置的科目信息和飛行數據,快速生成數據曲線文檔,大大降低試驗報告編寫時間,降低錯誤率。
【參考文獻】
[1]張衛祥,吳欣,劉文紅.一種結構化文檔自動生成方法的研究與實現[J].飛行器測控學報.2007.12.
[2]劉從柏.面向Word文檔電子印章軟件系統的開發[D]. 中山大學.2007.
[3]韓國新等譯,W·厄恩斯特編著.MicrosoftActiveX技術與應用.科學出版杜,1997.
[4]MathWorks,Inc.MATLAB幫助文檔.