Skip to main content

Einfacher Zustandsautomat

Ein einfacher Zustandsautomat besteht aus Zuständen, Transitionen, die den Zustandsübergang steuern, und Aktionen oder Methoden. Damit können Sie das Verhalten von endlichen Automaten entwerfen und implementieren.

Applikation mit Zustandsdiagramm anlegen

  1. Legen Sie ein neues Projekt mit Vorlage Standardprojekt und wählen Sie für PLC_PRG in die Implementierungssprache UML-Zustandsdiagramm.

    Das Projekt wird erstellt.

  2. Selektieren Sie die Applikation im Gerätebaum und wählen Sie den Befehl Objekt hinzufügen → POU.

  3. Erstellen Sie einen Funktionsbaustein mit dem Namen FB_Simple_Machine in der Implementierungssprache UML-Zustandsdiagramm (Statechart SC).

    _uml_img_sc_simple_device_tree.png
  4. Instanziieren Sie den Funktionsbaustein im Programm PLC_PRG und implementieren Sie den Aufruf der Funktionsbaustein-Instanz.

    PROGRAM PLC_PRG
    VAR
        fb_Simple_Machine_A : FB_Simple_Machine;
    END_VAR
    fb_Simple_Machine_A();
  5. Speichern Sie das Projekt unter dem Namen SimpleMachine.project.

Ablauflogik als Zustandsdiagramm entwerfen

Beispiel für Anforderungen an den Automaten:

  • Der Automat befindet sich nach der Initialisierungsphase im Wartezustand Idle.

  • Wenn Ereignisse eintreten, wird in den Zustand DoIt geschaltet.

  • Wenn alle Aktionen und Methoden abgearbeitet sind, wird das Beendigungsereignis ausgelöst und der Automat kehrt in den Wartezustand zurück.

  • Vom Wartezustand kann der Automat in den Ausschaltzustand Exit und dann in den Endzustand geschaltet werden.

In diesem Fall ergibt sich folgender Entwurf des Automaten.

_uml_img_sc_simple_machine_design.png

Der Entwurf enthält noch keine Wächterbedingungen, die die Ablauflogik steuern. Außerdem werden noch keine Aktionen oder Methoden aufgerufen, so dass der Automat noch funktionslos ist.

Öffnen Sie mit Doppelklick auf den Funktionsbaustein FB_Simple_Machine im Gerätebaum den Editor und erstellen Sie das oben abgebildete Diagramm.

Variablen für die Wächterbedingungen deklarieren

PROGRAM FB_Simple_Machine
VAR
    bInitDone : BOOL := FALSE;
    bShutDown : BOOL := FALSE;
    bDoSomething : BOOL := FALSE;
    bDoFinished : BOOL := FALSE;
END_VAR

Die Benutzereingaben werden in booleschen Variablen abgebildet, die üblicherweise von außen von einem Benutzer über eine Benutzerschnittstelle gesetzt werden. Wenn Sie die Variable im Zustandsdiagramm als Wächterbedingung zuweisen, wird die Ablauflogik schaltbar. Die Variablen fungieren als Steuervariablen.

_uml_img_sc_simple_machine_control.png

Methoden und Aktionen hinzufügen

Wenn Sie die Ablauflogik als Zustandsdiagramm implementiert haben, fügen Sie den Zuständen und Transitionen Funktionalität hinzu. Sie erweitern also die Zustände mit ENTRY-, DO- oder EXIT- Aktionen oder Methoden. Sie können auch eine Transition um eine Aktion oder Methode erweitern, die beim Zustandsübergang dann einmal aufgerufen wird.

Sie können einem Zustand Aktionen hinzufügen, indem Sie eines der Symbole _uml_icon_sc_action_entry.png, _uml_icon_sc_action_do.png oder _uml_icon_sc_action_exit.png wählen. Einer Transition können Sie Aktionen hinzufügen, indem Sie das Symbol _uml_icon_sc_transition_action.png wählen.

_uml_img_sc_simple_machine_function.png

Sie können eine ähnliche Logik designen, die sich nur geringfügig im Zeitverhalten unterscheidet, wenn Sie den Transitionen eine Aktion zuordnen.

_uml_img_sc_simple_machine_function_as_well.png

In der Ansicht Geräte können Sie die Zuordnung der Aktionen und Methoden nachvollziehen. Die Aktionen und Methoden wurden in der Implementierungssprache ST erstellt.

_uml_img_sc_simple_machine_devices.png