Anwendungsentwicklung mit dem LabVIEW Statechart Module
Übersicht
Dieses Dokument erläutert Statecharts (Zustandsübergangsdiagramme) und demonstriert die Grundlagen des LabVIEW Statechart Module.
Inhaltsverzeichnis
Einführung
Im Rahmen der Veröffentlichung von NI LabVIEW 8.5 brachte National Instruments auch erstmals das LabVIEW Statechart Module auf den Markt. Dieses Modul ergänzt LabVIEW um ein neues Programmiermodell für die Entwicklung ereignisbasierter Steuer-, Regel- und Prüfsysteme. Das Programmiermodell mit Statecharts ergänzt die bestehenden LabVIEW-Modelle um Datenfluss, textbasierte Mathematik, Modellierung dynamischer Systeme sowie konfigurationsbasierte Entwicklung. Anwender können ein passendes Modell oder eine Kombination von Modellen für die Entwicklung ihrer Systeme entsprechend den jeweiligen Anforderungen wählen.
Die Plattform von National Instruments für das grafische Systemdesign vereint diese Programmiermodelle in LabVIEW mit Standard-Desktop- und Embedded-Controllern sowie Mess-I/Os. Mit dieser Kombination steht eine integrierte Werkzeugpalette für Entwurf, Prototypenerstellung und Serieneinsatz von Systemen zur Verfügung. LabVIEW Statecharts bieten mittels Programmierkonzepten wie Hierarchie, Parallelität und Ereignissen ein High-Level-Designwerkzeug, das flexibel skaliert werden kann. Da Statecharts eine Ansicht auf Systemebene bieten, lassen sich LabVIEW Statecharts als Spezifikationen von ausführbaren Dateien/Modulen verwenden. Das Programmiermodell mit Statecharts eignet sich besonders für die Entwicklung komplexer Systeme wie etwa Embedded-Steuer- und -Regel- sowie Kommunikationssysteme, die auf eine Reihe verschiedener Ereignisse reagieren müssen. Mit dem LabVIEW Statechart Module lassen sich Designs auf unterschiedlichen Hardwareplattformen implementieren, von Desktop-PCs bis hin zu FPGAs.
Hinweis: Eine umfassende Beschreibung des LabVIEW Statechart Module finden Sie in der im Lieferumfang enthaltenen Dokumentation.
Geschichte der Statecharts
Das Statechart wurde in den 1980ern von David Harel am Weizmann Institute of Science erfunden. Laut Harel bestand der Zweck des Statechart darin, „konventionelle State-Transition Diagrams (Zustandsübergangsdiagramme) um … die Konzepte der Hierarchie, Parallelität und Kommunikation zu erweitern“. Harel erfand das Statechart während der Arbeit an einem komplexen System im Bereich der Avionik, als ihm vermutlich die bestehenden Werkzeuge für ein solches System nicht ausreichten. In den 1990ern wurden die Statecharts in die Spezifikation der Unified Modeling Language, die häufig für die Modellierung von Embedded-Systemen verwendet wird, als Behavior Diagram (Verhaltensdiagramm) übernommen.
Funktionsweise von Statecharts
Um Statecharts zu verstehen, sieht man sich am besten zuerst ein klassisches State Diagram (Zustandsdiagramm) an und ergänzt dann Hierarchie, Parallelität und Ereignisse. Das klassische Statechart besteht hauptsächlich aus zwei Konstrukten: Zuständen und Übergängen In Abbildung 2 illustriert das State Diagram die Funktionsweise eines einfachen Getränkeautomaten mit fünf Zuständen und sieben Übergängen. Die Maschine beginnt im Zustand „Leerlauf“ und geht in den Zustand „Münzen zählen“ über, wenn diese eingeworfen werden. Das State Diagram zeigt weitere Zustände und Übergänge, z. B. wenn die Maschine auf die Getränkeauswahl wartet, ein Getränk oder Wechselgeld ausgibt.

Abbildung 3 zeigt ein Statechart, welches das Verhalten derselben Maschine beschreibt. Hier wird deutlich, wie die Konzepte Hierarchie und Ereignisse die Anzahl der Zustände und Übergänge reduziert. Die Zustände „Münzen zählen“ und „Ausgeben“ können in einen übergeordneten Zustand integriert werden. So muss von diesen beiden Zuständen nur ein Übergang (T3) zum Zustand „Wechselgeld ausgeben“ definiert werden. Der Übergang T3 kann so konfiguriert werden, dass er auf drei Ereignisse reagiert: Getränk ausgegeben, Wechselgeld angefordert oder Münzen abgelehnt. Darüber hinaus kann der Zustand „Getränk auswählen“ im klassischen State Diagram wegfallen, wenn Übergang T2 mit einer Bedingung belegt wird. Diese muss erfüllt werden, damit der Übergang stattfindet. Wird die Bedingung nicht erfüllt, wird das Ereignis ignoriert und der Übergang findet nicht statt.
An diesem Punkt kann das Statechart erweitert und das Konzept der Parallelität demonstriert werden, indem die Software innerhalb des Automaten um ein Element zur Temperaturregelung ergänzt wird. Abbildung 4 zeigt, wie sich die Logik für die Ausgabe und die Temperaturregelung in einem Und-Zustand unterbringen lassen. Und-Zustände beschreiben ein System, das sich in zwei voneinander unabhängigen Zuständen gleichzeitig befindet. Der Übergang T7 zeigt, wie Statecharts einen Ausgang definieren können, der für die beiden Sub-Statecharts gilt.
Neben Hierarchie und Parallelität besitzen Statecharts noch andere Eigenschaften, durch die sie besonders nützlich für komplexe Systeme sind. Sie umfassen das Konzept der Historie, mithilfe dessen sich ein übergeordneter Zustand (Superstate) „merkt“, welcher untergeordnete Zustand (Substate) zuletzt aktiv war. Ein Beispiel dafür wäre ein übergeordneter Zustand, der eine Maschine beschreibt, die eine Flüssigkeit eingießt und dann erhitzt. Ein Stopp-Ereignis etwa kann die Maschine anhalten, während die Flüssigkeit umgefüllt wird. Wird nun die Anweisung „Fortsetzen“ erteilt, hat sich die Maschine gemerkt, dass sie weiter befüllen soll.
LabVIEW Statecharts
Mit dem LabVIEW Statechart Module lassen sich Softwarekomponenten mit einem Zustandsübergangsdiagramm erstellen und das Verhalten der Logik für die Zustände und Übergänge mit der grafischen Datenflussprogrammierung definieren. Mit dem LabVIEW Projekt Explorer können Statecharts vollständig in die LabVIEW-Umgebung integriert werden. Jedes LabVIEW Statechart besteht aus mehreren Komponenten, mit deren Hilfe der Kontext des Designs konfiguiert werden kann. Abbildung 5 zeigt das Beispiel LVStatechart 1.lvsc. Man kann Trigger erstellen, die Übergängen und Zustandsreaktionen entsprechen sowie die Listen von Eingangs- und Ausgangsvariablen bearbeiten, die das Statechart verwendet.

Die Datei Diagram.vi enthält das tatsächliche Statechart. Innerhalb dieses Diagramms werden die Zustände des Systems und die Übergänge dazwischen erstellt. Einer der größten Vorteile von Statecharts ist, dass sie das Verhalten des Systems visuell darstellen und dadurch die Software selbständig dokumentieren. Abbildung 6 zeigt ein Statechart für eine Verpackungsmaschine. Die verschiedenen Zustände einer Maschine und die Übergänge lassen sich leicht erkennen.
Statecharts sind sehr nützlich, um reaktionsfähige Systeme zu beschreiben. Jeder Zustand kann mit mehreren Reaktionen entworfen werden, die von einer Vielzahl an Triggern oder Ereignissen ausgelöst werden. Diese werden beispielsweise von einer Hardware oder einer Benutzeroberfläche an das Statechart geschickt. Die Reaktionen werden mit der grafischen Programmierung in LabVIEW implementiert. Abbildung 6 zeigt den LabVIEW-Code, der ausgeführt wird, wenn sich das System im Zustand „Produktion“ befindet und der Trigger „Material nachfüllen“ auftritt. Die Trigger können auch bewirken, dass Übergänge zwischen Zuständen ausgeführt werden. Eine Alternative zur Bestimmung von Übergängen ist die Verwendung von LabVIEW-Code, der eine Bedingung evaluiert. Diese Bedingungen müssen erfüllt werden, damit der Übergang ausgeführt wird. Abbildung 7 zeigt die Bedingung für den Übergang „Material leer“ an. Der LabVIEW-Code gewährleistet, dass der Stand auf weniger als 35,5 sein muss, damit der Übergang vom Zustand „Produktion“ zu „Standby“ wechselt.
Um die Anforderungen verschiedener Anwendungsfälle zu erfüllen, erzeugen LabVIEW Statecharts Programmcode für zwei Ausführungsmodi: synchron und asynchron. Der synchrone Modus soll das Verhalten eines Controllers mit verschiedenen Zuständen beschreiben, die auf eine Reihe von I/O-Eingängen reagieren, welche ständig aktualisiert werden. Dieser Modus gilt für Embedded-Steuer- und -Regelsysteme wie etwa elektronische Steuereinheiten, Motorsteuerungs- und Umgebungssteuereinheiten. Der asynchrone Modus eignet sich für Anwendungen, die auf externe Ereignisse reagieren. Er ist besonders nützlich für die Programmierung von Mensch-Maschine-Schnittstellen (Human Machine Interface, HMI) und die Modellierung ereignisbasierter Systeme und Algorithmen.
Demo: Beispiel für ein synchrones Statechart
Wenn der passende Ausführungsmodus für ein Statechart feststeht, kann der Anwender ausführbaren Code in Form eines modularen SubVIs oder Funktionsaufrufs erzeugen. Danach lässt sich das SubVI aus dem LabVIEW-Datenflussdiagramm heraus aufrufen, wie in Abbildung 7 dargestellt. Anwender können Fehler im Statechart mit der LabVIEW-Highlight-Funktion und über Standard-Fehlerbehebungswerkzeuge wie Haltepunkte, Sonden (Überwachungsfenster für Variablen) und Einzelschrittausführung beheben.
Demo: Fehlerbehebung im Statechart
Weitere Informationen zur Verwendung von LabVIEW Statecharts bei der FPGA-Programmierung
Vorteile von Statecharts
LabVIEW Statecharts für das Systemdesign bieten Softwareentwicklern mehrere Vorteile. Sie ermöglichen eine Ansicht auf Systemebene, welche die gesamte Funktion eines Systems oder einer Anwendung beschreibt, da ein Statechart jeden möglichen Zustand des Systems erfasst. Deshalb reduziert die Verwendung von Statecharts die Wahrscheinlichkeit, dass sich die Software „aufhängt“ oder anderweitig unerwartet verhält, denn der Anwender muss jede Alternative in Betracht ziehen, auf welche die Software reagieren muss. Wie im vorliegenden Dokument erläutert wurde, eignet sich das Programmiermodell mit Statecharts besonders für reaktionsfähige Systeme, die durch die Art und Weise charakterisiert werden, wie sie auf Eingaben reagieren. Ein System kann so entworfen werden, dass es skaliert werden kann und basierend auf einer beliebigen Kombination von Ereignissen mehrere Zustandsreaktionen und Übergänge bewältigt. Statecharts ähneln grafischen Datenflussdiagrammen insofern, als dass sie sich selbst dokumentieren und den Wissenstransfer zwischen Entwicklern vereinfachen und fördern. Ein neues Mitglied in einem Entwicklerteam kann sich das Statechart ansehen und die Elemente des jeweiligen Systems schnell verstehen.
Fazit
Links auf thematisch verwandte Internetseiten
Online-Evaluierung und Webcast zum LabVIEW Statechart Module
- Testen Sie LabVIEW-Zustandsdiagramme online!
- Sehen Sie das Webcast "Grafisches Systemdesign mit LabVIEW Statecharts" (engl.)
Literaturverzeichnis
- David Harel, Statecharts: A Visual Formalism for Complex Systems, Department of Applied Mathematics, The Weizmann Institute of Science, 1986.
- Linux® ist in den USA und anderen Ländern ein eingetragenes Warenzeichen von Linus Torvalds. Pinguin Tux mit freundlicher Genehmigung von Larry Ewing.
AGB
Dieses Tutorium ("Tutorium") wurde von National Instruments ("NI") entwickelt. Auch wenn National Instruments dieses Tutorium technisch unterstützt, ist es jedoch möglich, dass dieses Tutorium nicht umfassend getestet und überprüft wurde. NI übernimmt weder Garantien bezüglich der Qualität des Tutoriums noch bezüglich der weiteren technischen Unterstützung neuer Versionen ähnlicher Produkte und Treiber. DIESES TUTORIUM WIRD IM "IST-ZUSTAND" ZUR VERFÜGUNG GESTELLT UND NI ÜBERNIMMT KEINERLEI GARANTIEN. AUSFÜHRLICHERE ERLÄUTERUNGEN ZU ANDEREN EINSCHRÄNKUNGEN ENTNEHMEN SIE BITTE DEN NUTZUNGSBEDINGUNGEN AUF NI.COM (http://ni.com/legal/termsofuse/unitedstates/us/).





