Zustandsdiagramm

Verständliche Vermittlung komplexer Software-Designs in vereinfachter grafischer Form

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
Abbildung 1: Zustandsdiagramm eines Mikrowellenofens mit 3 Betriebszuständen (Off, Heating und Idling), modelliert mithilfe von Stateflow®.

Abbildung 1: Zustandsdiagramm eines Mikrowellenofens mit 3 Betriebszuständen (Off, Heating und Idling), modelliert mithilfe von Stateflow.

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.

Abbildung 2: Mithilfe der Moore-Implementierung und Stateflow modelliertes Zustandsdiagramm.

Abbildung 2: Mithilfe der Moore-Implementierung und Stateflow modelliertes Zustandsdiagramm.

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.

Abbildung 3: Mithilfe der Mealy-Implementierung und Stateflow modelliertes Zustandsdiagramm.

Abbildung 3: Mithilfe der Mealy-Implementierung und Stateflow modelliertes Zustandsdiagramm.

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.

Abbildung 4: Mithilfe der Mealy-Implementierung und Stateflow modelliertes und reorganisiertes Zustandsdiagramm.

Abbildung 4: Mithilfe der Mealy-Implementierung und Stateflow modelliertes und reorganisiertes Zustandsdiagramm.

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.

Abbildung 5: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie aufzeigt.

Abbildung 5: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie aufzeigt.

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.

Abbildung 6: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie und Parallelität aufzeigt.

Abbildung 6: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie und Parallelität aufzeigt.

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.

Abbildung 7: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie, Parallelität und Übertragung aufzeigt.

Abbildung 7: Mithilfe von Stateflow modelliertes Statechart, das die Hierarchie, Parallelität und Übertragung aufzeigt.

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.

Siehe auch: control logic, state machine, control systems, embedded systems