在LabVIEW中驱动数据采集卡的三种方法
- 格式:doc
- 大小:105.00 KB
- 文档页数:5
第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 中编写数据采集卡驱动程序不同方法的比较。
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下使用研华板卡?(适用于所有 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下操作步骤演示首先保证安装的两个驱动版本是最新版驱动程序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中驱动数据采集卡的三种方法作者: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插卡的驱动程序。
LabVIEW数据采集与处理技巧数据采集是实验室研究和工程项目中不可或缺的一项技术。
LabVIEW作为一款功能强大的图形化编程环境,为数据采集与处理提供了许多工具和技巧。
在本文中,我们将介绍一些LabVIEW中的数据采集与处理技巧,帮助您更好地应用LabVIEW进行数据采集与处理。
一、数据采集模块的选择在使用LabVIEW进行数据采集之前,我们需要选择合适的数据采集模块。
常用的数据采集模块包括DAQ卡、传感器接口模块等。
选择合适的模块能够提高数据采集的精度和效率。
二、数据采集的基本流程数据采集的基本流程包括信号调理、采样和数据传输。
LabVIEW 提供了丰富的函数和工具,帮助我们完成数据采集的各个环节。
1. 信号调理在进行数据采集之前,我们通常需要对信号进行调理,以提高信号的质量。
LabVIEW中的信号调理工具箱提供了滤波、放大、去噪等功能,能够帮助我们准确采集想要的信号。
2. 采样LabVIEW提供了多种采样方法,包括定时采样、触发采样和缓冲采样等。
根据实际需求,选择合适的采样方法可以提高数据采集的精度和稳定性。
3. 数据传输完成数据采样后,我们需要将采集到的数据传输到计算机中进行后续处理。
LabVIEW提供了多种数据传输方式,包括串口通信、网络通信和文件存储等。
根据实际应用场景,选择合适的数据传输方式非常重要。
三、数据处理技巧数据采集完成后,我们通常需要对数据进行处理和分析。
LabVIEW 提供了强大的数据处理功能,以下是一些常用的数据处理技巧。
1. 数据滤波数据滤波是常见的数据处理操作,用于去除噪声和提取有效信息。
LabVIEW中的滤波函数可以帮助我们实现数据滤波操作,例如低通滤波、高通滤波和带通滤波等。
2. 数据分析数据分析是对采集到的数据进行统计和分析的过程。
LabVIEW提供了丰富的数据分析函数和工具,可以帮助我们进行数据的平均、最大值、最小值、方差等统计分析。
3. 数据可视化数据可视化是将数据以图形方式展示的过程。
如何在LabVIEW中进行数据采集与分析LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司(National Instruments)开发的集数据采集、信号处理、分析及控制等功能于一体的可视化编程环境。
本文将介绍在LabVIEW中进行数据采集与分析的步骤和技巧。
一、LabVIEW环境介绍LabVIEW具有图形化编程的特点,用户可以通过拖拽和连接各种图形化元件,组成一个数据采集与分析的程序。
LabVIEW提供了丰富的工具箱,包括信号生成、数据采集、信号处理、滤波器、傅里叶变换等,方便用户进行各种数据的处理和分析。
二、数据采集1. 连接仪器设备在进行数据采集前,首先需要连接仪器设备,比如传感器、示波器、多功能仪等。
LabVIEW支持各种接口和通信方式,如USB、GPIB、串口等。
通过选择适当的接口和连接方式,将仪器设备与电脑连接起来。
2. 创建数据采集VI在LabVIEW中,VI(Virtual Instrument)是最基本的程序单元,类似于函数和模块。
我们可以通过创建一个新的VI来进行数据采集。
在“Front Panel”界面上,可以添加控件来显示和控制数据采集过程,如图形显示、文本框、按钮等。
3. 配置数据采集参数在数据采集VI中,需要配置数据采样率、采集时间、通道数等参数。
通过添加适当的控件,用户可以在界面上进行参数设置,并将参数传递给数据采集程序的后台。
4. 进行数据采集通过LabVIEW提供的函数和工具箱,可以快速实现数据采集功能。
根据仪器设备的特点和接口类型,选择相应的函数和配置采样模式。
LabVIEW提供了多种数据存储格式,如数组、文本文件、二进制文件等,可以根据需要选择合适的数据格式进行存储。
三、数据分析1. 数据预处理在进行数据分析前,通常需要对采集到的原始数据进行预处理,以提高分析的准确性和可靠性。
第25卷第3期 计算机应用与软件Vol 125No .32008年3月 Computer App licati ons and Soft w are Mar .2008收稿日期:2007-01-31。
戴新,讲师,主研领域:计算机辅助测试,虚拟仪器技术,仪器仪表技术。
数据采集卡在LabV IE W 中的驱动方法戴 新(广州大学信息与机电工程学院 广东广州510006)摘 要 Lab V I E W 目前已成为虚拟仪器软件的重要代表,但是在Lab V I E W 中不能直接使用非N I 公司的数据采集卡,必须自行编写驱动程序。
介绍了在Lab V I E W 中驱动普通数据采集卡的几种方法,包括直接端口读写法、利用代码接口节点C I N (Code I nteface Node )的方法和利用CLF (Call L ibrary Functi on )节点调用动态链接库的方法,并比较了三种方法的应用特点。
实践证明,Lab V I E W 软件平台具有很好的开放性,可以实现对普通数据采集卡的编程。
关键词 虚拟仪器 Lab V I E W C I N 节点 CLF 节点 动态链接库THE D R I V I NG M ETHOD S O F DATA ACQU I S I T IO N BOARD I N LABV I E WDai Xin(School of Infor m ation Technology and E lectro m echanical Engineering,Guangzhou U niversity,Guangzhou 510006,Guangdong,China )Abstract Lab V I E W is p laying a more and more i m portant r ole in virtual instru ment .M any data acquisiti on boards fr om Non 2N I Company cannot be used directly in Lab V I E W.D ifferent methods for driving the common data acquisiti on board by I n Port .vi &Out Port .vi,Code I nter 2face Node (C I N )or Call L ibrary Functi on (CLF )node in Lab V I E W are intr oduced .The main p r ocedures of the three methods are p resented,and the app licati on characteristics of these methods are compared .It is p r oved that using external code combined with Lab V I E W can reduce the hard ware cost and enhance the p r ogra m efficiency .Keywords V irtual instru ment Lab V I E W C I N CLF Dynam ic link library0 引 言随着计算机技术的发展,许多原来需要很多仪器设备连接起来的复杂系统才能实现的功能可以用软件代替,虚拟仪器就是充分利用计算机资源,使得测试仪器由传统的硬件模块向软件包的形式过渡。
如何在LabVIEW中进行数据采集和处理LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种广泛应用于科学和工程领域的数据采集与处理软件。
它提供了一个易于使用的图形化编程环境,使得用户能够轻松地进行数据采集、信号处理、图像分析等操作。
本文将介绍如何在LabVIEW中进行数据采集和处理的基本步骤和方法。
一、准备工作在进行数据采集和处理之前,需要准备相应的硬件设备和LabVIEW软件。
常用的数据采集设备包括传感器、数据采集卡和数据采集模块等。
LabVIEW软件则可以从官方网站进行下载和安装。
二、创建VI(Virtual Instrument)在LabVIEW中,VI是指虚拟仪器。
每个VI都由图标、前面板和块图三部分组成。
图标是VI在工具栏上显示的代表,前面板是用户与VI交互的界面,块图则是VI的程序实现。
1. 打开LabVIEW软件,点击“新建VI”以创建一个新的VI。
2. 在前面板上选择所需的控件,例如按钮、滑动条、图表等,用于接收用户输入,显示采集到的数据和结果。
3. 在块图中添加相应的函数和连接线,以实现数据采集和处理的功能。
三、进行数据采集1. 配置数据采集设备:根据所使用的数据采集设备类型和参数,使用相应的函数进行设备的初始化和配置。
2. 设置采样率和采样点数:根据实验需求和设备能力,设置采样率和采样点数,通常采样率越高,数据精度越高。
3. 开始数据采集:使用相应的函数启动数据采集过程,并设置采集时间或采集点数。
4. 存储采集数据:将采集到的数据保存到指定的文件,以便后续处理和分析。
四、进行数据处理在采集到数据后,可以进行各种数据处理操作,如平均值计算、滤波、傅里叶变换等。
1. 数据预处理:对采集到的原始数据进行预处理,包括数据的滤波、去除异常值等。
可以使用LabVIEW提供的滤波函数和数学运算函数实现。
2. 数据分析:根据实验目的和需求,对数据进行分析和处理,如求取数据的均值、方差,进行峰值检测等。
使用LabVIEW进行数据采集和分析LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种强大的图形化编程环境,被广泛应用于数据采集和分析领域。
它提供了丰富的工具和功能,可以帮助工程师和科研人员高效地进行各种数据处理任务。
本文将介绍使用LabVIEW进行数据采集和分析的基本流程和方法。
一、LabVIEW概述LabVIEW是由美国国家仪器公司(National Instruments)开发的一款图形化编程工具。
它采用了数据流编程模型,可以通过拖拽和连接各种函数模块,实现数据的输入、处理和输出。
相比于传统的文本编程语言,LabVIEW的图形化界面更加直观易用,适合非编程背景的用户快速上手。
二、数据采集数据采集是指通过各种传感器或仪器,将现实世界中的模拟信号转换为数字信号,输入到计算机中进行处理。
LabVIEW提供了丰富的数据采集模块,可以与各种传感器和仪器进行连接,并实时获取数据。
在LabVIEW中,首先需要创建一个数据采集任务。
通过选择相应的硬件设备和信号输入通道,配置采样率、量程等参数,即可创建一个数据采集任务。
然后,可以通过编程或者拖拽函数模块的方式,实现数据的连续采集或触发式采集。
LabVIEW提供了灵活且易于使用的界面,可以实时显示采集到的数据,并支持数据的保存和导出。
三、数据处理和分析数据采集完成后,需要对采集到的数据进行处理和分析。
LabVIEW提供了强大的数据处理功能,可以帮助用户实现各种算法和数据分析方法。
1. 数据预处理:对采集到的原始数据进行滤波、降噪、去除异常值等操作,以提高数据的质量和可靠性。
2. 数据分析:根据具体需求,可以使用LabVIEW提供的统计分析、频域分析、波形分析等模块,对数据进行进一步分析。
例如,可以计算数据的均值、标准差、相关系数等统计参数;可以进行快速傅里叶变换(FFT)、功率谱分析、自相关分析等频域分析。
实验报告一、实验过程:1、插入usb2、检测驱动是否安装。
3、进入检测界面:4、将1号端口以及3号端口的导线短接5、将三根线短接:6、测试信号:将1号线与3号线短接并连接信号发生器的正极(红线),二号线连接信号发生器的负极(黑线)。
7、打开labview,打开实例:打开例程,并修改:二、实验数据采集1、正弦信号(1)、在截图左侧的波形图为FFT 频谱图,在频谱中可以看到有直流分量,这有可能真的由直流分量,也有可能是频率分辨率,还有与加窗有关。
例如:1)、2.5Hz ,频率分辨率为1Hz 。
2)、频率分辨率为0.5Hz 。
3)、频率分辨率1Hz ,加汉宁窗。
图非实测得到,为仿真得到。
FFT 频谱FFT 功率谱当时看时域图中,确实由直流分量。
但一定不为1。
另外这还与信号干扰有关,但这个影响在时域图可见,可认为微乎其微。
(2)、在图中可以看见频率为1,这与单频检测的值相近 (3)、因为由直流分量的存在,单频检测得到的2.74可认为与真实幅度十分想近。
(4)、因为使用的是fft 频谱组件,所以幅值显示的是真实波形幅度的有效值,且显示的是单边谱。
而图中右侧显示的fft 功率谱图,其值应为双边谱的平方,然后再*2(变为单边谱)。
存在误差的原因主要可能是取样点数太少。
2、三角波(1)、频率分辨率太小,有图可见第一阶频率应在1.1~1.2。
FFT 频谱 FFT 功率谱将FFT 频谱图取log该图由软件仿真得到。
一方面,单频检测(在低频状态下)与FFt频率图巨大误差的原因是有算法造成的。
1、频率太低。
2、采样点数太少。
提高采样点数:以1000个采样点数,提高信号频率:另一方面,单频检测的错误,在仔细查看了我们组的程序图,问题可能在于在于没有把信号分解出来做单频检测。
造成引入了干扰。
但这个影响很小。
3、方波信号频率为1.2HZ,单品检测为1.90HZ仿真得到与实测结果相似。
三、实验结论:1、 单频测试,同样的取样点数,高频信号更准确。
LabVIEW及数据采集卡驱动(NI-DAQmx)的安装管道实验室许多实验都使用NI公司的数据采集卡及LabVIEW软件来记录信号数据,因此学会正确安装这套系统是非常重要的。
下面以本实验室多台计算机通用的LabVIEW 8.5版本及DAQCard-6036E的安装过程为例,讲述有效的安装步骤。
首先,打开本组备份的安装文件“LabVIEW8.5及DAQ完整版”,里面有三个文件夹:“LabVIEW8.5中文版”、“NI-6255-DAQmx8.7.1”、“NI-DAQmx 9.3”。
bVIEW 8.5的安装及注册1.1 LabVIEW 8.5的安装建议不要安装在C盘中,比如安装在D盘中:新建文件夹“NI产品安装目录”,在“NI 产品安装目录”下新建“LabVIEW 8.5安装目录”,并且将安装文件“LabVIEW 8.5中文版”复制在“NI产品安装目录”下。
打开文件夹“LabVIEW 8.5中文版”→运行→选择第一项安装→选择完整版安装,此时需要填写注册码。
打开“注册机keygen 8.5破解”→点击Generate→点击copy →粘贴在注册栏中。
选择NI产品安装路径为“D:\NI产品安装目录”,LabVIEW 8.5安装目录为“D:\NI产品安装目录\LabVIEW 8.5安装目录”。
一般安装默认选项的组件即可,也可根据情况多选。
安装完毕后,选择稍后手动重启计算机。
1.2 LabVIEW 8.5的注册在“NI产品安装目录”下新建文件夹“注册许可证文件”。
打开“注册机keygen 8.5破解”,依次选择下面的7个选项,分别点击“Greate license file”,将它们依次保存在“注册许可证文件”中,分别以1~7(*.lic)命名。
注意有些系统不支持保存路径含中文,此时可以保存在无中文路径中,再剪切到“注册许可证文件”中即可,或者从头建立的文件夹就都用英文名称。
点击开始菜单→程序→NI→National Instruments→License Manager(NI许可证管理器)。
NI数据采集卡使用入门如果您使用LabVIEW或LabWindow/CVI等软件来进行编程,需要在安装驱动软件之前先安装开发平台LabVIEW或LabWindow/CVI等软件。
安装过程中,安装程序会提醒您插入DAQ驱动光盘。
2.NI-DAQ驱动软件正确安装后,请关闭计算机,插入数据采集板卡,启动计算机,即可自动找到板卡并安装好,完成整个安装过程。
注意:在安装PCI或者P某I板卡时,一定要将电脑电源关闭;PC 机则最好将电源线拔掉,以免电脑主板关机后仍然带电,造成各类损伤。
二、模拟输入说明1.信号类型根据信号的参考情况,一个电压源可以分为两类:接地信号、浮地信号。
接地信号:接地信号是信号的一端直接接地的电压信号。
它的参考点是系统地(例如大地或建筑物的地)。
最常见的接地信号源是通过墙上的电源插座接入建筑物地的设备,例如信号发生器和电源供电设备等。
浮地信号:一个不与任何地(如大地或建筑物的地)连接的电压信号称为浮地信号。
一些常见的浮地信号有电池、热电偶、变压器和隔离放大器。
2.测量方式按信号连接方式不同可分为三种测量方式:差分(DIFF);参考单端(RSE);非参考单端(NRSE)。
注意:NI公司的部分型号数据采集卡不一定完全支持上述三种测量方式,请查询对应数采卡的使用手册。
按测量方式分类可以分为以下两大类测试系统:1)差分测试系统(DIFF)n可避免接地回路干扰n可避免因环境引起的共模干扰当输入信号有以下情况时,使用差分测试系统:n低电平信号(例如小于1V)。
n信号电缆比较长或没有屏蔽,环境噪声较大。
n任何一个输入信号要求单独的参考点。
2)单端测试系统尽管差分测试系统是一种比较理想的选择,但是单端测试系统可以使用两倍的测试通道。
单端测试系统所有信号都参考一个公共参考点,即仪器放大器的负极。
当输入信号符合以下条件时可以使用单端测试系统:n高电平信号(通常大于1V)。
n距离比较短(通常小于5米)或电缆的屏蔽性能较好,环境无噪声。
在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>。