sequence_E_05_loop¶
Einleitung¶
Der Funktionsblock sequence_E_05_loop implementiert eine zyklische Sequenz mit fünf Zuständen. Der Übergang zwischen den einzelnen Zuständen erfolgt ausschließlich über externe Ereignisse. Der Baustein ist für Anwendungen konzipiert, in denen ein Prozessschritt erst nach Abschluss eines vorherigen Schritts und dem Eintreffen eines spezifischen Freigabesignals beginnen darf. Die Sequenz kann von jedem Zustand aus in den initialen Startzustand zurückgesetzt werden.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
START_S1: Wechselt vom Startzustand (START) in den ersten aktiven Zustand (State_01).S1_S2: Wechselt vonState_01zuState_02.S2_S3: Wechselt vonState_02zuState_03.S3_S4: Wechselt vonState_03zuState_04.S4_S5: Wechselt vonState_04zuState_05.S5_S1: Wechselt vonState_05zurück zuState_01(Zyklus).RESET: Setzt die Sequenz von jedem beliebigen Zustand in den initialen Startzustand (START) zurück.
Ereignis-Ausgänge¶
CNF: Allgemeines Bestätigungsereignis, das bei jedem Zustandswechsel ausgelöst wird. Es liefert die aktuelle Zustandsnummer (STATE_NR) mit.EO_S1: Wird beim Eintritt inState_01ausgelöst und liefert den zugehörigen DatenausgangDO_S1mit.EO_S2: Wird beim Eintritt inState_02ausgelöst und liefert den zugehörigen DatenausgangDO_S2mit.EO_S3: Wird beim Eintritt inState_03ausgelöst und liefert den zugehörigen DatenausgangDO_S3mit.EO_S4: Wird beim Eintritt inState_04ausgelöst und liefert den zugehörigen DatenausgangDO_S4mit.EO_S5: Wird beim Eintritt inState_05ausgelöst und liefert den zugehörigen DatenausgangDO_S5mit.
Daten-Eingänge¶
- Dieser Funktionsblock besitzt keine Dateneingänge.
Daten-Ausgänge¶
STATE_NR(SINT): Gibt die Nummer des aktuell aktiven Zustands aus. Die Kodierung lautet: START = 0, State_01 = 1, State_02 = 2, ..., State_05 = 5.DO_S1(BOOL): IstTRUE, wennState_01aktiv ist.DO_S2(BOOL): IstTRUE, wennState_02aktiv ist.DO_S3(BOOL): IstTRUE, wennState_03aktiv ist.DO_S4(BOOL): IstTRUE, wennState_04aktiv ist.DO_S5(BOOL): IstTRUE, wennState_05aktiv ist.
Adapter¶
- Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise¶
Der FB ist als Basic Function Block (BFB) mit einer Execution Control Chart (ECC) implementiert. Die interne Logik basiert auf sieben Zuständen: einem initialen Startzustand (xSTART), fünf aktiven Zuständen (sState_01 bis sState_05) und einem separaten Reset-Zustand (sRESET).
Bei Eintritt in einen aktiven Zustand werden drei Aktionen nacheinander ausgeführt:
1. Exit-Aktion des vorherigen Zustands: Der entsprechende State_XX_X-Algorithmus setzt den zugehörigen Datenausgang (DO_Sx) auf FALSE.
2. Confirmation-Aktion: Der State_XX_C-Algorithmus setzt die Zustandsnummer STATE_NR und löst das CNF-Ereignis aus.
3. Entry-Aktion des neuen Zustands: Der State_XX_E-Algorithmus setzt den zugehörigen Datenausgang (DO_Sx) auf TRUE und löst das entsprechende Ereignis EO_Sx aus.
Ein RESET-Ereignis führt in den sRESET-Zustand. Hier werden alle potenziell aktiven Ausgänge (DO_S1 bis DO_S5) über die jeweiligen Exit-Algorithmen deaktiviert, die Zustandsnummer auf 0 (START) gesetzt und ein CNF-Ereignis ausgelöst. Anschließend wechselt der FB automatisch (Bedingung = 1, also immer wahr) zurück in den initialen xSTART-Zustand.
Technische Besonderheiten¶
- Ereignisgesteuerte Transitionen: Jeder Zustandsübergang muss explizit durch das entsprechende Eingangsereignis ausgelöst werden. Es gibt keine zeit- oder datengesteuerten automatischen Übergänge.
- Entkoppelte Signale: Die booleschen Zustandsausgänge (
DO_Sx) und die zugehörigen Ereignisausgänge (EO_Sx) werden synchron gesetzt und ausgelöst. Dies erlaubt eine flexible Anbindung an nachfolgende Logik. - Explizite Reset-Logik: Der Reset-Vorgang deaktiviert systematisch alle Ausgänge, bevor der Startzustand wiederhergestellt wird, was ein sauberes und definiertes Verhalten gewährleistet.
- Konstanten für Zustandsnummern: Die Zustandsnummern werden über den importierten Namensraum
sequence::(z.B.sequence::State_01) zugewiesen, was die Wartbarkeit und Lesbarkeit des Codes erhöht.
Zustandsübersicht¶
Die ECC besteht aus folgenden Zuständen und möglichen Übergängen:
* xSTART: Initialer, inaktiver Zustand. Übergang zu sState_01 via START_S1.
* sState_01: Erster aktiver Zustand. Übergänge zu sState_02 via S1_S2 oder zu sRESET via RESET.
* sState_02: Zweiter aktiver Zustand. Übergänge zu sState_03 via S2_S3 oder zu sRESET via RESET.
* sState_03: Dritter aktiver Zustand. Übergänge zu sState_04 via S3_S4 oder zu sRESET via RESET.
* sState_04: Vierter aktiver Zustand. Übergänge zu sState_05 via S4_S5 oder zu sRESET via RESET.
* sState_05: Fünfter aktiver Zustand. Übergänge zu sState_01 via S5_S1 (Zyklus) oder zu sRESET via RESET.
* sRESET: Reset-Zustand. Führt Reset-Aktionen aus und wechselt anschließend bedingungslos zurück zu xSTART.
Anwendungsszenarien¶
- Schrittkettensteuerungen: Steuerung von Maschinenabläufen, bei denen jeder Schritt manuell oder durch ein Sensorsignal freigegeben werden muss (z.B. Handarbeitsplatz mit Freigabetaster).
- Batch-Prozesse: Durchführung von Rezeptschritten, bei denen der Operator oder ein übergeordnetes System den nächsten Schritt bestätigen muss.
- Sicherheitskritische Sequenzen: Prozesse, bei denen ein unkontrollierter automatischer Wechsel vermieden werden soll.
- Test- und Inbetriebnahmesequenzen: Manuelles Durchschalten von einzelnen Funktionen eines Systems.
⚖️ Vergleich mit ähnlichen Bausteinen¶
Im Gegensatz zu zyklisch ablaufenden Sequenzern (z.B. E_CYCLE) oder zeitgesteuerten Sequenzern (mit DELAY-Blöcken) verharrt dieser Baustein in jedem Zustand, bis das spezifische Wechselereignis eintrifft. Er bietet damit maximale externe Kontrolle. Im Vergleich zu einem generischen Zähler (CTU) mit nachgelagerter Dekodierlogik bietet dieser FB eine vollständig gekapselte, zustandsbasierte Lösung mit klaren Entry/Exit-Aktionen und einem integrierten Reset-Mechanismus.
Fazit¶
Der sequence_E_05_loop ist ein robuster und einfach zu konfigurierender Funktionsblock für ereignisgesteuerte Schrittketten mit fünf Zuständen. Seine klare Schnittstelle, die saubere Trennung von Entry-/Exit-Logik und der zuverlässige Reset-Mechanismus machen ihn ideal für Anwendungen, bei denen jeder Prozessschritt explizit freigegeben werden muss. Die mitgeführten Datenausgänge und Bestätigungsereignisse ermöglichen eine einfache Integration in übergeordnete Steuerungs- und Visualisierungssysteme.