• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于LabVIEW的普通數(shù)據(jù)采集卡驅(qū)動(dòng)研究

      2010-05-13 08:46:00劍,李巴津
      現(xiàn)代電子技術(shù) 2009年12期
      關(guān)鍵詞:虛擬儀器數(shù)據(jù)采集

      武 劍,李巴津

      摘 要:針對功能強(qiáng)大,應(yīng)用廣泛的虛擬儀器開發(fā)軟件LabVIEW只能直接支持NI公司的數(shù)據(jù)采集卡,而不能直接使用普通數(shù)據(jù)采集卡的問題。重點(diǎn)研究在LabVIEW平臺(tái)下驅(qū)動(dòng)普通數(shù)據(jù)采集卡的重要方法即調(diào)用動(dòng)態(tài)鏈接庫,并結(jié)合具體實(shí)例介紹了在LabVIEW中調(diào)用動(dòng)態(tài)鏈接庫的關(guān)鍵技術(shù)及步驟,實(shí)現(xiàn)了LabVIEW與普通數(shù)據(jù)采集卡的結(jié)合。實(shí)際證明,采用這種方法省去了復(fù)雜的語言編程,縮短了軟件的開發(fā)時(shí)間,節(jié)約了系統(tǒng)開發(fā)成本,同時(shí)也增加了應(yīng)用的靈活性。

      關(guān)鍵詞:LabVIEW;動(dòng)態(tài)鏈接庫;虛擬儀器;數(shù)據(jù)采集

      中圖分類號(hào):TP399文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1004-373X(2009)12-149-03

      Research on Driver of General Data Acquisition Card Based on LabVIEW

      WU Jian,LI Bajin

      (College of Information Engineering,Inner Mongolia University of Technology,Hohhot,010051,China)

      Abstract:Facing the problem that virtual instrumentation development software such as LabVIEW can only support its company′s card and can not support other company′s DAQ card,an important method of using an ordinary DAQ card in virtual instrumentation development software which is calling dynamic link library functions is studied.And from the examples,the key process and procedure of calling dynamic link library functions in LabVIEW is presented.It realizes the combination of LabVIEW and ordinary DAQ card.It proves that this method can avoid the complicated computer program,shorten software-developing time,save cost and increase the application agility.

      Keywords:LabVIEW;dynamic link library;virtual instrument;data acquisition

      0 引 言

      虛擬儀器技術(shù)是20世紀(jì)90年代發(fā)展起來的一種新技術(shù),融計(jì)算機(jī)和總線技術(shù)、微電子技術(shù)、測量技術(shù)于一身,它是對傳統(tǒng)儀器的重大突破,是計(jì)算機(jī)技術(shù)與儀器技術(shù)相結(jié)合的產(chǎn)物。它利用計(jì)算機(jī)系統(tǒng)的強(qiáng)大功能,結(jié)合相應(yīng)的硬件,大大突破傳統(tǒng)儀器在數(shù)據(jù)處理、顯示和存儲(chǔ)以及系統(tǒng)維護(hù)和擴(kuò)展等方面的限制。虛擬儀器的眾多優(yōu)點(diǎn)使其得到了廣泛的應(yīng)用,然而當(dāng)今著名的虛擬儀器開發(fā)軟件(如LabVIEW等)只能支持NI公司生產(chǎn)的數(shù)據(jù)采集卡,而不能直接驅(qū)動(dòng)普通的數(shù)據(jù)采集卡。本文重點(diǎn)研究了在虛擬儀器開發(fā)軟件平臺(tái)LabVIEW下使用普通數(shù)據(jù)采集卡的方法。

      1 虛擬儀器開發(fā)平臺(tái) LabVIEW與數(shù)據(jù)采集卡的連接

      LabVIEW是美國NI公司推出的一種基于G語言(Graphics Language),即圖形化編程語言的虛擬儀器軟件開發(fā)工具,具有強(qiáng)大的數(shù)據(jù)采集功能,通常只支持NI公司的數(shù)據(jù)采集卡,而這些卡的價(jià)格比較昂貴。因此,為了能在LabVIEW平臺(tái)上驅(qū)動(dòng)普通的數(shù)據(jù)采集卡,用戶必須通過LabVIEW所提供的調(diào)用庫函數(shù)節(jié)點(diǎn)(Call Library Function Node,CLFN)及代碼接口節(jié)點(diǎn)(Code Interface Node,CIN)等功能,將功能強(qiáng)大、編程靈活、而且已有很多現(xiàn)成程序模塊的C語言同LabVIEW中編程直觀方便的圖形化G語言結(jié)合起來,從而實(shí)現(xiàn)用普通的數(shù)據(jù)采集卡來采集數(shù)據(jù)的功能,使LabVIEW在對硬件的支持上有了一個(gè)質(zhì)的飛躍。

      在LabVIEW中利用CLFN節(jié)點(diǎn)可以較容易地實(shí)現(xiàn)訪問動(dòng)態(tài)鏈接庫(DLL),而且在購買數(shù)據(jù)采集卡的時(shí),廠商一般會(huì)給用戶提供動(dòng)態(tài)鏈接庫。所以研究在LabVIEW平臺(tái)下調(diào)用動(dòng)態(tài)鏈接庫驅(qū)動(dòng)普通的數(shù)據(jù)采集卡來實(shí)現(xiàn)數(shù)據(jù)采集更具有普遍性。

      2 基于動(dòng)態(tài)鏈接庫的普通數(shù)據(jù)采集卡的驅(qū)動(dòng)

      2.1 動(dòng)態(tài)鏈接庫概述

      動(dòng)態(tài)鏈接是一種應(yīng)用程序在運(yùn)行時(shí)與庫文件連接起來的技術(shù)。動(dòng)態(tài)鏈接庫(DLL)是一個(gè)可以多方共享的程序模塊,提供函數(shù)供Windows應(yīng)用程序或其他的動(dòng)態(tài)鏈接函數(shù)庫直接或間接調(diào)用,只有在別的模塊中調(diào)用了它的某個(gè)函數(shù)以后才發(fā)生作用。它是在應(yīng)用程序運(yùn)行時(shí)被裝入和鏈接的,而不是把庫代碼復(fù)制到應(yīng)用程序中,只是在程序中記錄了函數(shù)的入口點(diǎn)和接口。動(dòng)態(tài)鏈接庫獨(dú)立于編程語言,因此LabVIEW可以調(diào)用用大多數(shù)語言(如Visual C++,C++ Builder等)編寫生成的動(dòng)態(tài)鏈接庫。在調(diào)用DLL的函數(shù)時(shí),必須知道以下4個(gè)信息:函數(shù)返回的數(shù)據(jù)類型,函數(shù)調(diào)用的方式,函數(shù)的參數(shù)及類型,DLL庫文件的位置等。

      2.2 LabVIEW對DLL的調(diào)用

      通過對Call Library Function Node的配置可以實(shí)現(xiàn)DLL的調(diào)用,關(guān)鍵要了解被調(diào)用的函數(shù)名稱、功能及其輸入/輸出參數(shù)。配置節(jié)點(diǎn)的目的在于指定DLL模塊中與LabVIEW數(shù)據(jù)交換的相應(yīng)驅(qū)動(dòng)函數(shù)。調(diào)用Call Library Function模塊,雙擊此模塊,在彈出CLF對話框中進(jìn)行節(jié)點(diǎn)配置,CLF函數(shù)配置對話框見圖1。第一個(gè)參數(shù)“庫名或路徑”,填入需要調(diào)用的動(dòng)態(tài)鏈接庫文件的名字和路徑。第二個(gè)參數(shù)“函數(shù)名”,是鏈接庫中要調(diào)用的函數(shù)名稱。當(dāng)在庫名或路徑欄中設(shè)定了DLL的路徑后,在函數(shù)名下拉框中就可以看到該動(dòng)態(tài)鏈接庫所包含的所有函數(shù)名。第三個(gè)參數(shù)“調(diào)用規(guī)范”,此欄中可以設(shè)置該動(dòng)態(tài)鏈接庫是標(biāo)準(zhǔn)WINAPI調(diào)用還是普通的C調(diào)用。一般來說,都采用C調(diào)用,但是對于API調(diào)用則必須選擇stdcall(WINAPI),最后一個(gè)需要注意的參數(shù)選項(xiàng)是線程安全選擇,此欄中可以選擇DLL是否可以被重入調(diào)用,默認(rèn)情況是在UI線程中運(yùn)行,即該動(dòng)態(tài)鏈接庫只能在User Interface Thread下運(yùn)行。如果動(dòng)態(tài)鏈接庫中被調(diào)用的函數(shù)返回時(shí)間很長,那么就會(huì)導(dǎo)致LabVIEW不能執(zhí)行UI線程中的其他任務(wù),因此界面反應(yīng)可能會(huì)很慢,甚至停止。這時(shí)候最好把它設(shè)為重入,若設(shè)置為重入,則該動(dòng)態(tài)鏈接庫可以由多個(gè)線程同時(shí)調(diào)用,但前提是必須保證該DLL能被多個(gè)線程同時(shí)安全調(diào)用。

      圖1 Call Library Function配置對話框

      在參數(shù)配置菜單下設(shè)置函數(shù)的返回值類型和輸入?yún)?shù)。對話框右側(cè)對應(yīng)每一個(gè)參數(shù)的參數(shù)名稱、類型、數(shù)據(jù)類型、參數(shù)傳遞方式。其中,需要注意的是數(shù)據(jù)類型選項(xiàng),在不同的編譯平臺(tái)下,數(shù)據(jù)類型的定義名稱是不一樣的。為了將數(shù)據(jù)類型一一對應(yīng),在LabVIEW中必須對數(shù)據(jù)類型名稱定義進(jìn)行轉(zhuǎn)換。

      3 普通數(shù)據(jù)采集卡在LabVIEW平臺(tái)下的應(yīng)用實(shí)例

      以北京優(yōu)采公司的UA301A型A/D數(shù)據(jù)采集卡為例,該采集卡在LabVIEW平臺(tái)下不能直接被驅(qū)動(dòng)。該采集卡提供了一個(gè)動(dòng)態(tài)鏈接庫ua300a.dll,此動(dòng)態(tài)鏈接庫中提供了許多簡潔高效的采集和控制函數(shù),支持UA301A采集器的各種功能。

      UA301A為12位的A/D卡,系統(tǒng)中采用的是雙極性輸入信號(hào)和雙極性原碼的編碼方法,轉(zhuǎn)換的結(jié)果為二進(jìn)制數(shù),轉(zhuǎn)換后得到0~4 095的數(shù)字量。為了直觀表示被測物理量,需將轉(zhuǎn)換后的數(shù)字量變換為具有實(shí)際工程意義的數(shù)值。當(dāng)單極性信號(hào)輸入時(shí),模擬電壓值V與數(shù)字量D的對應(yīng)關(guān)系可描述為:V=D/4 095×10;當(dāng)輸入信號(hào)為雙極性時(shí),兩者的對應(yīng)關(guān)系為:V=(D-2 048)/4 095×10。這個(gè)轉(zhuǎn)換過程在驅(qū)動(dòng)設(shè)計(jì)中可采用Case結(jié)構(gòu)來完成,把選擇輸入信號(hào)為單極性還是雙極性作為這個(gè)Case結(jié)構(gòu)的布爾值輸入。數(shù)據(jù)采集驅(qū)動(dòng)程序框圖如圖2所示。

      圖2 調(diào)用DLL的數(shù)據(jù)采集驅(qū)動(dòng)程序框圖

      圖2中4個(gè)CLF節(jié)點(diǎn)分別用來調(diào)用OpenUA300,minitz,readdataz,CloseUA300這四個(gè)函數(shù)。

      對于LabVIEW與DLL函數(shù)之間傳遞數(shù)組類型數(shù)據(jù),無論采用何種數(shù)組格式進(jìn)行傳遞,都需要在LabVIEW中為數(shù)組預(yù)先分配空間,也就是給該數(shù)組開辟緩存,不然會(huì)導(dǎo)致程序崩潰。該程序在采集數(shù)據(jù)前預(yù)先為其初始化一個(gè)二維數(shù)組空間,為了使采集到的數(shù)據(jù)在數(shù)組中的位置始終對應(yīng)于采樣的每一通道,初始化數(shù)組空間時(shí)設(shè)置每通道采樣點(diǎn)數(shù)為行,采集通道數(shù)為列,這樣數(shù)據(jù)從采集卡FIFO存入緩存時(shí),每一列對應(yīng)每一通道的數(shù)據(jù),省去了后續(xù)通過循環(huán)索引出各通道數(shù)據(jù)的繁瑣。

      為了實(shí)現(xiàn)數(shù)據(jù)的連續(xù)采集,系統(tǒng)應(yīng)保持在循環(huán)狀態(tài),設(shè)計(jì)中采用While循環(huán)來實(shí)現(xiàn)這一功能,但是LabVIEW在執(zhí)行While循環(huán)時(shí),如果用戶沒有給它設(shè)定循環(huán)時(shí)間間隔,則它將以CPU的極限速度運(yùn)行。這樣可能會(huì)導(dǎo)致整個(gè)LabVIEW程序看上去像死機(jī)一樣,所以需要給While循環(huán)加上一個(gè)指定的時(shí)間間隔。

      在采集前首先設(shè)置采樣通道、采樣頻率、采樣點(diǎn)數(shù)、增益和數(shù)據(jù)傳輸方式等參數(shù),該接口驅(qū)動(dòng)的前面板見圖3。

      圖3 數(shù)據(jù)采集驅(qū)動(dòng)程序前面板

      4 結(jié) 語

      由此可以看出,在LabVIEW中調(diào)用動(dòng)態(tài)鏈接庫函數(shù),來驅(qū)動(dòng)普通數(shù)據(jù)采集卡的技術(shù),顯示出了LabVIEW強(qiáng)大的外部程序接口能力。應(yīng)用此方法設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)一方面可充分利用LabVIEW的界面友好、圖形顯示和虛擬儀器強(qiáng)大的開發(fā)功能等優(yōu)點(diǎn);另一方面又能大大降低系統(tǒng)的開發(fā)成本,可以使LabVIEW在對硬件的支持上有一個(gè)質(zhì)的飛躍。

      通過LabVIEW的外部程序接口CLF節(jié)點(diǎn)訪問動(dòng)態(tài)鏈接庫來調(diào)用Windows標(biāo)準(zhǔn)庫函數(shù),使得LabVIEW支持的數(shù)據(jù)采集板卡范圍突破了限制,同時(shí)也為LabVIEW訪問底層函數(shù)提供了一種新的思路。

      參考文獻(xiàn)

      [1]魏海燕,楊建新,都鼎新,等.基于LabVIEW的虛擬儀器開發(fā)[J].機(jī)械工程師,2004(4):50-51.

      [2]Using External Code in LabVIEW[Z].National Instruments LabVIEW User Manual,2000.

      [3]張凱,周陬,郭棟.虛擬儀器工程設(shè)計(jì)與開發(fā)[M].北京:國防工業(yè)出版社,2004.

      [4]林康紅,唐海峰.動(dòng)態(tài)鏈接庫DLL在虛擬儀器中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2002(5):56-60.

      [5]熊煥庭.在LabVIEW中數(shù)據(jù)采集卡的三種驅(qū)動(dòng)方法[J].電測與儀表,2001,38(8):35-37.

      [6]楊樂平,李海濤.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.

      [7]龍志強(qiáng),呂治國.LabVIEW與通用數(shù)據(jù)采集卡的接口方法研究[J].微計(jì)算機(jī)信息,2001(9):11-13.

      [8]北京優(yōu)采測控有限公司.UA301A型A/D采集器使用說明[Z].2003.

      [9]李廣軍,王厚軍.實(shí)用接口技術(shù)[M].成都:電子科技大學(xué)出版社,1998.

      [10]陳錫輝,張銀鴻.LabVIEW8.20程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2007.

      猜你喜歡
      虛擬儀器數(shù)據(jù)采集
      PCB 刻制機(jī)功能開發(fā)及在虛擬儀器實(shí)驗(yàn)室建設(shè)中的應(yīng)用
      電子制作(2017年13期)2017-12-15 09:00:26
      虛擬儀器及其在電工電子實(shí)驗(yàn)中的應(yīng)用
      電子制作(2017年1期)2017-05-17 03:54:33
      一種基于虛擬儀器的電控柴油機(jī)實(shí)驗(yàn)臺(tái)的設(shè)計(jì)
      電子制作(2017年9期)2017-04-17 03:00:35
      虛擬儀器技術(shù)在農(nóng)業(yè)裝備測控中的應(yīng)用
      CS5463在植栽用電子鎮(zhèn)流器老化監(jiān)控系統(tǒng)中的應(yīng)用
      大數(shù)據(jù)時(shí)代高校數(shù)據(jù)管理的思考
      科技視界(2016年18期)2016-11-03 22:51:40
      鐵路客流時(shí)空分布研究綜述
      基于廣播模式的數(shù)據(jù)實(shí)時(shí)采集與處理系統(tǒng)
      軟件工程(2016年8期)2016-10-25 15:54:18
      通用Web表單數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      軟件工程(2016年8期)2016-10-25 15:52:53
      基于開源系統(tǒng)的綜合業(yè)務(wù)數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
      鄂尔多斯市| 靖宇县| 麟游县| 平乡县| 呈贡县| 元江| 静宁县| 巨野县| 清远市| 绥芬河市| 荣成市| 青铜峡市| 绥化市| 含山县| 苍梧县| 四平市| 贞丰县| 温泉县| 天水市| 壤塘县| 岳西县| 沽源县| 晋州市| 板桥市| 定安县| 精河县| 北票市| 本溪市| 济源市| 富民县| 阿尔山市| 桓仁| 贺州市| 田东县| 荆州市| 九龙城区| 漯河市| 威信县| 从江县| 南投市| 勃利县|