FIFO (First-In First-Out / Queue / Ringspeicher)
Diese Funktion speichert eingehende Daten und gibt die ältesten noch nicht abgearbeiteten Daten aus.
LGF_FIFO (FB) | ||||||||
---|---|---|---|---|---|---|---|---|
Bool | enqueue | error | Bool | |||||
Bool | dequeue | status | Word | |||||
Bool | reset | subFunctionStatus | Word | |||||
Bool | clear | elementCount | DInt | |||||
Variant | initialItem | isEmpty | Bool | |||||
Variant | item | Variant | ||||||
Variant | buffer | Variant | ||||||
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
enqueue | Bool | false | Element einreihen in den Puffer (Enqueue) |
dequeue | Bool | false | Element aus dem Puffer löschen und an `item` zurückgeben (Dequeue) |
reset | Bool | FALSE | Puffer initialisieren (Index und Zähler zurücksetzen) |
clear | Bool | FALSE | Puffer leeren und mit Anfangswert `initialItem` initialisieren (Index und Zähler zurücksetzen). |
initialItem | Variant | --- | Wert mit dem das Array des Puffer initialisiert wird (meistens: `0` / default wert) |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
error | Bool | FALSE: Kein Fehler TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten |
status | Word | 16#0000-16#7FFF: Status des FB 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle) |
subFunctionStatus | Word | Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen |
elementCount | DInt | Anzahl der Elemente im Puffer |
isEmpty | Bool | TRUE: Puffer ist leer |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
item | Variant | Eintrag der aus dem Puffer zurückgegeben wird oder in den Puffer geschrieben werden soll |
buffer | Variant | Das ARRAY welches als Puffer genutzt wird. (Array of … ) |
Code / Wert | Bezeichner / Beschreibung |
---|---|
16#0000 | STATUS_NO_ERROR Status: Abarbeitung ohne Fehler beendet |
16#7000 | STATUS_NO_CURRENT_JOBS Status: Keine aktuellen Aufträge, Initial State |
16#8001 | ERR_BUFFER_EMPTY Fehler: Der Puffer ist leer |
16#8002 | ERR_BUFFER_FULL Fehler: Der Puffer ist voll |
16#8200 | ERR_NO_ARRAY Fehler: Am Eingang `buffer` liegt kein Array an. |
16#8201 | ERR_WRONG_TYPE_ITEM Fehler: Der Datentyp des InOut-Parameters `item` entspricht nicht dem Datentyp der Array-Elemente von dem Eingang `buffer`. |
16#8202 | ERR_WRONG_TYPE_INITIAL_ITEM Fehler: Der Datentyp des Eingangs `initialItem` entspricht nicht dem Datentyp des InOut-Parameters `item`. |
16#8601 | ERR_INDEX_IN_ARRAY_LIMITS_1 Fehler: Die Variable `statNextEmptyItemIndex` liegt ausserhalb der Array Grenzen |
16#8602 | ERR_INDEX_IN_ARRAY_LIMITS_2 Fehler: Die Variable `statFirstItemIndex` liegt ausserhalb der Array Grenzen |
16#8610 | ERR_CLEAR_BUFFER Fehler: Während des Ablöschen des Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus` |
16#8611 | ERR_RETURN_FIRST_ENTRY Fehler: Während der Rückgabe des ersten Elements aus dem Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus` |
16#8612 | ERR_REPLACE_ITEM_BY_INIT_VALUE Fehler: Während des Überschreibens des Elements mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus |
16#8613 | ERR_WRITE_ENTRY Fehler: Während des Schreibens eines Elements in den Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus` |
subFunctionStatus
wird der Status von aufgerufenen Anweisungen ausgegeben. Der Ausgangswert in status
gibt in diesem Fall an, welche Anweisung den Fehler verursacht hat. Holen Sie sich in diesem Fall die Informationen aus der TIA Portal Online Hilfe zu den jeweiligen Anweisungen.Mit dem Eingang enqueue
wird ein neues Element vom InOut-Parameter item
an der nächsten freien Stelle im Puffer gespeichert. Der Ausgang elementCount
wird um eins inkrementiert.
Mit dem Eingang dequeue
ausgegeben und dieses Feld im Puffer durch den Wert am Parameter initialItem
ersetzt. Der Ausgang elementCount
wird um eins dekrementiert.
Mit dem Eingang reset
wird der Puffer initialisiert, Index und Zähler werden zurückgesetzt. Der Ausgang elementCount
wird auf null und der Ausgang isEmpty
wird auf TRUE gesetzt.
Mit dem Eingang clear
wird der Puffer geleert und mit Anfangswert initialItem
initialisiert. Index und Zähler werden zurückgesetzt. Der Ausgang elementCount
wird auf null, der Ausgang isEmpty
auf TRUE gesetzt.
Version & Datum | Änderungsbeschreibung | |
---|---|---|
01.00.00 | Siemens Industry Online Support | |
19.08.2015 | First released version | |
01.00.01 | Siemens Industry Online Support | |
16.11.2015 | Bug fix resetBuffer | |
01.00.02 | Siemens Industry Online Support | |
02.01.2017 | Upgrade: TIA Portal V14 Update 1 | |
01.00.03 | Siemens Industry Online Support | |
17.08.2018 | Upgrade: TIA V15 Update 2 | |
01.00.04 | Siemens Industry Online Support | |
23.11.2018 | Upgrade: TIA V15.1 | |
02.00.00 | Siemens Industry Online Support | |
29.01.2019 | Output "done" removed (not necessary, because block works synchronous) | |
03.00.00 | Simatic Systems Support | |
22.10.2019 | Code refactoring, comments added Interface change (enqueue, dequeue etc.) Set version to V3.0.0, harmonize the version of the whole library | |
03.00.01 | Simatic Systems Support | |
15.02.2021 | Insert documentation |