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