Zustandsautomaten
- Aktualisiert2026-07-22
- 4 Minute(n) Lesezeit
Sie können nur einen Zustandsautomaten in einer "Graphical Programming"-Gruppe definieren. Der Hauptzustandsautomat kann eine beliebige Anzahl untergeordneter Zustandsautomaten enthalten. Die Verschachtelungstiefe ist nicht begrenzt.
In PAgraph sind die untergeordneten Zustandsautomaten als Gruppierung von Zuständen und nicht als reelle Unterautomaten realisiert. Der Vorteil besteht darin, dass alle untergeordneten Zustandsautomaten auch auf alle im Hauptzustandsautomaten definierten lokalen und globalen Variablen zugreifen können.
Erstellen eines Zustandsautomaten
Sie können einen Zustandsautomaten mit einer der folgenden Methoden erstellen:
- Ziehen Sie das state machine-Element aus der Toolbox in den Diagrammbereich.
- Öffnen Sie im leeren Diagrammbereich das Kontextmenü und wählen Sie aus.
- Ziehen Sie einen neuen Übergang in den Diagrammbereich und wählen Sie aus dem Kontextmenü die Option State machine aus.
- Wählen Sie aus dem Kontextmenü für mehrere ausgewählte Zustände die Option Create state machine from selection aus.
Abbildung 48. Kontextmenü für mehrere ausgewählte Zustände im Diagrammbereich
- Wählen Sie aus dem Kontextmenü die Option Create state machine from selection aus.
Für jeden neu erstellten Zustandsautomaten wird eine neue Registerkarte mit dem Titel State machine <number> (<number>) angezeigt. Wenn Sie den Zustandsautomaten aus einer Auswahl erstellen, werden die ausgewählten Zustände im neuen Diagramm angezeigt. Ausgewählte Zustände umfassen alle Übergänge zwischen diesen Zuständen. Wenn Sie einen Zustandsautomaten als neues leeres Element erstellen, enthält er ein Startelement plus den Startzustand.
Löschen von Zustandsautomaten
Sie können einen Zustandsautomaten mit einer der folgenden Methoden löschen:
- Wählen Sie im Explorer den Zustandsautomaten aus, öffnen Sie das Kontextmenü und klicken Sie auf Delete.
- Wählen Sie in der Diagrammansicht den Zustandsautomaten aus, öffnen Sie das Kontextmenü und klicken Sie auf Delete.
Ausgehende Übergänge: Out
Es ist nicht zulässig, direkt im untergeordneten Zustandsautomaten einen Übergang zu erstellen, der aus einem enthaltenen Zustandsautomaten herausführt.
Wenn Sie einen Zustandsautomaten verlassen möchten, müssen Sie ein Out-Element in diesem Zustandsautomaten erstellen.
In allen Zustandsautomaten, die diesen Zustandsautomaten aufrufen, wird jedes Out-Element als Pfeil dargestellt. Von jedem dieser Pfeile aus können Sie Übergänge in Folgezustände ziehen.
Anordnen von Out-Pfeilen
Per Standardeinstellung werden die Out-Pfeile am unteren Rand der Elemente des Zustandsautomaten angezeigt. Dies ist jedoch unerwünscht, wenn der Nachfolgezustand eines Zustandsautomaten oberhalb oder seitlich des Zustandsautomaten positioniert werden soll.
Verschieben von Pfeilen auf gegenüberliegende Seite
Wenn Sie die Out-Pfeile auf der gegenüberliegenden Seite des Zustandsautomaten positionieren möchten, öffnen Sie das Kontextmenü des Dreiecks, das das Out-Element darstellt, und wählen Sie Switch side aus. Dies muss für jeden Out-Pfeil einzeln durchgeführt werden.
Sie können Switch side auswählen, um die Pfeile wieder an die vorherige Position zu verschieben.
Verschieben von Pfeilen auf benachbarte Seite
Wenn sich die Out-Pfeile vertikal ober- und unterhalb des Zustandsautomaten befinden, können Sie auch alle Pfeile horizontal ausrichten. Um die Pfeile horizontal auszurichten, öffnen Sie das Kontextmenü des Zustandsautomaten, nicht des Out-Pfeils, und wählen Sie Switch Out orientation aus.
Sie können Switch Out orientation auswählen, um die Pfeile wieder an die vorherige Position zu verschieben.
Ändern der Pfeilreihenfolge
Öffnen Sie zum Ändern der Reihenfolge der Out-Pfeile das Kontextmenü und wählen Sie Move to right, Move to left, Move to down oder Move to up aus.
In der folgenden Tabelle werden alle Startpositionen und die neuen Positionen für alle Kontextmenübefehle zusammengefasst.
| Position des Out-Pfeils | Menübefehl | Neue Position |
|---|---|---|
| Unterhalb | Switch side | Oberhalb |
| Move to left | Unterhalb, aber eine Position weiter links | |
| Move to right | Unterhalb, aber eine Position weiter rechts | |
| Oberhalb | Switch side | Unterhalb |
| Move to left | Oberhalb, aber eine Position weiter links | |
| Move to right | Oberhalb, aber eine Position weiter rechts |