賈 雨,覃楊森,齊禪穎,王 爽
(1.中國飛行試驗研究院 西安市 710089;2.西安遠方航空技術(shù)發(fā)展總公司 西安 710089)
組件式自主實時監(jiān)控平臺設(shè)計技術(shù)研究
賈 雨1,覃楊森1,齊禪穎1,王 爽2
(1.中國飛行試驗研究院 西安市 710089;2.西安遠方航空技術(shù)發(fā)展總公司 西安 710089)
針對當前飛行試驗強度不斷加大,驗證科目特別是風險科目越來越多,試飛實時監(jiān)控軟件設(shè)計時間緊、修改頻繁的問題,提出了基于組件的試飛自主實時監(jiān)控平臺軟件設(shè)計方法。通過采用組件式設(shè)計思想,利用組件式方法在Visual Studio平臺下開發(fā)實現(xiàn)了基于組件的自主監(jiān)控平臺。經(jīng)過飛行試驗使用驗證,證明了該平臺能夠?qū)崿F(xiàn)安全監(jiān)控畫面的動態(tài)設(shè)計,同時實現(xiàn)根據(jù)試飛需求對監(jiān)控畫面進行快速調(diào)整,有效提高了試飛監(jiān)控準備效率。
組件式;自主監(jiān)控;動態(tài)編輯;軟件定制
試飛實時監(jiān)控[1-2]是指飛行指揮人員和地面試飛工程師通過數(shù)字、曲線、儀表燈可視化手段確定飛機飛行狀態(tài)以及動作是否到位,不僅可以迅速判斷飛行試驗的結(jié)果,而且對確保試飛安全具有重要意義。隨著型號飛機及飛行任務(wù)的不斷增加,對監(jiān)控畫面的要求也越來越高,特別是近幾年,新型號接踵而至,風險試飛科目不斷增加,需要監(jiān)控的參數(shù)大幅提升,對監(jiān)控畫面進行快速準備和便于修改的需求越來越突出。
目前,我院的監(jiān)控軟件[3]主要使用LabVIEW和C++Bulider設(shè)計,如圖1所示。多年的實踐表明,這種軟件設(shè)計方法存在一些較為突出的缺陷:第一,采用這種傳統(tǒng)程序設(shè)計語言實現(xiàn),代碼龐大,修改困難,需要專業(yè)人員編寫,導致其開發(fā)周期長;第二,監(jiān)控畫面基本有數(shù)據(jù)處理工程師獨立制作完成,缺乏試飛工程師的有效參與;第三,由于試飛課題需求的個性化,使得已開發(fā)成功的監(jiān)控軟件需要修改,完全重復(fù)使用率很低,導致大量重復(fù)性的開發(fā)工作,極大浪費人力和時間;第四,監(jiān)控畫面顯示內(nèi)容固定,不具備根據(jù)新需求實時動態(tài)修改的功能,需要專業(yè)人員修改代碼來增減監(jiān)控顯示內(nèi)容,時效性差。
針對上述問題,本項目借鑒工業(yè)化組態(tài)軟件[1,4]的設(shè)計方法,采用模塊化設(shè)計思想,研究開發(fā)基于組件的自主監(jiān)控平臺。使用靈活的組件方式(而不是編程方式),為數(shù)據(jù)處理工程師提供快速構(gòu)建監(jiān)控畫面的平臺,使用戶能根據(jù)自己監(jiān)控參數(shù)的任意組態(tài)[6-7],完成最終的實時監(jiān)控畫面編輯。項目中不僅對常用的LabVIEW控件進行封裝優(yōu)化,并使其能夠脫離LabVIEW安裝環(huán)境運行,而且根據(jù)實時監(jiān)控中的實際需求,編寫設(shè)計一套數(shù)字、曲線、儀表監(jiān)、飛機平顯及通用電子地圖等監(jiān)控組件,實現(xiàn)二者的統(tǒng)一靈活調(diào)用;數(shù)據(jù)處理工程師能夠按照實時/預(yù)處理任務(wù)書中監(jiān)控參數(shù)的要求表現(xiàn)形式選擇數(shù)字、曲線、儀表等組件并進行相應(yīng)的參數(shù)配置即可快速完成監(jiān)控畫面的設(shè)計,而不要求數(shù)據(jù)處理工程師具備專業(yè)的編程知識,有效的提高了畫面準備效率,降低了畫面設(shè)計的難度和復(fù)雜度;在監(jiān)控過程中,數(shù)據(jù)處理工程師、試飛工程師可以根據(jù)任務(wù)需求實時進行監(jiān)控參數(shù)的調(diào)整;本平臺實現(xiàn)了數(shù)據(jù)處理常用的基本算法,滿足常規(guī)的數(shù)據(jù)處理需求,使得監(jiān)控參數(shù)以正確的形式呈現(xiàn)給試飛工程師。
圖1 傳統(tǒng)監(jiān)控畫面
根據(jù)試飛實時監(jiān)控任務(wù)的特點,我們把自主監(jiān)控平臺劃分為3個功能模塊:數(shù)據(jù)I/O,過程邏輯,人機界面。3個部分接口清晰、功能獨立,圖2是軟件的結(jié)構(gòu)組成。數(shù)據(jù)I/O是本軟件的基礎(chǔ),為整個軟件提供數(shù)據(jù)來源,它向下為實時監(jiān)控客戶端提供參數(shù)名,向上提供數(shù)據(jù);過程邏輯將接收到的網(wǎng)絡(luò)數(shù)據(jù)處理為可理解和便于進一步利用的結(jié)果,并把處理結(jié)果遞交給人機界面模塊以驅(qū)動監(jiān)控組件;人機界面是監(jiān)控系統(tǒng)的前端,它通過過程邏輯模塊取得各種處理好的參數(shù),把監(jiān)控對象通過儀表、曲線、告警燈等形式反映給試飛工程師。
圖2 軟件結(jié)構(gòu)組成
試飛工程師根據(jù)任務(wù)需求,選取不同類型的監(jiān)控組價如儀表、曲線、告警燈等并拖放到畫面相應(yīng)位置,為該組件配置監(jiān)控參數(shù)并添加適當?shù)乃阈g(shù)運算,系統(tǒng)運行時將相應(yīng)的實時數(shù)據(jù)與監(jiān)控組件相關(guān)聯(lián)。用戶還可以將當前編輯的畫面進行保存以便下次使用。
1)拖放儀表、曲線、平顯地圖等控件到畫面相應(yīng)位置
2)參數(shù)配置
3)運算表達式配置
4)配置輸入輸出
系統(tǒng)獲取的實時數(shù)據(jù)需要進一步的處理,試飛工程師使用時根據(jù)參數(shù)的不同需求定義了相應(yīng)的算術(shù)運算,系統(tǒng)能夠解釋用戶的定義將接收到的數(shù)據(jù)解算成用戶所需的物理量并用于驅(qū)動監(jiān)控畫面上的各相應(yīng)監(jiān)控組件。過程如下:
1)啟動數(shù)據(jù)接收
2)各監(jiān)控組件從實時數(shù)據(jù)中獲取所需參數(shù)
3)表達式解析,包括四則運算、開方、冪次、通用三角函數(shù)
4)數(shù)據(jù)解算,包括取位,多字合并以及表達式運算
5)組件數(shù)據(jù)驅(qū)動
本模塊首先向?qū)崟r監(jiān)控系統(tǒng)客戶端發(fā)送當前監(jiān)控畫面所需的所有監(jiān)控參數(shù)名列表,然后通過另一個套接字從客戶端取回所對應(yīng)的監(jiān)控參數(shù),參數(shù)的位置和參數(shù)名列表一一對應(yīng)。過程如下:
1)與客戶端建立一個用于參數(shù)名發(fā)送的TCP鏈接;
2)發(fā)送當前畫面所需參數(shù)名,關(guān)閉該鏈接;
3)與客戶端建立一個用于參數(shù)接收的TCP鏈接;
4)接收客戶端發(fā)送的參數(shù)。
本軟件的網(wǎng)絡(luò)驅(qū)動程序主要針對我院目前在用的各實時監(jiān)控系統(tǒng),接口定義明確,數(shù)據(jù)I/O模塊實現(xiàn)相對簡單,文章將著重介紹人機界面的設(shè)計以及過程邏輯的實現(xiàn)。
人機界面模塊為試飛人員提供了與平臺交互的接口,是整個軟件的核心部分,用戶可以方便的通過鼠標拖拽組件的方式而不是編程方式進行控件的創(chuàng)建和配置編輯工作。監(jiān)控畫面的制作過程完全是一個可視化操作,利用鼠標等輸入設(shè)備,動態(tài)創(chuàng)建所需要的監(jiān)控組件并對其進行任意縮放和拖動位置以及進行參數(shù)和運算配置。從而實現(xiàn)用戶對監(jiān)控畫面的自由組態(tài)[8]。編輯好的畫面進入運行狀態(tài)后,各組件接收過程邏輯層解算好的參數(shù)實現(xiàn)實時狀態(tài)刷新。該模塊的實現(xiàn)主要包括畫面組件的開發(fā)[6]以及組件的動態(tài)調(diào)用。
1)自定義組件的開發(fā)
根據(jù)試飛監(jiān)控中的實際需求,開發(fā)了一組基于MFC的監(jiān)控組件,包括告警燈、儀表、曲線、柱狀圖等,以及飛機平顯、地圖等專用組件。監(jiān)控組件的開發(fā)分為靜態(tài)和動態(tài)兩部分,靜態(tài)部分沒有參數(shù)驅(qū)動,一般為控件的基本屬性部分如背景,參數(shù)名稱等。動態(tài)部分的任務(wù)是以直觀的動畫來模擬現(xiàn)場,反映被控對象的變化,其通過實時接收的數(shù)據(jù)流來驅(qū)動。
監(jiān)控過程中,通常需要創(chuàng)建很多監(jiān)控組件,并對其進行移動,縮放等操作,這種情況下,會產(chǎn)生嚴重的閃爍現(xiàn)象,給用戶帶來很大的不便。產(chǎn)生閃爍的原因是:窗口需要重繪時,總是先用背景色將顯示區(qū)域清除,然后才調(diào)用OnPaint進行繪制,由于背景色與繪圖內(nèi)容差別較大,就會產(chǎn)生閃爍現(xiàn)象。本系統(tǒng)中,采用雙緩沖機制[9]來繪制圖形,在繪圖區(qū)域顯示想要的畫面之前,先在內(nèi)存中創(chuàng)建一個與繪圖區(qū)域一致的對象,將圖形繪制到這個內(nèi)存對象上,再一次性將這個對象上的圖形拷貝到屏幕上,加快繪圖的速度,從而避免閃爍現(xiàn)象。
2)LabVIEW控件的封裝調(diào)用
LabVIEW[10]由美國國家儀器(NI)公司研制開發(fā),是一種圖形化的編程語言的開發(fā)環(huán)境,它廣泛地被工業(yè)界、學術(shù)界和研究實驗室所接受,視為一個標準的數(shù)據(jù)采集和儀器控制軟件。LabVIEW控件美觀實用,目前,我院大量監(jiān)控畫面通過LabVIEW進行開發(fā)設(shè)計。NI也為第三方編程環(huán)境提供了一套功能完善的ActiveX控件,根據(jù)試飛監(jiān)控的實際需求,我們對常用的LabVIEW ActiveX控件進行封裝優(yōu)化,以方便加載到自主監(jiān)控平臺中。豐富了用戶的選擇,使得數(shù)據(jù)處理工程師和地面試飛工程師可以根據(jù)任務(wù)的不同需求,選擇合適的組件來表現(xiàn)當前監(jiān)控參數(shù)。
由于MFC中可以輕松實現(xiàn)對CStatic類型控件的動態(tài)生成,位置移動和縮放,因此為每個監(jiān)控組件生成一個基于CStatic類的運行時包裝類,如圖3所示。通過這種方法,可以實現(xiàn)將自定義組件如儀表曲線以及封裝好的LabVIEW控件以統(tǒng)一的表現(xiàn)形式呈現(xiàn)給開發(fā)人員,實現(xiàn)二者的統(tǒng)一靈活加載。軟件運行時用戶點擊一個組件圖標并拖放到指定位置實際上就是為該組件的包裝類創(chuàng)建一個對象并進行顯示,并通過橡皮筋類(CRectTracker)來實現(xiàn)用線框選中該組件,并可以移動、縮放該組件,實現(xiàn)良好的人機交互。組件創(chuàng)建好之后,為該組件添加雙擊相應(yīng)事件,在彈出的對話框中設(shè)置該組件的基本屬性如組件名稱及背景顏色等、配置要監(jiān)控的參數(shù)以及參數(shù)的運算信息。每一個組件的創(chuàng)建與運行都是獨立的,單個組件的修改與增刪不會對系統(tǒng)的運行產(chǎn)生任何影響。圖4是一幅監(jiān)控畫面的一般設(shè)計過程。
圖3 各組件包裝類結(jié)構(gòu)
在一幅監(jiān)控畫面中所有組件呈樹狀關(guān)系,如下圖5所示。在畫面存儲時希望也能夠保持這種層次關(guān)系,本軟件采用XML (eXtensible Makeup Language)文檔來表示這種樹狀關(guān)系。XML[8]定義了利用簡單、易懂的標簽對數(shù)據(jù)進行標記的一般語法,提供了計算機文檔的一種標準格式。利用XML文檔存儲編輯好的監(jiān)控畫面不但結(jié)構(gòu)清晰,而且完全以文本方式存儲,可以通過任何一種編輯工具都可以進行查看和修改,使用戶編輯十分方便。同樣,當需要打開一幅畫面時,就可以根據(jù)XML文件中的節(jié)點及其屬性生成正確的圖形組件。
圖4 畫面生成過程
圖5 畫面存儲結(jié)構(gòu)
從數(shù)據(jù)流的視角來看,自主監(jiān)控平臺可以看做一系列的數(shù)據(jù)輸入輸出接口和施加于輸入輸出之間的數(shù)據(jù)運算。數(shù)據(jù)運算過程可以是簡單的數(shù)據(jù)提取和格式轉(zhuǎn)換、同時也包括較為復(fù)雜的取位運算、多字合并以及更為復(fù)雜的表達式運算,對于常規(guī)監(jiān)控畫面來說,其輸入輸出接口和數(shù)據(jù)處理算法的組合都是確定的,然而本軟件中各組件相關(guān)的輸入?yún)?shù)和運算都由用戶動態(tài)配置的,軟件無法預(yù)知所有的輸入輸出關(guān)系,因此,過程邏輯層的參數(shù)提取解算模塊需要通過解析用戶輸入的各組件配置信息,獲得各組件的輸入?yún)?shù)和對應(yīng)運算類型,計算出所需要的物理量,從而驅(qū)動組件的動態(tài)運行。
當數(shù)據(jù)I/O層接收到實時數(shù)據(jù)之后,參數(shù)提取模塊根據(jù)每個組件的輸入?yún)?shù)名配置信息與數(shù)據(jù)I/O層向下發(fā)送的參數(shù)名列表建立相應(yīng)的映射,然后從實時數(shù)據(jù)流中提取對應(yīng)的若干參數(shù)值,傳遞給參數(shù)解算模塊進行運算輸出或者直接輸出給該組件的數(shù)據(jù)驅(qū)動接口。
參數(shù)解算模塊接收到的PCM參數(shù)通常是由服務(wù)器軟件已經(jīng)解算好的物理量,對于該類型參數(shù),解算模塊不做任何操作直接輸出到該組件的數(shù)據(jù)驅(qū)動接口。但是,同時也存在著部分服務(wù)器無法完成解算或解算過于復(fù)雜的參數(shù),如一個PCM字中包含了多個開關(guān)量。對于這部分參數(shù),則需要在監(jiān)控畫面中進行計算以得到正確的物理量。圖6是一個組件完整的參數(shù)提取解算過程。
圖6 參數(shù)提取過程
1)取位、多字合并運算
試飛遙測中PCM字[12]長為16位,監(jiān)控中,可能需要兩個或更多PCM字來表示一個完整的監(jiān)控參數(shù),如429總線[13]參數(shù);或者只需要一個PCM中的某幾位來表示一個參數(shù),如告警燈等。這時,我們需要通過將實時獲取的參數(shù)進行取位、多字合并運算以得到正確的參數(shù)表現(xiàn)形式來驅(qū)動相應(yīng)監(jiān)控組件的運行。
2)表達式運算
表達式解析[14]是通過詞法分析和堆棧操作對表達式進行重新組合,形成一棵表達式樹,表達式計算是自上而下的深度遍歷表達式樹,計算每一個樹節(jié)點的值,根節(jié)點的值就是表達式最后的值。
數(shù)學表達式本質(zhì)上是一個字符串,所以詞法分析的任務(wù)是對構(gòu)成表達式的字符串流從左至右的掃描,然后根據(jù)構(gòu)詞規(guī)則識別表達式中的單詞和符號,并將其保存到定義好的EXNode數(shù)據(jù)結(jié)構(gòu)中,該結(jié)構(gòu)包含了這個單詞或符號節(jié)點類型 (操作數(shù)或運算符)等信息。詞法分析得到了可能的表達式樹節(jié)點,在構(gòu)造表達式樹之前,首先要根據(jù)事先定義好的構(gòu)詞規(guī)則對表達式的各個可能的樹節(jié)點進行合法性檢查,在確定所有的樹節(jié)點合法后,才能進行堆棧操作構(gòu)建表達式樹。
表達式計算[15]是在表達式樹的基礎(chǔ)上進行的,首先通過對表達式樹的遍歷進行表達式中常量,變量值進行合法性檢查,然后采用遞歸的方法計算表達式樹的各個樹節(jié)點的值,根節(jié)點的值就是表達式的最終計算結(jié)果。
本組件式監(jiān)控平臺在Visual Studio平臺下,采用組態(tài)軟件設(shè)計思想和模塊化方法開發(fā)完成。通過該自主監(jiān)控平臺,數(shù)據(jù)處理工程師根據(jù)監(jiān)控參數(shù)的表現(xiàn)形式選擇相應(yīng)的監(jiān)控組件進行參數(shù)配置和運算配置即可完成監(jiān)控畫面的編輯任務(wù);試飛工程師在監(jiān)控過程中可以靈活的調(diào)整監(jiān)控參數(shù)和畫面布局;軟件根據(jù)配置參數(shù)接收網(wǎng)絡(luò)數(shù)據(jù)并根據(jù)定義的運算進行相應(yīng)解算,驅(qū)動整個監(jiān)控畫面圖形元素的運行,為指揮人員和地面試飛工程師提供及時、準確的飛機狀態(tài)信息。與傳統(tǒng)的基于LabVIEW[16-17]和C++Bulider監(jiān)控畫面[18]相比,能夠有效提高畫面準備效率,提高畫面編輯的靈活性。
[1]白效賢,楊廷梧,袁炳南.航空飛行試驗遙測技術(shù)發(fā)展趨勢與對策[J].測控技術(shù),2010,29(11):6-9.
[2]王延路,袁炳南,劉語喬.民機試飛空地一體化綜合監(jiān)控網(wǎng)絡(luò)系統(tǒng)技術(shù)研究 [J].現(xiàn)代電子技術(shù),2012,35(15):110-112.
[3]易文星,張李超,趙祖燁,等.基于數(shù)據(jù)引擎的通用數(shù)據(jù)采集與監(jiān)控軟件架構(gòu)設(shè)計與應(yīng)用[J].鍛壓裝備與制造技術(shù),2014,49(1):93-96.
[4]夏駿梅.基于組態(tài)軟件的綜合自動化平臺的設(shè)計與實現(xiàn)[J].Electronics World,2013(10):131-132.
[5]王克亮.監(jiān)控組態(tài)軟件的相關(guān)技術(shù)發(fā)展趨勢[J].山東工業(yè)技術(shù),2015(1):185.
[6]應(yīng)偉軍,趙燕偉,胡長碩,等.基于組態(tài)軟件的水電站監(jiān)控系統(tǒng)的設(shè)計與開發(fā)[J].計算機測量與控制,2015,23(3):783-786.
[7]于玲,李娜.工業(yè)組態(tài)監(jiān)控軟件及應(yīng)用 [M].北京:化學工業(yè)出版社,2012.
[8]Han L,Yin A J.Development and testing of measurement and control software system based on configuration technology[J].China Measurement&Test,2010.
[9]江建國,溫少營,張瑞楠.基于雙緩沖技術(shù)的GDI+無閃爍繪圖[J].計算機應(yīng)用,2012,32(S2):136-139.
[10]Wang W,Li C,Tollner E W,et al.Development of software for spectral imaging data acquisition using LabVIEW[J].Computers&Electronics in Agriculture,2012,84(11):68-75.
[11]莫正波,宋玲,呂強,等.XML文檔語義檢索方法研究[J].計算機工程與應(yīng)用,2013,49(11):121-125.
[12]宋政斌,張國旺.基于IRIG 106固態(tài)記錄器記錄標準的PCM數(shù)據(jù)處理技術(shù)研究[J].計算機測量與控制,2014,22(2):531-533.
[13]衛(wèi)保國,蔡偉,郝志浪,等.航電ARINC429總線監(jiān)測系統(tǒng)的設(shè)計與實現(xiàn) [J].電子設(shè)計工程,2014,22(3):37-41.
[14]鄭致力.算術(shù)表達式解析引擎的設(shè)計及實現(xiàn)[D].北京:北京郵電大學,2012.
[15]鄧緒斌.基于最優(yōu)樹聯(lián)配的正則表達式學習算法[J].復(fù)旦學報:自然科學版,2011(6):797-802.
[16]沈瑜,賈妍,劉文慧.基于LabVIEW的比例溢流閥性能測試系統(tǒng)的研究 [J].西安工程大學學報,2016,30(6):808-812.
[17]秦紹輝,胥光申,沈丹峰,等.基于LabVIEW的噴氣織機綜合性能測試系統(tǒng)[J].西安工程大學學報,2016,30(1):107-111.
[18]張雁霞,渠紅光,王晶,等.基于光纖傳輸?shù)臒o人值守遠程數(shù)采實時監(jiān)控系統(tǒng) [J].現(xiàn)代應(yīng)用物理,2016(3):87-91.
Research of component-type real-time monitoring platform designing technology
JIA Yu1,QIN Yang-sen1,QI Chan-ying1,WANG shuang2
(1.Chinese Flight Test Establishment,Xi'an 710089,China; 2.Xi'an Yuanfang General Aviation Technology Development Croporation,Xi'an 710089,China)
In view of the problem that flight test strength increasing,and verify subjects especially risk subjects becoming more and more currently,real-time monitoring software design time is very tight and modified frequently.autonomous real-time monitoring platform software designing method based on components was proposed in this paper.By adopting the thought of component designing,an independent monitoring platform is developed by using the component method on the platform of Studio Visual.After flight test validation,it proved that the platform can realize the dynamic designing of the safety monitoring picture,and adjust the monitor screen quickly according to the test requirements.The software effectively improve the flight test monitor preparation efficiency.
component-type; independent monitoring;dynamic design; software customization
TN06
A
1674-6236(2017)17-0041-05
2016-06-26稿件編號:201606199
賈 雨(1988—),男,陜西府谷人,碩士研究生,工程師。研究方向:試飛遙測監(jiān)控與數(shù)據(jù)處理。