Zustandsdiagramm
Ein Zustandsdiagramm ist ein grafischer Formalismus, mit dem Sie einen endlichen Zustandsautomaten grafisch programmieren können. Ein Zustandsautomat ist ein System, das sich während der Laufzeit ständig in einem von endlich vielen Zuständen befindet. In jedem Zustand können Aktionen ausgeführt werden. Wenn ein Ereignis eintritt, erfolgt ein Übergang in den nächsten Zustand. Auch während des Übergangs können Aktionen ausgeführt werden.
In CODESYS ist ein Zustandsdiagramm ein Programmierbaustein, der in der Implementierungssprache Zustandsdiagramm erstellt wird. Ein solcher Baustein wird in der Ansicht POUS oder Geräte mit dem Symbol gekennzeichnet. Sie können Programme, Funktionsbausteine, Funktionen, Methoden, Aktionen oder Eigenschaften als Zustandsdiagramm erstellen. Der Editor bietet dazu Elemente für Zustände, Pseudozustände und Transitionen an.
Sowohl Zustände als auch Transitionen können Methoden oder Aktionen aufrufen. Pseudozustände sind Steuerungselemente, mit denen der Ablauf gesteuert wird, die aber keine Aktionen oder Methoden aufrufen.
Zustand
Schneller Zustand
Zusammengesetzter Zustand
Startzustand
Endzustand
Gabelung/Verbindung
Auswahl
Transition
Abschlusstransition
Ausnahmetransition
Ein Zustandsdiagramm hat mindestens 2 Zustände, und 2 Transitionen, um in den jeweils anderen Zustand zu schalten.
Die Wächterbedingung einer Transition, die auf ein Ereignis reagiert, ist ein boolscher Ausdruck oder eine boolsche Variable. Sie wird in normaler Schrift und in eckige Klammern gefaßt neben der Transitionslinie dargestellt. Beispiel unten: [bPowerOn]
, [bPowerOff]
, [bDoIt]
, [bReady]
.
Eine Transitionsaktion ist eine Aktion, die ausgeführt werden soll, sobald die Wächterbedingung der Transition TRUE
ist. Der Aktionsname wird in fetter Schrift und mit vorangestelltem //
neben der Transitionslinie dargestellt.
Beispiel unten: //PowerUp //PowerDown TODO
Transitionen haben Prioritäten, die dann gelten, wenn die Wächterbedingungen mehrerer ausgehender Transitionen des aktiven Zustands zugleich zutreffen. Die Prioritäten werden in diesem Fall im Diagramm mit einem Ziffernsymbol am Beginn der Transitionslinie dargestellt. Siehe Beispiel unten, an Zustand Idle
: (1) und (2).
Zustände können in Summe drei Arten von Aktionen haben, ENTRY
, DO
, EXIT
. Sehen Sie für Details zu diesen Aktionen die Hilfeseite zum Element Zustand.
Das Beispiel zeigt das Zustandsdiagramm für einen einfachen Automaten mit den üblichen 3 Zuständen: Ausgeschaltet, Ruhezustand, Arbeitszustand PowerOff
, Idle
, DoIt
. Wenn ein Ereignis eintritt, also die angelegte Wächterbedingung erfüllt wird, wird in den nachfolgenden Zustand geschaltet. Beispielsweise wird in den Arbeitszustand DoIt
geschaltet, sobald die Wächterbedingung bDoIt
den Wert TRUE
bekommt.
Wenn alle Aktionen beendet sind, schaltet der Automat zurück in den Ruhezustand Idle
, um auf das nächste Ereignis zu warten. Alternativ kann der Automat ausgeschaltet werden (Aktion //PowerDown) und ist dann im Zustand
PowerOff
.
