Archived:Overwrite, Overflow, and Underflow Errors with Traditional NI-DAQ

Updated Nov 6, 2023

NI does not actively maintain this document.

This content provides support for older products and technology, so you may notice outdated links or obsolete information about operating systems or other relevant products.

Reported In

Software

  • LabVIEW 7.1.1 Base

Driver

  • Traditional NI-DAQ 7.1

Operating System

  • Windows

Issue Details

I am receiving Error -10846 (Overwrite Error), Error -10845 (Overflow Error), or Error -10843 (Underflow Error) when performing a buffered analog acquisition using Traditional NI-DAQ. What do these errors mean and how do I fix them?

Solution

Error -10845 is a hardware buffer (FIFO) overflow error and Error -10846 is a software buffer overflow error. Error -10843 is a hardware buffer (FIFO) underflow error. 

Overflow Error -10845 and Underflow Error -10843

What it is:

Overflow error -10845 occurs when the NI-DAQ driver cannot read data from the DAQ device's FIFO buffer fast enough to keep up with the acquired data as it flows into the buffer (i.e., the FIFO buffer overflows before all the original data can be read from it). Similarly for output, underflow error -10843 occurs when data is pulled out of the device's buffer faster than the PCI bus can refill the buffer.

These errors are usually due to limitations of your computer system, most commonly the result of slow processor speeds (< 200 MHz) in conjunction with PCMCIA DAQ boards, which have small FIFO buffers (e.g., the DAQCard-500). Another cause of the -10845 error could be due to an interrupt-driven acquisition.  For example, PCMCIA bus does not support Direct Memory Access (DMA).  If the system is tied up processing another interrupt (like performing a screen refresh or responding to a mouse movement) when it is time to move data from the board, then that data may get overwritten.


How to fix it:

Sometimes using a DAQCard with a larger FIFO can solve the problem, but a better solution is to lower the acquisition rate or move to a faster system.  You may also want to try reducing the number of devices sharing the PCI bus. Another good option is to improve the efficiency of your program by streamlining your code or implementing a producer/consumer architecture.


Overwrite Error -10846

What it is:

LabVIEW uses a circular PC buffer to store data as it is acquired.  This data is then read into the application buffer.  If the transfer between the PC buffer and the application buffer is not fast enough, incoming data may overwrite data in the PC buffer, causing an overwrite error (error -10846).


How to fix it:

This problem can be solved by adjusting the parameters of your data acquisition, such as lowering the scan rate, increasing the buffer size, and/or increasing the number of scans to read from the buffer on each buffer read.  A good rule of thumb to start with is to make your buffer size 2 - 4 times as large as the number of scans to read. 

Also consider performing less processing in the loop to help avoid the -10846 error.  If upgrading your PC's processor is an option, you may also want to think about doing so since a faster computer may be able to transfer data between the PC buffer and the application buffer at a higher rate.

To try this yourself, you can look at the Cont Acq&Chart [buffered].vi shipping example, which allows you to set the scan rate, the size of the data buffer, and the number of scans to read at a time from the Front Panel.  If your buffer is too small, or you are not reading data out of it fast enough, then you will get the overwrite error. If your buffer is too big, you may get an out of memory error.

If you ignore Error -10846 (overwrite error), you can continue to acquire and read data, but you must remember that data has been lost.  Furthermore, the iteration of AI Read which returns this error does not return data.  If you configured AI Read to output a scaled array, the array will be empty.  If you configured AI Read to output a waveform, the waveform will contain a t0 equal to the t0 from the next iteration of AI Read.  The y array contained in the waveform will be empty.  The next iteration of AI Read after receiving the error, assuming this iteration does not return an error, will have a correct t0 and y array.

Additional Information

Note: This article is about NI-DAQ also known as Traditional DAQ (T-DAQ). NI-DAQmx replaced Traditional NI-DAQ in 2003.