Erstellen von Real-Time-Systemen mit Hardware und Software von NI

Überblick

Real-Time-Hardware und -software von NI arbeiten perfekt zusammen, sodass Anwendungen zuverlässig und deterministisch mit präzisem Timing ausgeführt werden können. In diesem Beitrag werden die verschiedenen Komponenten erläutert, die für die Erstellung eines NI Real-Time-Systems erforderlich sind. Außerdem werden die verfügbaren Hardware- und Software-Optionen vorgestellt und erläutert, wie Sie die besten Optionen für Ihr Projekt auswählen.

Zum Erstellen eines NI Real-Time-Systems müssen Sie sowohl die Entwicklungssoftware als auch die Hardwareplattform auswählen. In den folgenden Abschnitten finden Sie detaillierte Informationen zu den einzelnen Optionen. Bevor Sie dieses Dokument lesen, ist es von Vorteil, ein grundlegendes Verständnis von Real-Time-Systemen zu haben und zu wissen, wie Sie von der Erstellung eines solchen Systems profitieren können. Weitere Informationen hierzu finden Sie in Wann benötige ich ein Real-Time-System?

Wenn Sie ein Real-Time-System erstellen, müssen Sie ein Real-Time-fähiges Betriebssystem auswählen. Die Entwicklungstools von Real-Time-Anwendungen von NI werden mit der gesamten benötigten Software für das Real-Time-Betriebssystem (Real-Time OS, RTOS) mitgeliefert, so dass Sie diese Komponente nicht separat auszuwählen brauchen. Abhängig von der Hardwareplattform verwendet NI das NI Linux Real-Time OS oder eines der Phar Lap ETS OS. 

Entwicklungsumgebung auswählen

Zur Entwicklung von Real-Time-Programmen können Sie entweder die grafische Programmierumgebung LabVIEW, die LabWindows™/CVI ANSI C-Umgebung (für Phar Lap) oder Ihre präferierte Linux-kompatible C/C++-Entwicklungsumgebung (für NI Linux Real-Time).

Entwicklungsoption: Grafische Programmierung in LabVIEW Real-Time

Abbildung 1: Grafische Programmierung mit LabVIEW.

Zur grafischen Programmierung von NI-kompatibler Real-Time-Hardware müssen Sie LabVIEW zusammen mit dem LabVIEW Real-Time Module verwenden. Mit LabVIEW Real-Time können Sie zuverlässige Hard-Real-Time-Anwendungen erstellen, auf die Hardware herunterladen, Fehler beheben und mit einem einzigen Tool ausführen.

Sie können die meisten der in LabVIEW integrierten Mathematik- und Signalverarbeitungsalgorithmen in Ihren Real-Time-Anwendungen einsetzen, darunter auch mehrere PID-Regelfunktionen (Proportional-Integral-Derivative). Darüber hinaus können Sie auf Ihrem Real-Time-System mit dem optionalen LabVIEW MathScript RT Module textbasierte mathematische Skripte ausführen oder Modelle integrieren, die Sie in The MathWorks, Inc. erstellt haben. Simulink ®-Software oder andere Modellierungsumgebungen mit dem optionalen LabVIEW Model Interface Toolkit.

LabVIEW Real-Time: Entwickeln, Herunterladen und Ausführen von Anwendungen

Bei der Entwicklung von Real-Time-Anwendungen in LabVIEW verwenden Sie den LabVIEW Projekt-Explorer, um Ihre Programme (VIs) zu organisieren und die Hardware zuzuweisen, auf der sie ausgeführt werden sollen. Sie entwickeln Ihren Programmcode auf einem universellen Windows-Host-Computer und stellen ihn dann über eine Ethernet- oder USB-Verbindung auf Ihrer Real-Time-Hardware bereit.

 

Abbildung 2: Verwalten Sie LabVIEW-Programme (VIs) und ordnen Sie diese mit dem LabVIEW Projekt-Explorer Real-Time-Zielsystemen zu.

Die Entwicklung von Real-Time-Programmen mit LabVIEW ist fast identisch mit der Entwicklung von Standard-LabVIEW-Anwendungen für Ihren PC. In der Palette der Real-Time-VIs sind mehrere zusätzliche Funktionen enthalten, die speziell für Real-Time-Systeme geeignet sind, darunter:

  • Watchdog-Funktionen für den automatischen Neustart einiger Hardware-Ziele, wenn Ihr Programm nicht mehr ausgeführt wird
  • Funktionen zur deterministischen Datenübertragung zwischen Teilen eines Rea-Time-Programms
  • Dienstprogramme zur Konfiguration der Lastverteilung auf Systemen mit mehreren CPU-Kernen
  • Timing-Funktionen zur präzisen Steuerung der Ausführung von Schleifen in Ihren Real-Time-Programmen

Um Ihren Programmcode in LabVIEW Real-Time auf Ihrer Hardware zu testen, klicken Sie einfach auf den Ausführen-Pfeil, und Ihre Anwendung wird auf der Real-Time-Hardware bereitgestellt und ausgeführt. Sie können die standardmäßigen Fehlerbehandlungs-Tools von NI wie Highlight-Funktion, Einzelschritt und Haltepunkte von Ihrem Entwicklungscomputer aus nutzen, auch wenn Ihr Real-Time-Programm tatsächlich auf dem Real-Time-Zielsystem ausgeführt wird.

Wenn Sie Ihr Real-Time-Programm fertiggestellt haben, können Sie eine ausführbare Datei in LabVIEW erstellen und diese als Startanwendung auf Ihre Real-Time-Hardware herunterladen. Nach dem Neustart Ihrer Real-Time-Hardware wird Ihr Programm automatisch zuverlässig und eigenständig ausgeführt.

LabVIEW Real-Time: Zuweisung von Prioritäten zu parallelen Programmcodeabschnitten und zur Multicore-Verarbeitung

Das Modell zur Datenflussprogrammierung in LabVIEW macht Sie von der sequenziellen Architektur textbasierter Programmiersprachen unabhängig. Da die Ausführungsreihenfolge durch den Datenfluss zwischen den Nodes bestimmt wird, können Sie problemlos Anwendungen erstellen, die mehrere Vorgänge parallel ausführen. Darüber hinaus ermöglicht LabVIEW die einfache Zuweisung von Thread-Prioritäten mithilfe der zeitgesteuerten Schleifenstruktur. Wie unten dargestellt, verfügt jede Schleife über eine konfigurierbare Timing-Quelle, Periode, Priorität und vieles mehr.

Abbildung 3: Legen Sie die Priorität und Prozessorzuweisung verschiedener Programmcode-Abschnitte mithilfe der zeitgesteuerten LabVIEW-Schleifenstruktur fest. 

LabVIEW Real-Time eignet sich für die Multicore-Verarbeitung und ordnet parallele Abschnitte des Programmcodes automatisch einzelnen OS-Threads zu, so dass diese nicht mehr manuell erstellt und verwaltet werden müssen. Standardmäßig werden diese Threads automatisch auf die auf Ihrer Real-Time-Hardware verfügbaren CPUs verteilt.

Um die Leistung und Zuverlässigkeit eines Real-Time-Systems weiter zu steigern, können Sie bei Bedarf auswählen, dass zeitgesteuerte Schleifen bestimmten Prozessorkernen manuell zugewiesen werden. So lässt sich beispielsweise ein Prozessorkern für die Ausführung einer zeitkritischen Schleife reservieren und von weniger wichtigen Tasks, die auf anderen Kernen ausgeführt werden, isolieren.

Option zur Problembehandlung: Fehlerbehandlung mit dem Real-Time Trace Viewer

Zur erweiterten Fehlerbehandlung im Multicore-Bereich können Sie mit dem Real-Time Trace Viewer die Leistung Ihrer LabVIEW- oder LabWindows/CVI-Real-Time-Programme überprüfen, ohne die Ausführung des Programmcodes anhalten oder pausieren zu müssen. Mit geringfügigen Änderungen an Ihrem Programmcode können Sie die Leistung Ihrer Anwendung in einer Datei protokollieren und diese zur Betrachtung und Analyse an einen Host-Computer senden. Der Trace-Tool-Viewer stellt die Ausführung von Programmcode in mehreren Threads grafisch dar und hebt dabei Thread-Swaps, Mutexe und Speicherzuweisungen hervor. Mit dem Real-Time Trace Viewer können Sie die Leistungsfähigkeit von Anwendungen optimieren, indem Sie unerwünschte Ausführungsmerkmale und schwer zu findende Laufzeitprobleme identifizieren.

Entwicklungsoptionen für C und C++

Wenn Ihr Unternehmen C oder C++ als Standard verwendet, können Sie die LabWindows/CVI-Entwicklungsumgebung oder andere Entwicklungsumgebungen nutzen. Bitte beachten Sie, dass LabWindows/CVI Real-Time nur die Real-Time-PXI-Controller unterstützt, während Zielsysteme, die NI Linux Real-Time verwenden, wie z. B. CompactRIO-Controller, quelloffen sind, sodass Sie die Entwicklungstools Ihrer Wahl verwenden können. Weitere Informationen zur Verwendung von C/C++ Development Tools für Linux-Real-Time finden Sie unter Jetzt starten mit der C/C++-Entwicklung für NI Linux Real-Time.

Wählen Sie eine NI-Hardwareplattform und I/O-Module aus.

Alle Real-Time-Hardwareplattformen von NI basieren auf einer gemeinsamen Architektur. Das bedeutet, dass Programme, die Sie mit LabVIEW Real-Time schreiben, mit nur geringfügigen Änderungen oder sogar ohne Änderungen auf verschiedenen NI-Hardwareplattformen funktionieren. Konkret verfügt jede Hardware-Plattform über handelsübliche Computerkomponenten wie Prozessor, RAM, nichtflüchtigen Speicher und eine I/O-Bus-Schnittstelle. Einige Hardwareplattformen bieten ein benutzerprogrammierbares FPGA, das Sie mit dem LabVIEW FPGA Module programmieren können.

PXI (PCI-Erweiterungen für Messgeräte)

Die dem Branchenstandard entsprechende PXI-Plattform setzt sich aus einem robusten Chassis mit integrierten Timing- und Trigger-Leitungen, einem integrierten Controller und steckbaren I/O-Modulen zusammen. Serielle, USB-, Gigabit-Ethernet- und GPIB-Ports werden ebenfalls vom Controller erstellt. PXI-Real-Time-Hardware kann entweder mit LabVIEW Real-Time oder LabWindows/CVI Real-Time programmiert werden.

Wenn Sie einen vorhandenen PXI-Controller unter Windows haben, den Sie in einen Real-Time-Controller umwandeln möchten, können Sie eine LabVIEW Real-Time-Zielsystemlizenz erwerben, um Ihren Controller umzurüsten, oder sogar ein Dual-Boot-System einrichten.

Mithilfe des online PXI Advisors können Sie Ihr eigenes PXI Real-Time-System mit Controller, Chassis, I/O-Modulen und Software zusammenstellen.


Abbildung 4: PXI-Hardware bietet eine robuste, leistungsstarke Option für Ihre Real-Time-Projekte.

NI PXI-Hardware kommt häufig bei leistungsstarken Real-Time-Systemen zum Einsatz, z. B. bei Hardware-in-the-Loop-Tests von elektronischen Steuergeräten und bei der Schwingungsanalyse für Anwendungen zur Maschinenzustandsüberwachung. Wenn Sie ein Real-Time-System von PXI verwenden, können Ihre Anwendungen auf erweiterte Timing- und Synchronisations-Hardwarefunktionen zugreifen, die ein präzises Triggern von I/Os und die Synchronisation von mehreren Modulen vereinfachen.

CompactRIO

CompactRIO kombiniert einen Real-Time-Prozessor, ein FPGA und I/O-Module der C-Serie und ist sowohl im Gehäuse- als auch im Platinenformat erhältlich. Darüber hinaus verfügt der Controller über serielle, USB- und Ethernet-Ports.

Sie können Ihr eigenes CompactRIO-System mit Controller, I/O-Modulen und Software mithilfe des CompactRIO Advisors online zusammenstellen.

 

Abbildung 5: Die CompactRIO-Gehäusecontroller sind flexibel, robust und tragbar und eignen sich für Real-Time-Anwendungen.

Sie können den Prozessor auf CompactRIO-Controllern mit LabVIEW Real-Time oder einem C/C++-Entwicklungstool Ihrer Wahl programmieren. Außerdem können Sie FPGA-Programmcode mit LabVIEW FPGA entwickeln. Für den Zugriff auf I/O-Daten auf dem Prozessor können Sie die NI-DAQmx-API, die branchenführende Programmier-API von NI für Messungen, oder die NI Scan Engine nutzen Alternativ kann mit LabVIEW FPGA direkt auf Daten aus dem FPGA zugegriffen werden. 

 

Abbildung 6: Die heterogene Architektur von CompactRIO umfasst einen Real-Time-Prozessor, ein rekonfigurierbares FPGA und I/O.

CompactRIO-Hardware kommt häufig bei industriellen Anwendungen wie Zustandsüberwachung, HIL-Tests, Pardware-in-the-Loop-Tests, Tests physikalischer Systeme und Maschinensteuerung zum Einsatz.

CompactRIO-Platinencontroller, wie z. B. der CompactRIO Single-Board-Controller (sbRIO), verfügen über dieselbe Architektur wie die CompactRIO-Gehäusecontroller, haben aber keine robuste Verpackung und einen kleineren Formfaktor.

Abbildung 7: CompactRIO-Platinencontroller verfügen über dieselbe Architektur wie die CompactRIO-Gehäusecontroller, haben jedoch einen kleineren Formfaktor.

Anwendungen mit hohem Volumen, die Flexibilität, Zuverlässigkeit und hohe Leistung voraussetzen, profitieren von CompactRIO-Single-Board-Controllern oder System-On-Modulen.