QUARTER_TO_STR_STATUS
🎧 Podcast
Einleitung
Der Funktionsblock QUARTER_TO_STR_STATUS dient der Konvertierung eines 2-Bit-Statuswerts (auch als „Quarter Byte“ bezeichnet) in einen menschenlesbaren Text-String. Er ist Teil der logiBUS::utils::quarter-Bibliothek und wird typischerweise verwendet, um kompakte Statusinformationen aus Steuerungen oder Geräten für Anzeige-, Protokollierungs- oder Diagnosezwecke in eine verständliche Textform zu überführen.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Startet die Verarbeitung. Bei Eintreffen dieses Ereignisses wird der Wert am Daten-Eingang
IBausgelesen und die entsprechende Konvertierung durchgeführt.
Ereignis-Ausgänge
CNF: Signalisiert den Abschluss der Konvertierung. Dieses Ereignis wird zusammen mit dem konvertierten String am Daten-Ausgang
STRausgegeben.
Daten-Eingänge
IB (BYTE): Der Eingang für den 2-Bit-Statuswert. Es werden nur die untersten zwei Bits (Bit 0 und 1) ausgewertet. Der Block erwartet spezifische, vordefinierte Konstanten aus der
quarter-Bibliothek. Der Initialwert istquarter::COMMAND_DISABLE.
Daten-Ausgänge
STR (STRING): Der Ausgang, an dem der dem Statuswert entsprechende Text-String bereitgestellt wird. Der Initialwert ist
quarter::COMMAND_DISABLE_msg.
Adapter
Dieser Funktionsblock verfügt über keine Adapter-Schnittstellen.
Funktionsweise
Der QUARTER_TO_STR_STATUS ist ein Basic Function Block (BFB) mit einem definierten Execution Control Chart (ECC). Bei einem eingehenden REQ-Ereignis wird der Wert an IB mit vordefinierten Konstanten verglichen. Abhängig von diesem Vergleich verzweigt die Steuerung in einen von vier möglichen Zuständen (SET, RESET, Error, none). In jedem dieser Zustände wird ein spezifischer Algorithmus ausgeführt, der den Ausgangs-STR auf einen entsprechenden Text-String setzt. Nach Ausführung des Algorithmus wechselt der Block in den Zustand ok, von dem aus das CNF-Ereignis ausgelöst wird. Anschließend kehrt der Block in den initialen START-Zustand zurück und ist bereit für die nächste Anfrage.
Die konkreten String-Werte werden aus der quarter-Konstanten-Bibliothek (logiBUS::utils::quarter::const::quarter) geladen. Die erwarteten Eingangswerte und ihre zugehörigen Ausgangsstrings sind:
quarter::STATUS_ENABLED→quarter::COMMAND_ENABLE_msgquarter::STATUS_DISABLED→quarter::COMMAND_DISABLE_msgquarter::STATUS_ERROR→quarter::COMMAND_RESERVED_msgquarter::STATUS_NOT_AVAILABLE→quarter::COMMAND_NO_ACTION_msg
Technische Besonderheiten
Typensicherheit: Der Block verwendet streng typisierte Konstanten aus einer speziellen Bibliothek, was die Fehleranfälligkeit gegenüber der direkten Verwendung von Rohwerten (z.B. 0, 1, 2, 3) verringert.
2-Bit-Verarbeitung: Obwohl der Eingang als
BYTEdeklariert ist, wird nur ein Quarter (2 Bit) dieses Bytes effektiv genutzt. Die Semantik der vier möglichen Zustände ist durch die verwendete Konstantenbibliothek festgelegt.Deterministisches Verhalten: Die Zustandsübergänge sind ausschließlich vom Eingangswert bei
REQabhängig. Es gibt keine internen Speicher oder Hysterese-Effekte.
Zustandsübersicht
Der ECC besteht aus sechs Zuständen:
START: Initialer, wartender Zustand. Hier wird auf das
REQ-Ereignis gewartet.SET: Wird bei
IB = quarter::STATUS_ENABLEDaktiviert. Führt AlgorithmusSETaus.RESET: Wird bei
IB = quarter::STATUS_DISABLEDaktiviert. Führt AlgorithmusRESETaus.Error: Wird bei
IB = quarter::STATUS_ERRORaktiviert. Führt AlgorithmusERRORaus.none: Wird bei
IB = quarter::STATUS_NOT_AVAILABLEaktiviert. Führt AlgorithmusNONEaus.ok: Gemeinsamer Zustand nach jeder erfolgreichen Konvertierung. Löst das
CNF-Ausgangsereignis aus und führt zurück zumSTART-Zustand.
Anwendungsszenarien
HMI-/SCADA-Anbindung: Konvertierung von internen Gerätestati (z.B. „aktiviert“, „fehlerhaft“) in Strings für die Anzeige auf Bedienpanels oder in Visualisierungssoftware.
Protokollierung und Diagnose: Umwandlung von Statuscodes in lesbare Texte für Log-Dateien oder Diagnosetools, um die Fehleranalyse zu erleichtern.
Schnittstelle zu Text-basierten Systemen: Vorbereitung von Statusinformationen für die Weiterverarbeitung in Systemen, die mit String-Nachrichten arbeiten (z.B. MQTT-Topics, CSV-Export).
⚖️ Vergleich mit ähnlichen Bausteinen
E_SRoderE_RS(Flip-Flops): Diese Blöcke speichern einen binären Zustand (SET/RESET).QUARTER_TO_STR_STATUShingegen konvertiert einen vorhandenen 4-Zustands-Wert nur in einen String; er besitzt keinen eigenen Speicher.E_SELECToderE_MUX: Können ebenfalls zwischen verschiedenen Pfaden/Werten wählen, sind aber generischer und nicht speziell auf die Konvertierung in Strings mit vordefinierten Quarter-Statuswerten ausgelegt.Einfache
STRING-Zuweisung: Eine direkte Zuweisung im ST-Code könnte ähnliches leisten, aber derQUARTER_TO_STR_STATUS-Block kapselt die Logik, fördert die Wiederverwendbarkeit und erzwingt die Verwendung der standardisierten Konstanten, was die Konsistenz im gesamten Projekt erhöht.
🛠️ Zugehörige Übungen
Fazit
Der QUARTER_TO_STR_STATUS ist ein spezialisierter und nützlicher Funktionsblock für Anwendungen, die mit dem spezifischen 4-Zustands-Statusmodell (Quarter Byte) arbeiten. Durch die Nutzung einer Konstantenbibliothek und die klare Trennung von Logik und Schnittstelle trägt er zur Robustheit und Wartbarkeit von IEC 61499-Applikationen bei. Er ist die ideale Wahl, wenn kompakte Statusinformationen zuverlässig und einheitlich in eine für den Menschen lesbare Form gebracht werden müssen.