E_SREN

image

Einleitung

Der E_SREN (Event-driven quad-state) ist ein ereignisgesteuerter Funktionsblock, der einen Ausgang mit vier definierten ZustĂ€nden steuert. Er reagiert auf verschiedene Eingangsereignisse und setzt seinen Ausgang entsprechend auf einen der vier ZustĂ€nde: Aktiviert (SET), Deaktiviert (RESET), Fehler (ERROR) oder Keine Aktion (NONE). Der Baustein ist besonders fĂŒr Anwendungen geeignet, in denen ein Signal mehrere BetriebszustĂ€nde reprĂ€sentieren muss, wie z.B. in Überwachungs- oder Steuerungssystemen.

E_SREN

Schnittstellenstruktur

Ereignis-EingĂ€nge

  • S (Set): Setzt den Ausgang Q auf TRUE und QB auf den Zustand COMMAND_ENABLE.

  • R (Reset): Setzt den Ausgang Q auf FALSE und QB auf den Zustand COMMAND_DISABLE.

  • ERR (Error): Setzt den Ausgang Q auf FALSE und QB auf den Zustand STATUS_ERROR.

  • NONE: Setzt den Ausgang QB auf den Zustand COMMAND_NO_ACTION. Der Ausgang Q bleibt unverĂ€ndert.

Ereignis-AusgĂ€nge

  • EO (Event Output): Wird ausgelöst, wenn sich einer der Ausgangswerte (Q oder QB) geĂ€ndert hat. Dieses Ereignis wird immer zusammen mit den aktuellen Werten der DatenausgĂ€nge Q und QB gesendet.

Daten-EingĂ€nge

  • Dieser Funktionsblock besitzt keine Daten-EingĂ€nge.

Daten-AusgĂ€nge

  • Q (BOOL): Einfacher boolescher Ausgang. Er ist nur TRUE, wenn das S-Ereignis eintrifft. Er ist FALSE bei den Ereignissen R und ERR und bleibt unverĂ€ndert bei NONE.

  • QB (BYTE): Ein Byte-Ausgang, der speziell zur Kodierung von vier ZustĂ€nden (2 Bit) dient. Die konkreten Werte (z.B. COMMAND_ENABLE) werden aus der importierten Bibliothek quarter::const::quarter bezogen.

Adapter

  • Dieser Funktionsblock verwendet keine Adapter.

Funktionsweise

Der E_SREN ist als Basic-FB implementiert und besitzt einen internen Zustandsautomaten (ECC). Der Ausgangszustand ist START. Bei Eintreffen eines Eingangsereignisses (S, R, ERR, NONE) wechselt der Automat in den entsprechenden Zustand (SET, RESET, Error, none). In diesen ZustĂ€nden wird der zugehörige Algorithmus ausgefĂŒhrt, der die Werte fĂŒr Q und QB berechnet.

Anschließend prĂŒft eine Bedingung, ob sich der neue Wert von Q oder QB gegenĂŒber dem zuletzt gespeicherten Wert (old_Q, old_QB) geĂ€ndert hat. Falls ja, wechselt der Automat in den Zustand FireEvent. Hier wird der Algorithmus HOLD ausgefĂŒhrt, der die aktuellen Ausgangswerte in den internen Variablen speichert, und gleichzeitig das Ausgangsereignis EO ausgelöst. Danach kehrt der Automat immer in den START-Zustand zurĂŒck. Falls sich die Ausgangswerte nicht geĂ€ndert haben, erfolgt ein direkter Übergang von den ZustĂ€nden SET, RESET, Error oder none zurĂŒck in den START-Zustand, ohne dass EO ausgelöst wird.

Technische Besonderheiten

  • Zustandserkennung: Der Baustein merkt sich den vorherigen Ausgangszustand in den internen Variablen old_Q und old_QB. Das Ausgangsereignis EO wird nur bei einer tatsĂ€chlichen ZustandsĂ€nderung generiert, was redundante Ereignisausgaben verhindert.

  • BibliotheksabhĂ€ngigkeit: Die spezifischen Byte-Werte fĂŒr den QB-Ausgang werden aus der Konstanten-Bibliothek logiBUS::utils::quarter::const::quarter importiert. Die korrekte Funktion setzt die VerfĂŒgbarkeit dieser Bibliothek voraus.

  • Vier-Zustands-Logik: Die Logik des NONE-Ereignisses ist speziell: WĂ€hrend QB auf COMMAND_NO_ACTION gesetzt wird, bleibt der boolesche Ausgang Q explizit unverĂ€ndert.

ZustandsĂŒbersicht

Der ECC (Execution Control Chart) besteht aus sechs ZustÀnden:

  1. START: Initialer und Ruhezustand.

  2. SET: Wird bei Ereignis S aktiviert. Setzt Q=TRUE, QB=COMMAND_ENABLE.

  3. RESET: Wird bei Ereignis R aktiviert. Setzt Q=FALSE, QB=COMMAND_DISABLE.

  4. Error: Wird bei Ereignis ERR aktiviert. Setzt Q=FALSE, QB=STATUS_ERROR.

  5. none: Wird bei Ereignis NONE aktiviert. Setzt QB=COMMAND_NO_ACTION. Q bleibt unverÀndert.

  6. FireEvent: Wird nur betreten, wenn sich Q oder QB geÀndert haben. Speichert die neuen Werte und löst EO aus.

Anwendungsszenarien

  • Aktorsteuerung: Steuerung eines Antriebs mit den Befehlen „Einschalten“ (S), „Ausschalten“ (R), „Störung“ (ERR) und „Manuell/Extern gesteuert“ (NONE).

  • Meldesysteme: Darstellung des Status einer Maschine: „In Betrieb“, „Stopp“, „Fehler“, „Wartung“.

  • Sicherheitsrelevante Steuerungen: Klare Trennung von normalen Betriebs- (S/R), Fehler- (ERR) und Wartungs-/Override-ZustĂ€nden (NONE).

⚖ Vergleich mit Ă€hnlichen Bausteinen

  • E_SR (Bistabile Funktion): Der klassische Set-Reset-Flipflop kennt nur zwei stabile ZustĂ€nde (TRUE/FALSE). Der E_SREN erweitert dieses Konzept um zwei weitere ZustĂ€nde (ERROR, NO_ACTION), die ĂŒber ein dediziertes Byte (QB) kodiert werden.

  • E_D_FF (D-Flipflop): Übernimmt einen Datenwert bei einem Takt-Ereignis. Der E_SREN ist ereignisgesteuert (vier verschiedene Ereignisse) und hat keinen separaten Dateneingang. Die „Daten“ sind in den auslösenden Ereignissen implizit enthalten.

Fazit

Der E_SREN ist ein spezialisierter, ereignisgesteuerter Funktionsblock fĂŒr Anwendungen, die mehr als zwei diskrete ZustĂ€nde benötigen. Durch die Kombination eines einfachen booleschen Signals (Q) mit einem mehrwertigen Byte-Signal (QB) und der intelligenten, Ă€nderungsbasierten Ereignisausgabe (EO) bietet er eine effiziente und ĂŒbersichtliche Lösung fĂŒr komplexe Zustandssteuerungen. Seine StĂ€rke liegt in der klaren Semantik der vier Eingangsereignisse und der zuverlĂ€ssigen Vermeidung von redundanten Ausgabeereignissen.