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

Parameter | Parametertyp | Datentyp | Beschreibung |
|---|---|---|---|
Execute | Eingang | BOOL | Anweisung aktivieren.
|
Instance | Eingang | UDINT | Kopieren vom zurückgegebenen Socket-Handler aus einer SOCKET_CREATE- oder 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 Ausgabe wird synchron vom Programm-Scan aktualisiert. |
Done | Ausgang | BOOL | Gibt an, wenn der Vorgang abgeschlossen ist.
Die Ausgabe wird synchron vom Programm-Scan aktualisiert. |
Busy | Ausgang | BOOL |
Die Ausgabe wird synchron vom Programm-Scan aktualisiert. |
Error | Ausgang | BOOL | Gibt an, dass ein Fehler aufgetreten ist.
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 einen SOCKET_READ-Kontaktplan

Beispiel für strukturierten SOCKET_READ-Text

Ergebnisse – TCP

Ergebnisse – UDP

Rückmeldung geben