基于LabVIEW的虚拟仪器设计研究 - 图文

基于LabVIEW的虚拟仪器设计研究 选择量程:一般根据输入信号是单极性还是双极性,选择合适量程。 2、A/D转换部分的设置项

设定信号输入通道号。 设定采样点数。 设定采样速率。

测量通道是整个系统所需测量的信号数量,产品不同,可测量的通道数也不同。在选取产品时需要注意:可测通道数是否满足系统要求;当需要差分输入测量时,板卡上有无差分输入以及差分输入的通道数;在测量道数多时,应注意产品能否扩展及最多可扩展的道数。测量中都需将模拟信号经A/D转换成二进制的数字信号,分辨率就是将满量程信号经A/D转换后鼐到的二进数的位数。分辨率越高,意味着可检测出来的电压变化越小,它和测量范围(可测量的最高电平)及增益(板卡的放大倍数)一起决定了该板卡可测的最小电压变化量。

第四章 虚拟数字存储示波器的软件设计

4.1虚拟实验仪器的软件设计方案

虚拟示波器 虚拟试验仪器管理软件 图4-1 虚拟试验仪器系统框图

LabVIEW 一般测试仪器由信号采集、信号处理和结果显示三大部分组成,这三部分均由硬件构成。虚拟仪器也是由这三大部分组成,但是除了信号采集部分是由硬件实现之外,其它两部分都是由软件实现的。虚拟数字存储示波器总体上包括数据采集、波形显示、参数测量、波形存储和回放等四大模块,虚拟示波器的主要性能指标如下:

1、垂直分辨率

基于LabVIEW的虚拟仪器设计研究 A/D转换器通过把采样电压和许多参考电压进行比较来确定采样电压的幅度。A/D转换的位数决定了示波器垂直方向上的量化台阶数目,这个特性称为垂直分辨率。垂直分辨率越高,则示波器上的波形可以看到的信号细节越小,说明测量准确度越高。n位的A/D转换器有1/2^n的分辨率。本文采用12位A/D转换器,在垂直方向上可以分辩出4096个数据点,分辨率为1/4096,用百分数表示为0.02%。

2、时基和水平分辨率

在虚拟示波器中,时基的设置确保了对输入信号采集足够数量的采样值,并且每个采样值取自正确的时刻。根据:

采样速率=l/采样间隔

采样间隔=时基设置(s/格)/采样点数

设置每格采样点数,即可得到时基设置值。例如,虚拟示波器沿着水平轴显示10000个采样点,以每格100个采样点的水平分辨率进行显示,即水平轴长为10000/100=100格。当设置数据采集板的采样速率为2kHz,则:

时基设置值=100样点×采样间隔

=100/采样速率 =lOO/(2*10^3) =0.05s/格

3、带宽

带宽是衡量虚拟示波器可靠度的一个重要指标。虚拟示波器有两种带宽:模拟带宽和数字带宽。模拟带宽是指虚拟示波器可以无失真接受的最高输入信号频率,它由虚拟示波器的信号调理电路所决定。数字示波器对重复信号采用顺序采样或随机采样技术所能达到的最高带宽为示波器的数字带宽,一般并不作为一项指标直接给出。根据Nyquist采样定理,采样频率应大于或至少等于信号截止频率的2倍,以保证数字化后的信号数据不丢失原信号的特性。但是因为Nyquist采样定理假设有一个理想的低通滤波器来恢复信号,并且被采样的信号的频带范围有限,这些条件在实际使用中是很难实现的,所以它只在理论上成立。本文硬件系统中采用的数据采集板的最高采集速率为lOOkHz,实测最高可达到80kHz,设计按5倍准则计算,则虚拟示波器的带宽为16kHz。

4.2 数据采集模块

基于LabVIEW的虚拟仪器设计研究 4.2.1在LabVIEW中实现数据采集

本文选择了PC--DAQ/PCI插卡式虚拟仪器作为开发模式。LabVIEW支持多种数据采集板,但大多数均为National Instnunents公司自家的产品。考虑到兼容性的问题,采用了AD公司的AD7202数据采集板。

LabVIEW本身包含的一些接口设备的驱动程序是针对NI公司生产的接口板,对于国产的数据采集板,LabVIEW不能直接调用。因此,对AD7202数据采集板的驱动,是在LabVIEW中实现数据采集首要解决的问题。

1、 LabVIEW驱动通用数据采集板的三种方法

①、直接用LabVIEW的Inport,outport图标编程。LabVlEW的Function模板内Advanced>>Port I/O中Inport和outport图标,与C语言中_inp、_utp功能相同,因此可将它们用于程序框图中设计数据采集卡的驱动程序。

②、利用LabVIEW的CIN图标生成数据采集卡驱动程序的子程序(subVI) 。LabVIEW的Function模板内Advanced中有一个CodeInterface Node(CIN)图标,可以在LabVIEW程序框图中直接调用C语言写的代码。

③、利用LabVIEW的call library Function图标调用数据采集卡的动态链接库函数(.DLL)。许多数据采集卡附有.DLL库函数形式的驱动程序,可以直接利用Function模板内Advanced子模板中的Call Library Function图标调用它。当我们有现成的.DLL库函数时,这是最行之有效的一种方法。

2、 AD7202的驱动

由于AD7202数据采集板附带了.DLL库函数形式的驱动程序,因此本文采用第三种方法对其进行驱动。对AD7202数据采集板的驱动主要分为以下几步。

①、初始化采集卡。初始化是设置数据采集板的I/O基地址、中断号、内存分配等,打通应用程序和驱动程序的通道,使驱动程序能够对底层的硬件进行初始化。双击Call Library Function图标,在Functionname中调用Initial函数,并在parameter中添加I/O基地址(IOBase)、中断号(IRONum)、内存地址(PhyAdd)及DMA通道号(DMAChn)等参数。该函数调用成功后返回非0值,即用户初始化成功。

②、启动采集卡。在Call Library Function中调用startIntr函数,添加并设置采样频率、采样通道、数据传输方式(单缓冲区方式或多缓冲区方式)等参数,启动实时采集。启动后,底层驱动程序就独立的控制硬件进行数据采集,并将结果存放在驱动程序的缓冲区中。

基于LabVIEW的虚拟仪器设计研究 ③、读取采集结果。在Call Library Function中调用QueryBuf函数用于查询当前有多少缓冲区的数据已经填满,调用ADResu函数用来读取缓冲区中的数据结果。

④、停止采集。A/D采样结束后,在Call Library Function中调用StopIntr函数使采集卡停止工作。

3、 缓冲区方式

驱动程序存放数据的方式有两种,单缓冲区方式和多缓冲区方式。

单缓冲区方式下,采集结果始终不断地存放到缓冲区中,此工作方式可随时得到最新的采集结果,但两次取得的结果在时间上可能有重叠或丢失,相对时间关系不易确定。

多缓冲区方式下,系统(驱动程序)内部有NumBuf个缓冲区,每个缓冲区的采样点数为Num Samp个,采集启动后,采集结果顺序存放在各缓冲区中,上层软件就顺序地取出(最先)一个放满采集结果的缓冲区的内容(进行过此操作后此缓冲区又可接收新的数据)。此工作方式适宜连续地记录A/D采集结果。连续两次成功取得的数据在时间上不会重叠,之间数据是否丢失,要看返回结果的序列号(结果数组的第一个值,为无符号短整数)是否递增1,若只增加1,说明两缓冲区在时间上是连续的。在采样率较低时。通过多缓冲方式,有可能连续地记录、处理、保存长时间的A/D采集结果。 4.2.2 数据采集程序设计

数据采集模块是虚拟示波器软件的核心,主要完成数据采集的控制,包括触发控制、通道控制和时基控制等。

①触发控制包括触发模式、触发斜坡和触发电平控制。 ②通道控制主要控制单通道或双通道测量。 ③时基控制主要控制波形显示。

联系客服:779662525#qq.com(#替换为@)