ReceiveString

ReceiveString 1:

Der Funktionsbaustein ReceiveString empfängt eine Zeichenkette von der mit der Eingangsvariablen RxBuffer korrespondierenden Schnittstelle und speichert sie in der Ausgangsvariablen ReceivedString. Anfang und Ende der Zeichenkette werden über verschiedene miteinander kombinierbare Mechanismen erkannt.

ReceiveString 2:

Alternative

Der String ReceivedString hat eine Standardlänge von 80 Zeichen. Für manche Anwendungen kann diese Länge zu kurz sein. In diesem Fall kann der Baustein ReceiveString255 verwendet werden. Der einzige Unterschied ist eine Stringlänge von 255 Zeichen für den ReceivedString.

ReceiveString 3: Eingänge

VAR_INPUT
  Prefix          : STRING;
  Suffix          : STRING;
  Timeout         : TIME;
  Reset           : BOOL;
END_VAR

Name

Typ

Beschreibung

Prefix

STRING

Wird in der Eingangsvariablen Prefix ein String übergeben, so müssen die ersten Zeichen der empfangenen Daten mit diesem Präfix übereinstimmen. Andere Zeichen werden verworfen. Wird kein Präfix übergeben (Leerstring), so beginnt der Empfangsstring mit dem ersten empfangenen Zeichen.

Suffix

STRING

Wird in der Eingangsvariablen Suffix ein String übergeben, so werden die Eingangsdaten so lange gelesen, bis das Ende des Empfangsstrings mit dem Suffix übereinstimmt. Erreichen die empfangenen Daten dabei die Maximallänge des Empfangsstrings, so wird ein Fehler COMERROR_STRINGOVERRUN generiert. Wenn ein Leerstring als Suffix übergeben wird, so muss alternativ ein Timeout definiert werden, da anderenfalls das Ende der Zeichenkette nicht erkannt werden kann.

Timeout

TIME

Wird ein Timeout an den Baustein übergeben, so werden solange Zeichen empfangen, bis nach einem Zeichen eine entsprechend große Zeitlücke folgt. Der Empfangsstring besteht aus den bis dahin empfangenen Zeichen. Suffix und Timeout dürfen kombiniert werden. Wird ein Suffix übergeben, so darf der Timeout 0 sein.

Reset

 

BOOL

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 der erwartete String nicht empfangen werden konnte und der Baustein Busy bleibt.

ReceiveString 4: Ein-/Ausgänge

VAR_IN_OUT
  ReceivedString   : STRING;
  RXBuffer         : ComBuffer;
END_VAR

Name

Typ

Beschreibung

ReceivedString

STRING

Sobald der Ausgang StringReceived TRUE wird, steht in der Variablen ReceivedString die empfangene Zeichenkette bereit.

RxBuffer

ComBuffer

Empfangsdatenpuffer der mit der verwendeten Schnittstelle korrespondiert.

ReceiveString 5: Ausgänge

VAR_OUTPUT
  StringReceived  : BOOL
  busy            : BOOL;
  Error           : ComError_t;
  RxTimeout       : BOOL;
END_VAR

Name

Typ

Beschreibung

StringReceived

 

BOOL

Sobald der Ausgang StringReceived TRUE wird, steht in der Variablen ReceivedString die empfangene Zeichenkette bereit.

busy

BOOL

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

Error

ComError_t

Error gibt im Fehlerfall einen Fehlercode aus.

RxTimeout

 

BOOL

RxTimeout wird TRUE wenn die maximale Zeitlücke zwischen zwei empfangenen Zeichen überschritten wird. Der Datenempfang wird dadurch abgebrochen und die bis dahin empfangenen 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. Der Timeout wird nicht als Fehler ausgegeben, sondern allein über diesen Ausgang signalisiert. In einem solchen Fall ist DataReceived dennoch TRUE und LenReceivedData gibt die Anzahl der bis zum Timeout empfangenen Daten an. Um nur gültige und vollständige Empfangsdaten (inkl. Suffix) auszuwerten, sollte eine Abfrage neben DataReceived=TRUE ebenso RxTimeout=FALSE und Error=COMERROR_NOERROR prüfen.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4012

PC oder CX (ARM, x86, x64)

Tc2_SerialCom