摘 要: 結(jié)合一個基于網(wǎng)絡(luò)的虛擬儀表系統(tǒng)的開發(fā)過程,,介紹了采用面向?qū)ο?/a>技術(shù)進(jìn)行VI通用面板可視化軟件的設(shè)計以及實現(xiàn)網(wǎng)絡(luò)間數(shù)據(jù)傳輸?shù)姆椒ā?BR> 關(guān)鍵詞: 虛擬儀器 可視化 面向?qū)ο?Socket
????虛擬儀器是指具有虛擬儀器面板的個人計算機(jī)儀器,,它是計算機(jī)資源,、模塊化功能硬件與用于數(shù)據(jù)分析、過程通信及圖形用戶界面的應(yīng)用軟件的有機(jī)結(jié)合[1][2],。
它利用軟件在屏幕上生成各種儀器面板,,完成對數(shù)據(jù)的處理、表達(dá),、傳送,、存儲、顯示等功能[3][4],。虛擬儀器與傳統(tǒng)儀器相比,,其主要優(yōu)點(diǎn)是可以由用戶自己定義、自己設(shè)計儀器系統(tǒng),,以滿足不同的要求,,使儀器的功能更加強(qiáng)大、靈活,,而且很容易同網(wǎng)絡(luò),、外設(shè)及其他應(yīng)用相連接。這樣既降低了價格,,節(jié)省開發(fā),、維護(hù)的費(fèi)用,又縮短了技術(shù)開發(fā)周期[4],。
虛擬儀器的關(guān)鍵技術(shù)之一就是應(yīng)用軟件[1][5][6],,這是因為,虛擬儀器的主要功能是由軟件來體現(xiàn)的,,即“軟件就是儀器”,。虛擬儀器的軟件開發(fā)平臺應(yīng)該提供一個圖形化的編程設(shè)計環(huán)境,值得一提的是NI的LabView和LabWindows及HP的VEE[4] ,。
本文介紹的基于網(wǎng)絡(luò)的虛擬儀表系統(tǒng)是一個不包含數(shù)據(jù)采集及總線控制系統(tǒng)的虛擬測試平臺,,主要用于對測試數(shù)據(jù)文件的事后處理或?qū)Ρ粶y對象進(jìn)行實時仿真測試,形成網(wǎng)絡(luò)化測試仿真系統(tǒng),。
1 基于網(wǎng)絡(luò)的虛擬儀表系統(tǒng)
系統(tǒng)利用軟件在計算機(jī)屏幕上生成儀表面板,,通過數(shù)據(jù)接口接收需要處理顯示的儀表數(shù)據(jù)或軟件產(chǎn)生的仿真數(shù)據(jù),實時顯示刷新數(shù)據(jù),、波形和圖像,。該系統(tǒng)具有兩個主要的特點(diǎn):一是具有方便的交互性;二是實現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)傳輸和繪制的實時性,,可以在不同的網(wǎng)絡(luò)端點(diǎn)顯示不同的虛擬儀表,,達(dá)到多機(jī)并行處理的目的。
1.1 系統(tǒng)組成
整個軟件系統(tǒng)劃分為兩個獨(dú)立的子系統(tǒng):編控子系統(tǒng)和播出子系統(tǒng),。系統(tǒng)組成如圖1所示,。
編控子系統(tǒng)的主要工作是建立、編輯演示模型并控制仿真的啟動和結(jié)束,。編控子系統(tǒng)又可以劃分為兩個子模塊:編輯模塊和播出控制模塊,。通過編輯模塊,允許用戶設(shè)計建立滿足自身需要的虛擬儀表模型,,也可以對一個現(xiàn)有的儀表模型進(jìn)行編輯,。通過播出控制模塊可以實現(xiàn)網(wǎng)絡(luò)仿真功能,建立和播出子系統(tǒng)之間的連接關(guān)系,;并通過數(shù)據(jù)接口不斷接收外部輸入的儀表參數(shù),,向已建立連接關(guān)系的各播出子系統(tǒng)發(fā)送相應(yīng)的指令/數(shù)據(jù)包以更新儀表顯示狀態(tài)。
播出子系統(tǒng)負(fù)責(zé)接收播出控制系統(tǒng)發(fā)來的指令/數(shù)據(jù)包(包括數(shù)字儀表模型,、各種參數(shù)等),,對指令進(jìn)行解釋,不斷刷新顯示當(dāng)前仿真結(jié)果,。在播出子系統(tǒng)中可以指定某可視化對象是否可見,,這樣可以使在不同的計算機(jī)上運(yùn)行的播出子系統(tǒng)顯示不同的儀表面板來達(dá)到分布式并行處理的目的。
1.2 參數(shù)的網(wǎng)絡(luò)傳輸
系統(tǒng)需要在不同計算機(jī)之間進(jìn)行參數(shù)傳輸,,因此網(wǎng)絡(luò)通信是必不可少的條件,。本系統(tǒng)采用的是客戶/服務(wù)器結(jié)構(gòu)的應(yīng)用程序,這種結(jié)構(gòu)非常適用于分布式處理的計算機(jī)網(wǎng)絡(luò)環(huán)境,。由于系統(tǒng)是面向PC機(jī)平臺的應(yīng)用,,因此采用基于TCP/IP協(xié)議的Winsock接口實現(xiàn)網(wǎng)絡(luò)間的數(shù)據(jù)傳輸。
2 虛擬儀表面板對象
2.1 面向?qū)ο蟮脑O(shè)計方法
在虛擬儀表的可視化設(shè)計過程中,采用了面向?qū)ο蠓椒?SUP>[7],。一個虛擬儀表系統(tǒng)由許多儀表組成,,每個虛擬儀表均由面板控制,因此按照面向?qū)ο蟮脑O(shè)計思想將面板分解為具有繼承關(guān)系的面板對象(Panel Object),,每個面板對象都有各自的獨(dú)立屬性和行為,。
對于虛擬儀表系統(tǒng),可以將其儀表面板對象劃分為基本的圖形元素和專用面板對象兩類,,如圖2所示,。基本的圖形元素即圖元包括直線,、矩形,、橢圓、多邊形和文本等,;專用面板對象包括按鈕,、開關(guān)、旋鈕,、動態(tài)調(diào)節(jié)器等面板控制控件和指示燈,、數(shù)字儀表、指針儀表,、圖像顯示器,、示波器等面板顯示控件以及其它特殊顯示控件。
2.2 面板對象數(shù)據(jù)結(jié)構(gòu)
在虛擬儀表系統(tǒng)中,,面板對象是以圖形的方式顯示的,,系統(tǒng)允許用戶通過人機(jī)交互的方式對儀表對象的屬性參數(shù)進(jìn)行修改。對象的描述包括了定義面板對象各組成部分形狀的幾何坐標(biāo)數(shù)據(jù),,對象的屬性如線型,、顏色等,還有非幾何的文字或數(shù)值,,如對象名稱和可見信息等,,它對于后處理程序或交互作用的使用是非常有用的。
各種面板對象都具有共同的屬性,,因此基于各種面板對象的數(shù)據(jù)類型和結(jié)構(gòu),,可抽象出通用的基類數(shù)據(jù)結(jié)構(gòu)。綜上所述,,可以如下定義面板對象的基類數(shù)據(jù)結(jié)構(gòu):
class base{
m_csObjectName; 面板對象名稱
m_bVisible; 可視信息,,0——不可見;1 —— 可見
m_crPosition; 面板對象的位置信息及其包圍框大小信息
m_logbrush; 繪制該面板對象時采用的畫刷,,決定填充屬性
m_logpen; 繪制該面板對象時采用的畫筆,,決定線屬性
};
具體的面板對象的數(shù)據(jù)結(jié)構(gòu)均繼承基類的數(shù)據(jù)結(jié)構(gòu),并在基類的基礎(chǔ)上,根據(jù)不同的面板對象的屬性和參數(shù),,添加相應(yīng)的數(shù)據(jù)類型就可以確定特定的面板對象數(shù)據(jù)結(jié)構(gòu),。
2.3 虛擬儀表實例
用戶通過系統(tǒng)提供的虛擬儀表面板對象,在計算機(jī)屏幕上通過鼠標(biāo)可以方便地建立滿足自身測試需要的虛擬儀表系統(tǒng),。圖3為利用該開發(fā)平臺建立的一個虛擬儀表操作面板實例,。
3 可視化設(shè)計與實現(xiàn)
虛擬儀表的可視化[9]技術(shù)主要有兩個方面:一是面板對象及其相關(guān)參數(shù)的可視化,,即將數(shù)據(jù)轉(zhuǎn)換為圖形或圖像,,實現(xiàn)面板對象的可視化;二是基于面向?qū)ο蠹夹g(shù)的圖形用戶界面(GUI)設(shè)計,,即可視界面設(shè)計,。
在系統(tǒng)設(shè)計中采用面向?qū)ο笾苯硬倏v的圖形交互方式(即GUI),便于用戶直接操縱屏幕上不同的可見面板對象圖元,。
3.1 面板對象圖元集
定義了一個可擴(kuò)充的面板對象圖元集,,這些對象是面板對象圖形屬性和操作的抽象表示。當(dāng)建立一個面板對象或編輯其屬性時,,用戶只需指定面板對象,,直接進(jìn)行繪制、移動,、復(fù)制,、刪除等操作,該對象能夠自己重新繪制或重畫,,用戶不須關(guān)心如何做圖,。
3.2 交互繪圖工具類
對于交互反饋,沒有集成在面板對象內(nèi),,而是定義了交互繪圖工具類(面板對象類的友元),,用于處理施加在面板對象上的交互操作,這樣保證了通用性,、獨(dú)立性和可擴(kuò)充的能力,。圖4給出了交互繪圖工具的類層次關(guān)系。
3.3 數(shù)據(jù)的動態(tài)圖形顯示
數(shù)據(jù)可視化(Data Visualization)就是將數(shù)據(jù)以特定的動態(tài)圖形方式顯示在計算機(jī)屏幕上,,供用戶監(jiān)控之用,。在虛擬儀表中,諸如儀表的指針偏轉(zhuǎn)和示波器的波形變化等都反映了數(shù)據(jù)的動態(tài)變化,,即面板對象圖形在測試過程中具有動畫的效果,。
虛擬儀表的數(shù)據(jù)可視化就是構(gòu)造一個從數(shù)據(jù)集到面板對象集的映射函數(shù)F:DG→V,它需要刻劃每一(dg,,v)對的可視化語義,。這樣,對于不同的面板對象可以建立圖形相對于其相應(yīng)的輸入變量變化的函數(shù)關(guān)系。
在應(yīng)用系統(tǒng)的設(shè)計中,,當(dāng)數(shù)據(jù)變化頻繁時,,對應(yīng)的面板對象實時刷新將造成屏幕閃爍。事實上,,當(dāng)數(shù)據(jù)變化時,,面板對象圖形的許多單元是固定不變的,變化的只是與數(shù)據(jù)存在參數(shù)映射的部分區(qū)域,。因此在設(shè)計時,,構(gòu)造了用于顯示動態(tài)數(shù)據(jù)的繪圖函數(shù)。
在本系統(tǒng)中,,虛擬儀表測試仿真計算機(jī)的數(shù)據(jù)是通過網(wǎng)絡(luò)從主控計算機(jī)傳來的,。仿真計算機(jī)運(yùn)行播出程序,啟動面板對象顯示線程,,并通過網(wǎng)絡(luò)不斷地獲取數(shù)據(jù),,同時為面板對象分派輸入數(shù)據(jù),實時顯示刷新儀表面板畫面,。
在Windows環(huán)境下,,我們應(yīng)用VC++面向?qū)ο蟮念惥幊碳夹g(shù)開發(fā)的虛擬儀表可視化通用系統(tǒng),具有友好的圖形用戶接口,,用戶可以方便地設(shè)計滿足自己需要的儀表系統(tǒng),。同時該系統(tǒng)支持網(wǎng)絡(luò)運(yùn)行方式,實現(xiàn)了網(wǎng)絡(luò)可視化仿真,。
參考文獻(xiàn)
1 劉 陽.虛擬儀器的現(xiàn)狀及發(fā)展趨勢.電子技術(shù)應(yīng)用,,1996(4)
2 王曉霞,孫 健,夏士智.虛擬儀器、儀表的一種新的發(fā)展模式.計算機(jī)自動測量與控制,,1997(4)
3 C.H.Small,,Virtual Instruments,EDN,,Sept.1,,1988
4 虛擬儀器技術(shù)及其發(fā)展.國外電子測量技術(shù),1997(2)
5 牛仁朝,趙乃煌.虛擬儀器技術(shù)的研究及應(yīng)用.電子儀器儀表用戶,,1998,;(5)4
6 祝中山,趙 偉,龐海波.PC卡式虛擬儀器軟件標(biāo)準(zhǔn)化探討.電測與儀表,1988,;35(6)
7 朱海濱.面向?qū)ο蠹夹g(shù)——原理與設(shè)計.國防科技大學(xué)出版社,,1992.10
8 李曉梅,黃朝暉.科學(xué)計算可視化導(dǎo)論.國防科技出版社,1996.6