LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

RT desktop target is inaccessible, CPU 100%

I am performing RT data acquisition where I output a digital waveform and some boolean constants on port0 and acquire data on 16 channels. In the time-critical loop I acquire data, reshape it to 1D of SGL and it goes into RT FIFO. In the non-time-critical loop I buffer it so that a 2048000 long 1D array [7.81MB] is handed over to TCP to transmit it to the host.

 

The problem is that each time I run the target VI the load of the two cores of RT target goes up to 100% and the RT target becomes inaccessible on network, it doesn't respond to reboot command from MAX for example. As I checked it no TCP packets are sent out from the RT target to the host [or only a very few, I am unsure].

 

The time-critical loop executes in every 40us with priority 100, the non-time-critical loop executes in every 4us with priority 99. The LV automatically assigns the cores to the tasks.

The non-time-critical loop runs 10x faster than the time-critical one because I think it needs more time to buffer and say if the time-critical does its acquisition in x us then the rest of the time [40 - x us] is available for the non-time-critical loop to buffer the data and to tcp it to the host. 

 

Can somebody please suggest how to get around this problem.

 

Thanks,

Krivan

 

0 Kudos
Message 1 of 2
(2,345 Views)

You simply overstress your RT CPU. Have a look at your desktop RT performance monitor via the video out (VGA/DVI). If you use a multicore cpu you should see which timecritical loop goes to 100%. It's recommended to use one core per timecritical loop and you can assign them manually. Are you sure that you set a priority to a non time critical loop ???

 

For debug I suggest to slow down the loops and monitor the CPU load. Be aware that an untimed while loop takes 100% load by default.

 

Hope it helps

Christian

0 Kudos
Message 2 of 2
(2,332 Views)