Was sind Zustandsdiagramme?
Ein Zustandsdiagramm oder ein Zustandsübergangsdiagramm ist eine grafische Darstellung der endlichen Anzahl von Zuständen einer Zustandsmaschine (auch: Zustandsautomat), der Zustandsübergänge und der Regeln, die diese Übergänge bestimmen. Zustandsdiagramme werden als Ausgangspunkte auf hoher Abstraktionsebene für den Entwurf komplexer Software verwendet, da ihre Einfachheit eine klare Kommunikation der verschiedenen Betriebsmodi ermöglicht.
In einem Zustandsdiagramm:
- stellen Felder die einzelnen Zustände oder Modi des Betriebs dar
- zeigen Pfeile den Übergang von einem Zustand zum anderen an
- stellt der mit jedem Pfeil verbundene Text die Regel dar, die den Übergang bestimmt
Die Ausgaben oder Aktionen einer Zustandsmaschine sind Beschreibungen des Verhaltens der einzelnen Systemzustände. Zwei Arten von Zustandsautomaten — Moore und Mealy — werden entsprechend der Stelle, an der die Ausgabe des Automaten definiert wird, klassifiziert.
Moore-Implementierung eines Zustandsdiagramms
Bei dieser Art von Zustandsmaschine hängen die Ausgaben nur vom Zustand des Systems ab und sind als Zustandsaktionen definiert. Unabhängig davon, wie man einen Zustand angeht, bleibt die Aktion des Zustands dieselbe. Im Zustandsdiagramm in Abbildung 2 zum Beispiel bleibt die Ausgabe von Heating
gleich, unabhängig davon, ob der Übergang vom Zustand Idling
oder OFF
erfolgt.
Mealy-Implementierung eines Zustandsdiagramms
Bei dieser Art von Zustandsmaschine hängen die Ausgaben nicht nur vom Zustand des Systems ab, sondern auch von den Eingaben in das System. Wie im Zustandsdiagramm in Abbildung 3 dargestellt, werden die Ausgaben in einer Mealy-Implementierung an den Übergängen definiert.
Mit der Mealy-Implementierung können Zustandsdiagramme reorganisiert und durch die Hinzufügung von Schleifen zur Anpassung der Maschinenausgaben vereinfacht werden. Das ist bei zunehmend komplexeren Entwürfen besonders von Vorteil.
Sowohl Mealy- als auch Moore-Automaten sind aufgrund ihrer Einfachheit und Klarheit beliebt und werden häufig in ein und demselben Zustandsdiagramm miteinander kombiniert.
Statecharts: Erweiterte Zustandsdiagramme
Die Grundbausteine von Zustandsdiagrammen reichen nicht aus, um komplexe logische Systeme in einem einzigen Diagramm darzustellen. Es braucht zusätzliche Funktionen, um auch die kompliziertesten Designdetails effizient zu erfassen. Statecharts, auch bekannt als Harel-Charts, verfügen über zusätzliche Eigenschaften wie Hierarchie, Parallelität oder Orthogonalität und Ereignisübermittlung.
Die Hierarchie ermöglicht eine weitere Unterteilung des Designs und kann die Anzahl der erforderlichen Übergangslinien zwischen den Zuständen reduzieren. Dabei können übergeordnete Zustände eingeführt werden, um eine Hierarchie innerhalb der Zustandsmaschinen zu schaffen. Im Statechart in Abbildung 5 umfasst beispielsweise der übergeordnete Zustand Baking
(Backen) die Unterzustände Heating
(Heizen) und Idle
(Leerlauf) sowie das zugehörige Zustandsdiagramm.
Die Parallelität oder Orthogonalität ermöglicht es, dass ein einziges Statechart mehrere Zustände enthält, die gleichzeitig ablaufen. Im Statechart in Abbildung 6 können beispielsweise Oven
(Ofen) und Oven_Light
(Ofenleuchte) als zwei unabhängige Zustandsmaschinen betrachtet werden, die gleichzeitig arbeiten. Das Schaubild stellt so das Gesamtsystem in einer einzigen Grafik dar, die zwei parallele Zustandsmaschinen aufweist.
Die Möglichkeit der Ereignisübertragung erweitert die Funktionalität des Systems, indem sie den Informationsaustausch zwischen zwei unabhängigen Zuständen oder Zustandsmaschinen erlaubt. Im vorherigen Fall waren die beiden Zustandsmaschinen unabhängig voneinander, da der Betrieb der Ofenleuchte nicht vom Heizsystem des Ofens abhing. Mit der Ereignisübertragung kann eine Funktion zum Ausschalten der Ofenleuchte nach Beendigung des Backvorgangs mithilfe eines einfachen Befehls innerhalb der Logik des Zustands Oven
hinzugefügt werden, wie im Zustandsschaubild in Abbildung 7 verdeutlicht.
Statecharts mit den Eigenschaften Hierarchie, Parallelität und Übertragung helfen bei der Darstellung komplexer Systemfunktionalitäten ohne unübersichtliche Zustandsdiagramme.
Zustandsdiagramme und Statecharts mit Stateflow
Stateflow® ist eine grafische Programmierumgebung, die auf endlichen Zustandsmaschinen basiert. Mithilfe von Stateflow lassen sich ausgehend von einfachen Zustandsdiagrammen Statecharts erstellen, um eine komplexe Logik in dynamischen Systemen zu modellieren, wie unter anderem für Automatikgetriebe, Mobiltelefone oder im Bereich der Robotik. Zu den Anwendungen dieser komplexen Logik gehören:
Wenn Sie die zur Regelung einer Softwarekomponente erstellte Logik benötigen, können Sie die automatische Codegenerierung von Simulink nutzen, um das Statechart in C, HDL- oder SPS-Code zu konvertieren und bereitzustellen.
Weitere Informationen zur Modellierung von Zustandsdiagrammen, die auch diese speziellen Techniken umfassen, finden Sie unter Stateflow und Simulink. Das Beispiel, Modeling a Security System, veranschaulicht Hierarchie, Parallelität und Ereignisübertragung in Stateflow.
Beispiele und Erläuterungen
Software-Referenz
Siehe auch: Regelungslogik, Zustandsmaschine, Steuerungs- und Regelungssysteme, Embedded Systeme