史永勝,李秀靜
(中國民航大學 航空工程學院,天津300300)
在國際上,各種商業性質的虛擬儀表[1-4]開發系統已被推出,這些軟件具有良好的性能,且逼真度高,但是有License的限制,價格昂貴,并且在運行前需要預裝相關軟件及大量庫文件。在國內,虛擬儀表的研究最早是從消化國外引進的虛擬儀器產品開始的,隨著技術的不斷更新,虛擬儀表的研究已得到長足的發展,但尚未能研制出滿足國內需要且被廣泛應用的虛擬儀表系統開發平臺[5]。李堅利等在對儀表的通用性和實用性研究的基礎上提出了虛擬儀表生成系統的設計方法,但沒有考慮到與外部的接口問題[6];陳懷民等利用GL Studio完成了飛行仿真虛擬儀表軟件的設計,然而該軟件帶來一定的成本問題,并且只能實現部分儀表的仿真[7]。針對這種情況,在前人的研究成果的基礎上,對虛擬儀表系統進行了深入的研究,采用基于“單元要素”的思想,設計并實現了可視化虛擬儀表開發平臺。
虛擬儀表的一個顯著特征是按需構造。用戶可用“設計者”與 “使用者”的雙重身份來制作和使用虛擬儀表。為此,系統需要具備儀表單元定義、虛擬儀表裝配和仿真調試等基本操作功能。
本系統采用基于 “單元要素”的設計思想,將虛擬儀表所需單元組件按照功能與屬性劃分類別,構造各類單元要素。系統的實現根據面向對象的程序設計思想,各個儀表單元采用相互獨立的類進行封裝,針對不同類別儀表單元的屬性特征合理地設計數據結構及功能函數。
在實際應用中,虛擬儀表面板上的儀表單元數量通常較多,類別各異。為了縮短虛擬儀表的開發周期,便于優化和維護,系統采用儀表單元組件調用的方式來實現虛擬儀表的構建[8],即分別實現各儀表單元并按類別存儲,再根據用戶需求,將選定的儀表單元裝配,形成可獨立操作的虛擬儀表。
根據構成虛擬儀表的各儀表單元的性質及功能,將其分成3類:Σ= (I,C,W)。I代表儀表單元集I=I1+I2+…+In,Ii∈ {指針表,數字表,波型表,柱狀圖表,……},儀表單元可表示為


C 代表控制單元集,C =C1+C2+…+Cn,Ci∈ {按鈕式開關,旋動式開關,滑動式開關,……},控制單元可表示為


設f(x)為集合C 的一個函數,對于 x ∈C 存在f(x)=Τ(xi),其中Τ(x)表示導入控制單元元集上資源的函數;警示單元實現方法與控制單元相類似,故省略。
在虛擬儀表的構建過程中,用戶根據實際應用中所需的構成要素,從系統中已存在的不同類別的儀表單元中選定所需儀表單元,再通過設置儀表單元位置,設定儀表單元之間的關系、控制單元與儀表單元及數據之間的關系,即可得到具有可操作性和實用性的虛擬儀表。
(1)設置儀表單元之間的關系設F(x)為儀表單元的函數,則

式中:xi表示該儀表單元的屬性。假定函數M(x,y)表示在一定條件下x,y 之間存在的函數關系,令A =F(x),B =F(y),則對于 x∈{儀表單元A 的屬性集},y∈{儀表單元B的屬性集},M(A,B)表示儀表單元A、B 之間存在的函數關系。
(2)設置控制單元與儀表單元及數據間關系
設A= {a1,a2,…},B= {b1,b2,…},C= {c1,c2,…},其中A 表示儀表單元的合集,B 表示控制單元的合集,C 表示數據文件的合集。假設f(x),f(y),f(z)分別為A、B、C 的函數,則對于 z∈C,-x ∈A,y ∈B,使得

上式表示當儀表單元和控制元件狀態選定的條件下系統會有相應數據與其匹配,并且該數據會以特定形式顯示在對應儀表單元面板中。
系統依據虛擬儀表設計及生成的過程將系統分為單元設計、幾何成圖、數據處理3個部分。在各部分中再依據儀表單元的類別及功能進行詳細的模塊劃分[9,10]。其系統功能結構如圖1所示。

圖1 系統功能結構
單元設計部分,根據儀表單元的具體特征劃分成多個模塊,并在各模塊內針對儀表單元的屬性特征進行具體參數設計。幾何成圖部分,通過獲取儀表單元參數信息實現圖形的繪制與顯示。數據處理部分,依據儀表單元的類別劃分成多個模塊,它們實現的功能主要是數據保存、數據讀取、數據轉換以及對特定數據類型的顯示與處理等。各個模塊通過定義相應的類將其進行封裝,并且每個類提供一定的接口。每一個模塊對應一個采用對話框形式實現的控制視圖作為用戶接口,用戶通過該視圖即可完成儀表單元參數的可視化設計。
系統采用事件驅動為主,數據驅動為輔的運行控制策略[11]。點擊相應的菜單項或按鈕,窗口接收事件消息并對其進行處理,系統即會完成相應操作。
系統各模塊之間以事件消息和數據信息為紐帶進行連接,具體采用指針和傳參數的方式實現。在系統執行過程中,各個單元設計模塊之間主要通過主控框架發出的消息進行控制和調用;通過事件響應消息及標志、名字、簡單數據參數來控制選擇幾何成圖模塊及數據處理模塊的功能。
系統基于MFC (Microsoft foundation classes),應用動態鏈接庫 (dynamic link library,DLL)技術,將用戶設計出的虛擬儀表脫離系統,形成獨立文件[12]。當系統工作時,可直接將其嵌入到應用程序中,有效地實現了儀表模型使用的可復用性。系統應用多線程技術,根據已生成的虛擬儀表配置相應的數據流,實現模擬仿真。用戶界面采用了標準的MFC界面風格,菜單欄和狀態欄負責具體命令操作及狀態顯示,視圖部分分為兩個窗口,用戶在設計區設計的儀表能夠及時、直觀地在視圖區中顯現,實現所見即所得的設計效果,提高了系統的可交互性。
儀表單元按照功能設計為顯示類儀表單元和控制類儀表單元。顯示類儀表單元包括數字表、指針表、波型表、柱狀圖表及警示燈等;控制類儀表單元由開關旋鈕等各種形式的控制單元組成。各儀表單元的繪制主要通過圖形設備接口 (graphics device interface,GDI)繪制以及紋理貼圖的方式實現。
儀表單元的設計過程由參數設計、儀表單元顯示和數據存儲3部分組成。系統根據儀表單元的外觀和屬性特征自動分配數據存儲結構,每一種儀表單元采用相應的類進行封裝。為了縮短設計周期,降低設計難度,在不影響各儀表單元使用的前提下對其指針、表盤等細節做了適當的簡化。儀表單元創建的流程如圖2所示。

圖2 儀表單元創建流程
虛擬儀表是一個綜合型儀表,由若干個顯示類儀表單元、控制類儀表單元構成。虛擬儀表原理如圖3所示。

圖3 虛擬儀表原理
(1)調用單元組件
虛擬儀表的構建采用組件調用的方式實現。通過對表盤的參數進行設計完成表盤面板的整體設計后,根據待設計虛擬儀表的需要,按照儀表單元類別及名稱從已設計好的儀表單元中選定儀表單元,將其載入到表盤面板中,根據需要調整表盤面板布局后即可完成虛擬儀表的初步設計。
(2)設置表間邏輯關系
在一個虛擬儀表中,每一個儀表單元都有特定的輸入輸出邏輯,同時,不同的儀表單元的輸入和輸出信息之間也會相互制約,相互影響。因此,在虛擬儀表的創建過程中需要對儀表單元之間的關系進行設置,防止各個儀表單元在顯示信息時出現邏輯錯誤。
儀表單元之間邏輯關系的設置通過可視化編輯界面完成。系統根據儀表單元的類別采用相應的圖標進行標記。通過鼠標移動圖標位置、設置連線關系等操作來實現儀表單元之間邏輯關系的設定。儀表單元在界面中的位置坐標反應其間的層次關系,有線段連接表示其間存在邏輯關系,具體邏輯關系通過編輯關系函數設置。
(3)設置控制關系
為了實現虛擬儀表的仿真功能,需要對其控制元件的不同狀態與相應儀表單元之間的關系進行設定,并且每一組關系均需為其配備相應的數據文件,三者之間的關系如圖4所示。其中,數據文件通過表盤提供的外部設備接口獲得。

圖4 控制關系
為了提高代碼的重用性和可移植性,將封裝后的虛擬儀表相關模塊以DLL形式發布,從而可以方便地將其集成到VC、VB、Delphi等開發的應用程序中,實現虛擬儀表的可復用性[13]。虛擬儀表設計工作完成后,根據虛擬儀表的名稱將相關數據通過系統提供的 “生成”及 “導出”功能形成獨立的數據庫文件,并將其與DLL 文件與LIB文件保存至指定文件夾中。虛擬儀表的導出流程如圖5所示。

圖5 虛擬儀表導出流程
虛擬儀表的仿真通過系統調用已導出的虛擬儀表文件,按照加載DLL->屬性設置->獲取外部數據的步驟實現。系統采用多線程技術實時監控控制單元狀態[14],捕獲實時數據,并將數據轉化成特定的形式顯示到對應的儀表單元中。虛擬儀表仿真流程如圖6所示。
通過設置參數完成虛擬儀表表盤的設計后,從系統中已存在的儀表單元中選擇所需單元 (如數字表、指針表、控制單元等),調整其在表盤面板中的位置;在關系設置視圖中設置儀表單元層次關系、函數關系、控制關系及數據關系等,再配上通過外部接口傳給系統的瞬態信號,就構成了一臺虛擬電壓表,如圖7 所示。通過表盤上的按鈕,即可實現對虛擬電壓表的控制。采用這種方式,也可以設計生成虛擬示波器、虛擬探傷儀等不同類型的虛擬儀器。

圖6 虛擬儀表仿真流程

圖7 虛擬電壓表
本文完成的虛擬儀表設計平臺能夠實現儀表單元的設計與封裝,通過調用組件方式構建虛擬儀表,利用DLL 及多線程等技術完成虛擬儀表的仿真測試,以及通過虛擬儀表設計實例驗證了系統的可行性。問題提出 “單元要素”組合與裝配的模塊化設計方法具有開發周期短、便于維護、易于擴充、開發成本低,其思想通用性強,可廣泛應用于類似系統或平臺的設計。
[1]Zhu Xiaodong,Cao Jun,Wang Fenghu.Non-destructive testing of wood composites based on virtual instrument[C]//3rd International Congress on Image and Signal Processing,2010:3368-3371.
[2]Yue Wenhui,Chen Xuehua,He Yanfang.The development of virtual instrument and its application in mechanical vibration measurement[C]//International Conference on Electric Information and Control Engineering,2011:829-832.
[3]GAO Jianshu,FU Yuntao,XU Liangliang.The design and implementation of virtual aircraft instruments[C]//The Proceedings of Asia-Pacific International Symposium on Aerospace Technology,2010:699-702.
[4]Hu Keyong,Guo Zhongwen,Che Zhaodong,et al.Composition model of complex virtual instrument for ocean observing[J].Journal of Software,2014,9 (5):1177-1188.
[5]WU Xinghua,WANG Xu.Present situation and prospect of application research on domestic virtual instrument technology[J].Modern Scientific Instruments,2011 (4):112-116 (in Chinese).[伍星華,王旭.國內虛擬儀器技術的應用研究現狀及展望 [J].現代科學儀器,2011 (4):112-116.]
[6]LI Jianli,KONG Wenyan.The performance requirements analysis of virtual instrument and system design [J].Silicon Valley,2014,13 (1):20-21 (in Chinese). [李堅利,孔文艷.虛擬儀表性能需求分析及系統設計 [J].硅谷,2014,13(1):20-21.]
[7]CHEN Huaimin,WU Jinwen,HUANG Xiaobo.Design and realization of flight simulation virtual instrument based on GL Studio[J].Measurement & Control Technology,2013,32(5):89-95 (in Chinese). [陳懷民,吳錦雯,黃曉波.基于GL Studio的飛行仿真虛擬儀表軟件設計與實現 [J].測控技術,2013,32 (5):89-95.]
[8]Li Fangwen,Shen Xukun.A component-based aircraft instrument rapid modeling tool[J].Journal of Zhejiang University-Science C(Computers &Electronics),2010,11 (11):911-918.
[9]Guo Zhongwen,Liu Chao,Wang Xi,et al.CVIS:Complex virtual instruments system architecture [C]//IEEE Interna-tional on Instrumentation and Measurement Technology Conference,2013:566-571.
[10]Zhang Lin,Li Taizhou,Chen Zhuo.Design and research of virtual instrument development board [C]//International Conference on Advances in Computer Science,Environment,Ecoinformatics,and Education,2011:231-238.
[11]Qing Xue,Luo Jia,Liu Yonghong.Research and application of virtual instrument for tank integrated simulator based-on Lab Windows [C]//International Conference on Quality,Reliability,Risk, Maintenance,and Safety Engineering,2012:1458-1460.
[12]SHI Chunhu,QU Hongxing,CHEN Lei.Design and implementation of a helicopter virtual instrument DLL [J].Electronic Sci & Tech,2011,24 (5):105-107 (in Chinese).[石春虎,曲紅星,陳雷.直升機虛擬儀表DLL 設計與實現[J].電子科技,2011,24 (5):105-107.]
[13]LONG Teng,LIU Li.Research of a general approach to design aeronautical virtual instrument system with low cost[J].Chinese Journal of Scientific Instrument,2008,29 (4):434-437 (in Chinese). [龍騰,劉莉.低成本航空虛擬儀表系統的通用設計方法研究 [J].儀器儀表學報,2008,29 (4):434-437.]
[14]XU Junming,LI Guolin,ZHAO Hongchao,et al.Common integrating method of virtual instrument based on multi-threak[J].Microcomputer Information,2010,26 (8-1):10-12(in Chinese).[徐君明,李國林,趙紅超,等.基于多線程的虛擬儀表通用集成方法 [J].微計算機信息,2010,26(8-1):10-12.]