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