在LabVIEW中利用DLL实现数据采集
LabVIEW对数据采集卡DLL函数的调用

2004年9月襄樊学院学报 Sept.,2004 第25卷第5期 Journal of Xiangfan University V ol.25 No.5LabVIEW对数据采集卡DLL函数的调用刘传清 (襄樊学院 物理学系,湖北 襄樊 441053) 摘要:首先介绍虚拟仪器及其开发环境LabVIEW6的特点,分析并实现了将LabVIEW与外部代码进行连接的高级技术之一—动态链接库(DLL)机制. 实践表明,此机制高效、易行,是增强LabVIEW与其它Windows应用程序之间的数据共享能力的一条很好的途径. 关键词:虚拟仪器;LabVIEW;动态链接库;DLL 中图分类号:TN311.11 文献标志码:A 文章编号:1009-2854(2004)05-0015-03 0 引言 美国国家仪器NI公司的基于G语言的开发环境LabVIEW的出现,使得虚拟仪器的思想为工业界所接受. 所谓虚拟仪器,就是在通用计算机平台上,用户根据自己的需求定义和设计仪器的测试功能,其实质是将传统仪器硬件和最新计算机软件技术充分结合起来,以模块化软件实现并扩展传统仪器的功能. 与传统仪器相比,虚拟仪器在智能化程度、处理能力、性能价格比、可操作性等方面均具有明显的技术优势.LabVIEW(Laboratory Virtual Instrument Engineering Workbench─实验室虚拟仪器工程平台)是目前国际上首推应用最广的虚拟仪器开发环境之一,主要应用于仪器控制、数据采集、数据分析、数据显示等领域,并适用于Windows 9X/XP/2000/ NT、Macintosh、UNIX等多种不同的操作系统平台. 与传统程序语言不同,LabVIEW采用强大的图形化语言(G语言)编程,面向测试工程师而非专业程序员,编程非常方便,人机交互界面直观友好,具有强大的数据可视化分析和仪器控制能力等特点.使用LabVIEW开发环境,用户可以创建32位的编译程序,从而为常规的数据采集、测试、测量等任务提供了更快的运行速度. LabVIEW是真正的编译器,用户可以创建独立的可执行文件,能够脱离开发环境而单独运行. 对于大多编程任务,LabVIEW通常能产生高效的代码.1 LabVIEW调用外部程序代码的途径之一 —— 动态链接库机制 1.1 动态链接库机制概述 LabVIEW是一个功能强大的虚拟仪器开发环境,它完整地集成了与GPIB、VXI、RS-232、RS-485和内插式数据采集卡等硬件的通讯. LabVIEW还具有内置程序库,提供了大量的连接机制,通过DLLs、共享库、ActiveX等途径实现与外部程序代码或软件系统的连接.LabVIEW提供了4种调用外部程序代码的途径,其中动态链接库(Dynamic Link Library─DLL)机制是从LabVIEW调用标准共享库和用户自定义库函数的通用方法. 具体实现时,是使用LabVIEW功能模板中“Advanced”子模板里的“调用库函数(Call Library Function)”结点.“调用库函数结点”包括大量的数据类型和调用规范,使用它可调用大多数标准共享库和用户自定义库中的函数,包括:Windows9X/XP/2000/NT下的动态链接库(Dynamic LinkLibrary)、Macintosh下的代码段(Code Fragment)、UNIX下的共享库函数(Shared Library Function)等.当用户需要调用的代码已经存在,或者用户比较熟悉Windows中动态链接库、Macintosh中代码段、UNIX中共享库的创建过程时,“调用库函数结点”非常有用,此时使用它也最为合适恰当,因为库使用了收稿日期:2004-04-21基金项目:湖北省教育厅重点项目(2003A006)作者简介:刘传清(1964- )男,湖北鄂州人,襄樊学院物理学系副教授.15刘传清:LabVIEW对数据采集卡DLL函数的调用对几个开发环境都适用的格式标准,故用户可以使用几乎任何开发环境去创建LabVIEW能够调用的库. 1.2动态链接库机制实现步骤在Windows 9X下,利用LabVIEW 6.1 (for Windows 95/98/NT)中的“动态链接库机制”调用一个DLL,此DLL返回机器的名称.1)建立“调用库函数结点”新建LabVIEW程序“hostname.vi”,存至新建目录“d:\temp”下,其前面板如下: 图1 库函数调用前面板图 框图程序如下: 图2 库函数调用程序框图 其中,“Call Library Function”结点是通过选择功能模板中“Advanced”子模板里的“Call Library Function”功能模块而产生的.此LabVIEW程序通过“调用库函数结点”调用一个DLL,此DLL将返回机器的名称,返回结果存至字符串指示量“Machine Name”中,而后将字符串常量“LabVIEW is running on ”与“Machine Name”相拼接,拼接之结果在字符串指示量“Message”中显示.2)配置“调用库函数结点”双击框图程序窗口的“Call Library Function”结点,在弹出的对话框中对此“调用库函数结点”进行配置. 其中:在“Library Name or Path”一项中键入“d:\temp\hostname.dll”(即,指明此结点所链接的DLL文件名,它由C源代码“hostname.c”编译而来);在“Function Name”一项中键入“MachineName”(即,指明与此结点相链接的DLL文件中的函数的名称);参数“return type”的类型选择“Void”;所增加的另一个参数“arg1”的类型选择“String”、字符串格式选择“String Handle”;3)编辑C源文件编辑C源文件“hostname.c”(存至目录“d:\temp”下),其内容如下:/* include extcode.h which contains the prototypes for the LabVIEW functions */#include <extcode.h>#include <stdio.h>#include <windows.h>BOOL WINAPI DllMain (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved) {return TRUE;}/* This functions gets the computer name and returns it to LabVIEW */__declspec (dllexport) void MachineName(void *LVHandle) {char computerName[MAX_COMPUTERNAME_LENGTH+1];int compNameLength = MAX_COMPUTERNAME_LENGTH+1;16第25卷第5期襄樊学院学报 2004年第5期/* Get computer name */GetComputerName(computerName, &compNameLength);/* Size LabVIEW handle to the correct size */DSSetHandleSize(LVHandle, compNameLength + 5);/* Copy the string size to the LabVIEW handle */**(int32 **)LVHandle = compNameLength ;/* Copy the string to the LabVIEW handle */sprintf((*(char **)LVHandle)+4,"%s",computerName);}此程序首先了调用Windows的API函数“GetComputerName”获取机器名;然后调用LabVIEW的函数“DSSetHandleSize”来设置LabVIEW句柄之大小;最后将机器名长度(32位整型)、机器名(字符串型)依次写入句柄中.4)编译C源代码将C源代码“d:\temp\ hostname.c”编译成一个DLL文件“d:\temp\hostname.dll”.可使用VC++ 6.0 (for Windows 95/98/2000/NT),完成此编译工作.5)运行VI运行LabVIEW程序“hostname.vi”,结果如下:图3 前面板运行结果 2 结束语 本文着重阐述并实现了将LabVIEW与外部代码进行连接的高级技术之一─动态链接库机制,并给出了应用实例. 由于在LabVIEW中引入了C语言的强大功能,从而提高了LabVIEW的整体性能.本方法已在LabVIEW 6.1 for Windows 95/98/NT及Visual C++ 6.0 for Windows 9X/XP/2000/NT 环境下实现. 实践证明,此方法高效、易行,是增强LabVIEW与其它Windows应用程序之间的数据共享能力的一条很好的途径.参考文献: [1] LabVIEW User Manual,National Instruments Corporation,1998.[2] G Programming Reference Manual,National Instruments Corporation,1998.LabVIEW Data Acquisition Invoke for DLL FunctionsLIU Chuan-qing(Department of Physics, Xiangfan University, Xiangfan 441053, China)Abstract :This paper introduces virtual instrument and the features of its development environment─LabVIEW,analyzes and realizes the advanced technology-Dynamic Link Library(DLL) ,which is one of the general methods for calling external code from LabVIEW. It has been proved that this method is efficient,practicable and also a good one to enhance LabVIEW’s capacity of sharing data with other applications in Windows.Key words:Virtual instrument; LabVIEW; Dynamic Link Library ; DLL17。
如何利用LabVIEW进行数据采集与处理

如何利用LabVIEW进行数据采集与处理LabVIEW是一种流程图编程语言,专门用于控制、测量和数据采集等应用领域。
它的易用性和功能强大使得许多科研、工业和教育机构都广泛采用LabVIEW进行数据采集与处理。
在本文中,我将介绍如何利用LabVIEW进行数据采集与处理的基本步骤和技巧。
一、准备工作在开始数据采集与处理之前,首先需要进行准备工作。
这包括安装LabVIEW软件、连接传感器或测量设备、配置硬件设备和安装相关驱动程序等。
确保LabVIEW软件和硬件设备都能正常工作。
二、建立数据采集程序1. 打开LabVIEW软件,在工具栏上选择"新建VI",创建一个新的虚拟仪器(VI)。
2. 在Block Diagram窗口中,选择相应的控件和函数,用于实现数据采集的功能。
例如,使用"DAQ Assistant"控件来配置和控制数据采集设备。
3. 配置数据采集设备的参数,如采集通道、采样率、触发方式等。
根据实际需求进行设置。
4. 添加数据处理的功能模块,如滤波、去噪、采样率转换等。
这些模块可以根据数据的特点和需要进行选择和配置。
5. 连接数据采集设备和数据处理模块,确保数据能够流畅地进行采集和处理。
6. 运行程序进行数据采集,可以观察到数据随着时间的推移不断变化。
三、数据可视化与分析1. 在LabVIEW软件中,使用图形化的方式将采集到的数据可视化。
例如,使用波形图、数值显示等控件显示数据结果。
2. 利用LabVIEW提供的分析工具,对采集到的数据进行进一步的统计和分析。
例如,计算均值、标准差、峰值等。
3. 根据需要,将数据结果输出到其他文件格式,如Excel、文本文件等,以便进一步处理和分析。
四、数据存储与导出1. 在LabVIEW中,可以选择将数据存储到内存中或者存储到文件中。
存储到内存中可以方便实时访问和处理,而存储到文件中可以长期保存和共享数据。
2. 使用适当的文件格式和命名方式,将数据存储到本地磁盘或者网络存储设备中。
利用LabVIEW开发完整的数据采集、分析、显示及存储系统

针对多种应用搭建测试系统
实验台综合测试
机器状态监控
车载数据记录
23
应用开发软件
24
中国地区数据采集和仪器控制领域最常用的软件
0% 5% 10% 15% 20% 25% 30%
National Instruments LabVIEW Microsoft - Visual C++ The MathWorks, Inc. MATLAB® Microsoft - Visual Basic National Instruments LabWindows/CVI T&M Programmer’s Toolkit
• STFT, Gabor等谱分析,时变滤波器设计
– 小波分析
• 离散、连续小波变换,特征提取,去噪去趋势
– 时间序列分析
• 相关性与多通道谱分析,ARMA建模,熵,ICA,PCA
– 多达90多个高级信号处理应用范例
Demo
36
更多的LabVIEW工具包
• 滤波器设计工具包
– – – – – IIR, FIR, Special filter设计(陷波、梳状滤波器等) 滤波器特性分析,相频响应等 滤波器结构变换,级联转换,参数均衡 多速率滤波器(MultiRate filter)设计与分析 定点滤波器设计与转换,可自动生成代码并移植 入CRIO中的FPGA模块
声音振动分析工具包
失真度,倍频程分析, 正弦扫 频, 振动级,声级, 频率测量, 过限测试, 瞬态, 时域积分, 加 权或者权重, 瀑布图, …
阶次分析工具包
阶次跟踪, 阶次提取, 在线阶 次分析, 阶次谱图选取, 转速 信号处理, 瀑布图, 轴心轨迹 图/极坐标图, 波特图, …
基于LabVIEW和DLL的USB2850采集卡DAQ系统设计

基 于 L b lW 和 DL a VE L的 U B 8 0采集 卡 D Q 系统 设 计 S 25 A
基于 L b IW 和 D L U B 8 0采集卡 D Q系统设计 a V E L 的 S 25 A
Hi e d Da a Ac i n y t m fUSB 8 0 DAQ r s d o L a d L b E gh Sp e t qur g S s e o i 2 5 Ca d Ba e n DL n a Vl W
,
welas l mont s an c tos W e a i d onr l or b ppl a i s e i t c on r mot y el. Ke wo d L bVl 。 y r s:a EW USB28 0. L, gh pe t cqur g 5 DL Hi —s ed da a a in i
,.
an dic s e ta b e on d s u s s h t as d co plx ewor n t USB2 0 gh—s ee DAQ —Ca d che e te m e n t k co dion, i 85 hi p d r a iv s h da a ac in an t qur g d i
王 丽娜 费 凌
( 西华大学, 四川 成都 6 03 ) 10 9
摘 要
介 绍 了一种 在 L b IW 平 台下 使 用 国产 数 据 采 集 卡 实现 高速 数 据 采 集 的可 行 方 法 。 探 讨 了 U B 8 0高速 采 集 卡 在 a VE S 25
复 杂 网络 应 用环 境 下 , 过 L b IW 调 用板 卡 的 动 态 库 ( L ) 实现 上 层 数 据 的 采 集 与 分析 过 程 的 关键 技 术 。 实例 中设 计 通 a VE D L, 和 实现 了下位 测控 机 进 行 数 据 采 集后 再 通 过 以太 网与 上 住 处 理机 进行 通信 , 同时 上 位 处 理 机进 行 数 据 显 示 和 分 析 , 及 远 以
LabVIEW平台下调用DLL实现PC_104数据采集

YUAN Wei-hua HAN Yu-s heng ZHANG Wei-wei LI Xiao-ming
摘要: LabVIEW 是 一 个 高 效 的 图 形 化 软 件 开 发 环 境 , 在 数 据 采 集 和 测 试 测 量 中 应 用 广 泛 。 但 在 PC- 104 硬 件 平 台 下 使 用
嵌入式计算机应用
中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 4-2 期
(2)ADT700.h— ——ADT700 驱动程序头文件。
(3)ADT700.cpp— ——ADT700 数 据采 集 卡 的驱 动 程 序代 码 主
文件 , 该 文 件 中 定 义 了 操 作 ADT700 完 成 数 据 采 集 和 输 出 的 主
Call Library Function 节点, 将选择好的 Call Library Function 节
据 采 集与 控 制 系统 。该 卡 可实 现 16 路 单端 或 8 路 差分 模 拟 信
(1)WinIO.dll— ——在 Windows32 操 作 系 统 环 境 下 操 作 硬 件
号输 入 , 具有 12 位 数 字分 辨 率 , 最大 A/D 采 样 率为 100KHz, 量 端 口地 址 所 需要 的 链 接库 文 件 , 由于 Windows32 操 作 系统 采 用
在 Windows 32 操 作 系 统 环 境 下, 可 以 使 用 VC++6.0 建 立
2 PC/104 数据采集 卡 ADT700 简介
DLL 文 件 , VC++ 中 可 以 建 立 两 种 DLL: 使 用 MFC(Microsoft Function Class)的 DLL 和不使用 MFC 的 DLL。每种 DLL 都有它
基于调用DLL的LabVIEW数据采集的实现

万方数据陋的论文得到两院院士关注l数采与监测卡,此卡为12/16位A/D转换分辨率,最高采样频率町达lOOK3.3基于调用DLL的应用实例Hz。
PCI--9111数据采集卡自带了Windows下的驱动程序库本例子通过调用凌华数据采集卡的PCI—Dask.dll实现简单PCI—Dask.d11.库内包含了数据采集用的所有函数,下面就将要的单通道的旋转机械转子不平衡时振动速度信号的监测,主要调用的有关甬数作个简要的说明。
目的在于说明在LabVIEW中调用DLL的具体应用。
在速度传在说明函数之前,有必要对DLL中的数据类型作个介绍。
感器检测的信号输入数据采集卡之前,经过了凋理模块,实行116表示有符号16位整型,对应C语言中的。
holt;U16表示无了放大、隔离和滤波等,最后显示的波形接近转子不平衡时振符号16位整型,对应c语言中的unsignedshort;1"64表示双精动的正弦波形。
度浮点数,对应c语言中的double。
程序设计采用顺序结构,设置i个调用动态链接库节点。
116RegkterCard(U16CanIType.U16card):该函数的第一帧调用e函数进行数据采集卡的初始化,输入_numRgitr_Card功能是初始化数据采集卡,使其做好输入输出操作的准备,返数据采集卡的型号和卡号;第:二帧调用AI—VreadChannel函数回值为数据采集卡的卡号,此卡号数为数据采集卡插在PCI插读取通道的电压,并用波形图表显示I叶J来;第i帧调用Re一槽中的序列号,在下文例子中为0。
CardType和card_num为函lea.se_Card函数释放数据采集卡所占资源,程序结束。
具体各个数的参数,CardType为数据采集卡的型号,凌华公司对不同的节点的配置依照上文介绍的步骤设置好即可。
程序的前面板如型号有对应的代码,在下文例子中,其代码为2l。
在调用其它函图2所示,程序框图如图3所示。
数之前,必须先调用此函数。
在LabVIEW中实现基于DLL的图象采集系统开发

・技术开发与应用・在LabV IEW 中实现基于DLL 的图象采集系统开发祁传琦1 何龙2 刘琼3(112131成都航空职业技术学院 四川 成都 610021) 摘 要:本文利用LabV IEW 与外部代码进行连接的动态链接库机制,实现了在LabV IEW 中对非N I 图象采集卡的操作,完成图象的采集、显示和存储。
程序由LabV IEW 设计软件界面,由VC610开发图象采集DLL ,条理清楚,一目了然,系统软件便于维护和升级换代。
实践证明,该种处理手段不失为一种LabV IEW 与非N I 设备实现通讯的切实可行的好方法。
关键词:虚拟仪器 动态链接库 图象采集 系统 开发 中图分类号:TP31714 文献标识码:A 文章编号:1671-4024(2005)02-41-02 收稿日期:2004-12-14作者简介:祁传琦(1977-),女,回族,河南周口人,工学硕士,助讲,从事机电控制系统的教学研究;何龙(1973-),男,四川遂宁人,讲师,从事数控机电的教学与研究;刘琼(1979-),女,四川自贡人,助讲,从事测控技术及仪器的教学和研究。
一、引言LabV IEw 是N I 公司推出的虚拟仪器开发平台软件。
它采用图形化编程语言—G 语言,以其直观简便的编程方式、众多的源码级的设备驱动程序、多种多样的分析和表达功能支持,为用户快捷地构筑自己在实际生产中所需要的仪器系统创造了基础条件。
LabV IEW 具有开放的环境,能和第三方软件轻松连接[1,2]。
通过LabV IEW 能把现有的应用程序和N ET 组件、ActiveX 、DLL 以及广泛的网络协议相联,也可以在LabV IEW 中创建能在其它软件环境中调用的独立执行程序或者动态链接库。
对于图象采集,N I 公司的IMAQ 产品为图象采集与分析系统提供了完整的解决方案,但其产品价格较高,很多用户使用的并不是N I 公司的图象采集卡甚至是自行研制的专用图象采集卡。
LabVIEW 调用 C-C++ Dll 详解

LabVIEW 调用C/C++ Dll 详解LabVIEW 在配上NI 的采集卡或者别的第三方的硬件,约等于神器(虽然有时候贵了点)。
这样你可以比较集中精力的专注于数据处理了,就不用学习麻烦的Win32 的GUI 编程, 也不用关注和你自己搞的采集板之间的通信了。
对于每一个测控行业的程序来说,基本上都是:初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束的一个过程。
当然如果是实时的,那么采集,处理,显示就是在一个loop 里面。
当然为了保证实时性,数据处理和数据采集不一定在一个线程里,因为处理的时候把采集给block 住也挺傻的。
LabVIEW 很容易帮你搞定:初始化-->数据采集-->数据处理-->数据显示-->数据保存-->结束但是数据处理部分,是和你的学科紧密相关的,有时候算法会诡异到你很难用VI来实现,那么你就要有C++”target=“_blank”>C++code来搞了。
那么C/C++ 是如何与LabVIEW 交互的呢,本文来较详细的阐述一下,因为准备采用总分总的写作手法...所以先来个概括...1. 把C/C++ code 编译成Dll。
2. 用LabVIEW 的call library node 来调用。
难点在于:如何把LabVIEW 的数据类型和C/C++ 的来对应。
控件x 相当与一个double,当然其类型也是可以选择的(如右图所示)。
boolean 按理说应该是一个bool, 但是传入call library node 的时候,一般要转成unsigned int 型。
cluster 其实就是个struct ,左图的cluster 是:struct tCluster{ double x11; // 类型都可以向右图那样自己配置double x2; int x3;};对于string,这里要着重讲一下,labview 的string 类型里面是包含长度信息的,它不是一个简单的char *它是个LStrHandle 类型:定义咋extcode.h 里面(可以在labview 目录下搜到)typedef struct {int32 cnt;uChar str[1];} LStr, *LStrPtr, **LStrHandle;cnt 就是含有多少个字符,str 这个指针所指的就是数据区的第一个字符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在LabVIEW中利用DLL实现数据采集Realization of Data Acquis ition with DLL in LabVIEW班级学号:0704114-23姓名:杨鹏摘要:随着计算机技术及虚拟仪器技术的迅速发展, 虚拟仪器正逐渐成为测试领域的发展方向。
本文介绍了在LabVIEW 环境下驱动普通数据采集卡的重要方法- - 动态链接库机制(DLL), 并结合具体实例介绍了一种利用LabVIEW 提供的Call LibraryFunction (CLF)节点实现对动态链接库(DLL)调用的关键技术及步骤, 实现LabV IEW 与普通数据采集卡的结合, 丰富LabVIEW 对硬件的控制能力。
并将数据库技术应用于虚拟测试系统中, 建立了Access 数据库, 实现数据的存储和自动管理,从而拓展了虚拟测试系统的功能。
关键词:动态链接库(DLL); 数据采集;1 绪论目前, 电子测试仪器的发展方向正在从简单功能组合向以个人计算机(PC)为核心的通用虚拟测试平台过渡, 从硬件模块向软件包形式过渡。
建立在PC 机和数据采集设备上的虚拟仪器系统, 由于其特有的灵活和强大的功能, 也越来越广泛的应用于实验室研究和工业控制中的测试及测量领域。
从简单的仪器控制, 数据采集到尖端的测试和工业自动化, 从大学实验室到工厂, 从探索研究到技术集成, 人们都可以发现LabVIEW 应用的成果和开发的产品。
LabVIEW采用基于流程图的图形化编程方式, 也被成为G 语言(graphical language)。
G 语言编程和虚拟仪器技术已经成为工业界和学术界关注的热点技术之一。
数据采集是LabVIEW 的核心技术之一, 也是LabVIEW 与其他编程语言相比的优势所在。
使用LabVIEW 的DAQ 技术,可以编写出强大的DAQ 应用软件。
NI 公司生产的系列数据采集卡借助LabVIEW 内部的DAQ 库的驱动,可以在LabVIEW环境下运行。
但由于NI 公司的采集卡价格比较昂贵,但是选择第三方的数据采集卡, 就需要解决LabVIEW 与非NI 数据采集卡的兼容和驱动的问题。
2 LabVIEW 调用外部程序代码的途径之一———动态链接库机制LabVIEW 具有强大的外部接口能力, 可以实现LabVIEW与外部的应用软件, C 语言, Windows API 以及HiQ 等编程语言之间的通信, 在LabVIEW 中可用的外部接口包括:DDE,CIN,DLL,MATLAB Script 以及HiQ Script 等。
合理地使用这些接口,充分利用其他软件的功能, 弥补LabVIEW 自身的不足, 可以编写出功能更加强大的LabVIEW应用软件。
动态链接库(Dynamic Link Libraries,简称DLL)是一个可执行模块, 但不接受任何消息, 所以并不可以直接运行, 只是提供一群函数供Windows 应用程序或其他的动态链接函数库调用。
动态链接库只有在别的模块中调用了它的某个函数以后才发生作用。
由于动态链接库在应用程序运行期间被连接起来的,故称为动态链接库。
动态链接库(DLL)一直是基于Windows 程序设计的一个非常重要的组成部分。
DLL 是一种基于Windows的程序模块, 它可以在运行时刻被装入和连接。
为了实现LabVIEW对普通数据采集卡的支持, 用户可以使用LabVIEW 提供的调用库函数节点CLF (Call Library Function)和代码接口节点CIN(Code Interface)将编程灵活的C 语言和直观方便的LabVIEW程序结合起来。
但是比较调用库函数节点CLF 和代码接口节点CIN 这两种方法, 使用CLF 节点访问动态链接库DLL 更具优势:首先, DLL 是外部模块, 自行开发一个DLL 比使用CIN 节点易于实现且便于维护。
其次, CIN节点需要调用.lsb 格式的文件, 而.lsb 格式文件的创建过程十分复杂, 需要利用Visual C++和CINTools 来创建.lsb 文件。
这样用户在开发虚拟仪器产品的过程中可以充分利用数据采集卡开发商为用户提供的DLL 模块, 可以缩短开发周期。
基于以上因素, 本问所介绍的是利用CLF (Call LibraryFunction)节点直接调用普通数据采集卡已有的DLL 模块。
3 LabVIEW 调用普通数据采集卡自带的DLL 库3.1 数据采集卡介绍许多数据采集卡开发商都提供了DLL库函数的驱动程序,用户可以根据实际应用的需要, 用LabVIEW中的CLF 节点直接调用有关函数, 从而省去编写驱动程序的过程。
在LabVIEW平台下普通数据采集卡使用主要分为三步: ①初始化并打开设备(数据采集卡) ;②启动模拟量数据采集;③对某一通道模拟量数据采集。
本文所采用的是PCI- 9114 型多功能数据采集卡。
该卡具有32 位PCI 总线, 12 位模拟量输入分辨率, 16 路单端或8 路差动模拟量输入,最高110 KHz A/D 采样频率,双极性或单极性输入信号, 三种A/D 触发模式:软件触发、可编程定时器触发与外部触发, 并且自带了Windows 下的驱动程序库PCI_DASK.dll, 库内包含数据采集的所有函数。
下面是驱动程序库PCI_DASK.dll 中的三个关键函数:① Register_Card。
函数Register_Card 功能是打开数据采集卡, 从注册文件或配置文件中得到合适的使设备工作的参数,同时分配内存来储存这些参数, 使设备做好I/O 操作的准备工作, 输入的参数为CardType 和Card_num, 该函数的返回值是板卡标识号, 今后对于这个标识号做的操作就会被解释为对该卡的操作;② AI_ReadChannel。
函数AI_ReadChannel 用来从输入通道中读取采集的模拟量, 输入参数是板卡标识号, 模拟输入通道号和增益代码;③ Release_Card。
函数Release_Card 用来释Register_Card()函数分配的存储参数值以关闭装载的数据采集卡, 输入参数为板卡标识号。
3.2 在LabVIEW中调用动态链接库的步骤在LabVIEW 下对DLL 的调用可通过CLF 调用库函数节点来实现。
具体方法是创建一个VI ,在其图形代码窗口中, 选择ALL Functions→Advanced→Calling Library Function Node ,双击节点在弹出的对话框中或者点击右键选Configure 对其进行配置。
一般需要设置以下几点内容:① DLL 所在的路径。
在对话框Library Name or Path 中输入DLL 路径或单击Browse⋯来查找所要调用的DLL;②被调用的函数原型,包括函数返回类型、函数形参类型及个数等信息。
只要在第一步输入了正确的DLL ,则在FunctionName 中将自动显示该DLL 的所有输出函数。
选择待用的函数后,配置该函数的所有参数,在Function Prototype 中将显示正确的被调用函数原型及所有形参类型;③ DLL 的调用规程。
在LabVIEW中有C 和stdcall 两种调用方式。
对于Windows API 函数应选择stdcall ,否则应选择C;④线程安全选择。
如果编译生成的DLL 是线程安全时(即能同时被其它程序调用) ,则选择Reentrant 选项,否则选Run inUI Thread。
一般选择Run in UI Thread 即可。
同时为其他程序所调用, 则选择Reentrant 选项。
3.3 基于动态链接库的数据采集应用实例下面以调用PCI- 9114 的Register_Card 函数为例, 介绍如何使用CLF 节点, 如图1使用PCI- 9114 采集器的采样功能,必须首先调用函数Register_card 函数对设备进行初始化, Register_card 函数的输入为板卡类型和卡号, 返回值是板卡标识号,然后调用函数AI_ReadChannel 进行数据采集, AI_ReadChannel的输入为Register_card 函数的返回值板卡标识号, 模拟通道号和增益代码, 输出为采集到的数据, 最后调用函数Release_Card释放板卡所占资源。
因此需要分别配置好三个CLF 节点。
图2为数据采集框图程序。
编写数据采集框图程序有几个要点:①连续数据采集。
要实现系统的连续数据采集, 应该使系统保持在循环状态, 所以在设计中使用了While 循环, 点击stop数据采集停止, 并释放板卡占用的资源。
②增益。
增益表示输入信号被处理前放大或缩小的倍数,给信号输入一个增益值, 就可以减小信号的输入范围, 使A/ D转换能尽量的细分输入信号。
设计时增益默认值为0。
③数据存储。
本系统采用了Access 数据库存储采集到的数据, 在设计中使用了LabVIEW数据库访问工具包LabSQL。
上面说到的LabSQL 是一个免费的、多数据库、跨平台的LabVIEW数据库访问工具包。
LabSQL 的优点是易于理解, 操作简单, 不熟悉SQL 语言的用户也可以很容易地使用, 并且它源代码开放。
在使用LabSQL 之前, 首先需要在Windows 操作系统中的ODBC 数据源中创建一个DSN (data source name, 数据源名)。
LabSQL 与数据库之间的连接就是建立在DSN 基础之上的。
本文用到的是LabSQL 添加记录功能。
添加记录的基本步骤如下:第一步:建立与数据库的连接; 第二步:建立与记录集(RecordSet)对象的连接; 第三步:添加记录; 第四步:断开与数据库之间的连接,整个过程如图2 所示。
为了验证系统的性能, 利用函数发生器产生正弦波信号,设置数据采集卡的频率为10Hz, 设置好通道和增益后就可以进行数据采集。
存储到Access 数据库的数据如下图3 所示。
4 结论虽然LabVIEW提供了大量的仪器驱动程序库, 但仍不能满足所有用户尤其是要自行开发仪器的用户的需求, 很多情况用户需自己修改动态链接库, 由于篇幅关系, 不介绍如何修改动态链接库。
本文详细介绍了在LabVIEW 中如何调用动态链接库(DLL)驱动普通数据采集卡PCI9114 完成数据采集任务, 并完成数据存储和管理。
在虚拟仪器系统中, 利用LabVIEW 调用动态连接库函数功能, 既增强了LabVIEW 软件的功能, 又可以开发自己的数据采集和工业控制产品, 提高了系统的开发效率,同时又体现了Labview 强大的数据采集功能, 弥补了其不能驱动国产数据采集卡的不足。
5 结束语现场总线作为工业控制网络技术在纺织行业发挥着越来越重要的作用, 实现了系统的分布式控制, 网络速度快, 可靠性高, 开放性好, 抗干扰能力强, 安装、调试和系统维护方便, 提高了纺织企业的信息化管理水平和生产效率, 降低了生产成本,增强了市场竞争力。