一、PC-6313简介
PC-6313多功能模入模出接口卡适用于具有ISA总线的PC系列微机。使用时只需将接口卡插入机内任何一个ISA总线插槽中,其模入模出及I/O信号均可通过信号电缆从机箱外部直接接入。在本文的程序编制中主要针对该卡的模入,即A/D部分。本卡上的A/D转换为12位字长,可用于32个通道的单端或16个通道的双端输入。外部模拟信号经多路开关选择后送入高速放大器处理。处理后的信号送入模数转换器进行转换。模数转换器的启动方式可以选用程序启动或者定时器自动触发,也可用外部触发方式启动。其转换状态可以用程序查询,也可以用中断方式通知CPU读取转换结果。
查询A/D转换状态时的数据格式及意义见表2(端口地址为基地址+2)。
在每个A/D转换程序段开始时,应通过空读低 8位数据初始化A/D转换标志及中断申请标志。
二、利用动态链接库DLL进行数据采集
1、数据采集动态链接库(DLL)的建立
建立动态链接库(DLL)的工具很多,本文介绍用C语言编写动态连接库DLL的步骤。
(1)生成C语言文件。在MFC界面菜单上选择File>>New选项,在弹出的New对话框中选择Files属性页,在左边列表中选择C/C++HeaderFile项,在右边File一栏中输入程序名:daq.c,在路径一栏输入C:/temp,再按OK按钮结束对话框。
(2)编写动态连接库中的函数。在生成的程序中编写输出函数代码如下:
上述输出函数是利用PC-6313模入部分进行数据采集的一个例程,这里只用到了一个输入参数ch,即通道号,为整型变量。函数的返回值为value,即通道中采集到的信号电压值,为实型变量。
(3)将C语言文件编译成工程文件。在MFC界面菜单上选择Build>>Compile MyFunctionl.c选项,将daq.c编译成为工程文件。
(4)在MFC界面菜单上选择Project>>Settings选项,在弹出的Project Settings对话框中选择Link页面,对Output file name栏和Project Options栏做相应的修改。在Outputfile name栏中输入daq.dll,在Project Op-tions栏中将路径设置改为/subsystem:windows/dll/in-cremental:yes
(5)生成MyFunctionl.dll的动态连接库。在Build>>Build daq.c选项,生成daq.dll的动态连接库。
2、LabVIEW中对DLL的调用
在LabVIEW中,利用库函数节点(calllibrary Func-tion node,简称节点)可以较容易地实现对DLL的调用,从而提高了程序的开发效率。使用Call LibraryFunction,我们可以调用Windows标准的动态连接库(DLL),也可以调用用户自己编制的DLL。Call LibraryFunction位于Function>>Advanced子菜单中,将选择好的Call Library Function图标放在设计面板(diagram)中,然后通过对Call Library Function这一节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。在调用DLL库中函数时,必须知道以下信息:函数返回的数据类型、函数调用的方式、函数的参数及类型、DLL库文件的位置等。右键单击CallLibrary Function的图标,在弹出的菜单选项中选择Configure...选项,通过Browse选择被调用的库名或路径,在本例中选择C:/temp/debug/daq.dll;在FunctionName选项中输入被调用的函数名,本例中即输入daq;在Calling Conventions选项中选择所调用的库是标准调用(stdcall)还是用户使用C语言自己创建的库,本例中为用C语言创建的库。下面是关于所调用函数参数和返回值的设置。选择返回值(return type)的参数类型,有三种类型可供选择:空(Void),数值(Numeric),字符(String),选定其中的一种后,还要再根据情况选择具体的数据类别,本例中返回值为采样的电压值,选择数值(Numeric)类型,再选择8-bytes double类型。然后单击右侧的Add Parameter After给函数添加第一个输入参数,和返回值一样,也要选择参数类型和具体的数据类型。再次单击右侧的Add Parameter After可以给函数添加其他的输入参数。本例中只有一个输入参数ch,即通道号,选择数值(Numeric)类型,再选择Signed8-bits Integer。最后单击“OK”返回LabVIEW的设计面板(diagram)中。此时,Call Library Function已经根据刚才配置好的参数个数和类型设置好了输入输出端口;和其他LabVIEW节点图标一样,只需要将其对应的参数连线即可。具体的框图程序如图1所示。
图1
图2
在本例中,DLL函数的输入参数只有通道号。其他参数如采样数、采样延时等也可根据需要,设为输入参数。用波形发生器产生的正弦波从PC-6313接口卡通道1输入,在前面板中启动采集开关,则可得到如图2所示的波形,它与波形发生器产生的波形频率一致。
三、结论
在LabVIEW中,用户通过调用DLL可以很方便地实现普通采集卡的数据采集。对于其他硬件设备,只要花一些时间创建出可对这一硬件设备进行低层操作的库函数,通过Call Library Function将其制作成函数模块,再交给LabVIEW使用,利用LabVIEW图形化编程的方便、快捷和强大的虚拟仪器开发功能,就可以开发出原来LabVIEW不兼容硬件的虚拟仪器。
文章评论(0条评论)
登录后参与讨论