丁宗玲
(安徽大學(xué),安徽 合肥 230601)
虛擬儀器(Virtual Instrument,簡(jiǎn)稱(chēng)VI)是現(xiàn)代計(jì)算機(jī)技術(shù)和儀器技術(shù)深層次結(jié)合的產(chǎn)物,是計(jì)算機(jī)、儀器和測(cè)控系統(tǒng)硬件資源與虛擬儀器軟件資源三者的有效結(jié)合[1]。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,實(shí)驗(yàn)室虛擬儀器工程平臺(tái))是美國(guó)國(guó)家儀器公司(National Instruments Company,NI)推出的一種基于G語(yǔ)言的實(shí)驗(yàn)室虛擬儀器集成軟件開(kāi)發(fā)工具,LabVIEW使用圖形化語(yǔ)言,界面操作簡(jiǎn)單友好直觀,并且采用LabVIEW設(shè)計(jì)的虛擬儀器可脫離LabVIEW開(kāi)發(fā)環(huán)境,最終使用者看見(jiàn)的是和實(shí)際硬件儀器相似的操作面板[2-9]。
數(shù)據(jù)采集系統(tǒng)是基于計(jì)算機(jī)或者其他專(zhuān)用測(cè)試平臺(tái)從傳感器或其它待測(cè)設(shè)備等的被測(cè)單元中采集非電量或者電量信號(hào),送到上位機(jī)中進(jìn)行分析、處理等后續(xù)操作來(lái)實(shí)現(xiàn)方便、直觀的測(cè)量系統(tǒng)。我們采用的是北京雙諾測(cè)控技術(shù)有限公司(wwlab)生產(chǎn)的PCI類(lèi)型的AC6621采集卡為例結(jié)合LabVIEW語(yǔ)言實(shí)現(xiàn)某溫度信號(hào)的采集,同時(shí)為了增加測(cè)量的穩(wěn)定性,使用LabVIEW數(shù)據(jù)處理功能進(jìn)行數(shù)據(jù)的平均處理,最終將所測(cè)量的溫度信號(hào)進(jìn)行直觀的圖像顯示和保存。
為了便于說(shuō)明LabVIEW語(yǔ)言在數(shù)據(jù)采集卡應(yīng)用中的普遍性,采用了北京雙諾測(cè)控技術(shù)有限公司(wwlab)生產(chǎn)的非NI公司的AC6621采集卡為例進(jìn)行說(shuō)明。
AC6621是雙諾公司生產(chǎn)的一款PCI總線12位中速采集模塊,具有16路模擬輸入、開(kāi)關(guān)量16路輸入/16路輸出。采用的是PCI總線,支持即插即用、實(shí)時(shí)采集等功能。其內(nèi)置4KB FIFO,支持全速實(shí)時(shí)不間斷采集[10]。其主要功能和特點(diǎn)如表1所示:
表1 AC6621采集卡主要參數(shù)
其外觀如圖1所示:
圖1 AC6621采集卡外觀圖
為了能夠使采集卡正常工作,首先我們要調(diào)用廠家提供的動(dòng)態(tài).dll函數(shù)庫(kù)編寫(xiě)驅(qū)動(dòng)。動(dòng)態(tài)鏈接庫(kù)(DLL,是Dynamic Link Library的縮寫(xiě)形式),是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫(kù),它不是可執(zhí)行文件,但有助于共享數(shù)據(jù)和資源,可以由多個(gè)應(yīng)用程序同時(shí)訪問(wèn)內(nèi)存中單個(gè)DLL內(nèi)容,從而可以避免多程序調(diào)用時(shí)內(nèi)存資源的浪費(fèi)。LabVIEW 在調(diào)用DLL中的函數(shù)時(shí)要知道函數(shù)的參數(shù)、類(lèi)型、返回值、DLL庫(kù)文件的位置等信息。
圖2 調(diào)用庫(kù)函數(shù)設(shè)置對(duì)話(huà)框
實(shí)驗(yàn)涉及的數(shù)據(jù)采集卡為上述的AC6621板卡,其自帶了 Windows下的驅(qū)動(dòng)程序庫(kù)AC6621.dll,庫(kù)內(nèi)包含了所有數(shù)據(jù)采集應(yīng)用的函數(shù),如:打開(kāi)設(shè)備函數(shù)(HANDLE AC6621_OpenDevice),查詢(xún)并回讀采樣數(shù)據(jù)函數(shù)(AC6621_ReadAD)等,在這里不一一詳細(xì)說(shuō)明,可以參看其說(shuō)明書(shū)內(nèi)容。在這里我們使用的是LabVIEW 8.2中文版本。根據(jù)上述調(diào)用“庫(kù)函數(shù)節(jié)點(diǎn)”來(lái)調(diào)用.dll文件根據(jù)所需要的內(nèi)容進(jìn)行配置?!皫?kù)名和路徑”為所要調(diào)用的AC6621.dll文件的路徑和名稱(chēng)?!昂瘮?shù)名”選項(xiàng)為要調(diào)用的函數(shù)名稱(chēng),在這里我們以打開(kāi)設(shè)備為例即:AC6621_OpenDevice函數(shù);“調(diào)用規(guī)范”為對(duì)庫(kù)函數(shù)的調(diào)用規(guī)則在這里選擇“stdcall”標(biāo)準(zhǔn)調(diào)用方式。當(dāng)調(diào)用自己用C語(yǔ)言編寫(xiě)的.dll文件時(shí)選擇“C”選項(xiàng),具體的C語(yǔ)言編寫(xiě)例程可以參看相關(guān)書(shū)籍[11]。
接下來(lái)是對(duì)參數(shù)選項(xiàng)的設(shè)置,選擇圖1中的“參數(shù)”項(xiàng)。根據(jù)調(diào)用的函數(shù),在此項(xiàng)設(shè)置下添加和設(shè)置相應(yīng)的參數(shù),參數(shù)名稱(chēng)、類(lèi)型和數(shù)據(jù)類(lèi)型都要與被調(diào)用函數(shù)中的參數(shù)名相同。在這里打開(kāi)設(shè)備只包含一個(gè)參數(shù)即設(shè)備號(hào)可以設(shè)置為:dev_num,類(lèi)型為:數(shù)值型,數(shù)據(jù)類(lèi)型為:有符號(hào)32位整型。設(shè)置完成后該打開(kāi)設(shè)備的函數(shù)原型為:unsigned long AC6621_OpenDevice(long dev_num)。最終配置完成的打開(kāi)設(shè)備子Vi如下圖所示:
其它函數(shù)依照此方法進(jìn)行編譯,最終編譯完成5個(gè)類(lèi)似子Vi,其順序結(jié)構(gòu)依次分別是:AC6621_OpenDevice.vi(打開(kāi)設(shè)備)→AC6621_AD.vi(采樣參數(shù)并啟動(dòng)AD采用)→AC6621_ReadAD.vi(查詢(xún)并回讀采樣數(shù)據(jù))→AC6621_StopAD.vi(停止采樣)→AC6621_CloseDevice.vi(關(guān)閉設(shè)備)。
圖3 配置完成的打開(kāi)設(shè)備子Vi圖
根據(jù)上面編寫(xiě)完成的函數(shù)驅(qū)動(dòng)子Vi,接下來(lái)就是外部的編程和連線。根據(jù)采樣原理和所需要設(shè)置的采集卡變量事先預(yù)留變量輸入控件,如:采樣頻率、量程選擇、內(nèi)外觸發(fā)等輸入控件。因?yàn)閿?shù)據(jù)采集是按順序進(jìn)行的,因此我們采用“平鋪式順序結(jié)構(gòu)”控件進(jìn)行采集的順序進(jìn)行?!捌戒伿巾樞蚪Y(jié)構(gòu)”控件分為三部分,第一步是打開(kāi)AC6621采集卡設(shè)備(圖4A);第二部是進(jìn)行采集卡的設(shè)置、采樣和讀取,讀取完畢以后要暫停采集卡讀取(圖4 B);第三部是采樣完畢關(guān)閉采集卡設(shè)備(圖4C)。
圖4 平鋪式順序結(jié)構(gòu)控件三步走
數(shù)據(jù)采集到以后要進(jìn)行數(shù)據(jù)轉(zhuǎn)換為真實(shí)值,假設(shè)采集到的數(shù)組為變量:data為12位轉(zhuǎn)換結(jié)果=16位讀入數(shù)據(jù)/16。同時(shí)要根據(jù)所設(shè)置的輸入電壓關(guān)系進(jìn)行轉(zhuǎn)換,在這里選擇的是±5V檔位,因此其變換關(guān)系為:
實(shí)際電壓值
RealData= (data-2048)*5000.0/2048.0(mV)
并且為了采樣數(shù)據(jù)的準(zhǔn)確性,采用了簡(jiǎn)單的50組數(shù)字平均方式進(jìn)行信號(hào)的處理和信號(hào)數(shù)據(jù)的存儲(chǔ)。以上數(shù)據(jù)轉(zhuǎn)換、信號(hào)平均和數(shù)據(jù)存儲(chǔ)框圖如圖5所示:
圖5 數(shù)據(jù)轉(zhuǎn)換,信號(hào)50次平均和數(shù)據(jù)存儲(chǔ)
為了驗(yàn)證系統(tǒng)設(shè)計(jì)的實(shí)用性,我們采用了以熱電偶為基礎(chǔ)信號(hào)的溫度采集系統(tǒng),使該溫度測(cè)量設(shè)備置于實(shí)驗(yàn)室空調(diào)房間內(nèi),因?yàn)闇y(cè)試情況是夏季朝陽(yáng)房間,剛進(jìn)入房間時(shí)從溫度計(jì)上顯示溫度為32℃,然后打開(kāi)空調(diào)溫度設(shè)置為26℃,在此過(guò)程中LabVIEW溫度采集系統(tǒng)始終保持測(cè)量狀態(tài),經(jīng)過(guò)近20分鐘時(shí)間溫度降低為27℃,并且采集到的數(shù)據(jù)保存在文件中。通過(guò)與置于室內(nèi)的溫度計(jì)相比較,溫度測(cè)試量完全吻合,證明我們?cè)O(shè)計(jì)的LabVIEW溫度采集程序是符合實(shí)際的。
編寫(xiě)的LabVIEW軟件前面板如圖6所示,主要顯示包括了數(shù)據(jù)采集卡的基本量控制溫度報(bào)警設(shè)置與紅燈報(bào)警和聲音報(bào)警,溫度實(shí)時(shí)顯示,日期顯示和開(kāi)始、退出程序按鈕等。
圖6 環(huán)境溫度實(shí)時(shí)測(cè)試LabVIEW前面板
LabVIEW作為虛擬儀器開(kāi)發(fā)過(guò)程中最具代表性的圖形化編程語(yǔ)言,是目前國(guó)際上應(yīng)用最廣的數(shù)據(jù)采集和控制開(kāi)發(fā)環(huán)境之一[11],它用圖標(biāo)、連線和框圖代替?zhèn)鹘y(tǒng)的程序代碼,形象地觀察數(shù)據(jù)的傳輸過(guò)程。同時(shí),它具有十分強(qiáng)大的功能,如數(shù)值運(yùn)算、信號(hào)處理、數(shù)據(jù)分析、數(shù)據(jù)采集以及圖形獲取和傳輸?shù)纫呀?jīng)在大學(xué)實(shí)驗(yàn)室、科研院所得到了廣泛應(yīng)用。本文中所述基于LabVIEW編寫(xiě)了國(guó)產(chǎn)AC6621采集卡程序并進(jìn)行了溫度實(shí)時(shí)測(cè)量的實(shí)驗(yàn)驗(yàn)證。通過(guò)儀器軟件的運(yùn)行可以方便的對(duì)室溫進(jìn)行觀測(cè)和數(shù)據(jù)的保存,對(duì)大學(xué)物理教學(xué)過(guò)程中的實(shí)驗(yàn)操作有一定的輔助指導(dǎo)作用,并且可以對(duì)軟件少量改進(jìn)就可以對(duì)某些燃燒爐、晶體制備、燒蝕溫度等需要測(cè)溫環(huán)境的大學(xué)物理實(shí)驗(yàn)進(jìn)行測(cè)量和數(shù)據(jù)的記錄。
[1]胡嘉坤,陸綺榮.基于LabView的礦井瓦斯遠(yuǎn)程監(jiān)控系統(tǒng)[J].工礦自動(dòng)化,2007(2):64-66.
[2]BISHOPRH.LabVIEW 7實(shí)用教程[M].北京:電子工業(yè)出版社,2005.
[3]王建中,黃林,王伶俐,王應(yīng)輝.基于LabVIEW的“馬呂斯定律驗(yàn)證”實(shí)驗(yàn)[J].大學(xué)物理實(shí)驗(yàn),2011(4):66-69.
[4]劉科,周曉林,萬(wàn)德志,李玲.基于LabVIEW的大學(xué)物理虛擬實(shí)驗(yàn)設(shè)計(jì)[J].大學(xué)物理實(shí)驗(yàn),2011(6):81-85.
[5]盛二妮,張志剛.基于LabVIEW的便攜式旋轉(zhuǎn)機(jī)械故障診斷系統(tǒng)的研究[J].煤礦機(jī)械,2012337251-253.
[6]馮振元,張震權(quán),徐艷紅,劉祥軍.基于LabVIEW實(shí)現(xiàn)的衛(wèi)星射頻部件智能檢測(cè)系統(tǒng)[J].現(xiàn)代電子技術(shù),2012(13):128-137.
[7]周紅仙,周有平,王毅.用自相關(guān)法測(cè)量橫向流速[J].物理實(shí)驗(yàn),2012(5):6-8.
[8]劉允峰.基于LabVIEW軟件的李薩如圖形的實(shí)現(xiàn)[J].大學(xué)物理實(shí)驗(yàn),2009,22(1):97-99.
[9]張志榮,余嶸華,張帥,束小文,王煜,董鳳忠,劉文清.基于LabVIEW的氧氣濃度實(shí)時(shí)在線監(jiān)測(cè)系統(tǒng)軟件設(shè)計(jì)[J].大氣與環(huán)境光學(xué)學(xué)報(bào),2008(6):454-460.
[10]http://www.wwlab.com.cn/product/detail.aspx?d=49.
[11]楊樂(lè)平,李海濤,趙勇,等.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.