理解并避免DAQmx中的数据覆盖错误(Overwrite)与数据溢出错误(Overflow)



主要软件:
主要软件版本: 8.0
主要软件修正版本:
次要软件: LabVIEW Development Systems>>LabVIEW Full Development System
硬件: Multifunction DAQ (MIO)>>E Series>>PCI-MIO-16E-1

问题: 什么是数据覆盖错误(Overwrite)与数据溢出错误(Overflow),我怎样才能够在使用NI-DAQmx的时候避免它们的出现?

解答:

第一部分——NI-DAQmx中的数据覆盖错误(Overwrite)

数据覆盖错误(Overwrite)是在进行环形缓存区采集的时候经常会遇到的错误之一。这个错误表示出现了数据丢失的情况,通常由于LabVIEW无法将PC缓存区中的数据尽快读出,而造成环形缓存区中现有的数据还没有来得及被应用开发环境(如LabVIEW)的内存读取就已经被后面的数据覆盖。

您可以通过增加PC缓存区的大小、加快读取速度或者降低采样率的方式避免数据覆盖错误(Overwrite)的出现。  可以考虑采取以下的几种方法:

1.  增加the DAQmx Timing VI中的每通道采集点数samples per channel参数。 (增加PC缓存区的大小)
2.  增加the DAQmx Read VI中的每通道每次读取点数number of samples per channel参数。 (加快读取速度)
3.  减少the DAQmx Timing VI中的每通道采样率rate参数。  (降低采样率)

您也可以考虑采用生产者/消费者编程结构。生产者消费者编程结构能够允许您将分析和显示步骤放到另一个循环中,从而加快读取的速度。  在本文最后附上的LabVIEW 8.0的范例程序显示了一个采用生产者/消费者编程结构实现连续采集和显示的一种方法。

若条件允许,您也可以考虑使用一个更快的电脑。这样您就可以以更快的速率将数据从PC缓存区中向应用开发环境的内存中传输。  

第二部分——NI-DAQmx中的数据溢出错误(Overflow)

数据溢出错误(Overflow)是另一个在进行环形缓存区采集的时候经常会遇到的错误。数据溢出错误(Overflow)通常比数据覆盖错误(Overwrite)更加严重,因为它显示了数据在进行读取之前就已经丢失。  数据溢出错误(Overflow)显示了板卡上的先入先出内存缓存区内存储的采集到的数据已经满了,无法放入新的采集数据。  数据溢出错误(Overflow)显示了总线的传输速率小于设定的数据输入速率。




您可以使用直接内存存取(DMA)传输方式、降低数据输入速率或者减少共享PCI总线的仪器来防止数据溢出错误(Overflow)。 可以考虑采取以下几种方法:

1.  采用直接内存存取(DMA)传输方式来替代中断请求(IRQ)数据传输方式。 在传输数据时,DMA方式比IRQ方式更快,能够更好的改善传输速度。 若需要更多与DMA使用相关的资料,请参考NI-DAQmx帮助和DAQmx Channel属性节点中的Data Transfer Mechanism property。  (注意:DAQCard与USB设备不支持DMA方式。)
2. 降低the DAQmx Timing VI中的每通道采样率rate参数。
3. 将可能共享PCI总线的其他的仪器断开。

您也可以考虑购买拥有更大FIFO容量的仪器。 增加板载内存可以减小由于PCI总线的瓶颈造成的问题。 或者您也可以选择购买一台总线速度更快的电脑来加快数据从FIFO内存中传输到PC内存中的速度。



相关链接:

附件:





报告日期: 09/04/2007
最近更新: 01/01/2008
文档编号: 4D3AI5Q7