
In der industriellen Automatisierung werden Zustandsmaschinen häufig zur Modellierung des Verhaltens von Hardwaresystemen verwendet.
Definition von Zustandsmaschinen
Zustandsmaschinen bestehen aus:
- Zustände: Die stellen dar, daß das System etwas tut oder auf etwas wartet, z. B. ein „Leerlauf“-Zustand, der darauf wartet, daß eine Taste gedrückt wird, oder ein „Bewegt“-Zustand, wenn sich das System bewegt.
- Übergänge: Die stellen alle möglichen Zustandsänderungen dar, z. B. einen Übergang vom „Leerlauf“-Zustand zum „Bewegt“-Zustand.
- Ereignisse: Die stellen etwas dar, das auftreten kann, um einen Übergang zu aktivieren, z. B. ein Ereignis „eMove“, das generiert wird, wenn die Taste „Verschieben“ auf dem System gedrückt wird und den Übergang vom Zustand „Leerlauf“ in den Zustand „Bewegt“ aktiviert. Ein Ereignis kann auch durch einen Timer ausgelöst werden.
- Bedingungen: Die verhindern den Übergang von einem Zustand in einen anderen, wenn die Bedingungen nicht erfüllt sind, selbst wenn das entsprechende Ereignis ausgelöst wird, z. B. die Überprüfung des Zustands eines anderen Geräts, das durch eine andere Zustandsmaschine dargestellt wird.
- Aktionen: Etwas, das entweder ausgeführt wird, wenn ein Übergang ausgeführt, in einen Zustand eingetreten oder ein Zustand verlassen wird.
Zustandsmaschinen sind sehr nützlich, um komplexe Verhaltensweisen zu modellieren und diese visuell darzustellen.

In UML (Unified Modeling Language) werden Klassendiagramme häufig von Softwareentwicklern verwendet, um die Code-Struktur und die Beziehungen zwischen Klassen zu modellieren. Zur Darstellung des dynamischen Verhaltens können Zustandsdiagramme verwendet werden. Die basieren auf dem mathematischen Konzept endlicher Zustandsmaschinen mit einigen Abweichungen von Harel-Zustandsdiagrammen.
Einfache Implementierung von Zustandsmaschinen
Zustandsmaschinen können mit einem einfachen Schalter/Fall unter Verwendung des aktuellen Zustands als Fallselektor problemlos in jeder Programmiersprache implementiert werden. Allerdings hat diese Implementierung mehrere Nachteile:
- Es ist erforderlich, eine Zeichnung der Zustandsmaschine separat zu pflegen.
- Es bestehen häufig Zweifel, ob die Zeichnung mit dem neuesten Patch im Code aktualisiert wurde.
- Manche Entwickler zeichnen die Zustandsmaschine nicht einmal, weil sie mit einer einfachen Zustandsmaschine mit nur 3 Zuständen beginnen, aber nach 6 Monaten ist die Komplexität gewachsen und es gibt überhaupt keine Dokumentation!
- Es gibt keine Syntaxprüfung, die überprüft, ob die Zeichnung der implementierten Zustandsmaschine korrekt darstellt.
- Bei komplexen Zustandsmaschinen kann Schalter/Fall fehleranfällig sein (z. B. das Vergessen einer Break-Anweisung oder das Verlieren in allen Zuständen)
Visuelle Zustandsmaschinen
Um Aristoteles zu zitieren, denken wir bei Agileo Automation:
daß die Seele nie ohne ein Bild denkt.
Aus diesem Grund haben wir Zustandsmaschinen zu Visual Studio hinzugefügt, sodaß:
- Ein Entwickler den Zustand und die Übergänge zeichnen kann, über die er in Bezug auf ein Gerät oder eine komplexere Ausrüstung nachdenkt.
- Er seine Zustandsmaschine als Bild mit seinen Kollegen und Partnern teilen kann, um sein Design in Frage zu stellen und es somit zu verbessern.
- Er die Zeichnung ausführbar machen kann, ohne Code in einem Low-Code-Ansatz schreiben zu müssen: What You See Is What You Get (WYSIWYG).
Dieser Prozess erfolgt iterativ in einem agilen Ansatz.
A²ECF-Industry und A²ECF-SEMI betten die folgenden ein:
- Einen visuellen Zustandsmaschine-Editor direkt in Microsoft Visual Studio®, um die Zustandsmaschine zu entwerfen und die Verknüpfung mit C#-Code wie dem Auslösen von Ereignissen oder dem Aufrufen von Aktionen herzustellen
- Einen Zustandsmaschine-Motor, um die Zustandsmaschine auszuführen, z. B. Zustände zu ändern, wenn ein Ereignis ausgelöst wird, die Bedingungen zu überprüfen und Aktionen im C#-Code aufzurufen
Erfahren Sie, wie die Lösungen von Agileo Automation die Entwicklung Ihrer Gerätesteuerung beschleunigen und deren Qualität sowie Dokumentation verbessern können: