在LabVIEW中驱动数据采集卡的三种方法

合集下载

在LabVIEW中编写数据采集卡驱动程序不同方法的比较

在LabVIEW中编写数据采集卡驱动程序不同方法的比较

第21卷第2期2003年6月北京工商大学学报(自然科学版)Journal of Beijing Techno logy and Business U niversity (N atural Science Editi on )V o l 121N o 12Jun 12003 文章编号:167121513(2003)022*******在LabV IE W 中编写数据采集卡驱动程序不同方法的比较朱立军, 张元培, 都俊超, 李 宁, 白 乔(北京工商大学机械自动化学院,北京 100037)摘 要:详细介绍了在使用虚拟仪器软件开发平台L abV IE W 开发测控软件时,如何采用端口读写、调用动态连接库以及调用C 语言源代码等3种不同方式来编写采集卡的驱动程序,比较了它们的优缺点并指出各自的适用场合Ζ关键词:数据采集卡;L abV IE W ;虚拟仪器中图分类号:T P 274 文献标识码:A 收稿日期:20021008基金项目:北京市教委科技发展计划项目(02KJ034)作者简介:朱立军(1972-),男,辽宁沈阳人,硕士生,主要从事计算机辅助质量检测与控制方面的研究Ζ 虚拟仪器技术是90年代发展起来的一种新技术,融计算机和总线技术、微电子技术、测量技术于一身ΛL abV IE W 是美国N I 公司基于虚拟仪器技术面向多领域的虚拟仪器开发平台,简捷的图形化编程环境和强大的功能,已广泛应用于自动化、过程控制、仪器设计和数据采集等领域[1]Λ虚拟仪器的硬件平台由PC 计算机与数据采集卡(DAQ )组成,相应地N I 公司提供了上百种采集卡的驱动程序供用户使用Λ但是N I 公司支持的数据采集卡在价格上比较昂贵,不适用于一般的企业和单位Λ针对N I 公司不支持的普通型数据采集卡(例如A C 6011型采集卡)进行数据采集的各种方法进行探讨并分析了各种方法的优缺点及应用场合Λ本系统主机采用普通PC 机,选用A C 6011普通型数据采集卡,它基于PC I 总线,即插即用,无需地址跳线,适合测量变送器输出、直流电压等场合的测量应用Λ该卡具有32路模拟输入、2路12位D A 输出、32路开关量,采用大规模可编程门阵列设计,可靠性高Λ硬件系统结构如图1Λ1 编写数据采集卡驱动程序3种方式111 直接端口读写方式(I O 方式)L abV IE W 中有两个直接访问底层设备的图标,即In Po rt .vi 和O u t Po rt .vi Λ这两个函数分别完成从设备的物理地址直接读取和输出数据的功能,通过直接读写寄存器可以提高数据的传输速率Λ采集卡的工作方式为:软件启动、查询方式读取采样结果Λ具体实现方法如下:1)In Po rt .vi 、O u t Po rt .vi 图标的调用In Po rt .vi 、O u t Po rt .vi 图标存放在M em o ry子模板上,这两个图标的调用路径分别如下:Functi on s >>A dvanced >>M em o ry >>In Po rt .viFuncti on s >>A dvanced >>M em o ry >>O u t Po rt .vi图2 端口读写参数设置64regu ster address :U 32型Λ数据读入端口的物理地址regu ster address 2:U 32型Λ该值为待写入寄存器物理地址value :U 16型Λ该值是从指定端口读取的字value 2:U 16型Λ该值为待写入寄存器值read (w rite )a byte o ra w o rd (F :byte ):Boo lean 型Λ该值为T rue 时,读(写)一个字;为False 时,读(写)一个字节Λ2)流程图的设计流程图中用顺序控制结构(Sequence )来控制读写端口的前后次序,用W h ile 循环结构的转移寄存器(Sh ift R egister )来记录每一次的采样值,循环结束,以一维数组的形式输出,波形显示在Grap h 控件上Λ流程图如图3Λ图3 端口读写方式流程图112 调用动态连接库的方式(CL F 方式)动态连接库通常由数据采集卡生产厂商提供,通过L abV IE W 的CL F (调用路径为Functi on >>A dvanced >>Call L ib rary Funvti on )功能模块来调用,方法如下:1)把动态连接库拷贝到C : W indow s system 目录下;2)用CL F 模块调用V C ++的动态连接库中的函数HANDL E A C _O p enD river (vo id )来启动采集卡,函数返回获得的句柄,参数设置如图4Λ3)调用in t A C _6011_I N IT (HANDL E po rt ,un signed long 3board _d ),此函数的功能是初始化A C 6011采集卡,获得采集卡的数量和识别I D ;参数po rt 为驱动句柄,board _id 为采集卡指针,用来识别采集卡Λ函数返回采集卡的数量、参数设置方法同图4Λ4)调用un signed in t A C _6011_AD (HANDL E po rt ,un signed long board _id ,un signed long chn ,un signed long ti m es )函数来完成数据的采样Λ其中参数chn 是要进行A D 采样的通道号(0231),ti m es 为A D 采样的次数,参数设置方法同图4Λ5)采集结束后,还应调用in t A C _C lo seD river (HANDL E po rti on )函数来关闭驱动,释放驱动句柄Λ程序主要流程图如图5Λ图4 调用动态连接库方法的参数设置图5 调用动态连接库方式的流程图113 调用C 语言源代码的方式(C IN 方式)在L abV IE W 中提供了与C 语言的编程接口图标C I N ,由于C 语言是一种中间语言,具有功能强大、快速、高效等特点,这样当遇到某些L abV IE W 图标难以实现的功能时,就可以通过接口图标C I N 来调用C 语言源代码来实现[2]Λ可以通过使用C I N 图标来调用由C 语言编写的采集卡驱动程序的方法来提高虚拟仪器的采集精度Λ其步骤如下:11311 设置C I N 图标的输入、输出参数单击图标调用路径Functi on >>A dvanced >>Code In terfance N ode 来激活C I N ,然后从C I N 图标的快捷菜单中选择A dd Param eter 选项来添加输入、输出参数Λ11312 生成C 源代码编辑格式文件(3.C 文件)代码框架并添加驱动程序C 源代码从C I N 图标的快捷菜单中选择C reate .C F ile …项,会弹出一个文件存储对话框,键入文件名(本程序文件名为Code .c ),则生成L abV IE W 的C 语言代码框架;然后用任意一种文件编辑器将它打开Λ74 第21卷第2期朱立军等:在L abV IE W 中编写数据采集卡驱动程序不同方法的比较并在适当位置添入数据采集卡驱动程序的C源代码Λ11313 文件源代码的编译C文件源代码的编译主要是在以C语言为主的开发系统中进行Λ编译完毕形成一个可以和C I N图标进行动态连接的工程文件3.lsbΛ本程序是在V C ++610环境下来编译3.C源代码Λ其步骤如下:1)建一个DLL工程文件,命名为codeΛ打开V C++开发平台,执行F ile>>N ew操作Λa.进行选项:w in32D ynam ic L ink L ib raryΛb.添加工程文件名:codeΛc.locati on:填写工程文件的存放路径Λ最后形成工程文件code.CPPΛ2)工程文件中添加cin.ob j、labview.lib、lvsb. lib、lvsbm ain.def四个文件Λ执行P ro ject>>A dd to P ro ject>>F iles…操作,向工程文件中添加上述四个文件Λ这四个文件在L abV IE W安装路径下的cin too ls子文件夹中Λ3)向工程文件中添加C源代码文件code.cΛ添加方法同2)Λ4)C源代码文件编译前的设置Λ由菜单P ro ject>>Setting…打开设置对话框,逐项设置Λa.Setting fo r选项设置ΛA ll Configu rati onb.C C++标签页设置Λ用鼠标左击C C++标签页按钮,逐项设置Λ・Catego ry:由下拉菜单选择为P rep rocesso rΛA dditi onal include directo ries:添加L abV IE W 的cin too ls文件夹的路径Λ假设L abV IE W安装路径为d: L abV IE W,则在A dditi onal include directo ries处添加路径d: L abV IE W cin too ls Λ・Catego ry:由下拉菜单另选为Code Genera2 ti onΛStrict m em ber alignm en t:设置为1B yteΛU se run2ti m e lib rary:设置为M u ltith readed DLLΛc.Cu stom B u ild标签页设置Λ用鼠标左击Cu s2 tom B u ild标签页,逐项设置Λ・Comm ands:输入命令行如下:d: labview cin too ls lvsbu til2c “(T argetN am e)”2d“$(W k spD ir) $(O u tD ir)”・O u tp u ts:输入命令行如下:$(O u tD ir)$(T argetN am e).lsb5)添加C源代码程序Λ可在W o rk sp ace w izard窗口中双击code.c,打开源文件添加C源代码Λ6)编译C源代码文件Λ在主菜单B u ild下选择Com p ile code.c选项,则进行code.c程序的编译,如有语法等错误,则重新编译Λ重复这一过程,直至没有错误Λ7)生成可执行文件Λ在主菜单B u ild下选择B u ild Code.dll选项,即生成可执行文件Code.lsb,同时生成如A dd.dll等所需的全部文件Λ11314 装载编译好的可执行文件回到L abV IE W流程图窗口,在C I N图标的快捷菜单中选择L oad Code R esou rce…项,即弹出一个Choo se a code resou rce file对话框,按照Code工程文件存入的路径寻找D ebug目录下的Code.lsb 文件Λ然后点击“打开”按钮,于是Code.lsb文件就装入C I N图标中Λ其主要流程图如图6Λ图6 使用C I N方式的流程图至此,就完成了采集卡驱动程序的全部设计过程Λ可运行该程序进行数据的采集Λ下面分别给出通过端口读写方式、调用动态连接库(CL F)的方式和通过调用源代码(C I N)的方式进行数据采集的结果,已知输入信号为频率2kH Z 的正弦波Λ通过比较,可以看出在输入信号频率较高时(如2kH Z以上的情况),通过调用源代码(C I N)的方法来进行数据采集可以大大地提高数据采集的精度Λ2 结论在使用N I公司不支持的普通型数据采集卡构成的测控系统中,通过使用虚拟仪器软件L ab2 V IE W中的C I N图标来调用由C开发的采集卡驱动程序的方法,一方面可以大大提高了数据采集精84北京工商大学学报(自然科学版)2003年6月 度,另一方面在驱动程序中还可以很方便地加入一些在L abV IE W 中没有提供或难以实现的信号处理算法,但使用这种方法的缺点是在数据采集过程中不能实时地进行数据的显示,只能在数据全部采集结束后再一起显示所采集的全部数据Λ这样在需要“边采集边显示”的场合就不适用Λ而采用端口读写的方式和调用动态连接库的方式进行数据采集则可以实现“边采集边显示”,但缺点是在输入信号频率较高时采集到的波形失真(如图7、8所示)Λ所以在选用何种方式进行数据采集时应根据本检测系统的不同要求以及输入信号的不同的特点来选用不同的采集卡驱动程序的编写方式Λ图7 端口读写方式波形图8 CL F 方式波形图9 C I N 方式波形参考文献:[1] 杨乐平.L abV IE W 程序设计与应用[M ].北京:电子工业出版社,2001.[2] 刘君华.虚拟仪器图形化编程语言L abV IE W 教程[M ].西安:西安电子科技大学出版社,2001.THE M EASURES T O M AKE D R IVE -PROGRAMM EOF DAQ IN LabV IE WZHU L i 2jun , ZHAN G Yuan 2p ei , DU Jun 2chao , L I N ing , BA I Q iao (Colleg e of m echan ica l eng ineering and au to m a tion ,B eij ing T echnology andB usiness U n iversity ,B eij ing 100037,Ch ina )Abstract :D escribed how to take the m ethods of I O 、CL F and C I N to m ake drive -p rogramm e of DAQ ,w hen m ak ing test 2con tro l p rogramm e w ith the developm en t 2p latfo rm of virtual in stru 2m en ts.M eanw h ile ,com p ared the advan tage 2and 2disadvan tage of them and the su itab le environ 2m en ts to w h ich they app ly .Key words :DAQ ;L abV IE W ;virtual in strum en ts(责任编辑:郭新元)94 第21卷第2期朱立军等:在L abV IE W 中编写数据采集卡驱动程序不同方法的比较。

基于LabVIEW平台的通用数据采集卡的驱动方法及数据采集(1)

基于LabVIEW平台的通用数据采集卡的驱动方法及数据采集(1)

use of DAQ card of NI or Non-NI Company in it, which is an advantage, compared with other
programming languages.
Keywords: LabVIEW; DAQ; NI
CLC number: TM931
定以上返回值的类型,此处选择
成可执行文件;
Numeric;
( 5 ) 调用 C I N 的功能菜单将生成 1.LabVIEW驱动接口的设计
⑥在 D a t a T y p e 中选择数据类
的可执行文件载入 C I N 图标. 这样
这里以函数 P 1 8 0 x - A d s P a c e r 为 型为 N u m e r i c ;
P 1 8 0 x - A d s P a c e r 函数的功能是 type;
式)驱动
硬件定时器触发模式下,对一个通
⑧单击以上对话框的 O K 按钮,
动 态 连 接 库 是 一 种 应 用 程 序 在 道 的 模 拟 输 入 信 号 进 行 A / D 转换, 即可得到 p 1 8 0 X - A d s P a c e r 函数的
电子质量 E LEC TR ONI CS QU ALI TY
·2 0 0 5 第 0 7 期·
测试技术卷 Tes t Tec hnol ogy
产品解决方案
具体实现步骤如下:
◆ 1 6 个数字输入 / 1 6 个数字输 栏中输入动态库名 p 1 8 0 x . d l l ;
( 1 ) 确定 C I N 图标的输入, 输出 出 通 道 ;
本 文 设 计 的 数 据 采 集 系 统 由 三 确保其为默认值 s t d c a l l ( W I N A P I ) ;

数据采集卡在LabVIEW中的驱动方法

数据采集卡在LabVIEW中的驱动方法
维普资讯
第2 5卷第 3期
20 0 8年 3月
计 算机应 用与软 件
Co mpue p ia in n o t r trAp lc t s a d S f o wae
Vo . 125 No. 3 M a . 00 r2 8
c n o e u e i cl n L b E . f r n t o sfrd v n ec mmo aa a q ii o o r y I o . i a n tb s d d r t i a VI W Di e e tmeh d o r i g t o e y i h n d t c u s in b ad b n P r v &O t o . i C d ne — t t u r v . o eI t r Pt
数 据 采集 卡 在 L b I W 中的 驱 动方 法 aVE
戴 新
( 广州大学信息与机电工程学院 广东 广州 5 00 10 6)
摘要Βιβλιοθήκη L b IW 目前 已成为虚拟仪器 软件的重要代表 , aVE 但是在 L b IW 中不能直接使用非 N 公 司的数据采集 卡, a VE I 必须 自行编
写驱动程序 。介绍 了在 L b IW 中驱动普通 数据 采集卡 的几种方 法, a VE 包括 直接端 口读写法 、 利用代 码接 口节点 CN( oeItf e I C d ne c a Nd) oe 的方法和利用 C F C lLbayF nt n 节 点调 用动 态链 接库 的方法 , 比较 了三种方法 的应用特 点。 实践证 明,aV E L ( a irr u ci ) l o 并 L b IW
fc oe CN o a i a u co ( L ) oei Lb I W r t d cd T em i poeue fh rem t d r rsn d aeN d ( I ) r lLb r F nt n C F nd n a VE aei r ue . h an rcdrso et e e o sa peet , C l ry i no t h h e e

labview数据采集

labview数据采集

l.1基于动态链接库的普通数据卡的驱动LabVIEW 一般只支持NI 公司自己的数据采集卡,而这些卡的价格又比较昂贵。

但是LabVIEW 又提供了调用库函数节点(Call Library Function Node,CLF) 和代码接口节点(Code Interface Node, CIN) 这两种可以将编程灵活的C 语言和直观方便的LabVIEW G 语言结合起来的方法,利用这两种方法就可以大大提高LabVIEW 对普通数据采集卡的支持性。

这样,不但可以利用LabVIEW 强大的数据分析能力,而且还可以节约硬件成本。

调用代码接口节点(CIN)技术是将需要调用的外部代码编译成LabVIEW 能够识别的格式后与此结点相连。

当程序执行时,LabVIEW 将自动调用与此结点连接的外部代码,并向CIN传递特定的数据结构。

然而CIN 源代码对编译器和操作系统都有严格的限制,而且编译的过程也十分复杂。

因此在实际应用中更多的是采用通过库函数节点(CLF)来访问动态链接库(DLL)的方法,使用这种方法既可以直接调用WIN API 函数,也可以调用VisualC++、C++Builder、Visual Basic 等编写生成的DLL。

这样我们一方面可以使用自己所熟悉的语言来编写DLL,使编程更加的灵活方便;另一方面又可以利用数据采集卡开发商所提供的DLL,大大的缩短开发周期。

l.2 直接用LabVIEW 的In Port , Out Port 图标编程LabVIEW 的Functions 模板内Advanced \Memory 中的In Port 、Out Port 图标,与_inp、_outp功能相同,因此可用它们画程序方框图, 设计该A/D 插卡的驱动程序。

! 个通道扫描,各采集" 点数据的LabVIEW 程序方框图如图l 所示。

图中用LabVIEW 的计时图标控制扫描速率。

数据采集卡如何在Labview下使用)

数据采集卡如何在Labview下使用)

如何在labview下使用研华板卡?(适用于所有 ISA 和PCI 系列模拟量和数字量采集卡)答:研华所有das卡都可以在labview下使用。

Labview驱动是建立在32bitDLL驱动基础之上的,见下图。

所以要安装labview驱动先要安装32bitDLL驱动。

包括devicemanager和对应板卡的DLL 驱动,然后再安装对应的labview驱动。

具体步骤如下:2.3.1.1 安装Device Manager和32bitDLL驱动注意:测试板卡和使用研华驱动编程必须首先安装安装Device Manager和32bitDLL 驱动。

第一步:将启动光盘插入光驱;第二步:安装执行程序将会自动启动安装,这时您会看到下面的安装界面:图2-1注意:如果您的计算机没有启用自动安装,可在光盘文件中点击autorun.exe文件启动安装程第三步: 点击CONTINUE,出现下图界面(见图2-2)首先安装Device Manager。

也可以在光盘中执行\tools\DevMgr.exe直接安装。

图2-2第四步:点击IndividualDriver,然后选择您所安装的板卡的类型和型号,然后按照提示就可一步一步完成驱动程序的安装。

图2-32.3.1.4 labview驱动程序安装使用说明研华提供labview驱动程序。

注意:安装完前面步骤的Device Manager和32bitDLL 驱动后labview驱动程序才可以正常工作。

光盘自动运行点击Installation再点击Advance Options 出现以下界面(见图2-6)。

点击:LavView Drivers来安装labview驱动程序和labview驱动手册和示例程序。

图2-6安装完后labview驱动帮助手册快捷方式为:开始/ 程序/ Advantech Automation/LabView/XXXX.chm。

默认安装下也可以在C:\Program Files\National Instruments\LabVIEW 7.0\help\Advantech 中直接打开labview驱动帮助手册。

凌华采集卡labview下操作步骤

凌华采集卡labview下操作步骤

凌华采集卡labview下操作步骤演示首先保证安装的两个驱动版本是最新版驱动程序1.正确安装DAQPilot(V2.2.0.0125)和DAQMaster,前者是驱动程序和程序部分,后者主要功能是管理软件用来设置板卡的设备号。

2.在安装好板卡及以上驱动程序后,到设备管理器里确认安装的采集卡上没有感叹号或问号,如果有更新下驱动程序。

3.DAQPilot下有两种编程方式:a)使用Express VI编写测试程序(无需使用DAQMaster),只需打开程序,然后按照以下图示操作。

然后选择你要控制的功能比如7233是一块全数字量输入卡我们就选择\Program Files\ADLINK\Samples\LabVIEW\Express\Digital Input文件夹下点击如下应用程序选择如下图显示程序框图可以看到程序面版如下然后双击中间的模块如下:点击Modify进行配置类似如下示图然后一直点击Next,直到Finish然后点击labview环境运行按钮,数据就会出现在前面板的表格里。

b)使用Polymorphic VI编写程序,需要首先配置DAQMaster,操作如下图:点击打开后,还需点击几个图标左上角的展开图标和带红色字母A的图标就会显示主机里安装的所有板卡了,我的电脑里没有板卡,所以只显示了一个虚拟设备,且设备号是Dev0,此设备号就是我们需要为板卡设置的,我们在Dev0上右键点击选择Edit,出现如下图假如我们机器里差了块7233我们可以重新起个名字例如Dev1.然后点击确定。

此时DAQMaster工作就做玩了。

我们打开测试程序此时我们选择多态程序。

选择Digital IO Samples.llb里的如下程序我们把里面默认的Dev0改成我们刚在DAQMaster里设置的Dev1,然后把后面的通道可以改成0:31,同时可以把指示灯拉长也变成32个。

如下图然后点击左上角运行图标,程序就可以运行了。

在LabVIEW中实现数据采集

在LabVIEW中实现数据采集



NI公司的绝大部分数据采集卡都是即插即用型 的设备,硬件正确安装后,就会出现在 Measurement & Automation Explorer的 Configuration>My System> Devices and Interfaces列表中. 在相应的设备名上单击右键,选择Properties, 就会出现采集卡的配置对话框配置.
区间 最小模拟变化量 分辨率 2
数据采集卡的配置

Measurement and Automation (MAX)
管理计算机的硬件设备(数据采集卡、端 口等) 配置虚拟通道(Virtual Channel)

输入/输出 范围 输入方式 测试 配置好的虚拟通道直接LabVIEW中调用
System
该设置项显示了设备占用的系统资源以及设备的编号。
AI
AO
Accessory
OPC
在完成上述设置后,单击确定,会出现“Test Resources”和“Test Panels”按钮。单击 “Test Resources”出现测试结果对话框。
单击“Test Panels”按钮出现测试面板。
例:多通道数据采集程序
AI Config
AI Start
AI Read
AI Clear
例:多通道波形的连续采集
数据采集中的触发

触发的概念和作用

触发是开始数据采集的某个事件.用触发来控制数据 采集可以实现精确定时采数和同步显示. 硬件触发是用外部信号来产生触发; 软件触发也称为条件触发,就是通过软件设置某个条 件,满足相应条件后开始对数据进行操作.
在LabVIEW中实现数据采集

在LabVIEW中实现数据采集

在LabVIEW中实现数据采集

Easy VIs Intermediate VIs Advanced VIs Utility VIs
Easy Analog Input VIs

这是LabVIEW提供的一组标准的、简单易用的 采集 VI.
:从指定通道获得一个样本.
:从通道组获得一个样本,这些样本返回到一个样本数组.
:由一个通道得到一个波形,这些样本返回到一个waveform 数组.
System
该设置项显示了设备占用的系统资源以及设备的编号。
AI
AO
Accessory
OPC
在完成上述设置后,单击确定,会出现“Test Resources”和“Test Panels”按钮。单击 “Test Resources”出现测试结果对话框。
单击“Test Panels”按钮出现测试面板。

Device—采集卡的设备号. Channel—指定模入通道号的串数组. Buffer size—单位是scan,用于控制采集数据计算 机内存的大小.

AI Start启动带缓冲的模入操作。它控制数据采 集速率,采集点的数目,及使用任何硬件触发 的选择。它的两个重要输入是:


Scan rate (scan/sec)—对每个通道采集的每秒扫描次 数. Number of scans to acquire—对通道列表的扫描次数。
8 differential 12bits 200kS/s guaranteed Bipolar only 512 samples
Analog Output Number of channels Resolution Range
2 16bits +-10V
2 12bits +-10V
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在LabVIEW中驱动数据采集卡的三种方法
作者:EEFOCUS 文章来源:EDN China
一、引言
近年来,面向仪器的软件开发平台,如美国NI公司LabVIEW的成熟和商业化,使用者在配有专用或通用插卡式硬件和软件开发平台的个人计算机上,可按自己的需求,设计和组建各种测试分析仪器和测控系统。

由于LabVIEW提供的是一种适应工程技术人员思维习惯的图形化编程语言,图形界面丰富,内含大量分析处理子程序,使用十分方便,个人仪器发展到了使用者也能设计,开发的新阶段。

鉴于是工程技术人员自己编制,调用软件来开发仪器功能,软件成了仪器的关键。

故人们也称这类个人仪器为虚拟仪器,称这种主要由使用者自己设计,制造仪器的技术为虚拟仪器技术(Virtual Instrumentation Technology)。

使用虚拟仪器技术,开发周期短、仪器成本低、界面友好、使用方便、可靠性高, 可赋于检测仪初步智能,能共享PC机丰富的软硬件资源,是当前仪器业发展的一个重要方面。

虚拟仪器的典型形式是在台式微机系统主板扩展槽中插入各类数据采集插卡,与微机外被测信号或仪器相连,组成测试与控制系统。

但NI公司出售的,直接支持LabVIEW的插卡价格十分昂贵,严重限制着人们用LabVIEW来开发各种虚拟仪器系统。

在LabVIEW中如何驱动其它低价位的数据采集插卡,成为了国内许多使用者面临的关键问题。

二、三种在LabVIEW中使用国产数据采集插卡的方法
笔者将近年来工程应用中总结出的三种在LabVIEW中驱动通用数据采集插卡的方法介绍如下。

介绍中,以某市售8通道12位A/D插卡为例。

设插卡基地址为base=0x100,在C语言中,选择信号通道ch的指令是_outp(base,ch),启动A/D的指令是_inp(base),采样量化后的12位二进制数的高4位存于base+2中,低8位存于base+3中。

1、直接用LabVIEW的In Port , Out Port图标编程
LabVIEW的Functions模板内Adevanced \ Memory中的In Port 、Out Port 图标,与_inp、_outp功能相同,因此可用它们画程序方框图, 设计该A/D插卡的驱动程序。

N个通道扫描,各采集n点数据的LabVIEW程序方框图如图1所示。

图中用LabVIEW的计时图标控制扫描速率。

图1 N个通道扫描,各采集n点数据的程序方框图
显然,若采样速率要求较低,这不失为最方便、直观的方法,而且可随画随改。

2、用LabVIEW的CIN图标生成A/D插卡驱动程序的子VI
LabVIEW的Functions模板内Adevanced 中有一个CIN(Code InteRFace Node)图标,用来在LabVIEW程序方框图中直接调其它编程语言(如VC)写的代码。

现以生成一个对指定的通道采集n点数据的LabVIEW子VI为例,其主要步骤为:
图2 CIN图标
(1)在LabVIEW下,点出CIN图标,拖大并联接入两个控件和一个显件,如图2所示。

其中控件用于选择模拟信号输入通道和选择数据采集点数,数组显件显示所采集的数据。

(2)在CIN图标上单击鼠标右键弹出菜单,选Create .c file.,产生并存入一个×××.C程序框架。

(3)在VC++5.0下完成×××.C程序框架的数据采集部分的编写,编译该×××.C程序(示例见附1),生成×××.obj代码。

在coustom build方式下用nmake / f ×××.lvm 指令将×××.lvm接口程序(示例见附2)编译成×××.lsb代码。

(4)在LabVIEW的CIN图标下装载×××.lsb。

运行成功后将该CIN作成子VI,存入某个文件夹。

在以后的LabVIEW应用程序框图中,该子VI图标即可作此A/D插卡驱动图标使用。

若A/D插卡上有晶振作基准时钟,有可编程计数/定时器,附录1示例的C语言程序还可加入定时采集语句,以实现在子VI中选择采样速率。

图3是调用按上述步骤生成的子VI编程所采集的方波信号及其自功率谱。

图3 采集的方波信号及其自功率谱
用CIN结点生成A/D插卡驱动程序的子VI的方法可较充分发挥A/D的高转换速度,获得高的采样速率。

但编程较烦杂,不能由LabVIEW直接修改
3、用LabVIEW的Call Library Functions图标,动态链接数据采集插卡的.DLL库函数
许多数据采集插卡附有.DLL库函数形式的驱动程序,用户可使用某种DLL链接库的编程工具,如VC、VB,编写应用程序来调用它。

LabVIEW也提供了一个动态链接库函数的图标Call Library Function,放在Functions模板内的Adevanced子模板中。

在example/dll目录中有使用该图标的例子,可参照它们完成对数据采集插卡的.DLL库函数的调用。

三、两个测试系统实例
1、滚动轴承振动虚拟检测仪
该滚动轴承振动虚拟检测仪是为检测低噪声轴承强调的“异音”而开发的。

目前国内滚动轴承出厂振动分类检测的行业标准和检测仪器(如S0910型) 都只能检测振动加速度的均方根值,远不能适应低噪声轴承的要求。

我们在LabVIEW下,用PC机加国产12位A/D插卡,开发出的虚拟检测仪,采样速率最高达80KHz。

按每2秒检测一个轴承的迫节,以加速度均方值的分贝值,峰值因子,峭度,超某幅值峰数四个参数来综合评定轴承振动级别。

PC机14″的CRT,对检验员有极佳的可视性,检测确定的轴承等级由软指示灯闪烁显示,在面板上十分醒目,便于检验后归类。

每个轴承的检验结果自动写入当班统计文件中,供生产和质检部门使用。

检测程序读入各类设置文件便可适应不同类型轴承或不同的检测分类标准。

2、空调散热器试验测温系统
为对某空调散热器进行散热性能试验,开发出多点热电偶测温的虚拟仪器系统。

硬件选用一国产有A/D及DIO的PC机插卡,外串接三块前端信号处理板。

每块前端信号处理板提供一个冷端补偿电路,并可接16路热电偶。

每块前端板的冷端补偿电压和热电偶电势各占用插卡的一个模拟输入通道,由插卡的发出的4位数字输出选择各热电偶电势输入。

由于温度采集速率甚低,直接用LabVIEW的In Port , Out Port 图标编程完全可满足要求。

编程中调用了LabVIEW中Functions模板内Data Acquisition\ Signal Conditioning\Convert Thermcouple Reading图标,稍作修改,生成了各类标准热电偶温度转换为电压,电压转换为温度的新的子VI。

编程十分简便,且能用于各类标准热电偶测温。

附1 ×××.C源程序
/* CIN source file */
#include "c:\labview\cintools\extcode.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;/* 采样点数*/
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); /* 启动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:\labview\cintools
! include <$(cintoolsdir)\ntlvsb.mak>。

相关文档
最新文档