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