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