LabVIEW连续采样与有限采样模式
连续采样、N采样、或者其他采样模式的时候,各自都有什么样的含义?
每一种情况都需要一种合适的采样定时模式,而每一种采样定时都使得特定的DAQ编程流程更有意义。在开始之前,有必要介绍一下将测量转变成您计算机中的数字的两个步骤。
第一步是由DAQ硬件决定的。这一步是将输入的电压值实际转化为RAM缓冲区中比特的过程。这是由硬件中的模数转换器(ADC)实现的。
第二步是将缓冲区的比特读取出来的过程。这些比特在大多数情况下是按照浮点数的格式读取出来的,而这都是由计算机中的CPU和CPU中的程序实现的。
这两步发生的频率是连续采样和有限点采样的主要区别。
连续采样意味着DAQ硬件连续地按照采样时钟设定的速率,将输入的电压转化为缓冲区的比特。如果担心计算机或程序的延迟会导致漏掉采样的点,那么连续采样将会是一种好的选择。DAQ硬件采样的速度总是由采样时钟设置决定的,而这一部分的采集是完全由硬件实现的。硬件的采样是非常快速并且稳定的,同时软件的读取是异步的,并且是以一个不定的速率进行的。为了解决这个冲突,DAQ板卡采用了缓冲区的结构。
对于连续采样任务,当“开始任务”vi运行的时候,采集就开始了。由于它需要一定的开支以及与CPU的交互,这个vi只能允许防止在While循环的前面。之后,在一个循环内,DAQmx开始实际地读取缓冲区。因此解释了为什么一次要读很多的点,因为如果一次读得太少,就会引起缓冲区的溢出。DAQ驱动仅允许在一个连续采样中读取两个或更多的采样。如果发现每次只需要一个采样,那么就应该考虑一下重新设计程序或者采样模式了。如果设定的读取点数(每通道采样数)超过了缓冲区已经准备好的数据,那么DAQmx读取vi就会一直等待采样点数充足之后才结束。这会表现为图形刷新过程中会有一定的延迟,但是并不意味着有采样点被遗漏了。采样点数设置为-1,则会在每次读取尽可能多的采样点。
N采样(也叫有限点采样)用在已知需要的总共采样点数情况下的采集任务,尤其是用在带触发的采样任务中。例如,可能需要在某个触发信号开始之后采集10秒钟长度的数据,就可以使用有限点采样。有限点的模式仅仅缓冲调用“开始任务”这个VI的时候。DAQmx函数将从缓冲区中将这些数据读取出来,因此需要设定采样的数目N。这种任务与While循环或者状态机是相互匹配的。
但是和连续采样不同,必须在每个循环中调用“开始任务”,然后进行“读取”,接下来“停止任务”。否则,否则DAQ驱动会继续尝试读取数据的,尽管采样需求已经结束了,这样就会得到错误。需要注意的是,每次采样之间的时间间隔是受软件定时的。如果需要精确控制时序的问题,建议使用连续采样。
通过硬件定时或者软件定时进行单采样和之前讲到的N采样是一致的。如果需要对每次来的数据进行处理或者反应,并且并不十分关心精准的计时,那么这种采样方式是比较值得推荐的。比如,有个电池正在缓慢地放电,整个过程耗时几分钟或几个小时。在此的过程中,每次电压低于某个设定的数值,就发送一封邮件给控制人员。这种情况就适合使用单采样。通常情况下,采样在“开始任务”被调用的时候开始。如果是硬件定时的,需要考虑一下硬件同步问题。采样点会在“开始任务”VI被调用后的下一个采样时钟被采集。
选择合适的采样方式,进行正确的编程,就会编写出最有效的程序,也会避免错误信息的出现。
编辑
添加图片注释,不超过 140 字(可选)
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系们。