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.
 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 Zustand
 Schneller Zustand Schneller Zustand
 Zusammengesetzter Zustand Zusammengesetzter Zustand
 Startzustand Startzustand
 Endzustand Endzustand
 Gabelung/Verbindung Gabelung/Verbindung
 Auswahl Auswahl
 Transition Transition
 Abschlusstransition Abschlusstransition
 Ausnahmetransition 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.
