SOCKET_READ

Die SOCKET_READ-Anweisung liest Daten an einen Socket, und gibt die angegebene Anzahl der Bytes zurück. Wird für Transmission Control Protocol (TCP) beim Empfang von Daten zurückgegeben, bis die angeforderte Anzahl Byte erreicht wurde. Wird für Protokoll UDP (User Datagram) abgeschlossen, wenn ein Datagram zur Verfügung steht.
Details zum Betrieb:
Das folgende SOCKET_READ-Verhalten kann Auswirkungen auf vorhandene Kommunikation einschließlich Nicht-Socket-Kommunikation haben:
  • Wenn der SOCKET_READ-Vorgang nicht synchron mit dem Remote-Gerät ausgeführt wird, hält der Controller das Remote-Gerät-Empfangspaket zurück, bis eine der folgenden Situationen auftritt:
    • SOCKET_READ wird ausgeführt.
    • Socket-Zeitüberschreitung läuft ab
    • RST wird von einem Remote-Gerät empfangen
    • SOCKET_DELETE oder SOCKET_DELETEALL wird ausgeführt.
    • Es wird ein Vorgang „Änderung im Betriebsmodus“ ausgeführt, durch den alle erstellten Socket-Instanzen gelöscht werden.
    • Der Controller wechselt vom Betriebsmodus in den Programmmodus, sodass alle erstellten Socket-Instanzen gelöscht werden.
    • Der Controller wechselt vom Betriebsmodus in den Programmmodus, sodass Zählerinformationen der Socket-Diagnose und einzelne Socket-Zählerinformationen gelöscht werden.
  • Wenn der Length- oder Offset-Parameterwert geändert wird, während der SOCKET_READ-Vorgang ausgeführt wird (BUSY = True), tritt ein Fehler auf, und das Empfangspaket wird verworfen.
  • Die SOCKET_READ-Anweisung gibt möglicherweise weniger Bytes als angefordert zurück. RxLength enthält die Anzahl empfangener Datenbyte. Schreiben Sie Programme zur Überprüfung von RxLength und geben Sie anschließend weitere Leseanforderungen aus, um eine komplette Anwendungsmeldung zu erhalten.
  • In Modus „Änderung im Betriebsmodus“ bewirkt das Ändern einer SOCKET_READ-Eingabe, während Sie sich in der Zustand BUSY befinden, zu einem Fehler, und das empfangene Paket wird verworfen.
  • Die Ausgänge werden synchron vom Programm-Scan aktualisiert.
Unterstützte Sprachen: Funktionsblockdiagramm, Kontaktplan und Strukturierter Text.
Diese Anweisung gilt für
Micro820
L20E-,
Micro850
L50E- und
Micro870
L70E-Controller.
SOCKET_READ
SOCKET_READ
SOCKET_READ-Parameter
Parameter
Parametertyp
Datentyp
Beschreibung
Execute
Eingang
BOOL
Anweisung aktivieren.
  • TRUE: Anstiegsflanke erkannt, startet die Anweisung unter der Voraussetzung, dass der letzte Vorgang abgeschlossen ist.
  • FALSE: Startet keine Anweisung.
Instance
Eingang
UDINT
Kopieren vom zurückgegebenen Socket-Handler aus einer SOCKET_CREATE- oder SOCKET_ACCEPT-Anweisung.
  • Kopieren Sie für die Socket-Typen von UDP- und TCP-Client Socket den zurückgegebenen Socket-Handler aus einer SOCKET_CREATE-Anweisung.
  • Kopieren Sie für den Socket-Typ des TCP-Servers vom zurückgegebenen Socket-Handler aus einer SOCKET_ACCEPT-Anweisung.
Timeout
Eingang
UDINT
Zeitüberschreitung für SOCKET_READ. Der Anweisungsblock gibt einen Fehler zurück, wenn der Zeitüberschreitungswert geringer als der Mindestwert ist.
Zeitüberschreitungsbereich: 1000–86.400.000 Millisekunden. Setzen Sie Zeitüberschreitung auf 0 zur Verwendung des Standardwerts 10.000 (10 Sekunden).
Length
Eingang
UINT
Definiert die Anzahl der zu lesenden Bytes.
RxLength auf die tatsächliche Anzahl der gelesenen Bytes überprüfen. SOCKET_READ kann weniger Bytes als angefordert zurückgeben.
Unterstützt bis zu 256 Bytes.
Offset
Eingang
UNIT
Versatz im Datenarray. Beginn des Lesens der Daten an diesem Ort.
Data
Ausgang
USINT[1..1]
Ein Array, das zum Speichern der aus SOCKET_READ gelesenen Daten verwendet wird.
  • Die Datenarray-Größe muss >= (Offset + Length) sein.
  • Das Datenarray kann größer als die Länge des Socket-Lesevorgangs sein.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert.
Done
Ausgang
BOOL
Gibt an, wenn der Vorgang abgeschlossen ist.
  • TRUE: Vorgang erfolgreich abgeschlossen
  • FALSE: Vorgang wird ausgeführt oder eine Fehlerbedingung ist aufgetreten.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert.
Busy
Ausgang
BOOL
  • TRUE: Der Vorgang ist nicht abgeschlossen.
  • FALSE: Vorgang ist abgeschlossen.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert.
Error
Ausgang
BOOL
Gibt an, dass ein Fehler aufgetreten ist.
  • TRUE: Es wurde ein Fehler erkannt.
  • FALSE: Kein Fehler.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert.
Status
Ausgang
SOCK_STATUS
Der Status wird mithilfe des Datentyp SOCK_STATUS definiert, welche ErrorID-, SubErrorID- und StatusBits-Informationen enthält.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert.
RxLength
Ausgang
UNIT
Enthält die Anzahl der empfangenen Datenbytes.
UDPAddr
Ausgang
Die Adresse des Geräts, das die User Datagram Protocol (UDP)-Daten sendet.
Beispiel setzt UDPAddr auf 192.168.2.100 und Port auf 12000:
UDPAddr.IPAddress[0]=192
UDPAddr.IPAddress[1]=168
UDPAddr.IPAddress[2]=2
UDPAddr.IPAddress[3]=100
UDPAddr.Port = 12000
Für das Transmission Control Protocol (TCP) wird diese Struktur nicht verwendet und enthält alle Nullen. Die TCP-Verbindung übermittelt die Remote-Adressinformationen.

SOCKET_READ-Beispiele

Beispiel für ein SOCKET_READ-Funktionsblockdiagramm
Beispiel für ein SOCKET_READ-Funktionsblockdiagramm
Beispiel für einen SOCKET_READ-Kontaktplan
Beispiel für einen SOCKET_READ-Kontaktplan
Beispiel für strukturierten SOCKET_READ-Text
Beispiel für strukturierten SOCKET_READ-Text
Ergebnisse – TCP
Ergebnisse – TCP
Ergebnisse – UDP
Ergebnisse – UDP
Rückmeldung geben
Haben Sie Fragen oder Feedback zu dieser Dokumentation? Bitte geben Sie hier Ihr Feedback ab.
Normal