摘要:基于虚拟仪器技术, 利用LabVIEW 语言进行信号采集系统的研制具有重要意义。文章介绍信号采集与处理系统的主要流程。详细介绍PCI-1714 数据采集卡的原理及功能,通过数据采集程序实例介绍基于LabVIEW 语言实现PCI-1714 采集卡的全过程,利用LabVIEW 语言编写的程序用于将存储数据调出,并对信号波形特点进行分析。
1 概述
实验室虚拟仪器工程平台(LabVIEW)是一种专门用于数据采集、分析及仪器控制的图形化软件,它所开发的虚拟仪器将计算机强大的数据处理能力与仪器的硬件测试控制能力很好地结合在一起。
LabVIEW 的图形化开发环境具有精确、高效、功能强大、开发简易、实时性强、界面友好等优点,为用户提供了强大功能和使用的灵活性, 非常适合用于进行仿真、实时检测和控制。目前,LabVIEW 已经成为测试领域应用最广泛和最有前途的软件开发平台之一,也是应用最广、发展最快、功能最强的图形化软件开发集成环境之一。
虚拟仪器可以利用高性能的模块化硬件, 结合高效灵活的软件来完成各种测试、测量和自动化应用,与传统的测量仪器相比,具有成本低、功能强大、集成度高、质量可靠、维护方便等优点,能很方便地组建测试系统,满足多种测量要求。因此,基于虚拟仪器技术, 利用LabVIEW 语言进行信号采集系统的研制具有重要意义。
LabVIEW 虚拟仪器主要包括前面板、框图和图标/ 接口部件三部分。
前面板是VI 的交互式用户界面, 即用户与程序代码发生联系的窗口。VI 前面板是控件和指示器的组合,控件仿真常规仪器上的输入输出设备类型,如旋钮和开关,并提供一种机制,将输入从前面板传送到基本框图。
信号采集与处理系统主要应用的是数据采集卡的A / D(模/ 数)转换功能,通过数据采集卡将采集端采集到的模拟电信号利用高速模数转换电路转换为数字信号,经过数据采集卡板载缓存,最后利用计算机中的程序不断从缓存中提取数据, 存入计算机中,并进行相关处理,提取有用数据进行硬盘存储。
利用LabVIEW 语言编写数据采集卡的驱动程序,对信号分析处理及存储流程如图1 所示。
图1 信号采集与处理系统总流程图。
2 PCI-1714 数据采集卡
Advantech 公司的PCI-1714 是一款PCI 接口的高速4 通道同步数据采集卡, 可用于高速数据采集应用,性价比较高,适用于仪器测试、图像处理、视频数字化处理及声音与振动测试等领域。
PCI-1714 是高速、高分辨力、高容量的PCI 数据采集卡, 配备4 组模拟输入端, 具备同步采集功能。其特性可归纳为:a)内含4 个独立ADC(模数转换器),可使4 个信道同步取样,当4 组模拟输入同时使用时,采样频率理论最高可达30 MS/s。b)每路ADC 内建32 K FIFO 内存,使用者在高速采样时有足够缓冲区可供暂存, 以维持数据采集速度及完整性。c)提供多种输入范围,包含±5 V、±2.5 V、±1 V、±0.5 V 等, 使用者通过工具程序即可轻松完成设定。d) 高达6 种触发模式, 包含软件触发、Pacer、Post-Trigger、Pre-Trigger、Delay-Trigger 及About-Trigger 触发方式,方便客户按需求自行设定。
基于PCI-1714 的通用高速数据采集系统结构如图2 所示。
图2 基于PCI-1714 的高速数据采集系统结构框图。
将需监测的现场信号经滤波器滤波后送入PCI-1714 板卡, 卡上A / D 转换器对信号进行高速模数转换。转换数据首先暂存在板卡的32 K 板载FIFO (先入先出) 中, 当FIFO 半满或全满时,向DMA(动态内存存取)控制器发送DMA 请求,使用直接内存存取方式,经PCI(外设组件互连)总线将数据从FIFO 输出到内部缓冲区中,PCI 总线传输带宽很宽, 可以满足4 通道高速同步采样时所带来的高速数据传输要求。
内部缓冲区作为高速数据采集系统的海量缓存,它与用户缓冲区一样,都是数据采集程序动态分配给驱动程序使用的两块内存区域, 区别在于内部缓冲区存放的是从FIFO 取来的原始值, 用户缓冲区存放的是经转换之后的电压值。
在进行长时间高速数据采集时,PCI-1714 多采用循环方式。在此方式下,启动一次采集过程能进行无数次的A / D 转换。此时内部缓冲区分成前后对等的两个半区使用,当前半区填满后,将此半区的数据向用户缓冲区传送, 同时将新转换的数据放在内部缓冲区的后半部分。当后半区填满后,此半区数据向用户缓冲区传送。同时自动将新转换的数据放到早已传输完毕的前半个缓冲区。可通过查询状态寄存器的状态来判断FIFO 缓冲区的状态,分别判断空标志位(Empty flag)、半满标志位(Half full flag)以及全满标志位(Full flag)。
内部缓冲区和用户缓冲区的数据可以在程序控制下以文件的形式保存至计算机中, 实现采集数据永久性存储,便于后期数据分析处理。
3 基于LabVIEW 语言实现的PCI-1714采集卡数据采集程序实例
下面介绍用LabVIEW 语言编写的PCI-1714 采集卡数据采集驱动程序。该程序能够实现对传感系统外界信号的数据进行连续采集, 并能根据需要对有用数据进行存储。
从功能上分,该程序主要分为三部分:a)对采集卡进行初始化,完成采集卡重要工作参数的设置,如用户缓存、采样速率(scan rate)、输入限制等。b)进行数据采集和有用数据的存储, 就是将数据先放入采集卡的板载缓存FIFO 中, 再由计算机读取板载缓存中的数据, 写入由计算机的内存中分配出的用户缓存, 然后根据需要将有用数据从内存中存入计算机硬盘。具体存储格式可以为多种,该部分中包括的子VI 有读取数据模块、数据存储模块以及显示所采集信号的时域图形的模块。c)在采集结束后关闭采集卡。
为了使用PCI-1714 进行连续高速的数据采集,需要对采集速率、用户缓存大小等重要参数进行合理设置。如前所述,数据采集卡进行A / D 转换时是连续进行的, 也就是说采集卡往板载缓存中放入数据是连续进行的, 而计算机从板载缓存FIFO 中读取数据放入用户缓存时是在FIFO 半满或全满的状态下批量读取的,同时,如果要进行数据的存储,从用户缓存再向硬盘中写入数据时也是批量进行的。
由于用户缓存的大小受计算机内存空间大小的限制,不可能无限大,在使用过程中,只能尽量设得比较大,一般可以设为内存的十分之一左右。在保持一定的数据采样率并且用户缓存确定的情况下, 如果存储过程中,单批量写入硬盘的数据过少,会出现不能及时将数据从用户缓存中读出, 从而导致用户缓存溢出的错误。而当单批量写入硬盘的数据过多时,又会出现从用户缓存读取数据过快, 可能会读出空数据的错误,所以这几个参数必须互相配合设定才能使采集卡获得良好的采集和数据存储的性能。
4 基于LabVIEW 的数据调用与处理
利用上述程序完成信号采集的同时可以将有用信号存储,用于后续分析,下面举例说明如何将存储之后的波形数据重新调出并进行分析。
将以TXT 格式存储的数据从文件中调出并进行频谱分析的程序。在程序前面板中可以同时将一段数据表示的信号时域波形及利用“FFT 功率谱”VI分析获得功率谱波形显示出来。
利用LabVIEW 语言编写一个用于将存储数据调出并对信号波形特点进行分析的程序,该程序可以将一个具有多信道的监测信号从存储文件中调出,不同信道的监测信号各不相同,根据信号波形的特点,可以选用相关方法进行信号处理,分析各信号对应的监测环境的变化。利用LabVIEW 所提供的“调用库函数节点”模块,可以很方便地把C 语言编写的程序嵌入LabVIEW 程序中, 并且可以封装成子VI,供主程序调用。适用于一些LabVIEW 语言编程效率不高的应用场合,利用“调用库函数节点”模块编写的子VI 程序。
5 结束语
从以上分析可以看出, 利用LabVIEW 语言可以方便地解决信号采集与处理领域的相关问题,无论是对数据采集卡PCI1714 的驱动编写、数据的存储, 还是对数据的调用与分析都可以充分的调用该语言提供的专用VI, 并且在图形化语言编写环境中,获得清晰的数据流程。而且LabVIEW 语言也支持用户对VI 的二次开发,并可以调用其他语言编写的程序, 还可以将用户自行编写的程序方便地封装成标准VI,供后续程序调用,为提高程序编写的效率及扩展程序功能带来极大方便。 |