Verwendung des NI CompactRIO Scan Mode mit NI LabVIEW

Überblick

Das LabVIEW 8.6 Real-Time Module führte leistungsstarke neue Funktionen für die Programmierung von CompactRIO-Hardware ein. Diese reduzieren die Entwicklungszeit und Komplexität und der Anwender profitiert von neuen Werkzeugen zur Überwachung und Wartung von CompactRIO-Anwendungen. Bei CompactRIO handelt es sich um einen leistungsstarken Programmable Automation Controller (PAC), der sich durch einen Field-Programmable Gate Array (FPGA), welcher das Herzstück seiner Architektur bildet, von anderen Controllern abhebt. Grob gesagt handelt es sich bei FPGAs um wiederprogrammierbare Siliziumchips. FPGAs bieten die Leistung und Zuverlässigkeit anwenderdefinierte Hardware und sind gleichzeitig so flexibel wie ein softwaredefiniertes System. Bisher konnten Entwicklungsingenieure FPGAs nur dann nutzen, wenn sie auch Experten in VHDL und anderen Hardwarebeschreibungssprachen waren. LabVIEW ermöglicht es nun auch Anwendern ohne diese Kenntnisse, von FPGAs zu profitieren. LabVIEW ist eine intuitiv verwendbare grafische Programmiersprache mit hunderten integrierter Funktionen für Steuerung, Regelung, Analyse, Kommunikation und Datenprotokollierung. CompactRIO ist vollständig mit LabVIEW programmierbar, einschließlich FPGA, Echtzeitprozessor und HMI (Human-Machine Interface).

Mit dem CompactRIO Scan Mode kann man auf jedes I/O-Modul direkt in LabVIEW Real-Time zugreifen und Anwendungen ohne FPGA-Programmierung implementieren oder mit LabVIEW FPGA maximale Flexibilität und Leistung erreichen. Darüber hinaus lassen sich neue Testpanels und „I/O Forcing“ für eine schnelle Inbetriebnahme einsetzen. Außerdem steht anspruchsvolle Fehlerbehebung zur Verfügung und die Systemleistung kann überwacht werden.

Inhalt

Reduzierung der Entwicklungszeit und der Komplexität

Abb. 1: Der CompactRIO Scan Mode bietet Zugriff auf I/Os direkt in LabVIEW Real-Time und in Host-VIs ohne programmieren oder kompilieren zu müssen.

Vor der Version LabVIEW 8.6 erfolgte der Zugriff auf CompactRIO-I/O über die Programmierung des FPGA und anschließender Verwendung von LabVIEW FPGA Interface VIs in LabVIEW Real-Time. Der CompactRIO Scan Mode erkennt I/O-Module automatisch und fügt sie dem LabVIEW-Projekt hinzu. I/O-Variablen können dann per Drag and drop in LabVIEW Real-Time und auf Blockdiagrammen von Host-VIs abgelegt werden. Danach kann man umgehend skalierte, kalibrierte I/O-Daten ohne jede FPGA-Programmierung oder -Kompilierung lesen und schreiben (siehe Abb. 2).


[+] Bild vergrößern

Abb. 2: Per Drag and drop können I/O-Variable im Blockdiagramm abgelegt werden, so dass direkter Zugriff auf I/Os in LabVIEW Real-Time möglich ist.

Die NI Scan Engine, eine Komponente von LabVIEW Real-Time, aktualisiert die Werte der I/O-Variablen mit einer Rate, die der Anwender festlegt (bis zu 1 kHz). Alle Kanal-Scans sind hardwaregetaktet und die Module untereinander synchronisiert. Der Anwender kann die Scan Enginie im LabVIEW-Projekt oder programmatisch mit einer integrierten VI-Bibliothek konfigurieren. Die Scan Engine bietet darüber hinaus einen Zeitgeber für zeitgesteuerte Schleifen, so dass Programmcode mit I/O-Updates synchronisiert werden kann und Steuer- und Regelanwendungen mit wenig Jitter möglich werden I/O-Variable können mit Alias-Namen versehen werden, um eine zusätzliche Abstraktionsschicht vom physikalischen I/O-Kanal zu schaffen. Darüber hinaus stehen für I/O-Variable und Alias-Namen lineare und Quadratwurzelskalierung zur Verfügung.

Der CompactRIO Scan Mode ergänzt bestehende digitale Module der C-Serie von NI mit acht Kanälen ohne zusätzlichen Programmieraufwand um Funktionalität für den Einsatz als Counter, Inkrementaldrehgeber und für die Pulsweitenmodulation (PWM). Diese speziellen digitalen Funktionen können im LabVIEW-Projekt konfiguriert werden. Aufgrund der höheren geforderten Genauigkeit und Geschwindigkeit laufen sie auf dem FPGA. Ohne Kompilierung können Flankenzählungen mit bis zu 1 MHz, Pulsweiten- und Frequenzmessungen, Quadrature Decoding und PWM-Regelung vorgenommen werden.

Zählerspezifische Funktionen

    • Zählvorgänge mit 1 MHz auf acht Kanälen
    • 32-bit-Zählerregister mit programmierbarem Zählendwert
    • Konfigurierbarer Zählendwert und Verhalten bei Überlauf
    • Konfigurierbare Flankenzählung (steigend, fallend oder beides), Quelle und Gatter
    • Perioden-, PWM- und Frequenzmessungen mit konfigurierbarer Zeitbasis

Quadrature-spezifische Funktionen

    • Max. Quadrature-Zählerwert von 1 MHz
    • 32-bit-Zählerregister
    • 32-bit-Register für Geschwindigkeitsmessungen
    • Konfigurierbare Zeitbasis für Geschwindigkeitsmessungen (256 µs, 512 µs, 16384 µs oder 32768 µs)
    • X4-Kodierung
    • Zwei Quadrature-Kanäle mit „A+B+Index”-Eingängen pro Modul
    • Wählbare Polarität des Encoders

PWM-spezifische Funktionen

    • Acht Ausgangskanäle
    • Tastverhältnis und Perioden kanalweise konfigurierbar
    • Konfigurierbare Frequenzperiode (1 Hz, 50 Hz, 250 Hz, 500 Hz, 1 kHz, 5 kHz, 10 kHz oder 20 kHz)

Einfache Installation, Fehlerbehebung und Überwachung

Der NI Distributed System Manager bietet ein zentrales Werkzeug für die Überwachung von Systemen im Netzwerk und die Verwaltung verteilter Daten im Netzwerk. Der neue Systemmanager stellt mithilfe des CompactRIO Scan Mode Testpanels für CompactRIO-Module bereit. Sobald das System im Netzwerk verfügbar ist, hat der Anwender Zugriff auf Echtzeit- und historische I/O-Daten, so dass Verbindungen und die Signalintegrität schnell verifiziert werden können. Neben Testpanels gewährt der Systemmanager auch Einblicke in die Speicher- und Prozessorauslastung von CompactRIO-Controllern.


[+] Bild vergrößern

Abb. 3: Der NI Distributed System Manager unterstützt Anwender durch die Ergänzung von CompactRIO durch Testpanels bei der schnelleren Inbetriebnahme.

Der CompactRIO Scan Mode stellt I/O Forcing bereit, ein Fehlerbehebungswerkzeug, mit dem man den Wert einer I/O-Variablen außer Kraft setzen kann, ohne die Echtzeitanwendung anzuhalten oder zu verändern. Eingänge können durch das I/O Forcing vorbelegt werden, um die Antwort der Anwendung ohne physikalische Stimulation zu testen. Gleichermaßen können Ausgangswerte so vorbelegt werden, dass sie die Ausgangswerte des Programms ignorieren. Kanalwerte können mit dem Systemmanager oder den neuen VIs für das I/O Forcing erzwungen werden.

LabVIEW FPGA und CompactRIO Scan Mode

Mit dem Modul LabVIEW Real-Time 8.6 oder später kann man entweder mit dem CompactRIO Scan Mode oder mit LabVIEW FPGA auf jedes Modul und dessen Kanäle zugreifen. Mithilfe von LabVIEW FPGA lassen sich anwenderdefinierte Triggerung, hardwarebasierte Analyse und Signalverarbeitung oder Hochgeschwindigkeits-Analog-Streaming implementieren. Um I/O-Module im LabVIEW FPGA Mode zu nutzen, zieht man das Modul per Drag and drop auf den FPGA im LabVIEW-Projekt, so dass es aus dem Scan-Modus entfernt wird. Dann werden die Module mit LabVIEW FPGA programmiert und mit I/O-Variablen I/Os von den verbleibenden Modulen gelesen bzw. darauf geschrieben (siehe Abb. 4).


[+] Bild vergrößern

Abb. 4: Dieses VI greift mit dem CompactRIO Scan Mode auf I/Os zu, während es die Fast-Fourier-Transformation eines Beschleunigungseingangs mit LabVIEW FPGA berechnet.

Wird der LabVIEW-FPGA-Modus auf einem oder mehreren Modulen eingesetzt, wird die Logik des CompactRIO Scan Mode, genannt RIO Scan Interface, mit dem LabVIEW FPGA VI in eine einzelne FPGA-Anwendung kompiliert. Wenn kein Modul für die Verwendung des Scan-Modus konfiguriert wird, ist die RIO Scan Interface nicht in der Kompilation integriert.

Kommunikation zwischen LabVIEW FPGA und LabVIEW Real-Time mit I/O-Variablen

Mithilfe des LabVIEW 2009 Real-Time Module können Anwender benutzerdefinierte I/O-Variablen erstellen, um die Kommunikation zwischen Echtzeit- und FPGA-VIs zu ermöglichen. So können Daten vom FPGA-VI über die Scan Engine integriert und in LabVIEW Real-Time mit derselben I/O-Variablen-Programmierschnittstelle wie für die I/O des Scan Mode ausgelesen werden. Diese I/O-Variablen können zudem Daten von einem Echtzeit-VI an den FPGA übertragen, allerdings nur in eine Richtung. Des Weiteren werden Methoden bereitgestellt, um den LabVIEW-FPGA-Code mit den Updates der RIO-Scan-Interface-I/O zu synchronisieren.

Nutzt man beispielsweise ein CompactRIO-System mit LabVIEW FPGA zur Überwachung eines Beschleunigungsmessers bei 50 kHz und wird der Effektivwert während der Ausführung berechnet, dann kann die Effektivwertberechnung auf dem FPGA mit der Scan-Mode-Logik des FPGA synchronisiert und in ein anwenderdefinierte I/O-Variable geschrieben werden, auf die anschließend in einem LabVIEW-Real-Time-VI zugegriffen wird.

Wie funktioniert der CompactRIO Scan Mode?

Der CompactRIO Scan Mode wird durch zwei Technologien ermöglicht: NI Scan Engine und RIO Scan Interface. Bei letzterem handelt es sich um ein Set von FPGA-IP (Intellectual Property) von National Instruments, das auf den CompactRIO-FPGA heruntergeladen wird und für Erkennung, Timing, Synchronisation und Kommunikation von I/O-Modulen verantwortlich ist. Das RIO Scan Interface führt eine hardwaregetaktete Scan-Schleife aus, welche die physikalischen I/O-Werte aktualisiert. Zwei DMA-Kanäle werden für den Transport von I/O-Daten zwischen FPGA und Echtzeitbetriebssystem verwendet. Auch die vorgefertige spezielle Digitalfunktionalität ist ein Teil des RIO Scan Interface. Weitere Informationen über das RIO Scan Interface bieten die Links unter „Weiterführende Informationen“.

Die NI Scan Engine ist ein Bestandteil von LabVIEW Real-Time, deren Priorität etwas höher angesiedelt ist als zeitkritisch oder zwischen zeitkritischen und getakteten Strukturen liegt. Dies kann der Anwender auswählen. Jedes Mal, wenn das RIO Scan Interface den aktuellen I/O-Scan abgearbeitet hat, fügt LabVIEW die I/O-Variable einem globalen Speicherabbild der Scan Engine hinzu und aktualisiert die Werte aller I/O-Variablen auf einmal. Allerdings kann jeder I/O-Variablenknoten entweder für den gescannten oder den direkten Zugriff konfiguriert werden. Standardmäßig konfiguriert LabVIEW die I/O-Variablenknoten für die Verwendung gescannter I/O, die dann das Speicherabbild der Scan Engine für die Ausführung nicht sperrender I/O-Lese- und Schreibvorgänge nutzt (siehe Abb. 5). Der direkte I/O-Zugriff umgeht das Speicherabbild und kommuniziert direkt mit dem I/O-Gerätetreiber, um sperrende I/O-Lese- und -Schreibvorgänge auszuführen (siehe Abb. 5). Die NI Scan Engine veröffentlicht außerdem die I/O-Variablen im Netzwerk, so dass sie Host-Anwendungen, Testpanels und I/O Forcing zum Lesen und Schreiben zur Verfügung stehen. Die Scan Engine, und nicht die Engine der LabVIEW-Umgebungsvariablen, übernimmt die Netzwerk-Veröffentlichung der I/O-Variablen, die im Dialogfeld zu den Eigenschaften der I/O-Variablen deaktiviert werden können.

Wird LabVIEW FPGA mit dem CompactRIO Scan Mode (einige Module mit dem CompactRIO Scan Mode und andere mit dem LabVIEW FPGA Mode) verwendet, werden das RIO Scan Interface und das FPGA-VI in einen einzigen Bitstream kompiliert und auf den FPGA übertragen. Wenn man alle Module aus dem Scan-Modus entfernt, wird das RIO Scan Interface nicht in den Bitstream kompiliert. Der Platz, den das RIO Scan Interface auf dem FPGA einnimmt, wird mit der Anzahl der Module, die den Scan Mode nutzen, skaliert.


[+] Bild vergrößern

Abb. 5: Wie funktioniert der CompactRIO Scan Mode?

Wann sollte der CompactRIO Scan Mode verwendet werden?

Der CompactRIO Scan Mode ist für Anwendungen konzipiert, die synchrone I/O-Updates mit Raten bis zu 1 kHz erfordern. Die vom Scan-Modus bereitgestellte spezielle Digitalfunktionalität erlaubt die Umwandlung bestehender achtkanaliger I/O-Module in ein anspruchsvolles PWM-, Zähler- oder Quadraturencoder-Modul. Dank des I/O Forcing und der Testpanel-Funktionalität des Systemmanagers lässt sich der Scan-Modus auch für die erste Inbetriebnahme, die Überwachung der Systemleistung und anspruchsvolle Fehlerbehebung einsetzen. Bei Anwendungen mit höheren Leistungsansprüchen, wie etwa Analog-Streaming bei fast 1 MHz, Hochgeschwindigkeits-PID-Regelschleifen über 1 kHz, anwenderdefinierter Hardwareanalyse und Signalverarbeitung oder I/O-Modulen, die der Scan Mode nicht unterstützt, sollte das LabVIEW FPGA Module mit Scan Mode zum Einsatz kommen. Mit ihm lässt sich auch die Verarbeitung vom Echtzeitcontroller auslagern.

Aufgrund des Platzbedarfs des RIO Scan Interface auf dem FPGA wird der Scan-Modus von Controllern unterstützt, die unter dem Echtzeitbetriebssystem VxWorks RTOS mit FPGAs mit mindestens 2 Mio. Gattern laufen.

Hinsichtlich der Leistung muss man zugunsten des CompactRIO Scan Mode ein paar Kompromisse eingehen. So unterstützt die spezielle Digitalfunktionalität etwa nur bis zu 1-MHz-Zähler anstatt 20-MHz-Zähler, die mit LabVIEW FPGA erreicht werden können. Die Scan Engine nutzt Systemressourcen, darunter Platz auf dem FPGA, zwei DMA-Kanäle, Speicherplatz und eine gewisse CPU-Zeit, die proportional zur Scan-Rate zunimmt. Der Platz, den das RIO Scan Interface auf dem FPGA einnimmt, wird mit der Anzahl der Module, die den Scan Mode nutzen, skaliert.

Konfiguration eines CompactRIO-Systems mit Scan-Mode-Unterstützung

Um den Scan-Modus einzusetzen, kann ein System mithilfe des CompactRIO Advisor konfiguriert werden. Es sollte mindestens aus folgenden Bestandteilen bestehen:

- NI LabVIEW 8.6 Development System für Windows (oder neuer)

- NI LabVIEW Real-Time Module 8.6 (oder neuer)

Zusammenfassung

LabVIEW Real-Time bietet eine Reihe leistungsstarker neuer Funktionen, welche Entwicklungszeit und Komplexität von CompactRIO-Anwendungen reduzieren sollen. Mit dem CompactRIO Scan Mode hat der Anwender Zugriff auf I/O in LabVIEW Real-Time und Host-Anwendungen ohne FPGA-Programmierung. Gleichzeitig besteht die Möglichkeit, den FPGA direkt für die höchsten Anforderungen zu programmieren. Der NI Distributed System Manager und das I/O Forcing erschließen CompactRIO auch Testpanels und anspruchsvolle Fehlerbehebung, so dass die Überwachung und Wartung von CompactRIO-Anwendungen zum Kinderspiel wird.

Weiterführende Informationen