<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 在LabVIEW中驅動(dòng)數據采集卡的三種方法

在LabVIEW中驅動(dòng)數據采集卡的三種方法

作者: 時(shí)間:2012-08-15 來(lái)源:網(wǎng)絡(luò ) 收藏

一、引言

本文引用地址:http://dyxdggzs.com/article/193382.htm

近年來(lái),面向儀器的軟件開(kāi)發(fā)平臺,如美國NI公司的成熟和商業(yè)化,使用者在配有專(zhuān)用或通用插卡式硬件和軟件開(kāi)發(fā)平臺的個(gè)人計算機上,可按自己的需求,設計和組建各種測試分析儀器和測控系統。由于提供的是一種適應工程技術(shù)人員思維習慣的圖形化編程語(yǔ)言,圖形界面豐富,內含大量分析處理子程序,使用十分方便,個(gè)人儀器發(fā)展到了使用者也能設計,開(kāi)發(fā)的新階段。

鑒于是工程技術(shù)人員自己編制,調用軟件來(lái)開(kāi)發(fā)儀器功能,軟件成了儀器的關(guān)鍵。故人們也稱(chēng)這類(lèi)個(gè)人儀器為虛擬儀器,稱(chēng)這種主要由使用者自己設計,制造儀器的技術(shù)為虛擬儀器技術(shù)(Virtual Instrumentation Technology)。使用虛擬儀器技術(shù),開(kāi)發(fā)周期短、儀器成本低、界面友好、使用方便、可靠性高, 可賦于檢測儀初步智能,能共享PC機豐富的軟硬件資源,是當前儀器業(yè)發(fā)展的一個(gè)重要方面。

虛擬儀器的典型形式是在臺式微機系統主板擴展槽中插入各類(lèi)數據采集插卡,與微機外被測信號或儀器相連,組成測試與控制系統。但NI公司出售的,直接支持的插卡價(jià)格十分昂貴,嚴重限制著(zhù)人們用LabVIEW來(lái)開(kāi)發(fā)各種虛擬儀器系統。在LabVIEW中如何其它低價(jià)位的數據采集插卡,成為了國內許多使用者面臨的關(guān)鍵問(wèn)題。

二、三種在LabVIEW中使用國產(chǎn)數據采集插卡的

筆者將近年來(lái)工程應用中總結出的三種在LabVIEW中通用數據采集插卡的介紹如下。介紹中,以某市售8通道12位A/D插卡為例。設插卡基地址為base=0x100,在C語(yǔ)言中,選擇信號通道ch的指令是 _outp(base,ch),啟動(dòng)A/D的指令是_inp(base),采樣量化后的12位二進(jìn)制數的高4位存于base+2中,低8位存于base+3中。

1、直接用LabVIEW的 In Port , Out Port圖標編程

LabVIEW的Functions模板內Adevanced Memory中的In Port 、Out Port 圖標,與_inp、_outp功能相同,因此可用它們畫(huà)程序方框圖, 設計該A/D插卡的程序。N個(gè)通道掃描,各采集n點(diǎn)數據的LabVIEW程序方框圖如圖1所示。圖中用LabVIEW的計時(shí)圖標控制掃描速率。

77.jpg

圖1 N個(gè)通道掃描,各采集n點(diǎn)數據的程序方框圖

顯然,若采樣速率要求較低,這不失為最方便、直觀(guān)的,而且可隨畫(huà)隨改。

2、用LabVIEW的CIN圖標生成A/D插卡驅動(dòng)程序的子VI

LabVIEW的Functions模板內Adevanced 中有一個(gè)CIN(Code InteRFace Node)圖標,用來(lái)在LabVIEW程序方框圖中直接調其它編程語(yǔ)言(如VC)寫(xiě)的代碼?,F以生成一個(gè)對指定的通道采集n點(diǎn)數據的LabVIEW子VI為例,其主要步驟為:

圖2 CIN圖標

(1)在LabVIEW下,點(diǎn)出CIN圖標,拖大并聯(lián)接入兩個(gè)控件和一個(gè)顯件,如圖2所示。其中控件用于選擇模擬信號輸入通道和選擇數據采集點(diǎn)數,數組顯件顯示所采集的數據。

(2)在CIN圖標上單擊鼠標右鍵彈出菜單,選Create .c file.,產(chǎn)生并存入一個(gè)×××.C程序框架。

(3)在VC++5.0下完成×××.C程序框架的數據采集部分的編寫(xiě),編譯該×××.C程序(示例見(jiàn)附1),生成×××.obj代碼。在coustom build方式下用nmake / f ×××.lvm 指令將×××.lvm接口程序(示例見(jiàn)附2)編譯成×××.lsb代碼。

(4)在LabVIEW的CIN圖標下裝載×××.lsb。運行成功后將該CIN作成子VI,存入某個(gè)文件夾。

在以后的LabVIEW應用程序框圖中,該子VI圖標即可作此A/D插卡驅動(dòng)圖標使用。

若A/D插卡上有晶振作基準時(shí)鐘,有可編程計數/定時(shí)器,附錄1示例的C語(yǔ)言程序還可加入定時(shí)采集語(yǔ)句,以實(shí)現在子VI中選擇采樣速率。圖3是調用按上述步驟生成的子VI編程所采集的方波信號及其自功率譜。

圖3 采集的方波信號及其自功率譜

用CIN結點(diǎn)生成A/D插卡驅動(dòng)程序的子VI的方法可較充分發(fā)揮A/D的高轉換速度,獲得高的采樣速率。但編程較煩雜,不能由LabVIEW直接修改。

3、用LabVIEW的Call Library Functions圖標,動(dòng)態(tài)鏈接數據采集插卡的 .DLL庫函數

許多數據采集插卡附有.DLL庫函數形式的驅動(dòng)程序,用戶(hù)可使用某種DLL鏈接庫的編程工具,如VC、VB,編寫(xiě)應用程序來(lái)調用它。LabVIEW也提供了一個(gè)動(dòng)態(tài)鏈接庫函數的圖標Call Library Function,放在Functions模板內的Adevanced子模板中。在example/dll目錄中有使用該圖標的例子,可參照它們完成對數據采集插卡的.DLL庫函數的調用。 三、兩個(gè)測試系統實(shí)例

1、滾動(dòng)軸承振動(dòng)虛擬檢測儀

該滾動(dòng)軸承振動(dòng)虛擬檢測儀是為檢測低噪聲軸承強調的“異音”而開(kāi)發(fā)的。目前國內滾動(dòng)軸承出廠(chǎng)振動(dòng)分類(lèi)檢測的行業(yè)標準和檢測儀器(如S0910型) 都只能檢測振動(dòng)加速度的均方根值,遠不能適應低噪聲軸承的要求。

我們在LabVIEW下,用PC機加國產(chǎn)12位A/D插卡,開(kāi)發(fā)出的虛擬檢測儀,采樣速率最高達80KHz。按每2秒檢測一個(gè)軸承的迫節,以加速度均方值的分貝值,峰值因子,峭度,超某幅值峰數四個(gè)參數來(lái)綜合評定軸承振動(dòng)級別。PC機14″的CRT,對檢驗員有極佳的可視性,檢測確定的軸承等級由軟指示燈閃爍顯示,在面板上十分醒目,便于檢驗后歸類(lèi)。每個(gè)軸承的檢驗結果自動(dòng)寫(xiě)入當班統計文件中,供生產(chǎn)和質(zhì)檢部門(mén)使用。檢測程序讀入各類(lèi)設置文件便可適應不同類(lèi)型軸承或不同的檢測分類(lèi)標準。

2、空調散熱器試驗測溫系統

為對某空調散熱器進(jìn)行散熱性能試驗,開(kāi)發(fā)出多點(diǎn)熱電偶測溫的虛擬儀器系統。

硬件選用一國產(chǎn)有A/D及DIO的PC機插卡,外串接三塊前端信號處理板。每塊前端信號處理板提供一個(gè)冷端補償電路,并可接16路熱電偶。每塊前端板的冷端補償電壓和熱電偶電勢各占用插卡的一個(gè)模擬輸入通道,由插卡的發(fā)出的4位數字輸出選擇各熱電偶電勢輸入。

由于溫度采集速率甚低,直接用LabVIEW的 In Port , Out Port 圖標編程完全可滿(mǎn)足要求。編程中調用了LabVIEW中Functions模板內Data Acquisition Signal ConditioningConvert Thermcouple Reading圖標,稍作修改,生成了各類(lèi)標準熱電偶溫度轉換為電壓,電壓轉換為溫度的新的子VI。編程十分簡(jiǎn)便,且能用于各類(lèi)標準熱電偶測溫。

附1 ×××.C源程序

/* CIN source file */

#include c:labviewcintoolsextcode.h

#include conio.h

typedef struct {

int32 dimSize;

float32 arg1[1];

} TD1;

typedef TD1 **TD1Hdl;

CIN MgErr CINRun(int32 *n, TD1Hdl xarray, int32 *ch);

CIN MgErr CINRun(int32 *n, TD1Hdl xarray, int32 *ch)

{ /* ENTER YOUR CODE HERE */

int base,i, ns,c;

uInt8 h,l;

float *xarrayElmtp;

ns=*n;/* 采樣點(diǎn)數 */

c=*ch;/* 模入通道號*/

SetCINArraySize((UHandle)xarray,1,ns);

(*xarray)->dimSize=ns;

xarrayElmtp=(*xarray)->arg1;

base=0x100; /* 數據采集插卡基地址*/

_outp(base,c); /* 選擇模入通道*/

for (i=0;i{

_outp(base+1,0); /* 啟動(dòng) A/D*/ do {;}

while ((_inp(0x101)0x01)!=0);

h=_inp(base+2);

l=_inp(base+3)0xf0;

*xarrayElmtp=(h*16+l/16)/409.6-5.0;

xarrayElmtp++;

}

return noErr;

}

附2 ×××.lvm接口程序

IDE=VC

name= ×××

type=CIN

cintoolsdir=c:labviewcintools

! include $(cintoolsdir)ntlvsb.mak>

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


加速度計相關(guān)文章:加速度計原理
晶振相關(guān)文章:晶振原理
熱電偶相關(guān)文章:熱電偶原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>