LabWindows/CVI Real-Time: ablaufkritische Zuverlässigkeit und Determinismus für ANSI-C-Programmierer

Überblick

Bei der Auswahl von Lösungen in der Mess- und Prüftechnik muss zwischen Anwendungen, die Echtzeitverarbeitung erfordern und jenen, die diese nicht benötigen, unterschieden werden. Dieses Dokument definiert Echtzeitsysteme und diskutiert Anwendungsbereiche, in denen eine Echtzeitlösung die beste Wahl ist. Soll ein Echtzeitsystem eingesetzt werden, dann kommt das LabWindows/CVI Real-Time Module in Betracht, die ANSI-C-Echtzeitsoftware von National Instruments, welche die integrierten Prüf- und Messbibliotheken von LabWindows/CVI mit der Zuverlässigkeit und dem Determinismus der Echtzeitverarbeitung kombiniert.

Inhalt

Was ist ein Echtzeitsystem?

Echtzeitsysteme werden als Systeme definiert, die gewissen Einschränkungen beim Timing unterliegen, um erfolgreich zu arbeiten. Sie haben nicht nur deterministische Timing-Eigenschaften, sondern sind auch zuverlässiger als Standardsoftwaresysteme, die z. B. auf Windows laufen. Ein Airbag-System in einem Auto benötigt beispielsweise ein Echtzeitsystem, damit ein Aufprall erkannt und der Airbag innerhalb einer bestimmten Zeitspanne ausgelöst wird. Geht der Airbag nicht rechtzeitig auf, könnten Fahrer oder Beifahrer ernsthaft verletzt werden. Deshalb muss ein Airbag-System zuverlässig genug sein, um auf einen Aufprall in jedem Fall zu reagieren. Außerdem muss es den nötigen Determinismus bieten, damit die Reaktion innerhalb eines bestimmten Zeitraums erfolgt. Ein sehr häufiger Irrtum im Zusammenhang mit der Leistung von Echtzeitsystemen ist die Annahme, dass sie die Ausführungsgeschwindigkeit eines Programms erhöht. Echtzeitfähig bedeutet nicht zwangsläufig "schnell". Prüfdaten mit 1 MS/s zu erfassen, erfordert nicht unbedingt Echtzeitsoftware, aber für die Steuerung des Autopiloten eines Flugzeugs ist sehr wohl Echtzeitsoftware nötig, um genaue Updates über Höhe, Richtung und Geschwindigkeit des Flugzeugs zu geben, selbst wenn diese nur wenige Male pro Sekunde geliefert werden müssen (Abb. 1). Manche Echtzeitsysteme sind tatsächlich schnell, doch viele werden speziell dafür konzipiert, über lange Zeiträume hinweg zuverlässig zu arbeiten, wie z. B. Umwelttestsysteme die wochen-, monate- oder jahrelang dauern.

 

Abbildung 1:  Bei einem Autopilotsystem ist ein Echtzeit-Regelsystem notwendig, um das Flugzeug zuverlässig und deterministisch steuern zu können.

Echtzeitleistung lässt sich mithilfe der Hardware, der Software oder einer Kombination von beidem erzielen. Zur Implementierung eines Echtzeitsystems mit Hardware benötigt man eine genaue taktgebende Hardwareschaltung. Datenerfassungsgeräte von NI besitzen beispielsweise einen integrierten Schaltkreis, der die Erfassungsrate reguliert. Dank dieser Technologien ist der PC-Prozessor nicht am Aufrufen der Daten beteiligt. Deshalb kann die Anwendung auf jedem beliebigen Betriebssystem genaues I/O-Timing erreichen. Alternativ dazu können ein Echtzeitbetriebssystem (Real-Time Operating System, RTOS) und die Programmierumgebung eine Echtzeit-Softwarelösung bilden. Eine solche kombinierte Lösung ist flexibler und verfügt über bequemere Fehlerbehebungswerkzeuge, als Systeme, die ihre Echtzeitfähigkeit nur aus der Hardware beziehen. Eine Lösung mit Echtzeitsoftware ermöglicht die Integration der Entscheidungsfindung in Echtzeit in Anwendungen mithilfe erweiterter Algorithmen, wie etwa PID-Regelung (Proportional Integral Derivative), so dass der Anwender nicht auf vordefinierte Hardwareschaltungen angewiesen ist. Darüber hinaus kombinieren Hybridsysteme Echtzeithardware und -software, so dass sich sowohl das präzise Timing von echtzeitfähiger Hardware als auch die Flexibilität von Echtzeitsoftware erzielen lässt.

Siehe auch:
Website zu LabWindows/CVI Real-Time

Merkmale von Betriebssystemen

Merkmale von Betriebssystemen

Zwischen einem universellen und einem Echtzeitbetriebssystem bestehen folgende Unterschiede: Universelle Betriebssysteme wie Windows, Mac OS und Linux sind dafür konzipiert, verschiedene Anwendungen parallel auszuführen, so dass jede davon eine gewisse Verarbeitungszeit zugewiesen bekommt. Diese Betriebssysteme müssen auf Interrupts von Peripheriegeräten wie Tastaturen und Mäusen reagieren. Der Anwender hat wenig Einfluss darauf, mit welcher Priorität diese Aufgaben vom Prozessor behandelt werden. Tasks mit hoher Priorität werden unter Umständen erst nach denen mit geringerer Priorität ausgeführt. Das führt zu unbegrenztem Jitter, was bedeutet, dass nicht garantiert werden kann, dass ein spezieller Software-Task innerhalb eines bestimmten Zeitraums abgeschlossen wird.

Auch bei der Zuverlässigkeit gibt es wesentliche Unterschiede zwischen universellen und echtzeitfähigen Betriebssystemen. Die Unmengen von Programmcode, die erforderlich sind, um ein universelles Betriebssystem zu implementieren, und die große Anzahl parallel ablaufender Tasks und Programme (z. B. automatische Updates, Virenprüfungen und Updates der Benutzeroberfläche) erhöhen die Wahrscheinlichkeit gelegentlicher Computerabstürze. Echtzeitbetriebssysteme hingegen implementieren nur eine minimale Menge an Code und Hintergrundprogrammen, um die Zuverlässigkeit zu erhöhen. Dies ist möglich, da sich Echtzeitbetriebssysteme ausschließlich auf die Ausführung kritischer Anwendungen konzentrieren, nicht auf nebensächliche Operationen wie die Verwaltung der Oberfläche, Interrupts von Maus und Tastatur und die Verwaltung von Logins.

Universelle Betriebssysteme eignen sich jedoch hervorragend für zahlreiche Prüf- und Messanwendungen, z. B. in der Datenerfassung, der Offline-Analyse und der Datendarstellung. Dank Technologien wie etwa Bus-Master (zeitweilige Kontrolle über den Bus über eine Adapterkarte), DMA-Datentransfer (Direct Memory Access) und Datenpufferung können I/O-Geräte Daten erfassen und sie automatisch zum RAM übertragen, ohne den Hauptprozessor und das Betriebssystem in Anspruch zu nehmen. Ist die Anwendung bereit für den Empfang der Daten, werden diese vom RAM abgerufen, ohne den Betrieb der Hardware zu unterbrechen. Nach der Datenerfassung wird gewöhnlich ein universelles Betriebssystem für die Offline-Analyse eingesetzt, da es meist keine strengen Zeitvorgaben gibt, wann die Ausführung aufhören muss. Schließlich macht die hohe Bedeutung der Benutzeroberfläche diese universellen Betriebssysteme zum idealen Werkzeug für die visuelle Darstellung von Daten, besonders im Fall der umfangreichen 3D-Grafik, die in modernen Betriebssystemen zur Verfügung steht.

Dagegen ermöglichen Echtzeitbetriebssysteme die Priorisierung von Tasks, so dass die wichtigste Aufgabe immer zuerst ausgeführt wird. Darüber hinaus werden Echtzeitbetriebssysteme aufgrund ihrer Zuverlässigkeit für die Implementierung von Anwendungen genutzt, die eine erweiterte Betriebsdauer oder Stand-alone- bzw. Headless-Betrieb erfordern. Echtzeitbetriebssysteme sind nötig, wenn der Prozessor an Operationen wie etwa Regelungsanwendungen beteiligt ist. Diese Applikationen erfordern das rechtzeitige Treffen von Entscheidungen, die auf eingehenden Daten beruhen. Gängige PID-Regelanwendungen müssen beispielsweise einen einzigen Messwert erfassen (z. B. Geschwindigkeit), dann basierend auf dem gemessenen Signal und einem vom Anwender vorgegebenen Wert einen PID-Algorithmus ausführen und schließlich den richtigen Reaktionswert (z. B. Gaspedal) ans I/O-Gerät ausgeben (Abb. 2). Bei den genannten Anwendungen muss die Software im Regelkreis eingebunden sein. Daher benötigt man ein Echtzeitbetriebssystem, um eine Antwort innerhalb eines bestimmten Zeitrahmens zu garantieren. Der Software-Jitter im Echtzeitbetriebssystem ist begrenzt, so dass das Betriebssystem garantiert, dass eine Aufgabe innerhalb einer bestimmten Zeitspanne abgeschlossen wird.

 

Abbildung 2: Einfacher PID-Regler im geschlossenen Regelkreis

Einsatzbereiche für Echtzeitanwendungen

In der Automobil-, Industrie-, Verteidigungs- sowie Luft- und Raumfahrtbranche werden Echtzeitsysteme oft für Prüf-, Steuer- und Regelanwendungen eingesetzt. Prüfanwendungen reichen von Belastungstests von Flugzeugteilen über Zerstörungstests bis hin zu autonomen Messgeräten mit Stand-alone-Betrieb in abgelegenen Gebieten. Bei solchen kritischen Anwendungen darf der Computer nicht abstürzen, da die relevanten Daten unter Umständen nur ein paar Millisekunden lang auftreten, z. B. bei Zerstörungstests, oder, bei Umwelttests, monatelang überwacht werden müssen. Das Wiederholen solcher Tests ist sehr teuer oder gar unmöglich.

 Abbildung 3: Echtzeitfähige Softwarelösungen werden für zahlreiche Anwendungen benötigt, von zuverlässigen Prüf- bis hin zu Steuer- und Regelanwendungen sowie alles, was dazwischen vonnöten ist.

Vor allem bei Steuerung und Regelung sind Determinismus und Zuverlässigkeit unerlässlich. Bei Regelanwendungen wie z. B. Tempomaten müssen, basierend auf der gemessenen Geschwindigkeit und den Ergebnissen eines Regelalgorithmus wie etwa PID, genaue Updates an das Gaspedal gegeben werden. Automatisierungs- sowie industrielle Steuer- und Regelanwendungen erfordern deterministisches Timing, um die richtigen Bewegungsabläufe und Reaktionen während des Herstellungsprozesses zu gewährleisten.

Bei vielen anderen Anwendungen müssen Prüf-, Steuer- und Regelanwendungen eng integriert sein, so z. B. bei Funktionstests. Soll beispielsweise eine Computerfestplatte geprüft werden, wird erst der Controller der Festplatte einem Test unterzogen und Parameter wie Rotationsgeschwindigkeit und Armposition festgelegt. Erst wenn die passenden Steuer- und Regelsignale an die Festplatte übermittelt wurden, können Parameter wie Temperatur und Bitfehler geprüft werden. Auch für Hardware-in-the-Loop-Tests (HIL) ist die Integration von Prüf-, Steuer- und Regelanwendungen nötig. Beim Test einer elektronischen Steuereinheit müssen etwa erst reale Stimuli simuliert und dann die Reaktion darauf gemessen und validiert werden.

Herausforderungen bei der Entwicklung von prüf- und messtechnischen Echtzeitsystemen

Bei der Entwicklung von Echtzeitsystemen gibt es jedoch verschiedene Hürden zu überwinden. Die Programmierung von Embedded-Systemen erfordert Fachwissen und Kenntnisse von speziellen Werkzeugketten, Programmiertechniken und Integration von Hard- und Software. Anwender, die Echtzeitleistung benötigen, aber keine Erfahrung mit deren Entwicklung besitzen, müssen deshalb eine steile Lernkurve bewältigen. Darüber hinaus stehen zwar immer mehr echtzeitfähige Produkte zur Verfügung, Entwickler müssen jedoch noch beträchtlichen Aufwand in Integration und Programmierung investieren, damit Hardware und Software nahtlos miteinander arbeiten.

Eine weitere Herausforderung bei der Echtzeitentwicklung gilt es zu überwinden, wenn mit Anwendungen gearbeitet werden soll, die sowohl Prüf- als auch deterministische Steuer- und Regelaufgaben erfüllen sollen. Die Verwendung von separaten Werkzeugen für Prüfungen auf der einen sowie Steuerung und Regelung auf der anderen Seite erfordert zusätzliches Fachwissen und noch mehr Aufwand für die Integration, um die einzelnen Teile der Anwendung zu synchronisieren.

Vorteile von LabWindows/CVI Real-Time

LabWindows/CVI Real-Time bietet eine ideale Plattform, welche die Echtzeitprogrammierung, Hardwareintegration und Kombination von Prüf-, Steuer- und Regelaufgaben erleichtert. Darüber hinaus kann LabWindows/CVI auf seine bewährte Zuverlässigkeit bauen, die mit der Version A0 im Jahr 1987 ihren Anfang nahm. Seitdem wurde LabWindows/CVI immer wieder um die neuesten Programmiertechnologien wie etwa ActiveX und .NET ergänzt und bewahrte kontinuierlich seine Stabilität und Abwärtskompatibilität. LabWindows/CVI enthält I/O-Bibliotheken, erweiterte Analysebibliotheken und eine umfassende Suite an wissenschaftlichen Bedienelementen auf der Benutzeroberfläche. Damit ist es eine ideale Plattform für Prüf-, Steuer- und Regelaufgaben. Da LabWindows/CVI auf offenen ANSI-C-Standards basiert, lassen sich neue Anwendungen genauso einfach erstellen, wie auch bestehender Programmcode mit minimalen Änderungen auf echtzeitfähige Hardwarezielgeräte übertragen werden kann, während weiterhin die vertraute integrierte Entwicklungsumgebung LabWindows/CVI genutzt wird. Die Fähigkeit, bestehenden Code zu integrieren, verkürzt die Entwicklungszeit für Echtzeitanwendungen erheblich.

 Abbildung 4: LabWindows/CVI bietet eine integrierte Entwicklungsumgebung, die sich hervorragend für die Erstellung von Anwendungen eignet, die Hardware und Software kombinieren.

Da sich LabWindows/CVI Real-Time in Hardware von National Instruments integrieren lässt, ist die Entwicklung von Echtzeithardware genauso einfach wie die Erstellung von Windows-Zielsystemen. Die Verwendung bestehender Treiber von NI, wie etwa NI-DAQmx und NI-VISA, ermöglicht den Zugriff auf Tausende Datenerfassungsgeräte, ohne dass eigene Treiber für echtzeitfähige Zielgeräte entwickelt werden müssen oder Low-Level-Programmierung auf Registerebene erforderlich ist.

Wie bereits erwähnt, kann die Kombination von Prüf- mit Steuer- und Regelfunktionalität im selben System ein Problem darstellen. Dank seiner ca. 30-jährigen Erfahrung ist National Instruments jedoch in der Lage, eine Echtzeitplattform anzubieten, die eng gekoppelte Hardware und Software umfasst, welche die Entwicklung von Prüf-, Steuer- und Regelkomponenten mittels einer einzigen Entwicklungsumgebung ermöglicht. Mit Echtzeitlösungen von NI können der Determinismus und die Zuverlässigkeit von Echtzeitsoftware mit den hochgenauen Messungen von PXI- und PCI-Modulen verbunden werden.

Echtzeitfähige Hardwarezielsysteme und I/Os

LabWindows/CVI Real-Time Zielgeräte

Ein Echtzeitsystem setzt sich in der Regel aus einem Entwicklungsrechner, dem sogenannten Host-Rechner, und einem Ausführungsrechner, dem Echtzeitzielsystem, zusammen. Im Allgemeinen wird die Anwendung mit LabWindows/CVI auf dem Host-Computer entwickelt, der unter einem universellen Betriebssystem wie z. B. Windows läuft, dann über Ethernet auf das Echtzeitzielsystem geladen und dort ausgeführt (Abb. 5).

 Abbildung 5: Mit LabWindows/CVI Real-Time Echtzeitsysteme entwickeln, herunterladen und ausführen

LabWindows/CVI Real-Time unterstützt momentan zwei Echtzeitzielsysteme – PXI (PCI eXtensions for Instrumentation) und PCs. Bei PXI handelt es sich um eine robuste, PC-basierte Plattform für Mess- und Automatisierungssysteme. PXI kombiniert die Leistungsmerkmale des elektrischen Busses PCI mit dem solide konstruierten, modularen CompactPCI-Chassis im Eurocard-Format und ergänzt diese durch spezielle Busse für die Synchronisation. PXI ist eine äußerst leistungsfähige und zugleich kostengünstige Plattform für Mess- und Automatisierungssysteme. Ein typisches System besteht aus Chassis, Embedded-Controller und den jeweils ausgewählten I/O-Modulen. Der Controller übernimmt die gleiche Funktion wie ein Desktop-Prozessor, allerdings in einem robusten, industrietauglichen Formfaktor. Wird die LabWindows/CVI Anwendung als Echtzeitsystem verwendet, wird sie auf den Embedded-Prozessor des PXI-Controllers geladen. Während des Ablaufs greift die Anwendung auf Daten von den I/O-Modulen im System zu. Sobald die Anwendung eingesetzt werden kann, ist es möglich, den Entwicklungsrechner zu entfernen und das System "headless" zu betreiben, d. h. ohne Monitor, Tastatur oder Maus.

Abbildung 6: PXI-Systeme sind mit 4, 8 oder 18 Steckplätzen erhältlich.

Mit LabWindows/CVI Real-Time können auch Standard-Desktop-PCs als Zielsysteme dienen. Dadurch lassen sich zuverlässige und deterministische Anwendungen mit bestehender PC-Hardware erstellen. So profitieren Anwender von der neuesten PC-Desktop-Technologie, darunter PCI Express und Pentium 4 Prozessoren, und erreichen Echtzeitleistung auf unterschiedlicher PCI-Hardware.

Abbildung 7: Standard-PCs in Zielsysteme für LabWindows/CVI Real-Time umwandeln

Unterstützte I/O

Um wirklich von der Echtzeitunterstützung profitieren zu können, muss das System I/Os bieten. LabWindows/CVI unterstützt eine Vielzahl von I/Os von National Instruments, darunter auch Datenerfassungsgeräte, serielle Geräte, Digitizer, Funktionsgeneratoren, digitale Hochgeschwindigkeitsgeräte, DMMs, Switches und CAN-Controller. Die Kommunikation mit diesen Geräten wird durch die Gerätetreiber NI-DAQmx, NI-VISA, NI-CAN, NI-DMM, NI-Scope, NI-HSDIO und NI-Switch ermöglicht.


[+] Bild vergrößern 

Abbildung 8: Eine Reihe von I/O-Optionen von NI stehen für LabWindows/CVI Real-Time zur Verfügung.

Wichtige Eigenschaften

Mit der Einführung des Moduls LabWindows/CVI Real-Time können die Eigenschaften von LabWindows/CVI mit vielen neuen Echtzeitfunktionen genutzt werden, wie Hard- und Softwareintegration, Generierung von Echtzeitcode, direkte Ausführung auf Echtzeitzielsystemen über Ethernet, Echtzeit-Threading-Bibliotheken, Dateitransferprogramm, dezentraler Fehlerbehebung, Konfigurationen für den Measurement & Automation Explorer (MAX) und dem PID Control Toolkit.

Enge Integration von Hardware und Software

National Instruments bietet eine eng integrierte Echtzeitplattform, die kommerziell erhältliche Standardhard- und -softwarekomponenten bietet, die nahtlos zusammenarbeiten und so umfassende Lösungen bilden. Jedes echtzeitfähige Hardwarezielgerät nutzt Standardkomponenten wie einen Mikroprozessor, permanenten und nichtpermanenten Speicher, eine Schnittstelle für I/O-Busse sowie ein Echtzeitbetriebssystem. Die Embedded-Software umfasst ein Echtzeitbetriebssystem, Treibersoftware sowie eine spezielle Version der LabWindows/CVI Runtime-Engine. Da alle Einsatzplattformen von LabWindows/CVI Real-Time auf dieser gängigen Hardware- und Softwarearchitektur basieren, ist die Integration beider Komponenten unproblematisch.

 

Abbildung 9: National Instruments bietet eine umfassende Standardhard- und -softwareplattform für Echtzeitanwendungen.

Zusätzlich zur bereits erwähnten integrierten NI-DAQmx-Bibliothek bietet LabWindows/CVI auch den DAQ-Assistenten, eine interaktive Schnittstelle zur Treiberarchitektur für die Datenerfassung. Der DAQ-Assistent ermöglicht das interaktive Definieren einer Messaufgabe, das Ermitteln der messtechnischen Funktionalität des vom Anwender festgelegten Datenerfassungsgeräts sowie das automatische Erzeugen von C-Code-Modulen für die Datenerfassung. Die enge Integration des DAQ-Assistenten und der Treibersoftware NI-DAQmx mit LabWindows/CVI gibt Anwendern, die Datenerfassungsanwendungen ausführen, die effektivste und produktivste Methode zur Durchführung von Messungen in einer ANSI-C-Umgebung an die Hand.

 Abbildung 10: Erstellen einer Datenerfassungsaufgabe mit dem DAQ-Assistenten

LabWindows/CVI gehört neben NI LabVIEW zu den führenden Entwicklungsumgebungen bei der Gerätesteuerung und -anbindung, da es sich des Instrument Driver Network mit über 4.000 Gerätetreibern von mehr als 200 Anbietern bedient. Diese Treiber können genutzt werden, um Anwendungen für die Gerätesteuerung unkompliziert zu programmieren. Um die Gerätesteuerung noch effizienter zu gestalten, wurde in LabWindows/CVI der Instrumenten-I/O-Assistent integriert. Mithilfe des Instrumenten-I/O-Assistenten lässt sich Programmcode für die Kommunikation mit z. B. seriellen, Ethernet- und GPIB-basierten Geräten generieren, ohne dass dazu ein Gerätetreiber eingesetzt werden muss.

Dieser Assistent bietet eine komfortable Bedienoberfläche, über die das Prototypisieren von Anwendungen sowie die automatische Analyse von Geräteantworten schnell, da ohne jegliche Programmierung, von der Hand gehen. Sie können den erzeugten Programmcode in jede bereits vorhandene Anwendung importieren. So wird bei der Geräteanbindung und -kommunikation sowie der Analyse von als Zeichenketten empfangenen Daten wertvolle Zeit gespart.

Generierung von RTmain( )-Code

Mit RTmain-Code kann automatisch eine Codevorlage für Echtzeitanwendungen erstellt werden. Diese bietet einen bequemen Ausgangspunkt für die Ergänzung von Programmcode für das Initialisieren und Schließen. Die RTmain-Funktion wird automatisch geladen und danach auf einem echtzeitfähigen Zielsystem ausgeführt. Man kann die RTmain-Funktion aus dem Menüpunkt Edit » Insert Construct » RTmain auswählen und in die Anwendung einfügen.


[+] Bild vergrößern 

Abbildung 11: Mit dem Menüpunkt Insert Construct lassen sich automatisch RTmain-Code für die Initialisierung sowie eine Vorlage zum Einstieg in die Codeerstellung generieren.

 

Direkte Echtzeitentwicklung über Ethernet

Anwendungen lassen sich mithilfe des LabWindows/CVI Real-Time Select Target mit Optionsfenster über Ethernet direkt auf das echtzeitfähige Hardwarezielsystem übertragen. Diese Option ermöglicht die Spezifizierung des Zielsystems nach Gerätename oder IP-Adresse, ohne dass man die Entwicklungsumgebung LabWindows/CVI verlassen muss. Besteht Unsicherheit bezüglich der verfügbaren Zielsysteme oder müssen Hardwarekonfigurationen geändert werden, kann man den Measurement and Automation Explorer (MAX) starten und alle verfügbaren Zielsysteme im lokalen Subnetzwerk ansehen. Nach dem Start der Ausführung lädt LabWindows/CVI die Anwendung automatisch und kopiert sie über Ethernet auf das Echtzeitzielsystem.

Abbildung 12: Echtzeitanwendungen können direkt von LabWindows/CVI aus angesprochen und ausgeführt werden.

Echtzeit-Threading-Bibliotheken

Ein wichtiger Aspekt eines Echtzeitsystems ist die Fähigkeit, Thread-Prioritäten zu regeln, so dass Tasks mit höherer Priorität nicht von weniger wichtigen Aufgaben im System unterbrochen werden. LabWindows/CVI Real-Time gibt dem Anwender mit dieser Priorisierung die Kontrolle über die Ausführung von Tasks. Die Threading-Programmierschnittstelle von LabWindows/CVI stellt sieben verschiedene Thread-Prioritäten zur Verfügung, die in drei unterschiedliche Ebenen gegliedert sind – hohe, mittlere und niedrige Priorität. Um das Threading zu vereinfachen, enthält LabWindows/CVI auch Pool-Funktionen für Threads, die das Erstellen, Übertragen und Zuteilen von Threads erleichtern (Abb. 13).

LabWindows/CVI verfügt über thread-sichere Puffer, um Daten sicher zwischen verschiedenen Threads austauschen zu können und damit Laufzeitprobleme zu verhindern. Ein thread-sicherer Puffer kommt oftmals in PID-Regelanwendungen zum Einsatz, um Daten zwischen zeitkritischen PID-Regelschleifen und der Kommunikationsschleife mit niedrigerer Priorität auszutauschen.


[+] Bild vergrößern 

Abbildung 13: Die Thread-Prioritäten gewährleisten, dass zeitkritische Tasks nicht von anderen Aufgaben mit niedrigerer Priorität in Beschlag genommen werden.

 

Dateitransferprogramm

Nach dem Erstellen einer Echtzeitapplikation lädt LabWindows/CVI diese und statisch damit verbundene DLLs automatisch auf das Zielsystem. Sollen jedoch andere Dateien, z. B. für die Konfiguration oder dynamisch aufgerufene DLLs manuell geladen werden, bietet sich dafür das Dateitransferprogramm an. Dieses erlaubt dem Anwender auch, die DLL zu bestimmen, die beim Systemstart ausgeführt werden soll.

 


[+] Bild vergrößern

Abbildung 14: Das Programm LabWindows/CVI Real-Time File Copy dient zum Kopieren von Dateien auf das Hardwarezielsystem.

 

Dezentrale Fehlerbehebung

Unter Umständen sollen Fehler in der fertigen Anwendung während der Ausführung auf dem Echtzeitzielsystem mit realen I/O behoben werden. Dies ist meist keine einfache Aufgabe. Mit LabWindows/CVI kann man einfach eine Debug-Version einer DLL erstellen und Fehler von einem lokalen Ort von LabWindows/CVI beheben. Alle Funktionen der lokalen Fehlerbehebung, wie Haltepunkte, Hineinspringen oder Variablenwerte ansehen, sind voll funktionsfähig. Die Werte von Variablen auf dem Echtzeitzielsystem können sogar während des laufenden Betriebs vom lokalen Rechner aus verändert werden. Sämtliche Fehlerbehebungsinformationen werden über TCP automatisch von der Echtzeitanwendung zum Rechner, auf dem LabWindows/CVI läuft, übertragen.

 

Abbildung 15: Dezentrale Fehlerbehebung einer Echtzeitanwendung über Ethernet

MAX-Konfiguration

Das Auffinden und Konfigurieren des Echtzeitzielsystems mit passender Software und Treibern gestaltet sich mit dem MAX ganz einfach. MAX findet automatisch unterstützte Systeme im lokalen Subnetzwerk oder sucht nach einer spezifizierten IP-Adresse oder dem Namen eines Netzwerks. Mit dem MAX kann man die Runtime-Engine von LabWindows/CVI Real-Time sowie Hardwaretreiber wie z. B. NI-DAQmx auf das Zielsystem laden. Darüber hinaus lässt sich die Hardware interaktiv konfigurieren: man kann Datenerfassungsaufgaben definieren, Anschlüsse konfigurieren und sogar Testpanels ausführen, um dezentrale Daten live einzusehen.

PID-Toolkit für Steuer- und Regelanwendungen

Das PID Control Toolkit (in LabWindows/CVI Real-Time enthalten) ermöglicht dem Anwender die Erstellung anspruchsvoller Regelanwendungen. Das Toolkit bietet Funktionen für die PID-Regelung, externe Reset-Rückführung und Fehlerquadrat-PID-Algorithmen. 

Abbildung 16: Ergänzung von Regelanwendungen durch anspruchsvolle PID-Algorithmen

Fazit

Sobald feststeht, dass eine Anwendung echtzeitfähig sein muss, ist es mit LabWindows/CVI Real-Time ein Leichtes, zuverlässige Anwendungen zu entwickeln und auszuführen. Aufgrund von Eigenschaften wie die direkte Ausführung, Priorisierung von Threads und eng integrierte Hardware ist das Entwickeln eines Echtzeitsystems genauso einfach wie die Erstellung einer nicht echtzeitfähigen Anwendung.

Weitere Informationen:

Website zu LabWindows/CVI Real-Time