ReceiveString255
![ReceiveString255 1:](Images/png/16264484875__Web.png)
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.
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. |
Ein-/Ausgänge
VAR_IN_OUT
ReceivedString : STRING(255);
RXBuffer : ComBuffer;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
ReceivedString | STRING (255) | Sobald der Ausgang StringReceived TRUE wird, steht in der Variablen ReceivedString die empfangene Zeichenkette bereit. |
RxBuffer | Empfangsdatenpuffer der mit der verwendeten Schnittstelle korrespondiert. |
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 | 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 |