LIFO (Last-In First-Out / Stack / Stapelspeicher)
Die Funktion speichert eingehende Daten und gibt die aktuellsten / letzten noch nicht abgearbeiteten Daten aus.
LGF_LIFO (FB) | ||||||||
---|---|---|---|---|---|---|---|---|
Bool | push | error | Bool | |||||
Bool | pop | status | Word | |||||
Bool | peek | subFunctionStatus | Word | |||||
Bool | reset | elementCount | DInt | |||||
Bool | clear | isEmpty | Bool | |||||
Variant | initialItem | |||||||
Variant | item | Variant | ||||||
Variant | buffer | Variant | ||||||
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
push | Bool | false | Daten in den Puffer schieben |
pop | Bool | false | Daten aus dem Puffer holen |
peek | Bool | false | Daten im Puffer ansehen (Der Puffer wird nicht verändert) |
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#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_LAST_ENTRY Fehler: Während der Rückgabe des letzten Elements aus dem Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus` (POP & PEEK) |
16#8612 | ERR_POP_REPLACE_ITEM_BY_INIT_VALUE Fehler: Während des Überschreibens des Elements mit dem Initialwert in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus (POP) |
16#8613 | ERR_WRITE_ENTRY Fehler: Während des Schreibens eines Elements in den Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus` (PUSH) |
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 push
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 pop
wird am InOut-Parameter item
das aktuellste / letzte Element ausgegeben und dieses Feld im Puffer durch den Wert am Parameter initialItem
ersetzt. Der Ausgang elementCount
wird um eins dekrementiert.
Der Eingang peek
ermöglicht das Auslesen des letzten Eintrags im Puffer. Der Puffer wird dabei nicht verändert.
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 | |
10.07.2018 | First released version | |
01.00.01 | Siemens Industry Online Support | |
17.08.2018 | Upgrade: TIA V15 Update 2 | |
01.00.02 | 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 synchron) | |
03.00.00 | Simatic Systems Support | |
22.10.2019 | Code refactoring, comments added Interface change (push, pop, peek 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 |