ReceiveData

ReceiveData 1:

Interface

VAR_INPUT
    pPrefix         : POINTER TO BYTE;
    LenPrefix       : BYTE;
    pSuffix         : POINTER TO BYTE;
    LenSuffix       : BYTE;
    pReceiveData    : POINTER TO BYTE;
    SizeReceiveData : DINT;
    Timeout         : TIME;
    Reset           :BOOL;
END_VAR
VAR_OUTPUT
    DataReceived    : BOOL;
    busy            : BOOL;
    Error           : ComError_t;
    RxTimeout       : BOOL;
    LenReceiveData  : UDINT;
END_VAR
VAR_IN_OUT
    RXbuffer        : ComBuffer;
END_VAR

Beschreibung

ReceiveData empfängt Daten beliebigen Typs von der mit der Eingangsvariablen RxBuffer korrespondierenden Schnittstelle und speichert sie in der Variablen ReceiveData. Anfang und Ende des Datenstromes werden über verschiedene miteinander kombinierbare Mechanismen erkannt:

Sobald der Ausgang DataReceived TRUE wird, stehen in der Variablen ReceiveData die empfangenen Daten bereit. Die Anzahl der empfangenen Zeichen wird in LenReceiveData angegeben.

pPrefix

pPrefix ist die Adresse einer beliebigen Datenstruktur, die mit ADR(Variablenname) an den Baustein übergeben wird. LenPrefix gibt die Anzahl der Datenbytes des Präfixes an.

LenPrefix

LenPrefix gibt die Anzahl der Datenbytes des Präfixes an.

pSuffix

pSuffix ist die Adresse einer beliebigen Datenstruktur, die mit ADR(Variablenname) an den Baustein übergeben wird.

LenSuffix

LenSuffix gibt die Anzahl der Datenbytes des Suffixes an.

pReceiveData

pReceiveData ist die Adresse der Empfangsdaten und wird mit ADR(Empfangsdaten) ermittelt. Die empfangenen Daten werden in der Variablen auf die pReceiveData zeigt abgelegt.

SizeReceiveData

SizeReceiveData wird mit SIZEOF(Empfangsdaten) ermittelt und gibt die maximale Größe der Empfangdaten an.

Timeout

Timeout definiert die maximale Zeitlücke zwischen zwei empfangenen Zeichen. Die Timeoutüberwachung wird nach dem ersten Zeichen wirksam. Somit kann mit Timeout nicht überwacht werden, ob ein erwartetes Telegramm eintrifft oder nicht. Diese Überwachung erfolgt extern.

Reset

Durch Setzen des Eingangs Reset wird der Baustein aus dem Empfangszustand in den Grundzustand zurückgesetzt. Das Zurücksetzen ist nur in Ausnahmefällen notwendig, wenn zum Beispiel die erwarteten Daten nicht empfangen werden konnten und der Baustein Busy bleibt.

DataReceived

DataReceived wird TRUE sobald die Empfangsdaten gültig sind. Der Ausgang ist für genau einen Zyklus TRUE, sodass die empfangenen Daten sofort ausgewertet werden müssen.

Busy

Busy wird ab dem ersten empfangenen Zeichen TRUE und wird FALSE sobald die Daten empfangen wurden oder ein Fehler aufgetreten ist.

Error

Error gibt im Fehlerfall einen Fehlercode aus. Der Fehlercode ist durch den Datentype ComError_t definiert und wird dadurch zur Laufzeit in Textform angezeigt.

RxTimeout

RxTimeout wird TRUE wenn die maximale Zeitlücke zwischen zwei empfangenen Zeichen überschritten wird. Der Datenempfang wird dadurch abgebrochen und die bis dahin empfangenes Zeichen liegen bereit. Wenn ohne Suffix gearbeitet wird, so ist die Timeout-Erkennung kein Fehler, sondern kennzeichnet das normale Ende der Empfangsdaten. Wird jedoch ein Suffix verwendet, so konnte dieses nicht empfangen werden.

LenReceiveData

LenReceiveData gibt die tatsächliche Anzahl der empfangenen Datenbytes an und kann kleiner oder gleich SizeReceiveData sein.

RxBuffer

RxBuffer ist der Empfangsdatenpuffer, der mit der verwendeten Schnittstelle korrespondiert.