虛擬儀器是虛擬現實技術在儀器領域的應用。虛擬儀器技術是由于計算機、測量和電子技術的高度發展而孕育出的一項革命性新技術。虛擬儀器的硬件、軟件都具有開發性、模塊化、可重復使用及互換性等特點。因此,虛擬儀器使得用戶能夠根據自己的需要定義、靈活組合儀器功能,大大提高了使用效率,克服了傳統儀器的缺點,系統功能、規模可通過修改軟件來增減,價格、開發、維護費用低,技術更新周期短。在現有的虛擬儀器產品中,比較有名的是美國國家儀器公司的LabVIEW系統,但它的技術是不公開的。用微機來實現上述等儀器的功能有著良好的性能價格比,這也是以微機為核心的智能儀器成為當今的發展方向。本文主要提出虛擬儀器中,功能模塊及功能模塊組合構成的虛擬儀器的數據結構設計,以及儀器運行時的搜索算法設計。
1數據結構設計開發的虛擬儀器主要完成:
時域分析、頻域分析、幅域分析、數據存儲和數據再現。具有25個功能模塊來完成上述5大類處理功能,它們是:數據采集、信號發生器、四則運算、數據存儲、數據再現、正/逆傅立葉變換、功率譜、倍頻程分析、直方圖、自相關、示波器、XY記錄儀等。
每一功能模塊用圖標表示,如所示,所有的功能模塊都放在模塊庫中,用戶可以將需要的功能模塊從模塊庫中拖出并連接好、組成虛擬儀器,這些功能模塊具有可重復使用及互換性等特點。表示的是:用戶想用這些功能模塊來連接成虛擬儀器完成一組實驗,但還未將這些功能模塊連接起來。是連接好的功能模塊,該虛擬儀器要完成的處理是:數據采集功能模塊采集的信號(方波)顯示在示波器1上,信號發生器產生的正弦波在示波器2上顯示;數據采集功能模塊采集的方波與信號發生器產生的正弦波經過疊加顯示在示波器3上,疊加的信號經過快速傅立葉變換、功率譜分析,在XY記錄儀上顯示功率譜。
為了在計算機中實現以上的功能,需要把、的這些功能模塊的數據結構要表達出來,也就是表達功能模塊以及功能模塊之間的數據和數據關系,然后,搜索該數據結構并執行每一功能模塊的功能。因此,要表達、數據的邏輯結構。以為例,從該連接好的虛擬儀器看出,每一功能模塊由Out輸出數據;由In接收數據,而且,一個功能模塊節點可以接受多個其他功能模塊的輸入,顯然,這樣的數據關系表達的邏輯結構是有向圖。
未連接好的功能模塊連接好的功能模塊組成虛擬儀器所以,用、中的鄰接鏈表來分別表達、中有向圖的存儲結構(未完全表達細節)。、中垂直方向的鏈表分別代表、中的功能模塊節點;水平方向的鏈表表示該功能模塊節點的數據輸出到那幾個功能模塊節點。如因功能模塊間未連接,所以無出度鏈表,又如數據采集功能模塊的數據分別輸出到示波器
1、四則運算功能模塊。對于每一功能模塊有那些輸入,可以通過遍歷出度鏈表來求得。當然,也可以用鄰接多重鏈表來表達、中有向圖的存儲結構,從而使得有向圖中每一節點的出度、入度都能直接表達出來。
2.搜索算法中虛擬儀器的邏輯結構是有向圖,但該虛擬儀器在處理數據時是有順序要求的,即:如功能模塊A/D、信號發生器不需要等待其它功能模塊的輸出數據作為輸入數據,就可以獨立地執行自己的功能(A/D轉換,信號發生)。然后,將產生的數據輸出到功能模塊示波器1、四則運算、示波器2,也就是說,如功能模塊四則運算要都接收到功能模塊數據采集、信號發生器的輸出數據后,才能執行自己的功能(進行兩路信號的疊加),其它功能模塊也一樣。
搜索算法框圖實際上,中虛擬儀器對應的有向圖可以看作按一定順序完成的工程,有向圖的每一頂點是活動,每一有向邊是活動的先后關系,只有等有向圖中所有的活動都完成了,那么,該工程才完成,稱這樣的有向圖為頂點活動網絡。虛擬儀器可以有由多個這樣的有向圖或工程組成,從而可同時進行多組實驗,完成多組物理儀器所完成的功能,體現了功能模塊的可重復使用性。
搜索算法就是要對每一幀數據從AOV網絡沒有前驅的功能模塊開始執行活動,然后,按有向邊順序執行一個AOV網絡中的所有活動(一次拓撲排序),接著處理下一幀數據。只要儀器還運行就周而復始地一幀一幀地處理數據。這就是搜索算法的核心思想。具體就來說,從沒有前驅的功能模塊A/D、信號發生器開始處理數據(開始搜索),設輸出數據分別為Da、Dt,然后使等待數據Da、Dt功能模塊(示波器1、四則運算、示波器2)節點的入度減1(開始分別為1、2、1),表示有一路數據已到,待到功能模塊示波器1、四則運算、示波器2節點的入度已減到0,說明所有要等待的數據都已到,就可以執行這些功能模塊并產生數據(若有輸出)。這些功能模塊的功能是通過C語言來實現的。具體算法如下:因為算法的一次執行只對所有的頂點和邊搜索一遍,所以算法的時間復雜度是O(n e),其中,n為虛擬儀器對應有向圖(有向圖可能不連通)的頂點數,e為虛擬儀器對應有向圖的邊數。實際上儀器運行時的搜索算法也可用遞歸的算法實現,起先,是用遞歸的算法實現的(在本文不介紹)。盡管遞歸的算法表達簡練,但效率沒有本文的算法高。此外,由于入度為零的功能模塊可以并行執行,所以,可以采用多線程的方法,采用多線程的方法在多中央CPU并行系統中執行速度才有較大的提高,在單中央CPU系統中執行速度還是同本文算法的時間復雜度是一個數量級的。
是虛擬儀器執行一幀數據后的結果,其中,信號發生器產生正弦信號的頻率是1KHz,數據采集功能模塊采集信號的頻率是200Hz.右下角的方框代表XY記錄儀,其上顯示的是頻率1kHz正弦信號與頻率是200Hz方波疊加后的信號的功率譜,另外3個方框是示波器1,示波器2,示波器3.
示波器1上顯示的是頻率1kHz正弦信號;示波器2上顯示的是數據采集功能模塊采集的方波信號,頻率是200Hz;示波器3上顯示的是頻率1kHz正弦信號與頻率是200Hz方波疊加后的信號。當連續運行時,的畫面是動態的連續的一幀幀波形、功率譜的顯示。
結束語
本文提出基于圖論的實現虛擬儀器環境的數據結構和算法,該虛擬儀器已經實現,它是可視化、圖形化和模塊化的。本文提出的算法與基于數據流和多線程思想實現虛擬儀器環境本質上是一樣的。