基于LabVIEW的數(shù)控機(jī)床網(wǎng)絡(luò)測(cè)控系統(tǒng)——總體設(shè)計(jì) (二)
3.3通用數(shù)據(jù)采集卡的驅(qū)動(dòng)設(shè)計(jì)
本文引用地址:http://m.butianyuan.cn/article/270594.htm系統(tǒng)中,在數(shù)據(jù)采集卡部分,LabVIEW提供了大量的數(shù)據(jù)采集子程序,這些驅(qū)動(dòng)程序從簡(jiǎn)單到高級(jí),可以提供給用戶使用,但這些子程序只支持NI的數(shù)據(jù)采集卡(DAQ)以及少數(shù)公司開發(fā)的支持LabVIEW平臺(tái)的數(shù)據(jù)采集卡,而這些卡的價(jià)格較昂貴,一般的用戶很難接受。因此,為了能在LabVIEW平臺(tái)上使用普通數(shù)據(jù)采集,有以下幾種方案可以解決LabVIEW與普通數(shù)據(jù)采集卡驅(qū)動(dòng)的問題。
3.3.1基于LabVIEW的普通國(guó)產(chǎn)采集卡的驅(qū)動(dòng)方法
為了解決LabVIEW與普通國(guó)產(chǎn)采集卡的接口驅(qū)動(dòng)問題,有三種可行方案:
?、僦苯佑肔abVIEW的InPort , OutPort圖標(biāo)編程方式;
?、谟肔abVIEW的CIN圖標(biāo)生成的板卡卡驅(qū)動(dòng)程序的子VI方式;
?、塾肔abVIEW的Call Library Functions圖標(biāo),動(dòng)態(tài)鏈接數(shù)據(jù)采集卡的。DLL庫(kù)函數(shù)方式。
(1)用In Port和Out Port直接編程方式(I/O方式)驅(qū)動(dòng)
LabVIEW中有兩個(gè)直接訪問底層設(shè)備的圖標(biāo),即In Port.vi和Out Port.vi.這兩個(gè)函數(shù)分別完成從設(shè)備的物理地址直接讀取和輸出數(shù)據(jù)功能,通過直接讀寫寄存器可以提高數(shù)據(jù)的傳輸速率,采集卡的工作方式為軟件驅(qū)動(dòng),查詢方式為讀取采樣結(jié)果。In Port.vi和Out port.vi圖標(biāo)存放在Memory子模板上。直接讀取端口方式實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,適用于采集精度要求不高的情況。對(duì)于精度要求高且復(fù)雜的采集系統(tǒng),如包含對(duì)內(nèi)存大量操作的情況,這種方式就不能滿足要求[19]。
(2)調(diào)用C語(yǔ)言源代碼方式(CINF方式)驅(qū)動(dòng)
在實(shí)際設(shè)計(jì)中,經(jīng)常會(huì)碰到某些想實(shí)現(xiàn)的功能,但利用LabVIEW圖標(biāo)實(shí)現(xiàn)和處理又不是很方便靈活,而利用其他編程語(yǔ)言很容易實(shí)現(xiàn)的情況。這時(shí)就需要用LabVIEW中的接口圖標(biāo),以實(shí)現(xiàn)LabVIEW與其他語(yǔ)言直接的連接,CIN圖標(biāo)就是其中的一種。
它是LabVIEW與C語(yǔ)言的接口,CIN通過輸入、輸出端口實(shí)現(xiàn)兩種語(yǔ)言之間的數(shù)據(jù)傳遞。輸入、輸出端口的個(gè)數(shù)可由設(shè)計(jì)者根據(jù)實(shí)際需要確定。當(dāng)LabVIEW的程序運(yùn)行到CIN節(jié)點(diǎn)時(shí),數(shù)據(jù)由CIN的輸入端口傳遞給C源代碼圖標(biāo),程序去執(zhí)行C源代碼,代碼執(zhí)行完后,得到的數(shù)據(jù)結(jié)果由CIN的輸出端返回給LabVIEW [20]。
(3)調(diào)用動(dòng)態(tài)連接庫(kù)DLL的方式(CLF方式)驅(qū)動(dòng)
動(dòng)態(tài)連接庫(kù)(DLL)是一種應(yīng)用程序在運(yùn)行時(shí)與庫(kù)文件連接起來(lái)的技術(shù),是在應(yīng)用程序運(yùn)行時(shí)被裝入和鏈接的,而不是把源代碼復(fù)制到應(yīng)用程序中去,因此使用動(dòng)態(tài)鏈接庫(kù)可以實(shí)現(xiàn)多個(gè)應(yīng)用程序直間代碼和資源的共享。不過動(dòng)態(tài)鏈接庫(kù)常由數(shù)據(jù)采集卡生產(chǎn)廠商提供,通過LabVIEW的CLF節(jié)點(diǎn)調(diào)用。如果廠商不提供DLL動(dòng)態(tài)連接庫(kù),用戶就要自己編寫,這就對(duì)用戶的編程水平有了進(jìn)一步的要求。不過使用動(dòng)態(tài)鏈接庫(kù)有其自身的有點(diǎn),如方便的實(shí)現(xiàn)共享代碼、資源和數(shù)據(jù);DLL的編寫與語(yǔ)言無(wú)關(guān);隱藏實(shí)現(xiàn)細(xì)節(jié);節(jié)省內(nèi)存等;
3.3.2調(diào)用動(dòng)態(tài)連接庫(kù)DLL的方式實(shí)現(xiàn)板卡驅(qū)動(dòng)的設(shè)計(jì)
由于該設(shè)計(jì)平臺(tái)中,選用的國(guó)產(chǎn)普通采集卡,需要自己編寫板卡驅(qū)動(dòng),鑒于以上幾種方法的比較,本文選用的是調(diào)用動(dòng)態(tài)連接庫(kù)DLL的方式(CLF方式)驅(qū)動(dòng)。通過LabVIEW的CLF節(jié)點(diǎn)調(diào)用的實(shí)現(xiàn)如下,調(diào)用動(dòng)態(tài)連接庫(kù)的配置方式詳見下圖3.8所示。
評(píng)論