Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

Best setting for high resolution measurement with NI9220 (16x100kS/s simultaneous), 9221 (2x400kS/s aggregated) and 9222 (4x400kS/s simultaneous)

Hello everybody,

I have the following equipment:

- cRIO-9024 RT-Controller

- cRIO-9112 Chassis

- C-Series NI9220 (16x100kS/s simultaneous),

- 2x C-Series 9221 (2x400kS/s aggregated) and

- C-Series 9222 (4x400kS/s simultaneous).

 

I want to use c-Series modules with the maximum sample rates for high resolution measurements. The programming setting is as follows:

- FPGA.VI with User-Controlled I/O Sampling Functions (9220 and 9222) and I/O node (9221) filling three different FIFO (DMA).

- RT.VI with two loops: 1st loop gets data from the different FIFOs and put them on one RT-FIFO per module. 2nd loop takes the values from the RT-FIFO and put them on a network stream.

- WIN (host).vi: get the data from the network stream and visualize it on the control pc

 

The setting ist fine and works. But not with 10us (100k) within the FPGA loop, but only with approx. 100us (10k), tested with 9220 and 9222.

Problem is the slow data transport from cRIO to Win-Host. As a result the RT-FIFO is overfilled.

 

So how can I avoid this and use the maximum sample rate per module?

Thanks for any help in advance.

 

 

 

0 Kudos
Message 1 of 4
(1,899 Views)

There's a performance benchmark with the 9024 and network streams here:

http://www.ni.com/en-us/innovations/white-papers/10/lossless-communication-with-network-streams--com...

I'm guessing you're getting close to the CPU limit. There's not much you can do. You probably just need more processing power.

 

I have once considered if fast lossless compression would yield a net throughput improvement but I've never wanted to invest the time to find out.

Message 2 of 4
(1,880 Views)

Hello nanocyte,

thank you for fast reply. I have seen this white paper before. But no matter what buffer size I choose, I only get a throughput of max. 6 MB/s. And yes, when starting the network stream the cpu increases from 20% to 100% (monitored with NI DSM).

  • Are there any possibilities to calculate the needed processing power?

In the suggested article there is a hint to have a look at the elements in writer or receiver buffer.

  • Where can I find them? Are these property nodes?

Thanks.

 

0 Kudos
Message 3 of 4
(1,873 Views)

If you're at 100% CPU use then that's almost certainly your issue. Doing a benchmark as you are attempting is the best way to determine the required CPU use. You could try throttling down to generate a curve like this white paper does. You can try sending elements instead of variable sized data but I'd expect only modest differences between the two.

 

Yes, those are in the property nodes.

http://zone.ni.com/reference/en-XX/help/371361R-01/lvprop/ns_endpoint_props/

 

If push came to shove, you could try pure TCP, or if loss was OK, you could try UDP. Again, I'd expect only modest gains.

0 Kudos
Message 4 of 4
(1,864 Views)