第14章 模拟输入.docx
- 文档编号:24139598
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:21
- 大小:415.49KB
第14章 模拟输入.docx
《第14章 模拟输入.docx》由会员分享,可在线阅读,更多相关《第14章 模拟输入.docx(21页珍藏版)》请在冰豆网上搜索。
第14章模拟输入
第14章模拟输入2
14.1模拟输入基础知识2
14.1.1模拟输入的过程2
14.1.2信号的参考点2
14.1.3模拟输入设备的主要指标2
14.1.4模拟输入信号的连接方式4
14.1.5模拟输入的几个重要术语6
14.2单点模拟输入6
14.2.1单信道、单点模拟输入6
14.2.1多信道、单点模拟输入7
14.3波形采集8
14.3.1使用简单缓存技术采集波形8
14.3.2使用循环缓存技术采集波形12
第14章模拟输入
14.1模拟输入基础知识
14.1.1模拟输入的过程
模拟输入的过程就是图14-1所示的模拟量转换为数字量的过程。
模拟信号(t)经脉冲序列采样后,成为时间离散信号x(n),再量化以后得到取值也离散化的数字信号。
图14-1中Ts为采样周期,它的倒数就是采样率。
14.1.2不同类型信号的采样
根据信号的特征和测试目的,模拟信号可以分为3类:
1.对于随时间缓慢变化的信号,例如容器的液位、对象的温度等,通常叫做直流信号。
对直流信号一般只需要比较慢的采样频率。
2.对于随时间变化较快的信号,如果需要了解它的波形,则把它作为一个时域信号来处理。
这时候需要比较高的采样频率。
例如要检测一个快速的脉冲,采样周期必须小于脉冲周期;要关心这个脉冲的上升时间的话,那么就应该用更高的采样率。
3.对于随时间变化较快的信号,如果需要了解它的频率成分,则把它作为一个频域信号来处理。
根据赖奎斯特理论,要得到准确的频率信息,采样率必须大于信号最大频率成分的两倍。
采样率的一半叫赖奎斯特频率。
这实际上意味着对于最大频率的信号成分每一个周期只采样两个数据点,这对于描述信号的波形是远远不够的。
工程实际中一般使用信号最高频率成分4-10倍的采样率。
14.1.2信号的参考点
接入数据采集卡的信号根据参考点的不同可以分为接地信号和浮动信号。
(1)接地信号
接地信号是信号的一端直接接地的电压信号。
它的参考点是系统地(例如大地或建筑物的地)。
最常见的接地信号源是通过墙上的电源插座接入建筑物地的设备,例如信号发生器和电源供电设备等。
(2)浮动信号
浮动信号是不连接到建筑物地等绝对参考点的电压信号。
浮动信号源常见的例子有电池及其供电的设备、热电偶、变压器、隔离放大器等设备。
如果使用DAQ板做信号源,它输出的也是浮动信号。
14.1.3模拟输入设备的主要指标
1.分辨率
分辨率是数据采集设备的精度指标,用模数转换器的数字位数来表示。
如果把数据采集设备的分辨率看作尺子上的刻线,尺子上的刻线越多,测量就越精确;同样的,数据采集设备模数转换的位数越多,把模拟信号划分的就越细,可以检测到的信号变化量也就越小。
在图14-3中用一个3位的模数转换器检测一个振幅为5V的正弦信号时,它把测试范围划分为23=8段,每一次采样的模拟信号转换为其中一个数字分段,用一个000和111之间的数字码来表示。
它得到的正弦波的数字图像是非常粗糙的。
如果改用16
位的模数转换器,数字分段增加到216=65536位,则模数转换器可以相当精确的表达原始的模拟信号。
图14-3模拟输入设备分辨率对于表达原始信号的影响
2.设备量程范围
000
001
010
011
100
101
110
111
设备量程范围是模数转换器可以数字化的最大和最小模拟信号电压值。
通过设置设备的量程范围使它与信号的电压范围相匹配,可以更好的利用设备现有的分辨率。
例如对一个0到10V的正弦信号;使用3位模数转换器时,如果设备范围设置为0到10伏,则它的8个分段分布于10V的范围内;如果将设备范围设为-10伏~10伏,则8个分段分布到20伏电压的范围内;这就使可以检测的最小电压由1.25伏增大到2.5伏。
图14-4说明了设备范围对表示信号的准确程度的影响。
图14-4模拟输入设备范围设置对于分辨率的影响
也有些模拟输入设备允许用户设置被检测信号的极性,双极性(Bipolar)信号的电压范围是从一个负值到一个正值(例如-5到5V),单极性(Unipolar)信号的电压范围是从0到一个正值(例如0到5V)。
为了得到较小的代码宽度,如果信号是单极的,就把设备范围设置为单极。
3.信号极限设置
并不是永远能够通过设备范围的设置来最充分利用模拟输入设备的分辨率。
有时设备的范围不允许用户设置,还有时同时监测几个信号,它们的电压范围差别非常大。
例如用一个液压设备对一个物体加载测量负载-变形曲线时,压力变送器的电压信号范围是0~5V,而应变片的电压信号范围只有±0.05V。
在设备范围的设置无能为力时,通过信号的极限设置却总能很好的解决问题。
极限设置单独确定每一个信道被检测信号的最大值和最小值。
当信号范围小于设备量程范围,就在信道设置时将此信道的量程范围设置信号范围,当程序中按信道名访问此信道时,这个量程范围就成为这个信道的极限。
当然也可以通过模拟输入VI的参数设置确定一个信道的极限。
准确的极限设置可以让模数转换器使用更多的分段去表示信号。
图14-5说明了这个情况。
当一个设备量程范围设置为0~10伏的3位的模数转换器,检测一个0~5伏的正弦信号,极限设置为0~10伏时,模数转换器在转换时仅使用8个分段中的4个。
但极限设置为0~5伏后,模数转换器可以使用所有的8个分段。
这样使得信号的数字表达更准确。
图14-5极限设置对于分辨率的影响
设置了信号极限就等于设置了设备的增益。
但是设备的增益不是无限的,例如PCI-6035E数据采集卡最大增益值100,可以设置的最小极限是±50mV。
所以设置过低的极限是没有意义的。
现在我们可以用一个统一的公式来计算数据采集设备可检测到的输入信号最小变化量。
例如,16位的PCI-6035E数据采集卡设置信号极限为±0.05V时,可以检测到的电压变化为:
关于如何在Measurement&AutomationExplorer中进行设备范围和信号极限设置请参看第13章。
14.1.4模拟输入信号的连接方式
对于大多数模拟输入设备,可以有三种不同的信号连接方式:
差分DIFF(differential)、参考单端RSE(referencedsingle-ended)和非参考单端NRSE(nonreferencedsingle-ended)。
1.差分测试系统
在差分测试系统中信号的正负极分别接入两个信道,所有输入信号各自有自己的参考点。
图14-6是一个8信道差分测试系统。
通常差分测试系统是一种比较理想的测试系统,因为它不仅抑制接地回路感应误差,而且在一定程度上抑制拾取的环境噪声。
当所有输入信号符合以下条件时,使用差分测试系统:
●低电平信号。
(例如小于1V)
●信号电缆比较长或没有护套,环境噪声较大。
●
任何一个输入信号要求单独的参考点。
图14-6差分测试系统
仪器放大器输入端相对于仪器放大器接地端之间的电压叫共模电压。
理想的差分测试系统只读取信号两极之间的势差,而完全不会测量共模电压。
尽管差分测试系统是一种比较理想的选择,但是单端测试系统可以使用两倍的测试信道。
单端测试系统所有信号都参考一个公共参考点即仪器放大器的负极。
当输入信号符合以下条件时可以使用单端测试系统:
●高电平信号。
(通常大于1V。
)
●比较短的(通常小于5米)或有合适护套的电缆,环境无噪声。
●所有信号在信号源可以共享一个公共参考点。
单端测试系统分为参考单端测试系统和非参考单端测试系统。
2.参考单端测试系统
参考单端测试系统用于测试浮动信号,它把信号参考点与仪器模拟输入地连接起来。
如图14-7所示。
图14-7参考单端测试系统
3.非参考单端测试系统
非参考单端测试系统用于测试接地信号。
与参考单端测试系统不同的是因为所有输入信号都已经接地了,所以信号参考点不需要再接地。
图14-8是一个非参考单端测试系统。
选择了信号的连接方式以后,要查阅硬件手册确定具体的接线方法,即各信道信号正负极接线的针号以及其它的要求等。
并在Measurement&AutomationExplorer做好相应设置。
图14-8非参考单端测试系统
14.1.5模拟输入的几个重要术语
以下是关于模拟输入几个主要术语和参数的定义。
●一次扫描ascan:
对信道表中所有信道的一次采集或读数。
●扫描数numberofscanstoacquire:
从信道表中所有信道读数的次数。
●采样数numberofsamples:
从一个信道采集的数据点数。
●扫描率scanrate:
每秒从各信道采集数据的次数。
当设备支持间断扫描,通过扫描率参数设置可以实现间断扫描,即各次扫描之间的时间间隔比各信道之间读数的时间间隔长。
●信道时钟率channelclockrate:
定义从信道表中的一系列信道采集数据的时间间隔。
14.2单点模拟输入
14.2.1单信道、单点模拟输入
需要由一个信道采集一个数据时可以用单信道、单点模拟输入。
例如,需要周期性的监控一个容器的液位时,将传感器产生的表示液位的电压信号连接到数据采集卡的一个信道,需要了解液位时就进行一次单信道、单点的数据采集。
执行单信道、单点模拟输入时,软件从一个输入信道读取一个数据,然后立即给我们返回它的值。
这种操作不需要任何缓存或定时。
在大多数情况下,使用易用模拟输入VI—Functions>>DAQ>>AnalogInput>>AISampleChannel即可。
使用这个VI时如果在Measurement&AutomationExplorer中进行了信道设置,就不必再输入设备和极限两个参数,只需在信道参数中输入信道名。
返回值的物理单位与信道设置的物理单位一致。
图14-9单信道、单点采集编程示例图14-10多信道、单点采集编程示例
图14-9是LabVIEW6.1\examples\daq\anlogin\anlogin.llb库中的示例程序Acquire1Pointfrom1Channel。
显示了用AISampleChannelVI从一个信道采集一点数据时如何编程。
这个VI让数据采集设备进行一次数模转换,然后返回一个量作为输出。
highlimit参数是被测试信号的最高电平值。
lowlimit参数是被测试信号的最低电平值。
14.2.1多信道、单点模拟输入
多信道、单点模拟输入就是一次由多个信道每信道采集一个数据。
易用模拟输入VI—AISampleChannels从多个信道每信道采集一点数据,然后返回一个一维数组。
数组中每个成员是来自一个信道的数据。
由极限参数设定的信号范围应用于所有信道。
图14-10说明如何用这个VI从多个信道采集信号。
在信道字符串中注意使用逗号隔开各个信道,或用冒号说明信道的范围。
如果同时监视容器的液位和液体温度两个信号时,就需要LabVIEW的多信道、单点采集VI来完成这个任务。
使用易用VI的好处是我们在图形代码中只需要一个图标就可以完成作业,只有很少的基本输入参数,而且具有内置的出错检查功能;但是由于这些VI缺乏编程的灵活性使它们的使用受到限制。
因为易用VI只有很少几个输入参数,不能用它们实现数据采集设备某些更复杂的功能,例如触发或间断的扫描。
此外,这些VI总是在启动时进行硬件设置。
如果需要程序高速度、高效率地运行的时候,进行这些设置的操作会降低处理数据的速度。
这种情况下应该使用中级的VI,它们只在第一次被调用时进行硬件设置,以后就连续采集数据,而不再重复进行设置。
中级VI同时提供更多的出错处理和硬件设置功能,比易用VI具有更高的功效。
中级VI一般用在使用缓存的数据采集时。
14.3节对于应用缓存的数据采集有较多论述。
在图14-11所示的不使用缓存的数据采集应用程序中使用中级模拟输入VI—AISingleScan执行多信道单点采集。
AISingleScanVI返回扫描一次的数据。
如果只设定一个信道,也可以用这个VI返回一个点数据。
这个VI要和AIConfigVI一起使用。
LabVIEW调用AIConfigVI,用它来设置信道、选择输入极限并产生一个任务标识。
程序把任务标识和出错信息传递到AISingleScanVI,AISingleScanVI返回一个数组,数组中每一个元素是一个指定信道的数据。
图14-11使用中级VI非缓存模拟输入
图14-12是LabVIEW6.1\examples\daq\anlogin\anlogin.llb库中的ContAcquire&Chart(immediate)示例程序。
它告诉我们如何使用AIConfig和AISingleScan这两个VI,应用软件定时执行一系列扫描,并处理每次扫描的数据。
这个例子中只调用AIConfigVI一次,把它放在while循环外边。
AIConfigVI进行信道设置、选择输入的上限和下限并产生一个任务标识。
然后把任务标识和出错信息传递到while循环中。
循环内调用AISingleScanVI采集一次扫描的数据,返回数据的形式是一个一维数组,数组中每个成员是一个信道的数据。
这些数据传递到MySingle-ScanProcessingVI。
示例程序中这个VI是空的,使用者可以根据需要来编写图形代码,对数据进行所必要的处理,例如检查是否超限等。
BuildArray函数在这里的作用是建立一个只有一行的二维数组,这样在图线中显示数据时通过选中TransposeArray选项,把它按一列数据处理就可以把每个信道的数据显示在一条图线中。
WaitUntilNextmsMultiple函数起控制循环时间的作用。
操作者在前面板上输入一个扫描率,程序把这个数转换为毫秒单位的采样周期值传递给WaitUntilNextmsMultiple函数。
于是,循环就按照每个采样周期一次的速率执行。
当我们按下停止键或发生错误时循环就停下来。
一旦循环终止,SimpleErrorHandlerVI在屏幕上显示发生的错误。
这个例子采用软件定时采集数据。
在这种方式下,CPU系统时钟控制采集数据的速率。
但系统时钟可以被用户的干预打断,例如我们在前面板上用鼠标拖动工具模板移动,就会看到循环执行时间的误差由20毫秒左右增加到1秒左右。
所以只有在不需要精度太高的采集速率时才使用软件定时模拟输入。
图14-12软件定时单点采集示例
14.3波形采集
当我们需要从一个或多个信道读取多个数据时,首先要考虑对数据是边采集边分析,还是采集完以后再分析,其次要决定是采集事先确定数目的数据,还是采集不确定数目的数据。
如果要采集预定数目的数据,采集完以后再进行分析,请阅读14.3.1节;如果我们需要对数据边采集边分析,而数据的点数并不重要,那么请阅读14.3.2节。
14.3.1使用简单缓存技术采集波形
虽然前一节所介绍的不使用缓存、重复执行的方式也可以从一个或多个信道采集多个数据,但是这种方式非常费时而且低效。
此外,用这种方法采集数据不能精确控制每次采样的时间间隔或每个信道间的时间间隔。
使用简单缓存技术进行模拟输入时,LabVIEW按程序中说明的采样数和取样的信道数在内存中分配一块缓存区用来存储数据。
缓存区的大小等于每信道采样数乘以信道数。
数据采集设备按照程序中指定的采样率采集信号,数据被传递到缓存区内。
采集到整个样本后,缓存区被数据填满,然后LabVIEW在程序中对数据进行分析、存储及显示。
1.采集单个波形
使用图14-13所示的AIAcquireWaveformVI可以从一个信道采集一个波形。
这个VI位于Functions>>DAQ>>AnalogInput函数子模板中。
由于这是一个易用模拟输入VI,所以仅需要设备名、信道名、采样数和采样率几个输入的参数。
如果需要在程序中设置增益则还需要输入上下限两个参数。
当然如果Measurement&AutomationExplorer中设置了信道,那么就不必再输入极限设置参数,而且设备名参数也被忽略。
只要在程序中输入信道名参数,就能返回与在Measurement&AutomationExplorer中设置的物理单位一致的数据值。
使用尽可能少的输入参数使得编程更容易,但是它缺少更高级的功能,例如触发设置等。
内置的出错处理是易用VI另一个有用的特色。
一旦有错误发生,程序就停止运行,并用一个对错误进行说明的对话框提示用户。
图14-13使用简单缓存技术采集单个波形
2.采集多个波形
用图14-14所示的易用VI—AIAcquireWaveforms可以每次采集多个波形。
这个VI也使用尽可能少的输入参数,不过它的channels参数可以输入多个信道名或信道号,并返回从所有信道读取的数据。
关于LabVIEW中信道设置的详细说明请参看第13章。
这个VI的波形输出参数是一个二维数组,每一列包含一个信道的数据,每一行是一次扫描的数据。
程序中用一个Graph显示所有信道的数据,用IndexArray函数将channels参数中列出的第一个信道的数据索引出来经过一个无限冲激响应数字滤波器处理后;送到另一个Graph显示。
所有信道的输入上限和下限可以设置为同样值。
类似其它易用VI,AIAcquireWaveforms也不能使用高级的编程功能。
这个VI内置的出错检查功能在程序出现错误时会对用户进行提示。
图14-14使用简单缓存技术采集多个波形
也可以使用中级VI采集多个波形。
中级VI可以对数据采集过程提供更多控制,例如可以读取缓存中的任何一部分。
图14-15是位于LabVIEW6.1\examples\daq\anlogin\anlogin.llb.库中的AcquireNScans程序的图形代码。
使用这些中级模拟输入VI时,必须连接TaskID参数以确认数据采集操作和数据采集的信道设置并确保程序按正确顺序执行。
图14-15使用中级VI采用简单缓存技术采集多个波形示例程序
使用这些VI不仅可以设置触发、耦合、采集定时、复位以及附加的硬件功能,而且还可以控制数据采集过程每一步何时发生。
AIConfigVI,用来设置采样时的各个参数,例如由哪些信道读数、使用缓存区的大小等。
AIStartVI用来指定程序中用于开始采样的那些参数,例如numberofscanstoacquire设置扫描次数(默认值-1,即正好采集一个缓存区的数据)、采样率以及触发设置等。
AIStartVI的输出值actualscanperiod返回实际扫描的周期,作为图形显示的X轴时基。
AIReadVI设定从采样缓存区读取数据的那些参数,例如numberofscanstoread设定每次读取的数据量(默认值-1,即由缓存区读取的数据量与AIStartVI中设置的numberofscanstoacquire相等)。
采样完成后调用AIClearVI把taskID作废,从而将采样所用的内存缓存区和其它资源释放。
如果这些VI中有一个发生了错误,程序就将出错信息通过其余各个VI依次传递到SimpleErrorHandlerVI,这个VI将出错信息告知用户。
如果把图14-15中的AIStartVI和AIReadVI这一部分放在一个while循环中,就可以使这个程序连续运行,每次采集一个缓存区的数据并显示出来。
直到按下停止键或有超时错误发生。
对于前面介绍过的各个VI,扫描率输入参数就等于每信道的采样率。
对许多数据采集设备来说,模数转换是从多个信道采样而不是一个。
每个信道可以设置的最大采样率是设备最大采样率/信道数。
Graph显示二维数组数据时默认情况下是用每一条图线反映一行的数据。
而数据采集VI返回的数据中每个信道的数据在数组的一列中,所以我们必须变换二维数组。
变换数组可以简单的在前面板Graph边框上弹出菜单,选择TransposeArray。
3.使用简单缓存技术模拟输入示例
(1)带图形显示的简单缓存模拟输入
图14-16说明怎样使用AIAcquireWaveformsVI从0信道和1信道采集两个波形,然后把它们分别显示在两个Graph中。
如果需要比较两个或多个波形,以及分析一个信号通过某个系统前后的变化时可以应用这种类型的程序。
在这个图形代码中,以每秒5000的扫描率从0信道和1信道取1000次扫描的数据。
图14-16由多个信道各采集一个波形进行比较
(2)多次启动的简单缓存模拟输入
有时并不需要象示波器程序那样连续采集相邻的数据,而只是想采集一定数目的数据做为周期性信号的一个“快照”。
LabVIEW6.1\examples\daq\anlogin\anlogin.llb库中的AcquireN-Multi-Start程序提供了一个这样的例子。
图14-17显示的就是这个程序的图形代码。
这个例子与AcquireNScans那样典型的简单缓存模拟输入程序类似,不同的是它采用了两个while循环和一个选择结构。
每次外层的while循环执行完以后就进入内层while循环等待,直到按下前面板的Stop按钮使整个程序停止,或者按下前面板的Start按钮再次进入外层循环采集数据。
由于AIConfigVI在一个以循环数等于0为条件的选择结构中,所以只在程序执行第一次循环时对硬件进行设置,以后就按已有的设置操作。
AIStartVI和AIReadVI在while循环每次执行时以每秒5000的采样率返回1000个数据。
用这个程序可以控制采样频率,但是不能准确设置程序何时开始采集每组数据。
图14-17可以多次启动的简单缓存波形采集
(3)带有写电子表文件的简单缓存模拟输入程序
如果需要把采集的数据写入一个文件,LabVIEW有许多存储数据的文件格式可供选择。
其中电子表格式的文件是使用最普遍的,因为将来可以使用电子表应用程序对它进行图形显示和分析。
图14-18的程序中用中级模拟输入VI采集数据显示在Graph中。
这里用了两个写电子表VI,一个是Functions>>Waveform>>WaveformFileI/O模板中专门写波形文件的的WriteWaveformstoFileVI;另一个是Functions>>FileI/O函数子模板中的写文件VI—WritetoSpreadsheetFile。
程序运行时会相继打开两个对话框要求为这两个VI保存的文件指定路径和文件名。
读者可以在运行这个程序后,分别用Excel或Notepad程序打开两个数据文件观察它们的内容。
前者保存的数据文件带有数据的时间信息,而后者只有数据本身。
图14-18使用简单缓存采集单个波形存入电子表格文件
14.3.2使用循环缓存技术采集波形
如果需要采集的数据比较多,计算机内存中装不下,或者需要在一个很长的时间内周期性的采集数据,就不能再使用简单缓存的技术,而是要采用循环缓存的技术来采集数据。
图14-19说明了采用循环缓存技术时如何实现在LabVIEW接收数据的同时,让数据采集设备在后台连续采集数据。
循环缓存技术与简单缓存技术的不同在于LabVIEW向缓存内存放数据和由缓存中读取数据的方式不同。
使用简单缓存技术时是一次把缓存区全部放满,然后全部读出。
但是使用循环缓存时,每次只在缓存区的一部分放进数据。
当到达缓存区底部时,它转回到缓存区顶部再次填充同一个缓存区。
与此同时,缓存区中的数据一块一块被读出。
这就形成连续数据采集的过程。
在这个过程中要保证程序从缓存区的一个位置读取数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第14章 模拟输入 14 模拟 输入