微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > DAQ中各种采样方法的一点想法(最简单的采样方式)

DAQ中各种采样方法的一点想法(最简单的采样方式)

时间:01-09 来源:互联网 点击:
在简单的采样中,我们常用的是单点扫描读取数据,就是说完全根据程序的框架(如while循环的延迟时间)来决定采样的间隔。

这时我们最简单的程序如下图:

这样我们就能每隔while的延迟时间来进行采样。

但是有的时候我们想进行多点的采样,就是说每次采样获取N个的数据。而用上面的程序的其他多态VI子程序,虽然可以规定采样的数量,但是无法规定程序的采样频率。程序总是在最快的时间内采够所需的数据并显示出来。

在这种情况下我们就要用到这个函数。DAQmx Timing。即

在这里设置采样的个数和采样速率。

相应的信号采集的程序如下图:

我们在Timing中规定了采样的模式——有限采样,采样的个数——10个,采样的频率——一秒钟1个。这样的设置下,程序的执行规则就是,执行到read函数的时候等待,等待采样结束后将数据发送到波形图表中,就是说,程序在read的时候等待大量的时间,而不是一瞬间完成的,这就解释了为什么图标中的新增数据是个一段时间才出现一次的。完全能够讲的通了。

现在,我们再测试一次将采样模式换为连续采样的模式。

设置为连续采样的时候,原来的设置采样数量接口(10)将表示缓存区的大小。

如果是这样的话,循环就连续执行,并不像有限采样那样,等到采够了所需的点数再进行读取显示,而是不停地读取显示。这就是与有限采样的不同。因此需要在while循环中,增加延时函数,在延迟结束时读取缓存区内的数据。

这样所读取的采样点数为延迟时间内所采到的数据。若延迟时间过大,那么缓冲区存满之后,缓存区将重新刷新,那样在读取数据的时候将会损失掉一部分数据。

另外做类似的程序时,最好在循环外部加上DAQmx Start和Stop函数,免得read和write每次运行都要重新开始任务。

即类似于这样的结构。

综上所述:单点采样连续采样的read函数不等待,一直根据函数结构进行读取和处理。

有限采样的read函数将等待,知道采样到需求的数量后才运行后续程序。

另:程序采样开始于开始任务(DAQmx Start)函数

下面的说法可以解释上述的现象:在read函数中可以设置采样数目!是这样定义的!N采样的情况下,read函数包含设置采样个数的节点,每通道采样数指定要读取的采样数。 如未连线该输入端或将其设置为-1,NI-DAQmx将根据任务进行连续采样或采集一定数量的采样,确定要读取的采样数。

如任务进行连续采样且该输入的值为-1,VI将读取缓冲区中当前可用的全部采样。

如采集一定数量的采样且该输入的值为-1,VI将等待任务获取全部所需采样,然后读取采样。如读取全部可用数据属性的值为TRUE,VI将读取缓冲区中当前可用的采样,而不等待任务获取全部所需采样。

另外合理利用好DAQ的各属性节点。如DAQ读取属性节点(测量IO——DAQmx数据采集——DAQ读取属性节点等)

如将上面的程序修改一下。

就可以在while循环运行时,显示出目前缓冲区内可用的样点数目。

当然:我们可以在read.VI中设置 每次读取的采样数目(每通道采样数)。如下图


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top