Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Seemingly arbitrary device memory overflow

Hello all, I'm experiencing a recurring problem with a hardware-timed single-channel read, software-timed single-channel write VI in LabVew. Ideally, I'd like this VI to be able to sample at 2kHz, which is is capable of doing, as I have had successful tests with no errors at this rate. However, the majority of the time, when I attempt to run this program, it gives me a "Onboard Device Memory Overflow" error after execution. After reducing the sample rate, it will successfully run, but the reduced sample rate it will run at seems to be random. It will reliably run at 1 kHz, and will sometimes run at 1.5 kHz. Sometimes it will run at 1.7 or 1.8 kHz, then fail at 2 kHz, and then fail again when reduced to 1.7 kHz.

I've analyzed the output with a fast digital scope: it appears that, when it fails, the DAQ writes a single sample and then holds that for the remainder of the runtime. I'm running LabView 8.0 on Windows 2000, with a 6024E DAQ card (with BNC-2110 connector block). Thanks for your help.

Message Edited by CMack on 06-28-2007 05:07 PM

0 Kudos
Message 1 of 5
(3,458 Views)
Hello CMack,

The PCI-6024E doesn't have an analog output FIFO, so DAQmx transfers AO waveforms to it one sample at a time. Also, the PCI-6024E has only one DMA channel, so DAQmx uses interrupts by default. You might have slightly better results if you drop a couple of DAQmx Channel property nodes into your program and configure AI.DataXferMech to use interrupts and AO.DataXferMech to use DMA. Otherwise, you may need to use a faster machine or get a DAQ board that has an AO FIFO.

Brad
---
Brad Keryan
NI R&D
0 Kudos
Message 2 of 5
(3,440 Views)
Hello CMack,

I see that you are using the 6024E and programming in the LabVIEW 8.0 environment. Are you programming with the DAQmx driver or Traditional DAQ?

The onboard memory error occurs when the onboard FIFO memory gets written over before you read/generate samples. Take a look at this link to learn more about the on board memory.

The Benefits of Deep Onboard Memory Tutorial

In your post it was unclear as to what type of aquisition you were trying to do: continuous vs finite and DI/O or Analog acquisition. Based on what task you are trying to do, the method of memory allocation is different:

How is the DAQmx Buffer Size Allocated for a Finite or Continuous Acquisition?

If you are acquiring continuously, increase the number of samples to read. This will help read more samples from you better each time.
Please clarify what you are trying to do.

Regards,
  Sandra T.

Applications Engineer | National Instruments

Message Edited by Sandra T on 06-29-2007 01:49 PM

0 Kudos
Message 3 of 5
(3,436 Views)
Sorry, I can clarify a bit. I'm doing analog read and write, using the "Hardware-Timed Single Point" acquisition, some calculation on this value, then a on-demand write, all inside a loop. This is a fast control application, so I cannot take a batch of samples, calculate, and then output another batch of samples, as I need response time on the order of 1 ms or faster. I'm using DAQmx.
0 Kudos
Message 4 of 5
(3,430 Views)
Brad K:

Trying to set the transfer method to DMA for either write or read throws a "method not supported" error. Considering this, I should probably clarify that the DAQ card I'm using is laptop CARD bus, not PCI.

EDIT: Having found the spec sheets for the PCMCIA 6024E, I now see that its output update rate is limited to 1 kHz, which essentially answers my question.

Message Edited by CMack on 07-02-2007 10:00 AM

0 Kudos
Message 5 of 5
(3,399 Views)