FB_StringRingBuffer
Mit dem Funktionsbaustein FB_StringRingBuffer können String-Variablen in einen Ringpuffer geschrieben oder die vorher geschriebenen String-Variablen aus dem Ringpuffer ausgelesen werden. Die geschriebenen Strings werden nach dem FIFO-Prinzip in der gleichen Reihenfolge ausgelesen, in der sie vorher in den Ringpuffer geschrieben wurden. D.h. beim Lesen werden zuerst die ältesten Einträge ausgelesen. Der Pufferspeicher wird dem Funktionsbaustein über die pBuffer / cbBuffer-Eingangsvariablen zur Verfügung gestellt. Das Schreiben/Lesen der Strings wird durch Aktionsaufrufe gesteuert. Der Funktionsbaustein besitzt folgende Aktionen:
- A_AddTail (Schreibt einen neuen String in den Ringpuffer.)
- A_GetHead (Liest den ältesten String aus dem Ringpuffer, entfernt ihn aber nicht.)
- A_RemoveHead (Liest und entfernt den ältesten String aus dem Ringpuffer.)
- A_Reset (Löscht alle Strings im Ringpuffer.)
Eingänge
VAR_INPUT
bOverwrite : BOOL;
putValue : T_MaxString := '';
pBuffer : POINTER TO BYTE;
cbBuffer : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bOverwrite | BOOL | Beim TRUE und Pufferüberlauf werden die ältesten Einträge überschrieben. Beim FALSE wird beim Pufferüberlauf ein Fehler gemeldet (bOk = FALSE). |
putValue | T_MaxString | String der in den Ringpuffer geschrieben werden soll. |
pBuffer | BYTE | Adresse einer SPS-Variablen (z.B. ARRAY[...] OF BYTES ) die vom Funktionsbaustein als Pufferspeicher benutzt werden soll. Die Adresse kann mit dem ADR-Operator ermittelt werden. |
cbBuffer | UDINT | Max. Bytegröße der SPS-Variablen die als Pufferspeicher benutzt werden soll. Die Größe kann mit dem SIZEOF-Operator ermittelt werden. |
Ausgänge
VAR_OUTPUT
bOk : BOOL;
getValue : T_MaxString := '';
nCount : UDINT;
cbSize : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bOk | BOOL | Liefert TRUE, wenn ein neuer String erfolgreich hinzugefügt oder entfernt werden konnte und FALSE beim Puffer-Überlauf oder wenn keine Einträge im Puffer mehr vorhanden sind. |
getValue | T_MaxString | Dieser Ausgang liefert den String, der zuletzt aus dem Ringpuffer gelesen wurde. |
nCount | UDINT | Liefert die aktuelle Anzahl der gepufferten Strings. |
cbSize | UDINT | Liefert die aktuelle Anzahl der belegten Datenbytes im Puffer. Die Anzahl der belegten Datenbytes ist immer größer als die tatsächliche Anzahl der geschriebenen Value-Daten. Jeder String wird um zusätzliche Informationen ergänzt, um ihn später lokalisieren zu können. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_Utilities (System) |