基于NI Scope实时数据采集系统设计
0 引 言
虚拟仪器的概念最早是由美国国家仪器公司(Na-TIonal Instrument)提出来的,经过十几年的发展,目前正沿着总线与驱动程序标准化、硬件、软件模块化、编程平台图像化和硬件模块即插即用方向发展。随着计算机技术和网络技术的飞速发展,虚拟仪器将在数据采集、自动测试和测量仪器领域得到广泛应用,拟仪器技术十分符合国际上流行的“硬件软件化”的发展趋势,尤其是在高校科研和工业生产领域中发展前景非常广阔。
1 虚拟仪器概述
1.1 虚拟仪器简介
虚拟仪器核心技术思想是“软件即是仪器”,在通用的集成硬件平台上,结合高性能的模块化硬件和高效灵活的软件使本来需要硬件实现的技术软件化。一般当标准化硬件平台确定后,通过标准的仪器驱动软件可实现模块化的硬件(如GPIB,VXI,DAQ板等)之间的通信、定时应用等需求;而灵活高效的开发应用软件能创建完全自定义的用户界面和系统,实现传统仪器中由硬件完成的仪器功能。虚拟仪器技术的优势在于仪器性能的改进和功能扩展只需用户选择适合其应用要求的硬件模块以及更新相关软件程序设计,即可重新配置现有系统,增加程序可复用性,大大缩短整个系统开发换代周期,降低成本,方便实现多种功能。
1.2 虚拟仪器构成
虚拟仪器一般由通用仪器硬件平台和应用软件组成,如图1所示。
虚拟仪器硬件平台主要有两部分,分别是用于集成的硬件平台和模块化I/O接口设备。虚拟仪器的软件部分包括应用软件和I/O驱动软件两部分,应用软件包含实现虚拟面板功能的前面板的软件程序和定义测试功能的流程图软件程序,如LabVIEW等;I/O接口仪器驱动程序用来完成特定外部硬件设备的扩展、驱动和通信,可以由虚拟仪器开发环境提供。只有同时拥有高效的软件、模块化I/O硬件和用于集成的软硬件平台这三大组成部分,才能充分发挥虚拟仪器技术性能高、扩展性强、开发时间少以及出色的集成这四大优势。
1.3 图形化编程语言LabVIEW
LabVIEW(Laboratory Virtual Instrument Engi-neetring Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言,采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序,用图表表示函数,用连线表示数据流方向。LabVIEW程序称为虚拟仪器(Virtual Instrument,VI)程序。一个最基本的VI由前面板(Panel)、框图程序(Diagram Program)和图标/连接端口(Icon/Terminal)三部分组成。LabVIEW为虚拟仪器设计者提供了一个便捷、轻松的设计环境,不仅能轻松方便地完成与各种软硬件的连接,还提供强大的后续数据处理能力,交互式的测量工具和更高层的系统管理软件工具。LabVIEW能够支持串行接口、GPIB,VXI,PXI等标准总线和多种数据采集板,以驱动不同仪器公司的仪器,用户可以高效、快速地编写出相应的应用程序,自行设计仪器驱动程序,完成诸如数据采集、数据处理、数据显示以及仪器控制和通信等多种功能。在较高性价比的条件下,降低系统开发和维护费用,缩短技术更新周期。
2 系统结构设计
该系统使用NI公司PXI-1042Q机箱和NI PXI-5122高速数字化仪模块组建数据采集硬件平台。PXI(PCI Extensions for InstrumentaTIon),它的主要优势在于利用了已经验证的,符合工业标准的技术,在高速的Compact PCI总线基础之上,加入类似VXI所具有的定时、触发和同步功能。PXI作为一种专为工业数据采集与自动化应用高性能模块化硬件平台,具有开放式架构,内有高端的定时和触发总线,结合模块化的I/O硬件和相应的测试测量开发软件,便可以较好地完成数据采集任务。
2.1 系统硬件部分
PXI-5122高速数字化仪是硬件部分的核心,可直接插入PXI-1042Q机箱插槽中,属于内置式驱动。通过LabVIEW嵌入的驱动函数可配置其触发方式,如即时触发、软件触发、数字触发等,还可配置采样速率,采样记录长度等。PXI-5122提供双输入通道,每个通道最高100 MS/s实时采样率,分辨率14 b,采用交叉采样方式的采样率可提高到200 MS/s,带有去噪和100 MHz抗混叠滤波器,具有动态范围大、板上采样存储器容量大等特点。这里配置为单通道即时触发模式,以便实现实时的连续采样。根据采样定理,设置的最小采样速率至少是被采样信号频率的两倍。数据采集系统示意图如图2所示。
2.2 系统软件部分
系统软件部分主要由标准I/O模块驱动,采用队列同步控制和数据显示三大部分组成。系统程序流程图如图3所示。
首先通过NI,Scope示波器驱动来完成PXI-5122的配置和初始化,将此部分放置到由单个while循环控制的独立线程中便可以实现连续数据采集。被采集的数据被放人队列中,队列允许多个任务同时访问,其他独立线程的模块可同时并行地从中读取数据,实时完成各自的功能,如数据存储、数据显示等。
2.2.1 I/O驱动模块
NI Scope示波器驱动是NI公司提供的八类可互换的虚拟仪器IVI(Interchangeable Virtual Instru-ment)规范驱动之一,由于IVI规范驱动是基于虚拟仪器软件架构VISA(Virtual Instrunment Software Archi-tecture),可以实现程序与硬件接口的不相关。此外,NI Scope提供了规范和标准API函数和DAQ驱动程序库,它将仪器的功能完整封装,让用户更快更容易地开发系统。成功安装NI Scope示波器驱动后,在Lab-VIEW程序框图中,打开“函数”菜单下,打开“测量I/O”可以看到“NI Scope”工具包,选择初始化、水平方向设置、竖直方向设置、通道设置、触发方式设置等函数,自定义NI PXI-5122驱动程序。该系统设置偏移量为零,即时触发采样模式,采样记录数值默认为1,采样频率和采样记录长度由输入控件控制,采样的通道名称默认为“channel 0”,实现连续采样。NI PXI-5122驱动程序具体如图4所示。
2.2.2 同步技术
系统各模块分别由单个循环控制,并且各循环之间相互独立,每一个循环都有一个独立的线程独自运行,构成了一个包含多个并行任务虚拟仪器系统。各个循环之间也有数据交流,相互关联,为了实现在同一个程序中处理好各循环或并行任务之间的同步或通信,则需要使用同步控制技术。系统选用队列(Queue)技术来控制这些循环可以避免对设备的访问冲突。
队列结构是一种先进先出的结构。队列可以保证有序的数据传递,避免竞争或冲突。一般当多个用户需要使用同一个资源时,就可以通过队列来对多个用户进行排队处理;同时。也允许多个用户访问一个队列,这样就可以加快队列的处理速度。同样,在程序框图中打开“函数”,选择“编程”中的“同步”,可看待“队列”函数包。通过“获取队列引用”先建立一个队列,可设置队列名称,元素类型,队列大小等属性。图5中显示数据采集循环,数据存储循环,数据显示循环共同使用一个队列,即数据循环中使用“元素人队列”函数将采集数据不断地存放到队列中,数据存储和数据显示循环使用“元素出队列”函数从队列中不断地读取数据,实现了系统实时采集和存储的功能。若某个模块的任务运行过快或过慢,队列可以起到缓存作用,进行约束或补偿,不会导致数据丢失或重复读取。
2.2.3 数据存储
高速数据流文件TDM Streaming文件以流文件形式存储数据,读写速度比较快,适合用来存储海量数据,常于实时系统。TDMS文件除了可以存储信号数据外,还可以为每个信号添加附加信息:文件、组、通道等。通过TDMS文件 *** 作函数可对被采集的信号进行快速的读,写,属性设置及提取,管理简单;在写 *** 作后可以调用TDMS File Viewer Ⅵ函数,打开TDMS文件浏览器,查看数据和属性值。TDMS的写 *** 作如图5所示。
3 实验结果
数据采集系统前面板如图6所示,根据所设计的数据采集系统,分别进行了数据采集、数据输入,数据存储及波形显示等实验。数据保存在以.tdms为后缀名的波形文件中。图6所示为对频率10 kHz,幅度为0.5 V的模拟正弦波信号使用单通道采样,输入的采样频率为1 MHz,实际采样频率为1 MHz。经过实际验证,对三角波,方波等合理采样,结果比较满意。
4 结 语
该数据采集系统实际是用于对中波段范围内调幅信号的实时采集,方便对采集后的数据直接进行各种数学分析。一方面可将结果直观的显示在前面板上,另一方面也可同时将数据进行存储,以供日后分析使用。此外,由于LabVIEW是一个功能强大的虚拟仪器编译环境,简化编程过程,尤其是使用IVI驱动程序,极大地简化代码,用户不需要关心仪器底层是如何通信,只需要关注任务本身。给予系统更多的灵活性。以后只需要根据实际功能要求,修改相应的软件编程即可进行系统拓展。整个数据采集系统在实际使用中方便活,不受具体线路的限制。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)