了解并避免NI-DAQmx的重写和溢出错误

更新 Nov 10, 2023

适用于

软件

  • LabVIEW Full

驱动

  • NI-DAQmx

问题详述

什么是重写和溢出错误,如何在NI-DAQmx中避免它们?

常见的重写错误代码-200279:应用程序无法跟上硬件采集速度。

常见的溢出错误代码-200361:板载设备内存溢出。

解决方案

第一部分 - NI-DAQmx中的重写错误:
  • 要避免重写错误,您需要增加缓冲区大小,提高读取数据速度或减慢写入数据速度。
  • 在LabVIEW中,您还可以考虑采用生产者/消费者设计模式。生产者/消费者结构允许您通过移动分析和演示步骤到第二个循环,以提高读取数据的速度。
  • 如果可以选择,您也可以考虑使用处理速度更快的计算机。更快的计算机可以使您以更高的速率在PC缓冲区和应用程序开发环境内存之间传输数据。
第二部分 - NI-DAQmx的溢出错误:
  • 为避免溢出错误,您需要使用直接内存访问(DMA)传输机制,降低请求的数据输入速率,或减少共享PCI总线的设备数量。您可以考虑采取以下一项或多项措施:
  • 使用直接内存访问(DMA)传输机制而不是中断请求(IRQ)数据传输机制。 DMA比IRQ更快,可以显著提高性能。有关使用DMA的更多信息,请参阅NI-DAQmx帮助和DAQmx通道属性节点,数据传输机制属性节点。 (注意:DAQ卡和USB设备不支持DMA。)
  • 使用DAQmx定时函数降低每通道采样数。
  • 断开可能共享PCI / PCIe总线的其他设备。
您也可以考虑购买具有更大FIFO缓冲区的NI设备或模块,增加板载内存将减小PCI / PCIe总线瓶颈。另一种选择是购买具有更快总线的计算机,提高从FIFO缓冲区到PC缓冲区的数据传输速度。

相关信息

  • NI-DAQmx中的重写错误:

该错误表示应用程序没有足够快地从PC缓冲区读取数据而导致信息丢失。写入循环PC缓冲区的采样在读入应用程序开发环境(ADE)内存之前会被重写。

图1:设备到ADE数据路径
 
  • NI-DAQmx中的溢出错误:

溢出错误表示数据采集卡上的先进先出(FIFO)内存缓冲区已达到其存储采样点的最大容量,并且无法再接受新采样。溢出错误表示总线传输速率低于请求的数据输入速率。


图2:FIFO缓冲区数据路径