LGF_FIFO (FB / V3.0.1)


Autor: Siemens Industry Support

Kurzbeschreibung

FIFO (First-In First-Out / Queue / Ringspeicher)
Diese Funktion speichert eingehende Daten und gibt die ältesten noch nicht abgearbeiteten Daten aus.

Baustein Schnittstelle

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
       
   

Input Parameter

BezeichnerDatentypDefault WertBeschreibung
enqueueBoolfalseElement einreihen in den Puffer (Enqueue)
dequeueBoolfalseElement aus dem Puffer löschen und an `item` zurückgeben (Dequeue)
resetBoolFALSEPuffer initialisieren (Index und Zähler zurücksetzen)
clearBoolFALSEPuffer leeren und mit Anfangswert `initialItem` initialisieren (Index und Zähler zurücksetzen).
initialItemVariant---Wert mit dem das Array des Puffer initialisiert wird (meistens: `0` / default wert)

Output Parameter

BezeichnerDatentypBeschreibung
errorBoolFALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
subFunctionStatusWordStatus oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen
elementCountDIntAnzahl der Elemente im Puffer
isEmptyBoolTRUE: Puffer ist leer

In/Out Parameter

BezeichnerDatentypBeschreibung
itemVariantEintrag der aus dem Puffer zurückgegeben wird oder in den Puffer geschrieben werden soll
bufferVariantDas ARRAY welches als Puffer genutzt wird. (Array of … )

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Status: Abarbeitung ohne Fehler beendet
16#7000STATUS_NO_CURRENT_JOBS
Status: Keine aktuellen Aufträge, Initial State
16#8001ERR_BUFFER_EMPTY
Fehler: Der Puffer ist leer
16#8002ERR_BUFFER_FULL
Fehler: Der Puffer ist voll
16#8200ERR_NO_ARRAY
Fehler: Am Eingang `buffer` liegt kein Array an.
16#8201ERR_WRONG_TYPE_ITEM
Fehler: Der Datentyp des InOut-Parameters `item` entspricht nicht dem Datentyp der Array-Elemente von dem Eingang `buffer`.
16#8202ERR_WRONG_TYPE_INITIAL_ITEM
Fehler: Der Datentyp des Eingangs `initialItem` entspricht nicht dem Datentyp des InOut-Parameters `item`.
16#8601ERR_INDEX_IN_ARRAY_LIMITS_1
Fehler: Die Variable `statNextEmptyItemIndex` liegt ausserhalb der Array Grenzen
16#8602ERR_INDEX_IN_ARRAY_LIMITS_2
Fehler: Die Variable `statFirstItemIndex` liegt ausserhalb der Array Grenzen
16#8610ERR_CLEAR_BUFFER
Fehler: Während des Ablöschen des Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus`
16#8611ERR_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#8612ERR_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#8613ERR_WRITE_ENTRY
Fehler: Während des Schreibens eines Elements in den Puffer in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus`

Funktionsbeschreibung

Hinweis
In 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.

Hinweis
Die Warteschlange (Queue) in der Informatik beruht ebenfalls auf dem FIFO-Prinzip.

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.

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
19.08.2015First released version
01.00.01Siemens Industry Online Support
16.11.2015Bug fix resetBuffer
01.00.02Siemens Industry Online Support
02.01.2017Upgrade: TIA Portal V14 Update 1
01.00.03Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
01.00.04Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
02.00.00Siemens Industry Online Support
29.01.2019Output "done" removed (not necessary, because block works synchronous)
03.00.00Simatic Systems Support
22.10.2019Code refactoring, comments added
Interface change (enqueue, dequeue etc.)
Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
15.02.2021Insert documentation