Zusammengesetzter Zustand
Ein Zusammengesetzter Zustand dient der Gruppierung der Zustände, die er umfasst, und kann für zwei verschiedene Anwendungsfälle eingesetzt werden:
- Gruppierung/Verschachtelung:
- Wenn ein zusammengesetzter Zustand aus genau einer Region besteht, werden die inneren Zustände zur Laufzeit sequentiell durchlaufen. Dabei kann ein innerer Zustand wieder ein zusammengesetzter Zustand sein, sodass eine Verschachtelung von zusammengesetzten Zuständen entsteht. Zusätzlich können solche zusammengesetzten Zustände jeweils ENTRY/DO/EXIT-Aktionen aufrufen.
- Die Verwendung von zusammengesetzten Zuständen mit jeweils einer Region dient zur Gruppierung von Zuständen, sodass beispielsweise mithilfe von (Pseudo-) Ausnahmetransitionen eine gemeinsame Weiterschaltung oder eine gemeinsame Fehlerbehandlung implementiert werden kann. Zusätzlich oder alternativ kann der zusammengesetzte Zustand mit eigenen ENTRY/DO/EXIT-Aktionen versehen werden, die den inneren Zuständen thematisch zugeordnet werden können. Dies ist beispielsweise interessant, wenn zu den DO-Aktionen der inneren Zustände zusätzlich eine übergeordnete DO-Aktion aufgerufen werden soll. Die übergeordnete DO-Aktion könnte in diesem Fall in dem zusammengesetzten Zustand platziert werden.
- Falls mehrere zusammengesetzte Zustände ineinander verschachtelt werden, darf lediglich der innerste zusammengesetzte Zustände mehr als eine Region haben.
- Parallele Sub-Zustandsmaschinen:
- Wenn ein zusammengesetzter Zustand aus mehreren Regionen besteht, werden deren innere Zustände orthogonal gruppiert. Die Regionen des zusammengesetzten Zustands werden mit Prioritäten versehen, die die Abarbeitungsreihenfolge zur Laufzeit regeln. Die Zustände der Regionen werden pseudo-parallel entsprechend ihrer internen Sequentialisierung durchlaufen.
- Zusammengesetzte Zustände mit jeweils mehreren Regionen bzw. die sogenannten orthogonalen Zustände dienen zur Programmierung von parallelen Zuständen.
Beispielhafte Umsetzungen verschiedener Anwendungsfälle finden Sie unten auf dieser Seite.
Ein zusammengesetzter Zustand wird mit einem gelben, gefüllten Rechteck mit abgerundeten Ecken dargestellt. Sein Name wird in der oberen linken Ecke des Rechtecks angezeigt. Regionen sind durch eine gestrichelte, schwarze Linie abgeteilt.
Bei einem zusammengesetzten Zustand mit mehreren Regionen werden die Priorität jeder Region in der oberen rechten Ecke und der Name jeder Region in der oberen linken Ecke der Region angezeigt. Die Linien, Namen und Prioritäten sind editierbar.
Syntaxregeln
Allgemeine Syntaxregeln für zusammengesetzte Zustände
- Ein zusammengesetzter Zustand kann eine oder mehrere abgehende Ausnahmetransitionen besitzen. Mithilfe einer Ausnahmetransition können Sie beispielsweise eine Fehlerbehandlung implementieren.
- Abschlusstransition
- Ein zusammengesetzter Zustand hat höchstens eine abgehende Abschlusstransition.
- Wenn ein zusammengesetzter Zustand über eine abgehende Abschlusstransition verfügt, muss jede Region einen Start- und einen Endzustand enthalten.
- Wenn der zusammengesetzte Zustand keine abgehende Abschlusstransition hat, können die Regionen ohne Endzustand sein.
- Wenn allerdings alle Regionen des zusammengesetzten Zustands einen Endzustand enthalten, muss der zusammengesetzte Zustand über eine abgehende Abschlusstransition verfügen.
- Der zusammengesetzte Zustand erreicht seinen Endzustand, wenn alle Regionen ihren Endzustand erreicht haben.
Syntaxregeln für einen zusammengesetzten Zustand mit genau einer Region
- Startzustand/Zusammengesetzten Zustand aktivieren
- Wenn der zusammengesetzte Zustand über eine abgehende Abschlusstransition verfügt, muss die Region einen Start- und einen Endzustand enthalten (bzgl. Endzustand sehen Sie bitte auch die allgemeinen Syntaxregeln) und die eingehende Transition, um den zusammengesetzten Zustand zu aktivieren, muss mit dem zusammengesetzten Zustand verbunden werden.
- Wenn der zusammengesetzte Zustand keine abgehende Abschlusstransition besitzt, kann die Region optional einen Startzustand enthalten.
Falls ein Startzustand vorhanden ist, muss die eingehende Transition, um den zusammengesetzten Zustand zu aktivieren, mit dem zusammengesetzten Zustand verbunden werden. Eine direkte Verbindung über eine bedingte Transition zwischen einem Zustand innerhalb des zusammengesetzten Zustands und einem Zustand außerhalb des zusammengesetzten Zustands ist nicht erlaubt – weder von außen nach innen noch von innen nach außen.
Falls kein Startzustand vorhanden ist, werden die eingehenden Transitionen hingegen direkt mit den inneren Zuständen verbunden. Dies können eine oder mehrere eingehende Transitionen sein. Des Weiteren ist in diesem Fall auch die andere Richtung möglich: ausgehende bedingte Transitionen können ausgehend von den Zuständen innerhalb des zusammengesetzten Zustands direkt mit Zuständen außerhalb des zusammengesetzten Zustands verbunden werden. Dies können eine oder mehrere ausgehende Transitionen sein. Bitte beachten Sie, dass Zustände innerhalb und außerhalb eines zusammengesetzten Zustands nur dann direkt miteinander verbunden werden können (egal in welche Richtung), wenn den inneren und den äußeren Zustand nur eine Ebene eines zusammengesetzten Zustands trennt. D.h. ein Zustand, der sich innerhalb eines zusammengesetzten Zustands befindet, welcher sich wiederum in einem anderen zusammengesetzten Zustand befindet (Verschachtelung), kann nicht direkt mit einem Zustand verbunden werden, der sich außerhalb dieser Verschachtelung von zusammengesetzten Zuständen befindet. Diese Verbindung würde über zwei Grenzen von zusammengesetzten Zuständen hinweggehen, es ist aber nur eine Grenzüberschreitung möglich. Der genannte Zustand kann nur direkt mit einem außenliegenden Zustand verbunden werden, wenn sich dieser Zielzustand in dem äußeren zusammengesetzten Zustand befindet (nur eine Ebene überschritten). - Verschachtelung
- Ein zusammengesetzter Zustand, der über genau eine Region verfügt, kann einen anderen zusammengesetzten Zustand enthalten. Sie sind dann verschachtelt.
- Die Verschachtelung von zusammengesetzten Zuständen kann beliebig tief sein, wobei lediglich der innerste zusammengesetzte Zustände mehr als eine Region haben darf.
Syntaxregeln für einen zusammengesetzten Zustand mit mehreren Regionen
- Startzustand/Zusammengesetzten Zustand aktivieren
- Die eingehende Transition, um den zusammengesetzten Zustand zu aktivieren, muss mit dem zusammengesetzten Zustand verbunden werden.
- Jede Region muss einen Startzustand enthalten.
- Eine Transition zwischen Zuständen, die in unterschiedlichen Regionen liegen, ist nicht erlaubt.
- Eine direkte Verbindung über eine bedingte Transition zwischen einem Zustand innerhalb des zusammengesetzten Zustands und einem Zustand außerhalb des zusammengesetzten Zustands ist nicht erlaubt – weder von außen nach innen noch von innen nach außen.
Ausnahme: Mithilfe einer Gabelung, die sich außerhalb des zusammengesetzten Zustands befindet, können Sie Transitionen anlegen, die zu Zuständen innerhalb des zusammengesetzten Zustands gehen.
ENTRY-, DO-, EXIT-Aktionen/-Methoden
Ein zusammengesetzter Zustand, der über genau eine Region verfügt, kann ENTRY/DO/EXIT-Aktionen/-Methoden zugewiesen bekommen.
Um diese Funktionalität freizuschalten, muss die Option „ENTRY/DO/EXIT Aktionen erlauben“, die in den Eigenschaften des zusammengesetzten Zustands zu finden ist, aktiviert sein. Für die Aktionen bzw. Methoden können Sie eine beliebige Implementierungssprache wählen.
- Die ENTRY-Aktion kann den zusammengesetzten Zustand initialisieren. Sie wird einmal ausgeführt, wenn alle eingehenden Transitionen schalten bzw. wenn ein innenliegender Zustand aktiv wird, sodass der zusammengesetzte Zustand aktiviert wird.
- Beachten Sie die Beschreibung der Eigenschaft „DO-Aktionen auch ausführen, wenn die inneren zusammengesetzten Zustände aktiv sind“, die das Verhalten der DO-Aktion festlegt.
- Die EXIT-Aktion soll sicherstellen, dass der zusammengesetzte Zustand in einem gültigen Zustand verlassen wird. Die EXIT-Aktion wird einmal ausgeführt, wenn alle ausgehenden Transitionen schalten bzw. wenn ein außenliegender Zustand aktiv wird, sodass der zusammengesetzte Zustand verlassen wird.
Aufrufverhalten
Bitte beachten Sie insbesondere die Samples, die u.a. das Aufrufverhalten vom UML- Zustandsdiagramm beschreiben und dieses anhand eines Beispiels darstellen.
Eigenschaften
„Eigenschaft“ | Beschreibung |
---|---|
„Bezeichner“ | Name des zusammengesetzten Zustands Beispiel: DoorAutomation |
„Farbe“ | Farbe des zusammengesetzten Zustands Klicken Sie auf die eingestellte Farbe, um über das sich öffnende Dropdown-Menü die Farbe des zusammengesetzten Zustands zu ändern. Voreinstellung: |
„ENTRY/DO/EXIT Aktionen erlauben“ | Voraussetzung: Diese Eigenschaft ist verfügbar, wenn der selektierte zusammengesetzte Zustand genau eine Region hat. In diesem Fall können Sie einem zusammengesetzten Zustand auch Aktionen zuweisen, wenn er Teil einer Verschachtelung von zusammengesetzten Zuständen ist. : Sie können dem selektierten zusammengesetzten Zustand eine ENTRY-, DO- oder EXIT-Aktion zuweisen. : Sie können dem selektierten zusammengesetzten Zustand keine eigenen ENTRY- DO- oder EXIT-Aktionen zuweisen. |
„DO-Aktionen auch ausführen, wenn die inneren zusammengesetzten Zustände aktiv sind“ | Voraussetzung: Mehrere zusammengesetzte Zustände sind grafisch ineinander verschachtelt. Die Option ist nur beim äußersten zusammengesetzten Zustand verfügbar und wird an die inneren vererbt. : Zur Laufzeit wird die DO-Aktion des äußeren zusammengesetzten Zustands ständig ausgeführt, auch wenn ein innerer zusammengesetzter Zustand aktiv ist. Im Editor erscheint neben der DO-Aktion der Hinweis „{wird auch für innere zusammengesetzte Zustände ausgeführt}“, um auf dieses Verhalten der Aktion hinzuweisen. : Sobald einer der inneren zusammengesetzten Zustände aktiv ist, pausiert die DO-Aktion des äußeren zusammengesetzten Zustands. |
„ENTRY-Aktion“ | Voraussetzung: Der selektierte zusammengesetzte Zustand hat genau eine Region und die Eigenschaft „ENTRY/DO/EXIT Aktionen erlauben“ ist aktiviert. Weisen Sie dem selektierten Zustand eine Aktion zu, indem Sie deren Aktionsnamen angeben. |
„DO-Aktion“ | |
„EXIT-Aktion“ |
Zusammengesetzten Zustand editieren
Die Benutzereingaben im Zustandsdiagrammeditor können wie folgt zusammengefasst werden:
Benutzereingabe im Zustandsdiagrammeditor | Reaktion im Zustandsdiagramm | Beschreibung |
---|---|---|
Fokussieren Sie einen zusammengesetzten Zustand. | Der zusammengesetzte Zustand ist editierbar.
Bedingte Editierungsmöglichkeiten:
| |
Klicken Sie auf das Symbol |
| Eine Abschlusstransition wird hinzugefügt. Wenn Sie dabei auf einen bestehenden Zustand klicken, wird dieser zum Zielzustand der Transition. Wenn Sie auf einen freien Bereich klicken, wird ein neuer Zustand erzeugt. |
Klicken Sie auf das Symbol |
| Eine Ausnahmetransition wird hinzugefügt. Wenn Sie dabei auf einen bestehenden Zustand klicken, wird dieser zum Zielzustand der Transition. Wenn Sie auf einen freien Bereich klicken, wird ein neuer Zustand erzeugt. |
Fokussieren Sie einen zusammengesetzten Zustand und halten Sie den Mauszeiger über den Zustand. |
| |
Ziehen Sie eines der blauen Quadrate auf eine andere Position. |
| Die Größe des zusammengesetzten Zustands wurde angepasst. |
Klicken Sie auf das Symbol | Der Zustand wird unterteilt und eine weitere Region wird hinzugefügt. Der Name und die Priorität einer Region werden pro Region angezeigt. | |
Klicken Sie mit zwei Einzelklicks auf den Namen einer Region. | Der Name der Region ist editierbar. | |
Klicken Sie mit zwei Einzelklicks auf die Priorität einer Region. | Die Priorität der Region ist editierbar. Geben Sie eine Zahl ein, um die Priorität der Region zu definieren. Die Prioritäten der anderen Regionen werden automatisch angepasst. | |
Klicken Sie auf die Trennlinie und verschieben Sie diese. |
| Die Trennlinie wird verschoben, damit wird die Größe der Regionen angepasst. |
Klicken Sie auf die Trennlinie und drücken Sie die Taste [Entf]. |
| Die Trennlinie wird entfernt, dadurch werden die zwei von der Trennlinie getrennten Regionen zu einer Region. |
Fokussieren Sie einen zusammengesetzten Zustand und halten Sie den Mauszeiger über den Zustand. | Voraussetzungen:
| |
Klicken Sie auf eines der drei Symbole |
| Diese Befehlsicons erweitern einen zusammengesetzten Zustand um eine ENTRY-, DO- oder EXIT-Aktion. Wenn auf eines der Rechtecke geklickt wird, erscheint:
|
Fokussieren Sie einen Zustand, der um eine Aktion erweitert wurde, und klicken Sie auf das Symbol . | Das Symbol ist bei Aktionszeilen am Ende der Zeile sichtbar, wenn bislang keine Aktion zugewiesen wurde. Der Dialog „Neues Aktionsobjekt“ öffnet, um eine neue Aktion zu erzeugen. Danach wird der Name der Aktion hinter einem Schrägstrich angezeigt. Siehe auch: „Neues Aktionsobjekt hinzufügen“ | |
Klicken Sie mit zwei Einzelklicks auf den ENTRY-, DO- oder EXIT-Ausdruck (unabhängig davon, ob bereits eine Aktion zugewiesen wurde oder nicht). |
| Der Zeileneditor öffnet mit IntelliSense-Unterstützung, sodass eine neue Aktion zugewiesen werden kann. Ist die gewünschte Aktion im IntelliSense ausgewählt, kann die Aktion mittels Doppelklick oder mittels Selektieren plus [Enter] ausgewählt werden. |
Fokussieren Sie einen Zustand, dem eine Aktion zugewiesen wurde. Klicken Sie auf das Symbol oder doppelklicken Sie auf die zugewiesene Aktion. | Die zugewiesene Aktion, im Beispiel „SampleMethod“, wird im Editor geöffnet. Im aufgehenden POU-Editor können Sie das Aktionsobjekt editieren. | |
Ziehen Sie einen zusammengesetzten Zustand von der Ansicht Werkzeuge auf einen zusammengesetzten Zustand, der über genau eine Region verfügt. | Die zusammengesetzten Zustände sind verschachtelt. Wenn der äußerste Zustand die Eigenschaft „ENTRY / DO / EXIT Aktionen erlauben“ aktiviert hat, können Sie jedem zusammengesetzten Zustand eigene Aktionen (ENTRY/ DO/EXIT) zuweisen. | |
Fügen Sie dem äußersten zusammengesetzten Zustand eine DO-Aktion hinzu und aktivieren Sie in der Ansicht Eigenschaften die Option „DO-Aktionen auch ausführen, wenn die inneren zusammengesetzten Zustände aktiv sind“. | Zur Laufzeit wird die DO-Aktion, im Beispiel „DoMethod“, ständig ausgeführt, auch wenn einer der inneren zusammengesetzten Zustände aktiv ist. Bei einer höheren Verschachtelungstiefe wird diese Option mit ihrem Wert an innere Zustände vererbt. Im Editor erscheint der Hinweis „{wird auch für innere zusammengesetzte Zustände ausgeführt}“. | |
Ziehen Sie einen Zustand vom Fenster „Werkzeuge“ in eine Region des zusammengesetzten Zustands. |
| Der Zustand wird dieser Region zugeordnet. Falls das Symbol erscheint, ist die Einfügeposition, die Sie mit dem Mauszeiger fokussieren, nicht erlaubt. |
Beispiele zusammengesetzter Zustand
Zusammengesetzter Zustand mit Ausnahme- und Abschlusstransition und mit einer Region mit Start- und Endzustand:
Zusammengesetzter Zustand ohne Abschlusstransition und mit einer Region ohne Start- und Endzustand:
Zusammengesetzter Zustand mit einer Region und eigener DO-Aktion:
Verschachtelte zusammengesetzte Zustände, teilweise mit eigener ENTRY/DO/EXIT-Aktion:
Zusammengesetzter Zustand mit mehreren Regionen/Orthogonaler Zustand mit Gabelung:
Beispiel „Lift“: Orthogonaler Zustand mit Abschluss- und Ausnahmetransition: