文档库 最新最全的文档下载
当前位置:文档库 › LabVIEW下使用普通数据采集卡方法研究

LabVIEW下使用普通数据采集卡方法研究

技术创新

中文核心期刊《微计算机信息》(测控自动化)2007年第23卷第10-1期

360元/年邮局订阅号:82-946

《现场总线技术应用200例》

数采与监测

LabVIEW 下使用普通数据采集卡方法研究

StudyonNormalDataAcquisitionCard’sApplicationMethodinLabVIEW

(江苏大学)潘海彬

周哲李伯全

PANHAIBINZHOUZHELIBOQUAN

摘要:针对功能强大、应用广泛的虚拟仪器开发软件LabVIEW只能直接支持NI公司的数据采集卡,而不能直接使用普通数

据采集卡的问题,重点研究了在LabVIEW平台下使用普通数据采集卡的重要方法———调用动态链接库(DLL),并结合具体实例详细介绍了在LabVIEW平台下调用DLL的关键技术及步骤。实践证明:在LabVIEW平台下调用DLL来使用普通的数据采集卡,在保留虚拟仪器功能强大、编程灵活、操作简单等众多优点的同时,不仅节约了系统开发成本,而且可以根据DLL来更加灵活地设计系统。关键词:虚拟仪器;动态链接库;数据采集中图分类号:TP399文献标识码:BAbstract:Facingtheproblemthatvirtualinstrumentationdevelopmentsoftware,suchasLabVIEW,canonlysupportitscompany’scardandcannotsupportedotherscompany’sDAQcard,animportantmethodofusingaordinaryDAQcardinvirtualinstrumenta-tiondevelopmentsoftwareisstudied.Andthekeyprocessofcallingdynamiclinklibraryfunctionswhichisamethodofusingaor-dinaryDAQcardinLabVIEWisemphaticallystudied,atthesametimetheprocedureofcallingdynamiclinklibraryfunctionsinLabVIEWispresented.ItprovesthatusingaordinaryDAQcardbycallingdynamiclinklibraryfunctionscanmaintainvirtualin-

strumentation’

spowerfulfunction,andcansavecostandmakeuserdesignsystemmorefacilely.Keywords:VirtualInstrument,DynamicLinkLibrary,DataAcquisition

文章编号:1008-0570(2007)10-1-0074-03

引言

虚拟仪器是对传统仪器的重大突破,是计算机技术与仪器技术相结合的产物。它利用计算机系统的强大功能,结合相应的硬件,大大突破传统仪器在数据处理、显示、传送和存储以及系统维护和扩展等方面的限制。虚拟仪器的众多优点使其得到了广泛的应用,然而当今的著名的虚拟仪器开发软件(如Lab-VIEW等)能直接支持的数据采集卡却只限于本公司生产的数据采集卡,而不能直接驱动普通的数据采集卡。本文重点研究了在虚拟仪器开发软件平台下使用普通数据采集卡的方法。

1虚拟仪器开发软件LabVIEW与

数据采集卡的连接

LabVIEW是美国NI公司推出的一种基于G语言(Graphics

Language,

图形化编程语言)的虚拟仪器软件开发工具,具有强大的数据采集功能,但它一般只支持NI公司的数据采集卡,而这些卡的价格较昂贵。因此,为了能在LabVIEW平台上驱动普通的数据采集卡,用户必须通过LabVIEW所提供的调用库函数节点(CallLibraryFunctionNode即CLFN)及代码接口节点(Code

InterfaceNode即CIN)

等功能,将功能强大、编程灵活、而且已有很多现成程序模块的C语言同LabVIEW中编程直观方便的图形化G语言结合起来,从而实现用普通的数据采集卡来采集数据的功能,使LabVIEW在对硬件的支持上有了一个质的飞跃。

在LabVIEW中利用CLFN节点可以较容易地实现访问动态链接库(DLL),而且在购买数据采集卡的时候,厂商一般会给

用户提供动态链接库(DLL)

,所以研究在LabVIEW平台下调用动态链接库(DLL)来驱动普通的数据采集卡来实现数据采集更具有普遍性。

2基于DLL的普通数据采集卡的驱动

2.1动态链接库概述

动态链接是一种应用程序在运行时与库文件连接起来的技术。动态链接库(DLL)是一个可执行模块,它不可以直接运行,只是提供一群函数供Windows应用程序或其它的动态链

接库调用,它是在应用程序运行时被装入和链接的,而不是把库代码复制到应用程序中去,只是在程序中记录了函数的入口点和接口。动态链接库独立于编程语言,因此LabVIEW可以调用用大多数语言(如VisualC++,C++Builder等)编写生成的动态链接库。

链接应用程序到DLL包括两种方法:隐式链接(linkexplic-ity)

和显式链接(linkimplicity)。显式链接有时也称为动态加载。使用动态加载的应用程序必须在代码中明确的加载所使用的DLL,在使用完毕后,应用程序必须卸载所使用的DLL。在LabVIEW只能使用显式链接的方法来链接DLL,因此在调用DLL中函数时,必须知道以下4个信息:1、函数返回的数据类型;2、函数调用的方式;3、函数的参数及类型;4、DLL库文件的位置等。

2.2实现数据采集的DLL的建立

要在LabVIEW平台下调用DLL来驱动普通数据采集卡,那么就应首先为普通数据采集卡编写DLL,一般选择在Visual

C++6.0环境中建立Win32DLL,

需要特别注意的是在编写DLL的时候,为了在LabVIEW使用DLL的函数,需将DLL中的一些函数作为出口函数。在函数说明前加上宏命令_declspec(dllex-

port),

若无此宏命令,则为DLL的内部函数,只能内部使用。潘海彬:在读博士研究生

江苏大学高级专业人才科研启动基金项目(编号:05JDG034)

74--

邮局订阅号:82-946360元/年技

术创新

数采与监测

《PLC技术应用200例》

您的论文得到两院院士关注

以北京中泰研创科技有限公司的PCI-8310普通数据采集卡为例,该采集卡在LabVIEW平台下不能直接被驱动。其A/D转换分辨率为12位,允许采用32路单端输入方式或16路双端输入方式,用户可根据需要选择测量单极性信号或双极性信号。该采集卡提供了一个动态链接库PCI8KP.dll,其库内有采集的全部函数,该卡在LabVIEW平台下作为数据采集卡使用主要分为三步:1.初始化并打开设备(数据采集卡);2.启动模拟量数据采集;3.对某一通道模拟量数据采集。相应的,厂商提供的DLL驱动中有如下3个函数,其原型分别为:

longAPIENTRYOpenDevicePlx(ZT_PCIBOARD*bs)//打开设备(数据采集卡)

longAPIENTRYZT8310Start(ZT_PCIBOARD*bs)//启动模拟量数据采集

longAPIENTRYZT8310AI(ZT_PCIBOARD*bs)//对某一通道模拟量数据采集

在上面的三个函数中,bs为传递的参数,

该参数为结构体,而且各函数的返回值类型均为数值型。鉴于DLL已提供,所以省去了编写DLL这一步,可直接在LabVIEW中调用动态链接库PCI8KP.dll来驱动普通数据采集卡PCI-8310。

2.3LabVIEW中调用DLL

以LabVIEW7.1为例,在LabVIEW7.1中调用DLL时,则应根据应用程序的需要,确定参数个数和参数类型及调用规则,然后在LabVIEW中正确地配置DLL。首先从函数模板Function中选择“Advanced”下的CallLibraryFunctionNode图标并将其拖放到diagram面板中适当位置,然后右键单击它,在弹出的菜单选项中选择Configer…会弹出CallLibraryFunction对话框。在此对话框中,第一个参数LibraryNameorPath,填入需要调用的动态连接库文件的名字和路径。第二个参数FunctionName,是连接库中要调用的函数名称。第三个参数CallingConvern-

tions是对dll的调用规则,

可选择C或stdcall,一般情况下默认的为C?规则,这种规则不需在函数前加关键字;而采用_stdcall规则(即standard?Windows?calling?规则),则必须在函数前加关键字_stdcall,且必须在.def中进行函数声明,上面说的是在编译dll时用到的,至于在调用时选用那种就要看调用的dll中的函数属于那种类型了,Win32API使用缺省的标准调用(stdcall)规则。接下来的4个选项Parameter,Type,DataType,Pass分别是参数名称,参数类型,数据类型转换,参数传递方式。其中需要

注意的是DataType(数据类型转换)选项,

在不同的编译平台下,数据类型的定义名称是不一样的,为了将数据类型一一对应,在

LabVIEW中必须将数据类型名称定义进行转换。

紧接着单击对话框右侧的AddParameterAfter给函数添加输入参数,同样需要输入参数名称,选择参数类型,数据类型转换和参数传递方式。最后一个需要注意的参数选项是线程安全选择,如果编译生成的DLL是线程安全的(即能同时为其它程序调用),则选择Reentrant选项,否则,选RunInUIThread。然后单击“OK”返回LabVIEW的Diagram界面。我们会发现,CallLibraryFunction已经根据刚刚配置的参数个数和数据类型设置好了输入输出端口,我们只需要连线就行了,和使用其它的函数节点没有什么差别。

以PCI8KP.dll中的函数longAPIENTRYOpenDevicePlx

(ZT_PCIBOARD*bs)为例,

在LabVIEW调用它时,按以上步骤得到配置好的CallLibraryFunction对话框如下图1所示:

图2CallLibraryFunction对话框

3普通数据采集卡在LabVIEW平台下的应用实例

本应用实例是基于普通数据采集卡在LabVIEW7.1平台下设计一多通道温度采集系统,系统结构如图2所示。在该系统中,温度测量传感器采用热电偶,温度变送器的作用是把热电偶输出的微弱电压信号调理成数据采集卡能够采集的电压的同时,还实现了温度到电压的线性化转换,数据采集卡的作用是把温度变送器输出的标准信号采集到计算机内供计算机显示、打印和存盘。

图2系统结构

该系统中的硬件主要有中泰公司的PCI-8310普通数据采集卡,天津中环温度仪表厂生产的K型热电偶和变送器。由于PCI-8310卡为12位的A/D卡,且系统中采用的是单极性输入信号(0~10V)和单极性原码的编码方法,于是转换后得到0~4095的数字量,则模拟电压值V与数字量D的对应关系可描述为:V=D×10/4095

变送器将被测参数(温度0~200℃

)变换成标准信号(DC1~5V)

,于是被测温度T与模拟电压V的线性标度变换关系为:于是得一个通道的温度采集部分框图程序如下图3所示:

图3调用DLL的温度采集通道框图

上图中3个CLFN节点分别用来调用longAPIENTRYOpenDevicePlx(ZT_PCIBOARD*bs),longAPIENTRYZT8310Start(ZT_PCIBOARD*bs)和longAPIENTRYZT8310AI(ZT_PCIBOARD*bs)这三个函数的。

该多通道温度采集系统能够实时准确地测得多点现场温度,并显示、存储以及报表生成。下图4为多通道温度采集系统进行温度采集时的界面,在界面上可以象操作传统仪器一样对各种参数进行设置,如设置读取温度值的时间间隔、设置显示模式,还可以保存结果并打印,另外,还可以借助虚拟仪器的强大的网络功能,将温度采集值实时发布到网络上,以实现远程温度监测。

75--

技术创新

中文核心期刊《微计算机信息》(测控自动化)2007年第23卷第10-1期

360元/年邮局订阅号:82-946《现场总线技术应用200例》

数采与监测

图4多通道温度采集仪运行界面

4结论

在LabVIEW平台下调用DLL函数来驱动普通数据采集卡的技术显示出了LabVIEW支持底层函数、使用外部代码的强大功能,应用此方法设计数据采集系统一方面可充分利用LabVIEW的界面友好、图形显示和数据分析处理能力强大等优点,另一方面

又可以大大降低作为一般要求的数据采集系统的开发成本。

本文的创新点:通过LabVIEW的对外开放接口———CLFN节点访问外部DLL来调用Windows标准库函数,使得Lab-VIEW支持的数据采集板卡范围突破了限制,同时也为Lab-VIEW访问底层函数提供了一种新的思路。

在江苏大学测控系虚拟仪器与数据采集实验室的建设中,均采用了LabVIEW平台下调用DLL函数驱动普通数据采集卡来构建数据采集系统,相对于应用NI的数据采集卡,应用此方法构建数据采集系统为实验室建设节省了10余万元成本。参考文献

[1]ArchanaShrotriya.WritingWin32DynamicLinkLibraries(DLLs)andCallingThemfromLabVIEW.ApplicationNote087,1999[2]UsingExternalCodeinLabVIEW.NationalInstrumentsLab-VIEWUserManual,2000

[3]薛曼玲,

赵恒永,姜丰等.LabVIEW在镍氢动力电池管理系统中的应用[J]微计算机信息,2006Vol.22No.20

[4]王益群,

韩晓健,帅仁俊等.基于DLL的PCL-816数据采集卡在结构试验中的应用[J]微计算机信息,2006Vol.22No.16[6]同志工作室著.VisualC++6.0开发技巧与实例教程[M].北京:人民邮电出版社,2000.5

作者简介:潘海彬,男,汉族,江苏大学在读博士研究生,现在主要从事虚拟仪器及测控系统集成方面的研究,单位:江苏大学测控技术与仪器系;李伯全,男,教授,主要研究方向为虚拟仪器技术及网络测控系统。

(212013江苏镇江江苏大学测控技术与仪器系)潘海彬周哲李伯全

(DepartmentofMeasurement&Control,JiangsuUniversity,Zhenjiang,Jiangsu,212013)PanHanbinZhouZheLiBoquan通讯地址:(212013江苏镇江江苏大学测控技术与仪器系)潘海彬

(收稿日期:2007.7.23)(修稿日期:2007.8.25)

(上接第14页)

图2最佳控制器在各扰动下的控制效果

参考文献

[1]Harris,T.J.Assessmentofcontrolloopperformance.Can.J.Chem.Engng.,67(10):856-861.1989

[2]Harris,T.J.,C.T.Seppala.RecentDevelopmentsinCon-trollerPerformanceMonitoringandAssessmentTechniques.SixthInt.Conf.onChemicalProcessControl(CPCVI),AIChESymp.Ser.98:208.2002

[3]Huang,B.,andShah,S.L.PerformanceAssessmentofCon-trolLoops:TheoryandApplications.Springer.1999

[4]Desborough,L.,Harris,T.J.Performanceassessmentmea-suresforunivariatefeedforward/feedbackcontrol.Can.J.Chem.Engng..71:605.1993

[5]Tyler,M.L.,M.Morari.Performanceassessmentforunstableandnonminimum-phadessystems.InPreprintsIFACWorkshoponOn-lineFaultDetectionandSupervisionintheChemicalProcessIndustries.U.K..200-205.1995

[6]Harris,T.J.,Boudreau,F.,MacGregor,J.F..Performanceassessmentofmultivariablefeedbackcontrollers.Automatica.32:1505-1518.1996

[7]FolakeO.,HuangB.,EdgarT..Performanceassessmentofcontrolloopswithtime-variantdisturbancedynamics.JournalofProcessControl.14:867-877.2004

[8]张建奇.数字PID变频调速在PLC恒压供水系统中的应用[J]微计算机信息,18(4):21-25,2002作者简介:李刚(1977-),男(汉族),辽宁葫芦岛人,北京理工大学在读博士研究生。研究方向为控制系统性能评价、监控与诊断;王庆林(1963-),男(汉族),河南林州人,北京理工大学教授,博士导师。研究方向为非线性控制、模糊控制,故障诊断等。

Biography:Ligang(1977-),

Male,

Han,

borninLiaoNingProvince,adoctorstudentinBeijinginstituteoftechnology,ma-jorsincontrolsystemperformanceassessment,monitoringand

diagnosis.Wangqinglin(1963-),Male,Han,borninHeNan

province,

aprofessorinBeijinginstituteoftechnology,

doctor

advisor,majorsinnon-linearcontrolsystem,fuzzycontrol,faultdiagnosis,etc.

(100081北京北京理工大学信息科学技术学院自动控制系)李刚王庆林

(DepartmentofAutomaticControl,

SchoolofInformation

ScienceandTechnology,BeijingInstituteofTechnology,Bei-jing100081,China)LIGangWamgQinglin

通讯地址:(100081北京理工大学自动化系210教研室)李刚

(收稿日期:2007.9.13)(修稿日期:2007.10.15)

76--

相关文档