LOG_16¶
Einleitung¶
Der Funktionsblock LOG_16 ist ein Ring-Logger, der für den zyklischen Aufzeichnung von Daten beliebigen Typs (ANY) konzipiert ist. Er dient dazu, eingehende Werte in einem Puffer mit 16 Speicherplätzen zu halten, wobei ältere Einträge bei neuen Aufrufen überschrieben werden (Ringpuffer-Prinzip). Dieser Baustein ist besonders für die Protokollierung von Prozessdaten oder Zuständen in Echtzeitsteuerungen geeignet.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
- REQ (Service Request): Löst einen Log-Vorgang aus. Bei Eintreten dieses Ereignisses wird der aktuelle Wert am Daten-Eingang
INin den Ringpuffer übernommen.
Ereignis-Ausgänge¶
- CNF (Confirmation of Requested Service): Wird nach erfolgreicher Verarbeitung des
REQ-Ereignisses ausgelöst. Dieses Ereignis bestätigt den Log-Vorgang und stellt gleichzeitig alle 16 gespeicherten Werte an den Datenausgängen bereit.
Daten-Eingänge¶
- IN (ANY): Der Datenwert, der bei einem
REQ-Ereignis in den Ringpuffer geschrieben werden soll. Der Datentyp ist beliebig (ANY).
Daten-Ausgänge¶
- OUT1 bis OUT16 (ANY): Die 16 Ausgänge, die den gesamten aktuellen Inhalt des Ringpuffers repräsentieren.
OUT1enthält dabei den jüngsten Eintrag (das letzte geloggteIN),OUT16den ältesten. Bei jedem neuen Log-Vorgang (REQ) werden alle Werte im Puffer um eine Position verschoben.
Adapter¶
Dieser Funktionsblock verfügt über keine Adapterschnittstellen.
Funktionsweise¶
Der LOG_16 implementiert einen Ringpuffer (First-In-First-Out mit fester Größe) mit 16 Elementen. Bei jedem eintreffenden REQ-Ereignis wird der folgende Algorithmus ausgeführt:
1. Der aktuelle Wert am Eingang IN wird als neuester Eintrag gespeichert.
2. Alle bisher gespeicherten Werte werden um eine Position "nach hinten" (in Richtung OUT16) verschoben.
3. Der Wert, der sich zuvor an Position 16 (OUT16) befand, wird verworfen.
4. Das Bestätigungsereignis CNF wird ausgelöst.
5. Die neuen 16 Pufferinhalte werden an den Ausgängen OUT1 (neuester) bis OUT16 (ältester) ausgegeben.
Technische Besonderheiten¶
- Generischer Datentyp: Die Verwendung des
ANY-Datentyps für Ein- und Ausgänge macht den Baustein extrem flexibel. Er kann mit beliebigen Datentypen (z.B.BOOL,INT,REAL,STRINGoder sogar strukturierten Typen) instanziiert und verwendet werden. - Feste Puffergröße: Die Puffergröße ist auf 16 Einträge festgelegt und nicht konfigurierbar.
- Sofortige Ausgabe: Bei jedem Log-Vorgang wird der gesamte Pufferinhalt an den Ausgängen aktualisiert und mit dem
CNF-Ereignis bestätigt.
Zustandsübersicht¶
Der Baustein besitzt keinen persistenten internen Zustand im Sinne einer Zustandsmaschine außer dem Ringpuffer selbst. Sein Verhalten ist rein reaktiv: Auf ein REQ-Ereignis folgt stets eine Pufferaktualisierung und die Ausgabe von CNF mit den aktuellen Daten.
Anwendungsszenarien¶
- Protokollierung von Prozesswerten: Kurzfristige Aufzeichnung von Sensordaten (z.B. Temperaturverlauf der letzten 16 Zyklen).
- Fehlerhistorie: Speicherung der letzten 16 Fehlercodes oder Alarmmeldungen.
- Datenvorverarbeitung: Bereitstellung eines gleitenden Fensters über die letzten 16 Werte für nachfolgende Berechnungen (z.B. in einem weiteren FB).
- Debugging: Einfache Überwachung von Variablenverläufen während der Entwicklung und Inbetriebnahme.
⚖️ Vergleich mit ähnlichen Bausteinen¶
E_DELAY/ Verzögerungsbausteine: Diese Bausteine geben einen Eingangswert erst nach einer definierten Zeit verzögert wieder aus. DerLOG_16hingegen speichert eine Historie mehrerer Werte und gibt sie sofort, aber geordnet nach Aktualität, aus.FIFO-Bausteine: Klassische FIFO-Speicher (First-In-First-Out) haben oft variable Längen und ein separates Lese-/Schreib-Interface. DerLOG_16ist ein spezieller FIFO mit fester Länge (16), der bei jedem Schreibvorgang automatisch den gesamten Inhalt ausgibt und überschreibt.- Einfache
LOG-Bausteine: Einfache Logger ohne Puffer schreiben typischerweise nur einen einzelnen Wert. Die Stärke desLOG_16liegt in der ringförmigen Historie.
🛠️ Zugehörige Übungen¶
Fazit¶
Der LOG_16 ist ein nützlicher und generischer Funktionsblock für grundlegende Logging- und Pufferaufgaben in 4diac FORTE-Applikationen. Seine Stärken liegen in der Einfachheit, der generischen Typunterstützung und dem deterministischen Verhalten. Die feste Puffergröße von 16 ist für viele Überwachungsaufgaben ausreichend, für Anwendungen, die eine andere Puffertiefe oder ein selektives Lesen benötigen, sind jedoch angepasste oder erweiterte Bausteine erforderlich.