基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動研究
UA301A為12位的A/D卡,系統(tǒng)中采用的是雙極性輸入信號和雙極性原碼的編碼方法。轉(zhuǎn)換的結(jié)果為二進(jìn)制數(shù),轉(zhuǎn)換后得到0~4 095的數(shù)字量。為了直觀表示被測物理量,需將轉(zhuǎn)換后的數(shù)字量變換為具有實(shí)際工程意義的數(shù)值。當(dāng)單極性信號輸入時,模擬電壓值V與數(shù)字量D的對應(yīng)關(guān)系可描述為:V=D/4 095×10;當(dāng)輸入信號為雙極性時,兩者的對應(yīng)關(guān)系為:V=(D-2 048)/4 095×10。這個轉(zhuǎn)換過程在驅(qū)動設(shè)計中可采用Case結(jié)構(gòu)來完成,把選擇輸入信號為單極性還是雙極性作為這個Case結(jié)構(gòu)的布爾值輸入。數(shù)據(jù)采集驅(qū)動程序框圖如圖2所示。本文引用地址:http://www.ex-cimer.com/article/195769.htm
圖2中4個CLF節(jié)點(diǎn)分別用來調(diào)用OpenUA300,minitz,readdataz,CloseUA300這四個函數(shù)。
對于LabVIEW與DLL函數(shù)之間傳遞數(shù)組類型數(shù)據(jù),無論采用何種數(shù)組格式進(jìn)行傳遞,都需要在Lab-VIEW中為數(shù)組預(yù)先分配空間,也就是給該數(shù)組開辟緩存,不然會導(dǎo)致程序崩潰。該程序在采集數(shù)據(jù)前預(yù)先為其初始化一個二維數(shù)組空間,為了使采集到的數(shù)據(jù)在數(shù)組中的位置始終對應(yīng)于采樣的每一通道,初始化數(shù)組空間時設(shè)置每通道采樣點(diǎn)數(shù)為行,采集通道數(shù)為列,這樣數(shù)據(jù)從采集卡FIFO存入緩存時,每一列對應(yīng)每一通道的數(shù)據(jù),省去了后續(xù)通過循環(huán)索引出各通道數(shù)據(jù)的繁瑣。
為了實(shí)現(xiàn)數(shù)據(jù)的連續(xù)采集,系統(tǒng)應(yīng)保持在循環(huán)狀態(tài),設(shè)計中采用WhiIe循環(huán)來實(shí)現(xiàn)這一功能,但是Lab-VIEW在執(zhí)行While循環(huán)時,如果用戶沒有給它設(shè)定循環(huán)時間間隔,則它將以CPU的極限速度運(yùn)行。這樣可能會導(dǎo)致整個LabVIEW程序看上去像死機(jī)一樣,所以需要給While循環(huán)加上一個指定的時間間隔。在采集前首先設(shè)置采樣通道、采樣頻率、采樣點(diǎn)數(shù)、增益和數(shù)據(jù)傳輸方式等參數(shù),該接口驅(qū)動的前面板見圖3。
4 結(jié) 語
由此可以看出,在LabVIEW中調(diào)用動態(tài)鏈接庫函數(shù),來驅(qū)動普通數(shù)據(jù)采集卡的技術(shù),顯示出了Lab-VIEW強(qiáng)大的外部程序接口能力。應(yīng)用此方法設(shè)計數(shù)據(jù)采集系統(tǒng)一方面可充分利用LabVIEW的界面友好、圖形顯示和虛擬儀器強(qiáng)大的開發(fā)功能等優(yōu)點(diǎn);另一方面又能大大降低系統(tǒng)的開發(fā)成本,可以使LabVIEW在對硬件的支持上有一個質(zhì)的飛躍。通過LabVIEW的外部程序接口CLF節(jié)點(diǎn)訪問動態(tài)鏈接庫來調(diào)用Windows標(biāo)準(zhǔn)庫函數(shù),使得LabVIEW支持的數(shù)據(jù)采集板卡范圍突破了限制,同時也為Lab-VIEW訪問底層函數(shù)提供了一種新的思路。
評論