基于LabWindows/CVI的双通道数据采集系统
扫描二维码
随时随地手机看文章
摘要 介绍了使用Labwindows/CVI和DAQ/PXI-2005数据采集卡搭建的数据测量系统。通过传感器将所测特征信号变为电信号传输,再用数据采集卡采集传送给处理器,用LabWindow/CVI搭建数据处理和显示的人机交互界面,实现对物体特征的测量。该系统可以实时显示所测物体特征,修改数据采集时的各项参数,显示采集到数据的波形,存储、调用采集到的数据。
关键词 LabWindows/CVI;数据采集卡;人机交互界面;数据存储
物体的特征有多种,如温度、压力、流量、液位等,本文以温度为例。通过获知部分特征,可以确定其当前状况。因此特征的获知尤为重要。通常用专业的仪器测量这些信号,所需仪器较昂贵。虚拟仪器利用高性能的模块化硬件,加上高效灵活的软件完成测试。目前国内、国际虚拟仪器市场,主要采用LabView软件,但LabView作为一款图形化的开发工具,不够灵活。因此NI公司推出了面向测控领域的LabWindo ws/CVI软件开发平台,这款测量软件将控件和编程结合在一起,灵活高效。
1 总体架构
首先通过传感器测量物体的特征,以温度为例,将模拟温度信号转换为相应大小的电压信号,对电压信号进行调理放大并去噪,然后通过数据采集卡对电压信号进行采集,实现A/D转换,处理所采信号,将之转变为相应的温度信号加以显示,如图1所示。
1.1 硬件方面
处理器用PXI-8106。PXI-8106是2.16 GHzIntelCore2 Duo双核处理器。PXI-8106插在PXI机箱的0号插槽上,通过机箱上的高速PXI总线与插在1号插槽上的PXI数据采集卡相连接。LabWindows/CVI与NI的数据采集卡配套使用灵活方便,但考虑到成本,选用了凌华公司的PXI-2005数据采集卡。其是一款4通道16位并行多功能数据采集卡,最高采样速率为500 ksample/s,满足项目需要。
1.2 软件方面
使用NI公司的LnbWindows/CVI编写上位机界面,对采集到的数据进行处理和显示。
LabWindows/CVI是NI公司推出的面向计算机测控领域的虚拟仪器软件开发平台,能够在多操作系统下运行。LabWindows/CVI将用于测控的专业工具与C语言平台结合,利用测控专业工具的集成化开发环境、交互式编程方法、函数面板和丰富的库函数大幅增强了C语言的功能,为开发设计人员编写检测系统、数据采集系统、过程监控系统等应用软件提供了一个理想的软件开发环境。
LabWindows/CVI适用于测试盒测量的ANSI C开发环境,提高了生产效率,广泛用于制造测试、军事/航天、通讯、设计验证和汽车工业等领域。
2 测量系统
测量系统首先要驱动数据采集卡,对数据进行采集,并进行数据处理,最后将处理结果显示到界面上。
2.1 数据采集卡的驱动
在驱动数据采集的过程如下:数据采集卡首先要经过硬件初始化,这个过程多数由生产商提供的驱动程序完成。初始化完成以后,在工程内加入D2K-Dask.lih,就可使用生产商提供的软件操作语句对数据采集卡进行控制。
数据采集卡的硬件驱动一般由硬件生产厂家提供的驱动完成。硬件生产厂家会提供函数库以供使用该数据采集卡。
2.1.1 PXI-2005编程所用主要函数
(1)D2K_Register_Card。
该函数用于初始化凌华的板卡,函数原型为:D2K_Register_Card(U16 CardType,U16card_num)。
CardType是板卡类型,如使用PXI-2005即添DAQ_2005;card_num为板卡所插插槽,只用一块板卡就添0,有两块板卡则用0、1区分开。
(2)D2K_AI_ContBufferSetup。
为连续采集数据分配内存,函数原型为:D2K_AI_ContBufferSetup(U16 CardNumber,void*Buffer,U32 ReadCount,U16*BufferId)。
CardNumber是所操作板卡的ID;*Buffer即分配内存的名称;ReadCount为所需内存的大小;*BufferId是分配好内存返回的序列。
(3)D2K_AI_ContSeanChannels。
开始连续的A/D转换,函数原型为:D2K_AI_ContScanChannels(U16 CardNumber,U16 Channel,U16Build,U32 ReadScans,U32 ScanIntrv,U32 SampIntrv,U16 SyneMode)。
Channel为使用的最多的通道数,如PXI-2005可以使用0,1,2,3这4个通道;BufId为数据存放的内存位置;ReadScans为每通道采样数;最大扫描速率除以ScanIntrv即为当前扫描速率;SampIntrv为A/D转换最小间隔,最大采样速率除以SampIntrv即为当前采样速率。
(4)D2K_Release_Card。
释放使用中的数据采集卡,函数原型为:D2K_Release_Card(U16 CardNumber)。
2.1.2 PXI-2005数据采集卡驱动实例
驱动凌华PXI-2005数据采集卡,进行4通道、采样速率为500 kHz、每通道采样点数为60 000的采样。
2.2 软件整体设计
软件设计总体框图如图2所示。
LabWindows/CVI由自行选用的插件以及C代码组成,除此之外,系统还配有各类丰富的软件包,从而更方便地构建软件系统,界面如图3所示。
2.2.1 显示界面
将采集到的数据显示到界面上,有两种方式:(1)静态方式。将所采集到的点一次性显示在界面上,如果要继续显示,则要将之前界面上的点擦除后才可以继续。(2)动态方式。以带状图实时显示图形数据,可以包含一个或多个同时刷新的曲线,每一条曲线代表一个连续量的数据通道。为显示处理过的数据,要选用静态显示。而静态显示只能显示一次,因此需要使用CVI内置时钟Timer隔几秒刷新显示数据。某一区间的数据可以以横轴为时间、纵轴为幅度显示,也可以其他方式显示。这里选择环形图显示。
2.2.2 环形图显示
环形图显示如图4所示,显示的是温度信号,单位℃。图中有两个圆。大圆代表最大量程值,小圆代表最小量程值。图中共有86条线段,代表这一段时间被平分为86段,每条线段代表一个时间点。测量到的数据依照时间先后在这86个线段上逆时针标出,数据越大越靠近大圆,数据越小越靠近小圆。将这些点依次连接,易看到哪一时间点上的数据较大,而哪一时间点上的数据较小。直观地显示出所测时间内数据的大小变化。左下角最大量程显示的是大圆代表的值,最小量程显示着小圆代表的值,这两个量程可以重新输入设置,以便观察数据在更小量程里的变化。
3 数据的处理
3.1 数据的分离
数据采集卡是将采集到的数据以交错方式存储内存当中。所谓交错即内存中的存储依次是第1,2,3,4通道的数据。以4通道采集为例,把第一位数据和每隔3位后的第4位数据存放在一起,形成了第一通道数据,从第3位开始,每隔3位数据存储在一起,则形成了第3通道数据。再将这些数据用于处理和显示。
3.2 数据的转换
数据采集卡采集到的数据并不是10进制的电压数据,而是由某种对应关系对应得到的数字信号,需要进行一次转换得到10进制电压数据。转换原理如下:PXI-2005这款数据采集卡是16位的,采集最大电压范围是-10~+10 V;基准电压是+10 V,因此数字0对应-10 V,数字215对应0 V,数字216对应10 V。因此得出数据转换公式为
data_D=data_collect/215×10.0-10.0 (1)
这样就将从模拟电压上采集到的原始数字数据(data_collect)转换为相应的10进制数字电压数据(data_D)。
3.3 数据的存储
数据是以TDMS格式存储,TDMS是NI公司主推的一种二进制记录文件,拥有高速、易存取等多种优势,能在NI的各种数据分析或软件之间进行无缝交互,而且提供一系列API函数供LabWindows/CVI使用。
存储的数据是采集转换后的电压数据。每通道内的数据都是单独存储的,互不影响。存储后的TDMS文件可以通过安装CVI时同时安装的一个插件一Excel Importer打开,打开效果如图5和图6所示。
PXI-2005这款数据采集卡是4通道的,本试验中只用到了两通道,如图6所示,只有1、3通道有数据存储,2、4通道的数据是0。
3.4 生成报表
将采集到的数据计算后整理到word文件上以供打印。报表如图7所示。报表中存储的是已经转换的温度数据,单位℃。
使用word的函数语句包含在wordrepoit.fp文件里,因此要先要在工程内加载wordreport.fp,然后才能使用其中包含的函数来制作word文件。
4 结束语
由LabWindows/CVI搭建的数据采集系统,具有快速测量、实时显示等功能。搭配相应的传感器,容易制作成相应领域的测量仪器。同时CVI可以应用到大多数操作系统上,具有良好的移植性、使用简单。相比MFC,CVI的研发,因为拥有大量专业测控插件而显得更加方便快捷;相比LabView,CVI的可编程性使其更加灵活,更能满足研发人员的思想。同时,CVI插件的随意放大缩小功能也适合移植到大小不一的触摸屏上使用,适用于嵌入式系统。由此可见CVI在测量方面有着较大的优势,将成为虚拟仪器发展过程中的重要工具。