第6章Advanced子模板及LabVIEW与C语言的接口方法课件.pptx
《第6章Advanced子模板及LabVIEW与C语言的接口方法课件.pptx》由会员分享,可在线阅读,更多相关《第6章Advanced子模板及LabVIEW与C语言的接口方法课件.pptx(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 Advanced子模板及子模板及LabVIEW与与C语语言的接口方法言的接口方法 6.1 概述概述 6.2 Advanced子模板子模板 6.3 CIN(代码接口节点代码接口节点)图标及其与图标及其与C语言接口技术语言接口技术 6.4 CIN图标的调用及参数设置图标的调用及参数设置 6.5 CIN设计步骤设计步骤 6.6 应用举例应用举例:用用CIN图标实现对图标实现对HY-1232数据采集卡的驱动数据采集卡的驱动 6.7 端口操作图标端口操作图标In Port.vi、Out Port.vi及其应用及其应用 本章小结本章小结6.1 概概 述述 用前面介绍的知识完全可以完成一个完整的
2、虚拟仪器测试系统的基本编程,但是LabVIEW并不是万能的,它所提供的图标功能是有限的,实际系统中仍然有某些功能是LabVIEW无法或难以实现的。针对这个问题,LabVIEW在Advanced子模板上提供了和C语言的接口,还提供了调用Windows动态链接库DLL函数以及实现多线程编程等高级功能。6.2Advanced子模板1.调用路径FunctionsAdvancedAdvanced子模板如图61所示。图61Advanced子模板6.3CIN(代码接口节点)图标及其与C语言接口技术CIN是CodeInterfaceNode的简称。Advanced子模板上提供了CIN图标,可以实现在LabVI
3、EW中引入C语言源代码,因此它是LabVIEW图形化编程语言环境与C语言的接口。C语言是功能非常强大的文本式编程语言,当遇到某些LabVIEW图标难以实现的功能时,就可以通过CIN图标在LabVIEW中引入C语言源代码来实现,从而大大提高了LabVIEW数据处理的整体功能。作为LabVIEW与C编程语言的接口图标,CIN是通过输入、输出端口实现两种语言之间的数据传递的。输入、输出端口的个数可由设计者根据实际需要确定。当LabVIEW的程序运行到CIN节点时,数据由CIN的输入端口传递给C源代码图标,程序转去执行C源代码,代码执行完后,得到的数据结果由CIN的输出端口返回给LabVIEW。CIN
4、的设计方法大致包括以下几个步骤:(1)确定CIN图标的输入、输出参数个数和数据类型。(2)生成C源代码编辑格式文件。(3)在编辑格式文件中的规定位置(/*EnterYourCodeHere*/)填写实现某种测量功能的C源代码,生成最终的C源代码文件。(4)在LabVIEW指定的环境下编译步骤(3)中生成的C源代码文件,并生成可执行文件。(5)调用CIN的功能菜单将生成的可执行文件载入CIN图标。这样就基本形成了一个具备某种功能的CIN图标。本章以实现c=a+b为例,介绍CIN图标的使用方法,同时着重介绍它在驱动数据采集卡方面的应用。LabVIEW支持的数据采集卡(当然NI公司生产的数据采集卡在
5、其中之列),是Measurement&Automation软件检验时可识别的,从而是可以进行参数设置的数采卡。这种数采卡可以调用第4章介绍的DataAcquisition子模板上的数据采集图标进行各种方式的数据采集。LabVIEW不支持的数据采集卡,Measurement&Automation软件检验时是不可识别的,当然非NI公司生产的数据采集卡通常都属此列,则一般需要设计者自己开发驱动程序。通常驱动程序是采用C语言编写的,用CIN接口图标驱动数据采集卡的实质与关键步骤是,将C语言编写的驱动程序添入规定的位置/*EnterYourCodeHere*/。6.4CIN图标的调用及参数设置6.4.1
6、 CIN图标的调用路径图标的调用路径FunctionsAdvancedCodeInterfaceNodeCodeInterfaceNode子模板如图62所示。图62CodeInterfaceNode子模板 6.4.2 CIN 图标及其端口参数设置图标及其端口参数设置初始化时的CIN图标如图63所示。CIN图标中表格状图案的每一行代表一个参数,左侧为参数的输入值,右侧为CIN运行后该参数的返回值。参数1输入口参数1返回值的输出口图63初始时的CIN图标 6.4.2.1 设置设置CIN图标的输入、输出参数个数图标的输入、输出参数个数这里以实现ca+b运算为例来说明CIN图标参数的添加方法。初始时,
7、CIN只有一个参数的输入、输出口。欲增添新的参数输入、输出口,可以利用工具模板上的选择工具拖放CIN图标来实现,也可以从CIN图标的快捷菜单中选择AddParameter选项来添加。有些情况下,有的参数只能作为输出值,而没有对应的输入。当欲实现ca+b运算时,则c参数只能是输出值,它是CIN的运行结果,没有对应的输入值,这时应当将其对应的输入口置为无效。方法是,把鼠标放在相应的输入口,用鼠标右击CIN图标,弹出快捷菜单,从中选择OnlyOutput项,则该输入口变暗,表明其无效。图64为本例的CIN图标输入、输出口的设置情况。无效a返回值b返回值CIN输出b输入值a输入值图64添加参数后的CI
8、N图标 6.4.2.2 设置参数的数据类型设置参数的数据类型CIN输入(输出)口参数的数据类型由连接在该输入(输出)口上的控件的数据类型决定。例如,如果某参数的输入(输出)端口连接在一个数据类型为int32的数字控件上,则该参数的数据类型为int32型。有些时候,设计者并不希望将CIN的运行结果显示到面板上,而只是作为整个程序的一个中间运行结果传递下去。这时可以在流程图上,用鼠标右击该控件对应的终端,从弹出的快捷菜单中选择HideControl项将该控件从前面板上隐藏掉。6.5CIN设计步骤 6.5.1 生成生成C源代码编辑格式文件源代码编辑格式文件(*.C文件文件)代码框架代码框架从CIN图
9、标的快捷菜单中选择Create.CFile项,会弹出一个文件存储对话框,键入文件名(本例中文件名设为add.c),则生成LabVIEW的C语言代码框架;然后用任意一种文本编辑器将它打开。该C文件的代码框架为/*CINsourcefile*/注释#includeextcode.hCINMgErrCINRun(float64*a,float64*b,float64*c);函数声明CINMgErrCINRun(float64*a,float64*b,float64*c)函数体/*ENTERYOURCODEHERE*/填入C语言源代码returnnoErr;6.5.2 添加添加C源代码源代码在/*EN
10、TERYOURCODEHERE*/处填入设计者所编写的C源代码。对于本例,填写后的C源代码文件为/*CINsourcefile*/#includeextcode.hCINMgErrCINRun(float64*a,float64*b,float64*c);CINMgErrCINRun(float64*a,float64*b,float64*c)*c=*a+*b;/*添加的代码*/returnnoErr;注:在C源代码的编写过程中,除可直接调用C语言的基本库函数外,LabVIEW提供有专门支持CIN设计的库函数,如存储空间(Memory)的动态分配(后面的采样举例中会用到)、文件的操作等,供设计
11、者使用,详细内容可查看LabVIEW的在线帮助(OnlineHelp)。6.5.3 *.C文件源代码的编译文件源代码的编译*.C文件源代码的编译主要是在以C语言为主的开发系统中进行。编译完毕形成一个可以和CIN图标进行动态连接的工程文件*.lsb。下面介绍在VC+集成环境下编译*.C源代码的具体步骤。(1)新建一个DLL工程文件,命名为Add。打开VC+开发平台,执行FileNew操作。进行选项:win32DynamicLinkLibrary。添加工程文件名:Add。location:填写工程文件的存放路径。也可以采用其默认路径D:MicrosoftVisualStudioMyProjects
12、。最后形成工程文件add.cpp。(2)向工程文件中添加cin.obj、labview.lib、lvsb.lib、lvsbmain.def四个文件。执行ProjectAddtoProjectFiles操作,向工程文件添加上述四个文件。这四个文件在LabVIEW安装路径下的cintools文件夹下的win32子文件夹中。(3)向工程文件中添加上面的*.C源代码文件add.c。添加方法同(2)。(4)*.C源代码文件编译前的设置。由菜单项ProjectSetting打开设置对话框,逐项设置。Settingfor选项设置。AllConfiguration。C/C+标签页设置。用鼠标左击C/C+标签页
13、按钮,逐项设置。lCategory:由下拉菜单选择为Preprocessor。Additionalincludedirectories:添加LabVIEW的cintools文件夹的路径。假设LabVIEW安装路径为d:LabVIEW,则在Additionalincludedirectories处添加路径d:LabVIEWcintools。lCategory:由下拉菜单另选为CodeGeneration。Strictmemberalignment:设置为1Byte。Userun-timelibrary:设置为MultithreadedDLL。CustomBuild标签页设置。用鼠标左击Custo
14、mBuild标签页,逐项设置。lCommands:输入命令行如下:d:labviewcintoolswin32lvsbutil$(TargetName)d“$(WkspDir)$(OurDir)”(假设LabVIEW的安装路径为:d:labview。)lOutputs:输入命令行如下:$(OutDir)$(TargetName).lsb(5)添加C源代码程序。可在Workspacewizard窗口中双击add.c,打开源文件添加C源代码。如果已经添加过,则继续下一步。(6)编译*.C源代码文件。在主菜单Build下选择Compile add.c选项,则进行add.c程序的编译,如有语法等错误,
15、则给出错误提示,按提示修改程序,重新编译。重复这一过程,直至没有错误。(7)生成可执行文件。在主菜单Build下选择BuildAdd.dll选项,即生成可执行文件Add.lsb,同时生成如Add.dll等所需的全部文件。图65CIN图标主菜单1.装载可执行文件到CIN图标回到LabVIEW流程图窗口,窗口中CIN图标的快捷菜单如图65所示。从中选择LoadCodeResource项,即弹出一个Chooseacoderesourcefile对话框,如图66所示。按照Add.工程文件存入的路径寻找Debug目录下的Add.lsb文件,然后点击“打开”按钮,于是Add.lsb文件就装入CIN图标中。
16、图66Chooseacoderesourcefile对话框2.可执行文件的重新装载及错误文件的清除如果在装载完可执行文件后,你对源代码又进行了修改,则必须重新编译,重新装载。在重新装载的时候,CIN图标在再次装载时,它的快捷菜单发生了相应的改变,如图67所示。利用其中的ReloadCodeResource(对同一可执行文件)或ReloadCodeResourceFrom(如果是其它可执行文件)选项,可实现可执行文件的重新装载。图67ReloadCodeResource菜单 6.5.5 运行程序运行程序至此,就完成了CIN的全部设计过程,可运行该程序,改变a、b的值,察看c的输出显示。关于数据采
17、集卡的驱动程序,LabVIEW提供的开发方式有两个:利用端口操作图标InPort.vi和OutPort.vi开发数据采集卡驱动程序。这种方法实现起来比较简单,适于采集精度要求不高的情况,但对于精度要求高且较复杂的采集系统,如包含对物理内存大量操作的情况,这种方法是远远不能满足设计需要的。采用LabVIEW提供的CIN(CodeInterfaceNode)图标开发数据采集卡驱动程序。这种方法适用于精度要求高且功能复杂的采集系统的设计,是一种理想的设计方法。本章我们以非NI公司生产的HY1232型数据采集卡的驱动为例,重点介绍利用CIN(代码接口)子模板驱动数据采集卡的方法。最后简单介绍利用InP
18、ort.vi和OutPort.vi两个端口的操作图标实现数据采集卡驱动的方法。CIN子模板是LabVIEW与C语言之间的一种接口图标。设计者可以将那些在LabVIEW下难以实现和无法实现的功能,利用C语言来完成,然后再将结果通过CIN传递回LabVIEW。在实际设计应用中,经常会遇到某些想实现的功能,利用LabVIEW中现成的图标无法实现,而利用其它编程语言则很容易实现的情况,这时就需要利用LabVIEW中的接口图标以实现LabVIEW和其它编程语言之间的连接。CIN图标就是其中的一种。6.6应用举例:用CIN图标实现对HY1232数据采集卡的驱动 6.6.1 HY1232数据采集卡简介数据采
19、集卡简介HY1232是一种IBMPCXT/AT总线兼容的数据采集卡,其主要性能指标如下:32路单端模拟输入通道;A/D分辨率为12bit;1路模拟输出通道;D/A分辨率为12bit;D/A输出上电清零;模拟输入电压范围:5V;模拟输出电压范围:5V或0+5V;软件触发方式;数据传输方式采用软件查询方式和中断方式。6.6.1.1 HY1232数据采集卡工作原理数据采集卡工作原理将HY1232数据采集卡插入PC机的PCI插槽中,待采集的多路模拟信号通过一个40芯的输入输出插座分别接到采集卡内部的32选1的模拟输入多路开关上。通过软件设置,选通某模拟输入通道。对于HY1232数据采集卡,在选通某模拟
20、信号输入通道的同时即启动了该路的A/D转换。当A/D转换完成时,采集卡上的转换完成位寄存器的最高位(D7)被置为“1”。用软件查询方式查询该寄存器的D7位,当查询到该位为“1”时,即表明采样已结束,可将12bit的数据读入计算机内存中。如果采用中断方式,则在A/D转换完成后,采集卡会自动向计算机发出中断请求信号。在中断服务程序内,将12bit数据读入计算机内存。HY1232数据采集卡中采用的是12位A/D转换器,转换完毕的12位二进制数中的低八位AD7、AD6AD1、AD0存放在低八位缓冲寄存器中,其高四位AD11、AD10、AD9、AD8存放在高四位缓冲寄存器中。HY1232数据采集卡有32
21、路单端模拟输入通道,由八位输入通道选择寄存器低六位(C4、C3、C2、C1、C0)的二进制状态字选择被测信号的输入通道。例如,选择第4通道输入信号的二进制状态字为00100。表61列入了各寄存器的读/写操作功能与占用地址。表61 HY1232数据采集卡板基地址分配与寄存器读/写操作功能 6.6.1.2 对采集卡进行参数设置对采集卡进行参数设置(1)确定采集卡的板基地址。板基地址是CPU分配给采集卡内存空间的首地址。首地址后面的内存空间供采集卡内部寄存器分配使用。HY1232数据采集卡板基地址的可选范围为:200H3FFH(5121023)。通常选0 x280,即280H(640)。(2)确定信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Advanced 模板 LabVIEW 语言 接口 方法 课件
限制150内