SOCKET_READ
La instrucción SOCKET_READ lee datos en un socket y devuelve el número de bytes especificado. Para el protocolo de control de transmisión (TCP), se devuelve la instrucción cuando se recibe cualquier dato, hasta el número de bytes solicitado. Para el protocolo de datagramas de usuario (UDP), se completa cuando un datagrama está disponible.
Detalles de la operación:
El comportamiento siguiente de SOCKET_READ podría afectar a las comunicaciones existentes, incluida la comunicación por vía distinta del socket:
- Si la operación SOCKET_READ no se ejecuta sincronizada con el dispositivo remoto, el controlador retiene el paquete de recepción del dispositivo remoto hasta que se produce uno de los sucesos siguientes:
- Se ejecuta SOCKET_READ.
- Expira el tiempo de espera de socket.
- Se recibe RST desde un dispositivo remoto.
- Se ejecutan SOCKET_DELETE o SOCKET_DELETEALL.
- Se efectúa un Cambio de modo de ejecución que borra todas las instancias de socket creadas.
- El controlador cambia del modo de ejecución al modo de programa, lo que borra todas las instancias de socket creadas.
- El controlador cambia del modo de ejecución al modo de programa, lo que borra la información de contador de diagnóstico de socket y la de contador de diagnóstico de socket individual.
- Si el valor de parámetro Length u Offset se cambia con la operación SOCKET_READ en curso (OCUPADO = Cierto), se produce un error y el paquete de recepción se descarta.
- La instrucción SOCKET_READ puede devolver menos bytes que los que se solicitaron. LongitudDeRecep contiene el número de bytes de datos recibidos. Escriba programas para comprobar el valor LongitudDeRecep y, a continuación, emita solicitudes de lectura adicionales para recibir un mensaje de aplicación entero.
- En el modo de cambio de modo de ejecución, cualquier cambio a una entrada de SOCKET_READ mientras se opera en estado OCUPADO se convierte en un error y el paquete recibido se descarta.
- Las salidas se actualizan de forma síncrona desde la exploración del programa.
Idiomas compatibles: Diagrama de bloque de funciones, diagrama de lógica de escalera y texto estructurado.
Esta instrucción se aplica a los controladores L20E, L50E y L70E.
SOCKET_READ

Parámetro | Tipo de parámetro | Tipo de datos | Descripción |
|---|---|---|---|
Execute | Entrada | BOOL | Habilitar instrucción.
|
Instance | Entrada | UDINT | Copie el Controlador de socket devuelto a partir de una instrucción SOCKET_CREATE o SOCKET_ACCEPT.
|
Timeout | Entrada | UDINT | Tiempo de espera para SOCKET_READ. El bloque de instrucción muestra un error si el valor de tiempo de espera es inferior al valor mínimo. Rango de tiempo de espera: 1.000-86.400.000 milisegundos. Establezca el Tiempo de espera en 0 si desea utilizar el valor predeterminado 10 000 (10 segundos). |
Length | Entrada | UINT | Define el número de bytes que se leerán. Compruebe RxLength para conocer el número real de bytes leídos. SOCKET_READ puede devolver menos bytes que los solicitados. Admite hasta 256 bytes. |
Offset | Entrada | UNIT | Offset en matriz de Datos. Se empiezan a leer datos desde esta ubicación. |
Data | Salida | USINT[1..1] | Matriz utilizada para almacenar los datos leídos desde SOCKET_READ.
La salida se actualiza de forma síncrona desde la exploración del programa. |
Done | Salida | BOOL | Indica si la operación está completa.
La salida se actualiza de forma síncrona desde la exploración del programa. |
Busy | Salida | BOOL |
La salida se actualiza de forma síncrona desde la exploración del programa. |
Error | Salida | BOOL | Indica que se ha producido un error.
La salida se actualiza de forma síncrona desde la exploración del programa. |
Status | Salida | SOCK_STATUS | El estado se define utilizando el Tipo de datos SOCK_STATUS que contiene información de ErrorID, SubErrorID y StatusBits. La salida se actualiza de forma síncrona desde la exploración del programa. |
RxLength | Salida | UNIT | Contiene el número de bytes de datos recibidos. |
UDPAddr | Salida | La dirección del dispositivo que envía datos por el protocolo de datagramas de usuario (UDP). El ejemplo define una DirecUDP de 192.168.2.100 y puerto 12000: UDPAddr.IPAddress[0]=192 UDPAddr.IPAddress[1]=168 UDPAddr.IPAddress[2]=2 UDPAddr.IPAddress[3]=100 UDPAddr.Port = 12000 En el caso del protocolo de control de transmisión (TCP), esta estructura no se usa y contiene solo ceros. La conexión TCP transmite la información de dirección remota. |
Ejemplos de SOCKET_READ
Ejemplo de diagrama de bloque de funciones SOCKET_READ

Ejemplo de diagrama de lógica de escalera SOCKET_READ

Ejemplo de texto estructurado SOCKET_READ

Resultados: TCP

Resultados - UDP

Entregue su opinión