BOOL_TO_QUARTER
🎧 Podcast
Einleitung
Der Funktionsblock BOOL_TO_QUARTER dient der Konvertierung eines binären BOOL-Signals in ein spezielles, vordefiniertes Quartal-Byte (quarter byte). Er übersetzt die logischen Zustände TRUE und FALSE in entsprechende, semantisch bedeutungsvolle Byte-Konstanten, die typischerweise für Steuerbefehle (z. B. ENABLE/DISABLE) verwendet werden. Dieser Baustein ist Teil der logiBUS::utils::quarter-Bibliothek.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Dieses Ereignis löst die Konvertierungsfunktion aus. Bei seinem Eintreffen wird der aktuelle Wert am Daten-Eingang
Igelesen und verarbeitet.
Ereignis-Ausgänge
CNF: Dieses Ereignis signalisiert den Abschluss der Konvertierung. Es wird zusammen mit dem berechneten Ausgangswert
QBausgegeben.
Daten-Eingänge
I (BOOL, Initialwert:
FALSE): Der binäre Eingangswert, der konvertiert werden soll.
Daten-Ausgänge
QB (BYTE, Initialwert:
quarter::COMMAND_DISABLE): Der Ausgangswert als Byte. Der Block nutzt ein sogenanntes „Quarter Byte“ (2 Bit), das vier Zustände repräsentieren kann, von denen in dieser Implementierung nur zwei genutzt werden. Der konkrete Wert wird aus den Konstanten der importierten Bibliothek abgeleitet.
Adapter
Dieser Funktionsblock verfügt über keine Adapterschnittstellen.
Funktionsweise
Bei Auslösung durch das REQ-Ereignis wertet der Block den Wert am Eingang I aus. Die Verarbeitung erfolgt über eine CASE-Anweisung:
Wenn
Iden WertBOOL#TRUEhat, wird der AusgangQBauf die Konstantequarter::COMMAND_ENABLEgesetzt.In allen anderen Fällen (standardmäßig also bei
FALSE) wird der AusgangQBauf die Konstantequarter::COMMAND_DISABLEgesetzt.
Unmittelbar nach der Zuweisung wird das CNF-Ereignis zusammen mit dem neuen Wert von QB ausgegeben.
Technische Besonderheiten
Bibliotheksabhängigkeit: Der Block importiert und nutzt Konstanten (
quarter::COMMAND_ENABLE,quarter::COMMAND_DISABLE) aus dem PaketlogiBUS::utils::quarter::const::quarter. Die tatsächlichen Byte-Werte sind somit dort definiert und zentral änderbar.Quarter Byte Konzept: Der Ausgang ist als
BYTEdeklariert, nutzt konzeptionell aber nur die unteren 2 Bit (ein „Quarter Byte“). Dies ermöglicht eine spätere Erweiterung um weitere Zustände, ohne die Schnittstelle ändern zu müssen.Initialwerte: Sowohl der Eingang
Ials auch der AusgangQBhaben definierte Initialwerte (FALSEbzw.COMMAND_DISABLE), was ein deterministisches Startverhalten gewährleistet.
Zustandsübersicht
Der Block besitzt keinen internen Zustand im Sinne eines Speichers. Er verhält sich rein kombinatorisch in Bezug auf die Eingangsdaten bei Auftreten des REQ-Ereignisses. Der Ausgang QB behält seinen zuletzt zugewiesenen Wert bis zum nächsten Ausführungszyklus.
Anwendungsszenarien
Steuerung von Aktoren: Umwandlung eines einfachen Freigabe-Signals (
BOOL) in einen gerätespezifischen Enable/Disable-Befehl, der als Byte über ein Feldbusprotokoll versendet wird.Schnittstellenanpassung: Anbindung von Logikbausteinen, die mit BOOL-Werten arbeiten, an Steuerungskomponenten, die Befehle im Quarter-Byte-Format erwarten.
Code-Vereinheitlichung: Sicherstellung, dass in einem Projekt immer die gleichen, zentral definierten Konstanten für Enable-/Disable-Befehle verwendet werden.
⚖️ Vergleich mit ähnlichen Bausteinen
BOOL_TO_BYTE: Ein generischer Konverter, derTRUEtypischerweise auf1undFALSEauf0abbildet.BOOL_TO_QUARTERist spezialisierter und verwendet projektspezifische, semantische Konstanten anstelle numerischer Werte.Direkte Zuweisung: Die Funktionalität könnte auch durch direkte Zuweisung in ST-Code (
QB := I) nachgebildet werden, dabei gingen jedoch die Vorteile der zentralen Konstantendefinition und der klaren Schnittstelle (Events) verloren.
🛠️ Zugehörige Übungen
Fazit
Der BOOL_TO_QUARTER-Funktionsblock ist ein spezialisierter, aber nützlicher Konverter für Steueranwendungen. Er bietet eine saubere Schnittstelle mit Ereignissteuerung, verwendet zentral verwaltete Konstanten für eine einheitliche Semantik und ist durch das Quarter-Byte-Konzept potentiell erweiterbar. Seine Stärke liegt in der Verbindung von einfacher binärer Logik mit gerätespezifischen Steuerprotokollen.