Multifunction DAQ

Showing results for 
Search instead for 
Did you mean: 

Multirate DAQ Acquistion with E series card


I have the 6035E NI DAQ card. Now I understand that I have to sample all the channels at the same sampling rate.

I want to configure 3 channels which sample at 3 different rates.Say 10000kHz, 2000kHz and 1000 kHz.

Now I have looked at some examples on the website which suggest that I should sample at the highest sampling rate and then discard the data that I dont want but I dont want to do that as I feel that doing this would be a waste of processing power.

Is there a another way of doing multirate sampling with the E series card?

Can I use timed loops which have the DAQmx tasks executing within them?
But the fastest clock source would be 1kHz and hence the fastest sampling rate would be 1kHz.

Can I use
an external clock source(DAQmx clock trigger)?

Bui I am not very sure how to go about doing it as I am still relatively a newbie at using labview.

Can someone get me started or show me some tips on how to do this?

All help greatly appreciated.
0 Kudos
Message 1 of 5
Hi Pilo,
The best way to achieve the multirate sampling that you describe on an E-series board is to use the method you describe from the examples on our website. Using the acquisition rates that you mentioned the load on the processor when decimating the array for the slower sample rate channels is negligable and so you are not really wasting processor time.Using timed loops for example would waste more time as the loops are timed by the processor counting a number of clock cycles before performing the next loop. The external clock idea has a similar limitation to sampling at the highest acquisition rate as each E series board only has one external clock and you cant divide that clock down in software and then distribute it to your channels due to the d
esign of the board. This method , if possible would require more processor power than decimating the array to perform the division.
In short the best way to perform the multi sample rate task that you describe is to use the example ,which samples at the highest rate and discards the unwanted data in the 'slower' channels, that you saw on the website. Here's the link for it :

I hope this is of some help,

Chris M
Applications Engineer, NI
0 Kudos
Message 2 of 5

Hi chris,

I have the same requirement using PXI6070E board but I need to use Traditional NI DAQ driver 7.3 with VC++. I have described my requirement below:-

1. I have to acquire multiple channels simultaneously at different sampling intervals for each channel. For an example @CH1 it may be 1ms sampling rate for 1000s and @CH2 1us or even lesser than that for 1000 sec.

2. Also in another channel I need to start the acquisition after 1000sec and acquire for 100us @ 1us sampling interval.

It would be so helpful if you can give an similar example in VC or in VB.

thanks and regards


0 Kudos
Message 3 of 5

Hi NIAmigo,

I will suggest for a next time post your thread in a new forum, this helps us keep track of our customers issues and in this case isolate DAQ programming in VC++ from LabVIEW coding; either way I’m going to help you.

So breaking down your requirements you have a: PXI6070E that you want to program with Traditional DAQ 7.3. My first suggestion is to use the DAQmx drivers instead of the Traditional DAQ; even though Traditional 7.3 is compatible with this card the newer drivers DAQmx will be a lot easier to code. If you still want to code in Traditional your best resource will be: “Traditional NI-DAQ (Legacy) ™ C Function Reference Help, Version 7.x” this reference help should be located inside the NI-DAQ folder under National Instruments.

For examples on Traditional DAQ I will point you to: How Do I Install the Traditional NI-DAQ Example Programs for Microsoft Visual Basic and Visual C++?, here you will find examples that will help you get started. If you change your mind about the drivers and have you have access to a machine with LabVIEW this code my suit you as a guide to built your VC code, Multi-Rate Continuous Analog Input for E Series Devices.

As far as us having an example that will meet your requirements we don’t have one on VC++ or , one approach is to follow the method explained in the first post, sample everything at the faster rate and eliminate samples on your slower rate channel (decimate).  Regarding the part of starting the task after 1000 sec you can programmatically, your best place for information would be: Tips and Techniques in Data Acquisition Triggering – Traditional DAQ.

I will like to point that your timing considerations of 1us might not be achievable since the ADC rate of this card is 1.25 MS/s and it is per channel, so if you have only one channel you will sample at 1.25M (0.8 us) or if you have 5 channels each one is going to be sampled at 250K (4us).

I hope it helps, any question don't hesitate in asking.

Jaime Hoffiz
National Instruments
Product Expert
0 Kudos
Message 4 of 5

Thanks Jaime.

I will do so next time. Your help was very useful.


0 Kudos
Message 5 of 5