丁宗玲
(安徽大学,安徽 合肥 230601)
虚拟仪器(Virtual Instrument,简称VI)是现代计算机技术和仪器技术深层次结合的产物,是计算机、仪器和测控系统硬件资源与虚拟仪器软件资源三者的有效结合[1]。LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程平台)是美国国家仪器公司(National Instruments Company,NI)推出的一种基于G语言的实验室虚拟仪器集成软件开发工具,LabVIEW使用图形化语言,界面操作简单友好直观,并且采用LabVIEW设计的虚拟仪器可脱离LabVIEW开发环境,最终使用者看见的是和实际硬件仪器相似的操作面板[2-9]。
数据采集系统是基于计算机或者其他专用测试平台从传感器或其它待测设备等的被测单元中采集非电量或者电量信号,送到上位机中进行分析、处理等后续操作来实现方便、直观的测量系统。我们采用的是北京双诺测控技术有限公司(wwlab)生产的PCI类型的AC6621采集卡为例结合LabVIEW语言实现某温度信号的采集,同时为了增加测量的稳定性,使用LabVIEW数据处理功能进行数据的平均处理,最终将所测量的温度信号进行直观的图像显示和保存。
为了便于说明LabVIEW语言在数据采集卡应用中的普遍性,采用了北京双诺测控技术有限公司(wwlab)生产的非NI公司的AC6621采集卡为例进行说明。
AC6621是双诺公司生产的一款PCI总线12位中速采集模块,具有16路模拟输入、开关量16路输入/16路输出。采用的是PCI总线,支持即插即用、实时采集等功能。其内置4KB FIFO,支持全速实时不间断采集[10]。其主要功能和特点如表1所示:
表1 AC6621采集卡主要参数
其外观如图1所示:
图1 AC6621采集卡外观图
为了能够使采集卡正常工作,首先我们要调用厂家提供的动态.dll函数库编写驱动。动态链接库(DLL,是Dynamic Link Library的缩写形式),是一个包含可由多个程序同时使用的代码和数据的库,它不是可执行文件,但有助于共享数据和资源,可以由多个应用程序同时访问内存中单个DLL内容,从而可以避免多程序调用时内存资源的浪费。LabVIEW 在调用DLL中的函数时要知道函数的参数、类型、返回值、DLL库文件的位置等信息。
图2 调用库函数设置对话框
实验涉及的数据采集卡为上述的AC6621板卡,其自带了 Windows下的驱动程序库AC6621.dll,库内包含了所有数据采集应用的函数,如:打开设备函数(HANDLE AC6621_OpenDevice),查询并回读采样数据函数(AC6621_ReadAD)等,在这里不一一详细说明,可以参看其说明书内容。在这里我们使用的是LabVIEW 8.2中文版本。根据上述调用“库函数节点”来调用.dll文件根据所需要的内容进行配置。“库名和路径”为所要调用的AC6621.dll文件的路径和名称。“函数名”选项为要调用的函数名称,在这里我们以打开设备为例即:AC6621_OpenDevice函数;“调用规范”为对库函数的调用规则在这里选择“stdcall”标准调用方式。当调用自己用C语言编写的.dll文件时选择“C”选项,具体的C语言编写例程可以参看相关书籍[11]。
接下来是对参数选项的设置,选择图1中的“参数”项。根据调用的函数,在此项设置下添加和设置相应的参数,参数名称、类型和数据类型都要与被调用函数中的参数名相同。在这里打开设备只包含一个参数即设备号可以设置为:dev_num,类型为:数值型,数据类型为:有符号32位整型。设置完成后该打开设备的函数原型为:unsigned long AC6621_OpenDevice(long dev_num)。最终配置完成的打开设备子Vi如下图所示:
其它函数依照此方法进行编译,最终编译完成5个类似子Vi,其顺序结构依次分别是:AC6621_OpenDevice.vi(打开设备)→AC6621_AD.vi(采样参数并启动AD采用)→AC6621_ReadAD.vi(查询并回读采样数据)→AC6621_StopAD.vi(停止采样)→AC6621_CloseDevice.vi(关闭设备)。
图3 配置完成的打开设备子Vi图
根据上面编写完成的函数驱动子Vi,接下来就是外部的编程和连线。根据采样原理和所需要设置的采集卡变量事先预留变量输入控件,如:采样频率、量程选择、内外触发等输入控件。因为数据采集是按顺序进行的,因此我们采用“平铺式顺序结构”控件进行采集的顺序进行。“平铺式顺序结构”控件分为三部分,第一步是打开AC6621采集卡设备(图4A);第二部是进行采集卡的设置、采样和读取,读取完毕以后要暂停采集卡读取(图4 B);第三部是采样完毕关闭采集卡设备(图4C)。
图4 平铺式顺序结构控件三步走
数据采集到以后要进行数据转换为真实值,假设采集到的数组为变量:data为12位转换结果=16位读入数据/16。同时要根据所设置的输入电压关系进行转换,在这里选择的是±5V档位,因此其变换关系为:
实际电压值
RealData= (data-2048)*5000.0/2048.0(mV)
并且为了采样数据的准确性,采用了简单的50组数字平均方式进行信号的处理和信号数据的存储。以上数据转换、信号平均和数据存储框图如图5所示:
图5 数据转换,信号50次平均和数据存储
为了验证系统设计的实用性,我们采用了以热电偶为基础信号的温度采集系统,使该温度测量设备置于实验室空调房间内,因为测试情况是夏季朝阳房间,刚进入房间时从温度计上显示温度为32℃,然后打开空调温度设置为26℃,在此过程中LabVIEW温度采集系统始终保持测量状态,经过近20分钟时间温度降低为27℃,并且采集到的数据保存在文件中。通过与置于室内的温度计相比较,温度测试量完全吻合,证明我们设计的LabVIEW温度采集程序是符合实际的。
编写的LabVIEW软件前面板如图6所示,主要显示包括了数据采集卡的基本量控制温度报警设置与红灯报警和声音报警,温度实时显示,日期显示和开始、退出程序按钮等。
图6 环境温度实时测试LabVIEW前面板
LabVIEW作为虚拟仪器开发过程中最具代表性的图形化编程语言,是目前国际上应用最广的数据采集和控制开发环境之一[11],它用图标、连线和框图代替传统的程序代码,形象地观察数据的传输过程。同时,它具有十分强大的功能,如数值运算、信号处理、数据分析、数据采集以及图形获取和传输等已经在大学实验室、科研院所得到了广泛应用。本文中所述基于LabVIEW编写了国产AC6621采集卡程序并进行了温度实时测量的实验验证。通过仪器软件的运行可以方便的对室温进行观测和数据的保存,对大学物理教学过程中的实验操作有一定的辅助指导作用,并且可以对软件少量改进就可以对某些燃烧炉、晶体制备、烧蚀温度等需要测温环境的大学物理实验进行测量和数据的记录。
[1]胡嘉坤,陆绮荣.基于LabView的矿井瓦斯远程监控系统[J].工矿自动化,2007(2):64-66.
[2]BISHOPRH.LabVIEW 7实用教程[M].北京:电子工业出版社,2005.
[3]王建中,黄林,王伶俐,王应辉.基于LabVIEW的“马吕斯定律验证”实验[J].大学物理实验,2011(4):66-69.
[4]刘科,周晓林,万德志,李玲.基于LabVIEW的大学物理虚拟实验设计[J].大学物理实验,2011(6):81-85.
[5]盛二妮,张志刚.基于LabVIEW的便携式旋转机械故障诊断系统的研究[J].煤矿机械,2012337251-253.
[6]冯振元,张震权,徐艳红,刘祥军.基于LabVIEW实现的卫星射频部件智能检测系统[J].现代电子技术,2012(13):128-137.
[7]周红仙,周有平,王毅.用自相关法测量横向流速[J].物理实验,2012(5):6-8.
[8]刘允峰.基于LabVIEW软件的李萨如图形的实现[J].大学物理实验,2009,22(1):97-99.
[9]张志荣,余嵘华,张帅,束小文,王煜,董凤忠,刘文清.基于LabVIEW的氧气浓度实时在线监测系统软件设计[J].大气与环境光学学报,2008(6):454-460.
[10]http://www.wwlab.com.cn/product/detail.aspx?d=49.
[11]杨乐平,李海涛,赵勇,等.LabVIEW高级程序设计[M].北京:清华大学出版社,2003.