NI CompactRIO Waveform Reference Library

Publish Date: May 02, 2017 | 11 Ratings | 4.64 out of 5 | Print | 5 Customer Reviews | Submit your review


The following installer contains host VIs, FPGA templates, and example projects for performing waveform data acquisition on NI RIO hardware. The configuration and acquisition VIs incorporate optimizations and best practices for the RIO platform, and you can easily modify the examples to jump-start your application development.

Table of Contents

  2. Introduction
  3. Features
  4. Palette Overview (LabVIEW 2010 and later)
  5. Example Project Overview
  6. Example Program Architectures
  7. Continuous Acquisition Benchmarks
  8. Related Links
  9. Discussion and Feedback


VIPM Download: 
Get the cRIO Waveform Reference Library from the LabVIEW Tools Network.  The Tools Network allows for easy installation and automatically notifies you when new updates are released.


Back to Top

2. Introduction

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


Back to Top

3. Features

  • VIs combine common acquisition functions into logical blocks, which support many different acquisition modes. Example programs demonstrate various flavors of continuous and finite acquisitions.
  • VIs can present data with the NI LabVIEW waveform datatype to easily integrate with other common LabVIEW software components. The waveform datatype bundles the acquired data with its sampling period, timestamp, and channel properties (like channel name).
  • VIs push calibration and scaling operations onto the field-programmable gate array (FPGA) to free host resources. 
  • VIs perform a full complement of error checking including DMA FIFO overflow (data buffer has filled up causing data to be dropped), module underflow (FPGA code execution takes too long, causing your module to sample slower than intended), and start/read/stop timeouts.
  • Included Read functions use a polling architecture, which gives the user control over CPU usage during data acquisition.
  • The examples are very flexible and can adapt to many different hardware combinations. For most applications, only the FPGA VI needs to be modified.

Back to Top

4. Palette Overview (LabVIEW 2010 and later)

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


Back to Top

5. Example Project Overview

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 and enter info code fpgaex.

Figure 3. Example Project Overview

  1. The Host Examples section demonstrate various flavors of continuous and finite acquisition.
  2. The FPGA Templates section has one template for Delta Sigma based modules and one template for SAR based modules.  Under the FPGA target you will also find the DMA Channel, and a PDF document describing how to customize the FPGA VIs for your hardware configuration.


Back to Top

6. Example Program Architectures

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, calls 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 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 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, the FPGA stops the acquisition and immediately rearms itself waiting for to be called. The stop VI also flushes the host application's data buffer so subsequent acquisitions do not return old data.


Back to Top

7. Continuous Acquisition Benchmarks

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)


Back to Top

8. Related Links

Developer Zone: cRIO Vibration Data Logger Reference Design - A LabVIEW reference design with a focus on embedded vibration monitoring, data logging, communications, and headless configuration.

Developer Zone: Reference Applications for cRIO Order Analysis using a High Speed Tach - A LabVIEW reference design demonstrating how to acquire vibration and a tachometer at different rates and how to synchronize that data to perform order analysis.


Back to Top

9. Discussion and Feedback

This reference application was created by the NI Systems Engineering group. 

We do not regularly monitor Reader Comments posted on this page. Please submit your feedback to the CompactRIO Waveform Reference Applications discussion forum.

Back to Top

Customer Reviews
5 Reviews | Submit your review

Example Project is not located under function palette  - Mar 30, 2016

After downloading cRIO Wfm library from VIPM, the function palette gets included under Addon, not User Library. And the example project folder(Figure 2) is not included in cRIO Wfm function palette. The example project is located in the sample project in project dialog. VI menu bar > Project > Create Project > compactRIO category > CompactRIO Waveform Project

Excellent!  - Feb 3, 2014

Project missing  - Nov 4, 2012

The cRIO Wfm Examples.lvproj is missing when installing from VI package manager to LabVIEW 2011.

LabVIEW 2011  - Jul 20, 2012

Setup installed into the LabVIEW 2010 directory instead of the 2011. Please update.

  - Sep 9, 2011


View more reviews

Bookmark & Share


Rate this document

Answered Your Question?
Yes No