01-21-2024 06:51 AM
Hello,
Trying to share data on NI PXI RT Linux without causing undue CPU usage or Blocking is a major concern for many of us. Here is the general system design:
Multiple loops that read or write data at 10 to 1000 Hz (10 to 5000+ Hz would be better)
Considering the speed at which I want some of the loops to iterate what might be the best architecture for this monster?
01-21-2024 08:28 AM
Looks like VeriStand is exactly what you need. The VeriStand Engine uses the non-blocking RT-FIFO.
01-21-2024 07:19 PM
When you say "share data on NI PXI RT Linux without causing undue CPU usage", do you mean within the RT Target (such as a CompactRIO) or between the Host (PC) and the RT Target?
For the former ("within"), I've used Asynchronous Channel Wires (you need at least LabVIEW 2019 to do this "properly" on an RT Target), and RT FIFOs if going between the Target and its FPGA. For the latter ("between"), I've used Network Streams.
I've achieved (burst) speeds of 16 channels of A/D from 16 custom-made, SPI-managed circuit boards with sampling at (I believe -- haven't looked at it recently) at least 10 kHz. These data go from the FPGA to a Timed Loop on the RT Target, and the burst of data are transmitted to the Host (and streamed to the PC's disk) via Network Streams. Transmission within Host and Target are both accomplished with Channel Wires.
Bob Schor
01-22-2024 03:35 AM - edited 01-22-2024 03:46 AM
@Bob_Schor wrote:[...] and RT FIFOs if going between the Target and its FPGA. For the latter ("between"), I've used Network Streams.
I guess you meant DMA FIFOs for communication between RT (which you call "Target") and FPGA.
RT FIFOs are for communication within an RT application.
01-22-2024 07:50 PM
@raphschru wrote:
@Bob_Schor wrote:[...] and RT FIFOs if going between the Target and its FPGA. For the latter ("between"), I've used Network Streams.
I guess you meant DMA FIFOs for communication between RT (which you call "Target") and FPGA.
RT FIFOs are for communication within an RT application.
Right you are. I think of LabVIEW Real-Time as Host (PC), Target (something running a Real-Time OS and communicating with the Host), and (optionally) FPGA, which communicates with the (RT) Target (via a DMA FIFO, thanks for the correction).
01-27-2024 09:45 AM - edited 01-27-2024 09:46 AM
Thanks for the reply Bob,
Here's the problem: