From Wikipedia, the free encyclopedia
Jump to: navigation, search

CompactRIO (or cRIO) is a real-time embedded industrial controller made by National Instruments for industrial control systems. The CompactRIO is a combination of a real-time controller, reconfigurable IO Modules (RIO), FPGA module and an Ethernet expansion chassis.[1]


The cRIO is used in industry for performing control actions on parameters in places where a small form factor and ruggedness are important.
The various hardware components of a cRIO are :

  1. Real-time controller
  2. Reconfigurable IO Modules
  3. FPGA
  4. Ethernet Expansion chassis

The real-time controller is a powerful processor with a wide range of clock frequencies for implementing the control algorithm.

The FPGA module is used for implementing low level logic on the data acquired using the IO modules. The FPGA Module used in the cRIO is a Xilinx Virtex series FPGA, which is a high end FPGA. The FPGA can be programmed separately and is connected to the real-time controller using an internal bus.

The IO Modules are C series cards made by National Instruments themselves, but also by third party companies. These modules are hot swappable.

The Ethernet expansion chassis comes with an ethernet port (8P8C) which is used for connecting the cRIO to a host PC. The chassis comes in two formats, namely the 4 slot and 8 slot formats.

The FPGA is connected to the real-time controller by a High-Speed PCI Bus.


Since cRIO is made by National instruments, the real-time controller can be programmed with National Instrument's graphical programming language - LabVIEW.[1] The real-time controller can also be programmed with C or C++ or Java.[2] LabVIEW must be used to program the embedded FPGA.

The real-time controller comes with a licensed version of the RTOS VxWorks. The Xilinx FPGA used is programmed using Xilinx's toolchain. Programs created in LabVIEW are compiled into machine code[3] for VxWorks and hardware description language (HDL) for the Xilinx FPGA toolchain automatically during deployment of the code to the target.

The VxWorks running in the real-time controller supports a filesystem and hence minimal data logging is also available at the controller level. The Full Development System version of LabVIEW does not come with the modules needed to program the cRIO. The real-time Module and FPGA modules have to be purchased separately and installed with LabVIEW for programming the hardware. The programming is done on a Host PC running the Windows operating system and is deployed on the cRIO via Ethernet.


The cRIO are commonly used as headless systems (without a user interface) which are designed to run in a confined space, under harsh conditions. A cRIO can also be connected to a host PC which can be used for supervisory purposes and for displaying logged data. There is also the option of using a third-party module such as the MH-LCD-216 or an external LCD in order to add a user interface. Newer, high-performance cRIOs also have built-in VGA graphics which can be connected to a monitor for observing operation. Due to these factors, cRIOs are ideal for defense and mining applications, but they can be used in many other industrial applications as well.

The cRIO is also used as the primary control unit in the FIRST Robotics Competition.


  1. ^ a b "What is CompactRIO?". NI. Retrieved 1 June 2011. 
  2. ^ "The Definitive Guide: Programming NI VxWorks Real-Time Controllers in C/C++". NI. Retrieved 10 September 2011. 
  3. ^ "NI LabVIEW Compiler: Under the Hood". NI. Retrieved 10 September 2011. 

External links[edit]