This seems to be a fundamental mesurement topic to me. I recently working on my first DAQmx project for a automotive testing company using Excel 2013 VBA. I am trying to generate a voltage signal and simultanously sample voltage and current signals at different sample rates.
Based on some old confusing posts in this forum and due to driver error message "The specified resource is reserved. The operation could not be completed as specified.", i was afraid, if i have to install a second DAQ board in to my PC, to aquire additional inputs or to let additional tasks run simultanously, i.e. at different sample rates?
One of these confusing posts are found in topic "Re: DAQmx digital slow compared to Trad DAQ" from member Jonathan_Brumley, which is mentionen here as "principal software architect for the NI-DAQmx driver framework". So it should be relevant Information.
He said: "With DAQmx, you can have input and output tasks at the same time as long as the tasks are not reading and writing at the same time."
Is that correct and what does this mean in practice, if so?
This would be disappointing. But I did more investigation and tried out program code to run a write-task and read-task at the same time for analog-voltage-signals on a 6259 Card (M-Series) and it worked!
The only thing what doesn't work - so far i understand the concepts - is reading on multiple channels at different speeds at the same time, due to limited count on timing engines. The documentation says somewhere, there is exactly one timing engine for each subsystem on most of the NI-cards. For example as subsystems on a 6259 i see AnalogIn, AnalogOut, DigitalIn, DigitalOut, Counter1 and Counter2, if i understood it correctly (also reflected in the count of DMA-channels available/reserved using a PCI-card version of the 6259).
So for me it's possible to generate a signal via output while reading another signal via inputs the same time!
But not reading many inputs at different rates. Still i find this disappointing, that only one timing engine per subsystem is available on most NI-cards.
And even more frustrating i find the fact, that an analog-input task couldn't be started, while another analog-input task at another sample rate is already running, even the second task is using aquisition mode ON DEMAND only! This means, i cannot even read a slowly varying temperature signal not even once per minute, while i have a high-speed input task running. This limitation shouldn't exist on a high class hardware.
Or does anybody know a work around how to AnalogIn highspeed signal and lowspeed signals same time without adding the low-speed signal to the high speed signals task, which would cause a lot of redundant data and bus traffic? At least reading single values without timing (just on demand only) should be possible.