了解並避免NI-DAQmx Overwrite和Overflow錯誤

更新 Nov 10, 2023

產品資訊

軟體

  • LabVIEW Full

驅動程式

  • NI-DAQmx

問題敘述

什麼是覆寫(overwrite)和溢出(overflow)錯誤,如何在NI-DAQmx中避免它們?

我常遇到一個overwrite錯誤:Error -200279: The application is not able to keep up with the hardware acquisition。

我常遇到一個overflow錯誤:Error -200361: Onboard Device Memory Overflow。

解決方案

Part I  - NI-DAQmx中的overwrite錯誤:
  • 要避免overwrite錯誤,您需要增加記憶體緩衝區(buffer)大小,讀得更快(read faster)或寫入得更慢(write slower)。
  • 您也可以考慮在LabVIEW VI裡導入Producer/Consumer Design Pattern結構。Producer/Consumer 結構允許您將分析(analysis)和顯示(presentation)資料的步驟放到另一個loop來,使VI能更快地讀取資料。
  • 情況允許的話,您也可以考慮使用運算速度更快的電腦。更快的電腦可以使您以更高的速率在PC Buffer和應用程式開發環境記憶體(Application Development Environment memory,ADE memory)之間傳輸數據。
Part II-在NI-DAQmx的overflow錯誤:
  • 為避免overflow錯誤,您可以使用直接記憶體存取(Direct Memory Access ,DMA)傳輸機制、降低數據輸入速度或減少共享PCI匯流排的設備數量。請考慮採取下列一項或多項措施:
  • 使用DMA而不是中斷請求(IRQ)資料傳輸機制。 DMA比IRQ更快,且可以顯著提升性能。有關使用DMA的更多信息,請參閱NI-DAQmx Help和DAQmx Channel Property Node,Data Transfer Mechanism property。 (注意:DAQCard和USB設備不支援DMA。)
  • 降低DAQmx Timing裡的samples per channel值。
  • 移除可能會共享PCI / PCIe匯流排的其他設備。
您也可以考慮購買具有更大FIFO(First-In-First-Out) Buffer的NI設備或模組。增加板卡的onboard memory可以降低因PCI / PCIe固定的傳輸速率所遇到的瓶頸。

相關資訊

NI-DAQmx的Overwrite錯誤:

該錯誤表示當應用程式沒辦法夠快地從PC Buffer讀取數據至ADE memory導致的資訊遺失現象。Circular PC Buffer內的舊資料在還未傳輸進ADE memory之前就被新的資料覆蓋。
圖1:RAM上資料透過PC Buffer傳遞至ADE memory的途徑
NI-DAQmx的overflow錯誤:

Overflow錯誤表示資料擷取卡上的先進先出(FIFO)記憶體buffer已達到該裝置的最大容量,並且無法再接受新的資料。Overflow錯誤表示匯流排的傳輸速率無法應付資料擷取進來的輸入速率。
圖2:資料透過FIFO記憶體傳輸至PC Buffer的途徑