FIFO_HANDLER (FB)

Der Funktionsbaustein 'FIFO_HANDLER' realisiert einen FIFO Speicher (First In First Out).

Charakteristisch für den Baustein ist:

 

Vor Benutzung der restlichen FIFO-Funktionalität, ist zunächst die Aktion 'FifoInit()' auszuführen.

Die bei 'FifoInit()' vorgegebenen Werte für 'uiEleSize', 'uiFifoSize', 'pbyFifo' und 'stFifoHeader' dürfen danach nicht mehr geändert werden

'FifoReset()' ist nur möglich, wenn noch kein FIFO-Überlauf stattgefunden hat

 

Anwender Interface

Eingangsvariablen

Name

Typ

Beschreibung

boExec

BOOL

Funktionsausführung: Mit einer positiven Flanke startet die Ausführung des Bausteins.

Solange 'boExec' = TRUE ist, wird der Baustein von der PLC bearbeitet.

Im Zustand 'boExec' = FALSE wird die Ausführung des Bausteins beendet.

enMode

ENUM

EN_FIFO_HANDLER_MODE

Auswahlmodus der Funktion
Die Funktion wird im Rahmen einer Aktion [Fifoxxxxx] ausgeführt

Standardeinstellung

FIFO_INIT

Bereich

Bedeutung

FIFO_INIT
[FifoInit]

FIFO initialisieren

Die relevanten Eingangsvariablen werden in die Variable 'stFifoHeader' übernommen und der für den FIFO zur Verfügung gestellte Speicherbereich gelöscht (FifoClear).

FIFO_CLEAR
[FifoClear]

FIFO löschen

'uiEleNmb' und 'udEleInd' werden gelöscht (:= 0).
Darüber hinaus wird der interne Zustand 'stFifoHeader.enFifoState' = FIFO_STATE_READY eingestellt.

FIFO_RESET
[FifoReset]

Ausgangsindex rücksetzen

Die Aktion setzt 'udEleInd' := 0 und 'uiEleNmb' auf die Anzahl der bereits in den FIFO eingeschriebenen Elemente.
Dadurch können die bereits geschrieben Elemente erneut gelesen werden.

 

Die Aktion kann nur verwendet werden, falls noch kein FIFO-Überlauf stattgefunden hat:
'stFifoHeader.enFifoState' = FIFO_STATE_READY

FIFO_READ
[FifoRead]

FIFO Element auslesen

Lesen des zuerst eingeschriebenen und noch nicht ausgelesenen Elements des FIFO.
Dieses aktuelle Element wird dann mit 'uiEleSize' Bytes auf die in 'pbyEle' verwiesene Adresse geschrieben.
'uiEleNmb' wird dekrementiert, 'udEleInd' wird inkrementiert.

FIFO_WRITE
[FifoWrite]

FIFO Element einschreiben

Geschrieben wird das Element, auf das mit 'pbyEle' verwiesen wird. Es werden 'uiEleSize' Bytes geschrieben.
'uiEleNmb' wird inkrementiert.

uiEleSize

UINT

Größe (in Byte) des zu schreibenden / lesenden Elements

pbyEle

POINTER

POINTER TO BYTE

enMode = FIFO_READ:
Zeiger auf die Adresse, ab der das ausgelesene Element gespeichert wird

enMode = FIFO_WRITE:
Zeiger auf die Adresse, ab der Daten in den FIFO übernommen werden

uiFifoSize

UINT

Größe (in Byte) des für die FIFO-Organisation bereitgestellten Speicherbereichs

pbyFifo

POINTER

POINTER TO BYTE

Zeiger auf die Adresse, ab der für die FIFO-Organisation Speicherbereich bereitgestellt wird

Ausgangsvariablen

Name

Typ

Beschreibung

boDone

BOOL

Rückmeldung, dass der Funktionsbaustein vollständig ausgeführt wurde

boErr

BOOL

Der Funktionsbaustein befindet sich im Zustand Fehler

FALSE

Kein Fehler (Kommandierung zulässig oder Warnung)

TRUE

Fehler

iErrID

INT

Fehler Identnummer: Diagnosenummer wird ausgegeben

iErrID = 0

Kein Fehler

iErrID ≠ 0

boErr = TRUE

Fehler

iErrID ≠ 0

boErr = FALSE

Warnung

Bereich

Bedeutung

1

Unzulässiger Modus

2

Ungültige Elementgröße

3

Elementzeiger nicht initialisiert

4

Ungültige FIFO Bereichsgröße

5

FIFO Bereichszeiger nicht initialisiert

6

Unzulässige FIFO Kopfinformation

7

FIFO ist nicht initialisiert

8

Reset Funktion unzulässig

9

FIFO voll

10

FIFO leer

uiEleNmb

UINT

Anzahl der in den FIFO geschriebenen und noch nicht zurückgelesenen Elemente.

udEleInd

UDINT

FIFO Position, von der mittels 'FifoRead()' aktuell gelesen wird.

Ein- und Ausgangsvariablen

Name

Typ

Beschreibung

stFifoHeader

STRUCT

ST_FIFO_HEADER

FIFO-Kopfinformation

Organisation des FIFO