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