Hi
I'm using a PXIe-8375 (slot1), PXIe-6396 (slot3) and a PXIe-6614 (slot4) in a PXIe-1071 Chassis. With the NI-DAQmx library (latest, v1.0.2) and python, I would like to read out up to 8 analog, 8 digital and 1 counter channel from the PXIe-6396 and up to 8 counter inputs from the PXIe-6614. The sample clock is generated by the PXIe-6396 and fed to the PXIe-6614 through the PXI_Trig0 line, which means I should be able to read out data with a max. sample clock of 14.29 MHz (max. ADC sample speed of PXIe-6396).
It all works reliably up to 5MHz while reading out 8 analoge channels, 8 digital inputs (one port), 1 counter (quadrature encoder) and 8 counter inputs (edge counting mode). I can see that all callback functions are called on-time, meaning there is plenty of time before the next read out occurs.
That means: With the above channel selection, I get 11 tasks/callbacks (1 AI, 1 Enc, 1 DI, 8 CI). All 11 callbacks are called and executed within 6 ms, I then need additional 6 ms to send out the raw data. With a read out speed of 50 Hz, that leaves 20 ms - 2 * 6 ms = 8 ms before the next callbacks will be called.
If I then switch to 10 MHz sample clock, not all callbacks are called/executed, not even late. The problem is with the CI callbacks. At 10 MHz, only 4 CI callbacks are called, at 14.29 MHz no CI callback is called. The other callbacks (AI, DI, Enc) are fine, I'm "just" missing some CI callbacks. I don't get any error messages. With the full channel selection, I should still get 11 tasks/callbacks, but only 7 are acutally called. These 7 are called and executed within 8 ms, so there should be enough time to call the remaining 4 CI callbacks.
It gets even more misterious when I select only part of the counter inputs on the PXI-6614 (at 10 MHz):
- Channels 1, 2, 3, 4: All works fine
- Channels 1, 2, 6, 7: Only channel 1 and 2 callbacks are called
- Channels 2, 3, 4, 5: Only channel 2 and 3 callbacks are called
- Channels 1, 5, 6, 7: Only channel 1 callback is called, I additionally get the nidaqmx.error.DaqReadError mentioning that the application is not able to keep up with the hardware acquisition
- Channels 4, 5, 6, 7: All works fine
- Channels 3, 4: All works fine
Before executing test no. 6 above, I had assumed that there are like two groups of channels that cannot be read out together at 10 MHz, but test no. 6disagrees with that theory.
Some other maybe helpful information:
- A single CI callback call at 10 MHz needs 0.98 ms to process.
- With full channel selection, all 11 tasks are started without error (task.start() is inside try/exception, I don't get an exeception).
Any help is greatly appreciated!
Stephan