# NI CompactRIO

CompactRIO (kurz cRIO) bezeichnet eine Familie von embedded Controllern der Firma National Instruments. Das cRIO besteht aus einem Controller (mit Echtzeitbetriebssystem oder Windows und einem FPGA) und rekonfigurierbaren Eingabe-und-Ausgabe-Modulen (RIO). Zusätzlich können über Ethernet sogenannte Expansion-Chassis angebunden werden.

## Hardware

Jedes cRIO besteht aus einem Controller, einem Chassis und Modulen.

### Controller

Der Controller enthält einen Mikroprozessor und DRAM zur Ausführung der Software und entsprechenden Flash-Speicher für die Speicherung der Firmware (Betriebssystem) und Programmen. Aktuelle Controller integrieren zudem das Chassis und den darin enthaltenen FPGA, einige von ihnen unter Verwendung des Zynq-Chips der Firma Xilinx diesen zudem auf einem Chip mit einem ARM-Mikroprozessor.

### Chassis

Das Chassis bietet Platz für die Aufnahme der Module (sogenannte C-Serie) sowie die Backplane für die Verbindung der Module untereinander und zum Controller. Darüber hinaus enthält das Chassis einen FPGA, in aktuellen Varianten Spartan-6-FPGAs der Firma Xilinx bei integrierten Chassis (Controller und Chassis sind eine Einheit) sowie Virtex-5-FPGAs bei getrenntem Chassis (Controller und Chassis können beliebig kombiniert werden). Darüber hinaus gibt es Erweiterungschassis, die lediglich einen Ethernet/EtherCAT/MXI-Anschluss und einen FPGA besitzen und daher nur zur Erweiterung bestehender Controller verwendet werden können, da nur der Controller die Software für den Betrieb ausführen kann.
Der FPGA dient der Hochgeschwindigkeits-Eingabe/Ausgabe, kann aber auch anwenderprogrammiert weitere Hochgeschwindigkeits-Datenverarbeitungs-Operationen ausführen (z. B. Filtern der Eingangssignale oder Regelungsaufgaben). Der FPGA ist mit dem Controller mittels PCI-Bus verbunden.
Zur Kommunikation mit einem PC enthält der Controller einen Ethernet-Anschluss (8P8C), einige Modelle einen zweiten z. B. zur Anbindung von Erweiterungschassis oder EtherCAT-Erweiterungen wie Motorantrieben. Neuere Controller haben einen VGA-Anschluss bzw. DisplayPort-Anschluss zur Anzeige von Informationen des Betriebszustandes bzw. als Ersatz für einen sonst notwendigen PC für das HMI (Varianten mit Windows bzw. Echtzeit-Linux und darauf aufbauender Xfce-Oberfläche), sowie USB-Ports zum Anschluss von z. B. Maus und Tastatur oder externen Festplatten.

## Module

Während Controller und Chassis ausschließlich von der Firma National Instruments erhältlich sind, gibt es neben deren C-Serien-Modulen auch von Drittanbietern Einschubmodule für CompactRIO.
Die Module sind Hot-Swapping-fähig, können also im laufenden Betrieb getauscht werden (sofern die Software entsprechend programmiert wurde).

## Software

Auf den Controllern läuft (in der Reihenfolge der Erscheinungen der entsprechenden Varianten) das Echtzeitbetriebssystem VxWorks der Firma Wind River, das Betriebssystem Windows der Firma Microsoft oder eine Echtzeitvariante des Betriebssystems Linux (basierend auf Ångström-Linux bzw. OpenEmbedded).
Zur Programmierung wird die grafische Entwicklungsumgebung LabVIEW verwendet. Die normale Version enthält nur Unterstützung für das Zielsystem Windows. Für ein Echtzeitbetriebssystem als Zielsystem wird darüber hinaus das LabVIEW Real-Time Module benötigt. Das LabVIEW Real-Time Betriebssystem sowie die von einigen Einschubmodulen benötigten Treiberpakete müssen zuerst auf dem Controller installiert werden, etwa über die Netzwerkverbindung mit dem Programm NI Measurement & Automation Explorer (NI MAX), das auch eine Konfiguration des Zielsystems ermöglicht.
Wird darüber hinaus auch die Anpassung des FPGA gewünscht, wird zudem das LabVIEW FPGA Module benötigt. Dieses setzt auf die Toolchain von Xilinx (ISE bzw. Vivado) auf, um ein Bitfile für den jeweiligen FPGA zu erzeugen. Dieses wird aus dem grafischen LabVIEW-Code über eine Zwischenstufe (HDL-Code) erzeugt, es können aber auch eigene Bausteine mittels VHDL ins LabVIEW-Programm integriert werden. Ohne Anpassung wird ein vorgefertigtes Bitfile auf den FPGA geladen (das sogenannte Scan-Interface), das die Daten der Module zyklisch ausliest und für die Echtzeitanwendung bereitstellt, da die Module ausschließlich über den FPGA zugänglich sind.

## Anwendungen

CompactRIOs werden meist im Bereich der Regelung und Automatisierung eingesetzt, wenn Kompaktheit (Small Form Factor) und Robustheit (−40 °C bis +70 °C im Betrieb bei passiver Kühlung, Schwingungs- und Schockbeständigkeit) gefordert sind. Sie können autark verwendet werden (Regelung durch FPGA und Echtzeitprogramm) oder mit HMI bzw. PC-Anbindung auch zur Überwachung (SCADA) oder Tests im Hochgeschwindigkeitsbereich eingesetzt werden. In diesen Bereichen können sie eine SPS ersetzen.
Für die reine (PC-gestützte) Datenerfassung bietet National Instruments mit CompactDAQ eine einfachere Version (ohne FPGA und Echtzeit) an, die zudem auch einfacher zu programmieren ist. Der CompactRIO-Bus ist zudem nicht für hohe Datenraten (GB/s) ausgelegt, die Module haben daher entsprechend Samplingraten im Bereich einiger 10 bis 100 kS/s. Ähnliche Anforderungen bei höheren Datenraten erfüllt ein PXI-System, das um einen PXI bzw. PXI-Express-Bus herum konzipiert ist und über den Bus eine Datenraten von bis zu 6 GByte/s in jede Richtungen ermöglicht.