Digital I/O

Showing results for 
Search instead for 
Did you mean: 

PCI-6561 continuous acquisition

Can PCI-6561 acquire continuously?  My application has fairly low data rate (~3MHz 16channels), but I'm so far unable to acquire data continuously.  The amount of data that I can acquire continuously appears to be limited by the amount of onboard memory (in my case 2Mb/ch).  If I reinitiate acquisition, there is a long delay (~10ms) and I lose data.  Does anyone have a way to do continuous acquisition?


0 Kudos
Message 1 of 6
Hi David,

HSDIO is different from DAQ. The architecture of HSDIO memory is not same as regular DIO card.

If you look at any HSDIO examples, you will find that you are waiting for reference trigger. This will be software/hardware.

The HSDIO will be waiting for reference trigger, but it will be continuously acquiring data and filling the deep onboard memory inside the HSDIO while waiting for trigger.

These high speed cards are usually used to transmit bursts of data depending on the user application. Even the scopes are also designed in that way. Because PC cannot read the data into it's RAM at the rate which HSDIO's normally operate such as 100MHZ.

When an event (trigger) occurs, you can transfer the data but still you will be clocking/sampling data at faster rates.

If you look at the memory architecture of HSDIO, it is continuously filling the buffer (record). But it stops filling the buffer, once it gets reference trigger.

You can also perform multi-record triggering and store 1000's of waveforms on the onboard memory. So, think of onboard memory being divided into small circular buffers (records). Once you get a trigger, it advances to next record. While the second record is being filled up, you can transfer the data to LabVIEW from the first record by cheesing the number of records available.

So, basically High speed devices are used to capture transient events. But we can fool the driver by never sending the trigger. So, HSDIO will continuously storing the data into buffer. Then we transfer the data into ADE in the background. This is done for lower rates than full speed of the board without overflowing buffer.

I have an example from the Product Support Engineer.  It doesn't seem like your requirements are to demanding so give this example a try and let me know if it works for you.

Have a great day!

- Erik

0 Kudos
Message 2 of 6

Thanks for your reply.  The trick is the reference trigger.  But I don't think multi-record acquisition will work because I have to specify number of records to acquire, which is limited by the memory.

Every time I fetch from memory, I have to increment the offset.  Do you know what happens if I reach the limit of 32-bit integer?  How should I handle the 32-bit integer overflow?


0 Kudos
Message 3 of 6
Hi David,

When you reach the limit of the 32-bit integer, the offset will automatically reset (in binary, all the ones will become all zeroes).  You should not have to do anything to handle the 32-bit overflow, it should be handled automatically.

- Erik
0 Kudos
Message 4 of 6

The latest version of the HSDIO driver has a new exampled called "Continuous Acquisition - Stream to" that shows how to do exactly what Erik was describing.  If you open the example finder, you can find it in the Hardware Input and Output>>Modular Instruments>>NI-HSDIO>>Dynamic Acquisition folder.  Please note that the rate at which you can sustain the acquisition will be system dependent.  That is, the sustained rate will be dependent on how fast your computer can fetch data out of the hardware and cache it onto your harddrive.

I hope this example helps.
Message 5 of 6
Everything works now.  Thanks for all your suggestions.


0 Kudos
Message 6 of 6