VIPM Download:
Get the cRIO Waveform Reference Library from the NI Community. The Tools Network allows for easy installation and automatically notifies you when new updates are released.
Many reconfigurable I/O (RIO) applications acquire continuous blocks of data from multiple synchronized NI C Series modules. This tutorial presents CompactRIO data acquisition VIs that incorporate RIO optimizations and best practices, and offers several examples to jump-start your application development.
Figure 1. Continuous Acquisition Example
The cRIO Wfm Library installs to the vi.lib\NI directory and appears under the Addons palette in LabVIEW.
Figure 2: cRIO Wfm Reference Library Palette
cRIO Wfm Examples.lvproj demonstrates common acquisition modes and how to link host code to FPGA code. The example is installed as a Sample Project in your LabVIEW environment and can be opened from the Create Project... option in the launch window.
The project itself is also located at:
National Instruments\LabVIEW [Version]\ProjectTemplates\Source\cRIOWfm
You will likely need to move this example to another FPGA target and then use a "save as" on all VIs to avoid editing the source install. For more information refer to ni.com/info and enter info code fpgaex.
Figure 3. Example Project Overview
Finite Acquisition: The finite acquisition mode tells the FPGA to acquire a certain number of samples and then terminate the acquisition. In this acquisition mode, ConfigTiming.vi calls BufferConfig.vi and sets the host application's data buffer size equal to the number of points in the finite acquisition.
Finite Acquisition with Subset Reads: Again a finite acquisition allocates exactly enough memory to hold all of the requested samples per channel. Read(poly).vi has a control named Samps Read per Chan that you can use to specify the block size returned by each call, so you can read the finite acquisition in multiple subsets - a useful feature in many processing applications.
Finite Acquisition with Rearming Software Start Trigger: When a finite acquisition terminates, the FPGA automatically rearms itself for another acquisition. You simply need to call Start.vi to perform another finite acquisition.
Continuous Acquisition: The continuous acquisition mode tells the FPGA to acquire points indefinitely until a stop command is issued or until an error is encountered (FIFO overflow, module underflow, and so on). In this acquisition mode, use BufferCfg.vi to explicitly set the host application's data buffer to be many times larger than the read size. The examples use a 10X size by default. If the host application's data buffer fills, then the FPGA experiences a FIFO overflow causing the acquisition to stop.
Continuous Acquisition with Start/Stop or Pause Functionality: If a finite acquisition is too large for the amount of memory available on the host controller, then perform a continuous acquisition for a finite period of time via a state machine. When you call Stop.vi, the FPGA stops the acquisition and immediately rearms itself waiting for Start.vi to be called. The stop VI also flushes the host application's data buffer so subsequent acquisitions do not return old data.
For each of the controllers listed, the CompactRIO Continuous Acquisition Example acquired data continuously and streamed it to either a local technical data management streaming (TDMS) file, a local binary file, or a remote host through TCP/IP. The bandwidth values represent the amount of data that can be streamed indefinitely (or until the hard drive is filled).
Stream to Disk [TDMS]: sample rate = 51.2 kS/s
Controller | 1D Wfm SGL | 2D Array SGL | Interleaved SGL |
---|---|---|---|
NI 9074 | 6 chan (1.23 MB/s) | 7 chan (1.43 MB/s) | 8 chan (1.64 MB/s) |
NI 9068 | 8 chan (1.64 MB/s) | 8 chan (1.64 MB/s) | 9 chan (1.84 MB/s) |
NI 9014 | 8 chan (1.64 MB/s) | 10 chan (2.05 MB/s) | 13 chan (2.66 MB/s) |
NI 9076 | 9 chan (1.84 MB/s) | 12 chan (2.45 MB/s) | 15 chan (3.07 MB/s) |
NI 9022 | 10 chan (2.05 MB/s) | 13 chan (2.66 MB/s) | 19 chan (3.89 MB/s) |
NI 9024 | 15 chan (3.07 MB/s) | 19 chan (3.89 MB/s) | 27 chan (5.53 MB/s) |
Stream to Disk [Binary]: sample rate = 51.2 kS/s
Controller | Interleaved SGL |
---|---|
NI 9074 | 8 chan (1.64 MB/s) |
NI 9068 | 9 chan (1.84 MB/s) |
NI 9014 | 18 chan (3.69 MB/s) |
NI 9076 | 20 chan (4.10 MB/s) |
NI 9022 | 25 chan (5.12 MB/s) |
NI 9024 | 36 chan (7.37 MB/s) |
Stream over TCP/IP: sample rate = 51.2 kS/s
Controller | 1D Wfm SGL | 2D Array SGL | Interleaved SGL |
---|---|---|---|
NI 9074 | 12 chan (2.46 MB/s) | 13 chan (2.66 MB/s) | 18 chan (3.69 MB/s) |
NI 9014 | 12 chan (2.46 MB/s) | 14 chan (2.87 MB/s) | 23 chan (4.71 MB/s) |
NI 9022 | 16 chan (3.28 MB/s) | 20 chan (4.10 MB/s) | 35 chan (7.17 MB/s) |
NI 9024 | 29 chan (5.94 MB/s) | 32 chan (6.55 MB/s) | 45 chan (9.22 MB/s) |
NI 9068 | 40 chan (8.19 MB/s) | 40 chan (8.19 MB/s) | 45 chan (9.22 MB/s) |
This reference application was created by the NI Systems Engineering group.
Please submit your feedback to the CompactRIO Waveform Reference Applications discussion forum.