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
SOCKET_READ
Parámetros de SOCKET_READ
Parámetro
Tipo de parámetro
Tipo de datos
Descripción
Execute
Entrada
BOOL
Habilitar instrucción.
  • CIERTO: Se detecta un flanco ascendente, se inicia la instrucción con la condición previa de que la última operación esté completa.
  • FALSO: No comienza la instrucción.
Instance
Entrada
UDINT
Copie el Controlador de socket devuelto a partir de una instrucción SOCKET_CREATE o SOCKET_ACCEPT.
  • En el caso de los tipos de socket UDP y cliente TCP, copie el Controlador de socket devuelto a partir de una instrucción SOCKET_CREATE .
  • En el caso del tipo de socket Servidor TCP, copie el Controlador de socket devuelto a partir de una instrucción 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.
  • El tamaño de la matriz de datos debe ser >= (Offset + Length).
  • La matriz de datos puede ser mayor que la Longitud leída de socket.
La salida se actualiza de forma síncrona desde la exploración del programa.
Done
Salida
BOOL
Indica si la operación está completa.
  • CIERTO: Operación completada correctamente.
  • FALSO: La operación está en curso o se produjo una condición de error.
La salida se actualiza de forma síncrona desde la exploración del programa.
Busy
Salida
BOOL
  • CIERTO: La operación no está completa.
  • FALSO: La operación ha finalizado.
La salida se actualiza de forma síncrona desde la exploración del programa.
Error
Salida
BOOL
Indica que se ha producido un error.
  • CIERTO: Se ha detectado un error.
  • FALSO: No hay 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 bloque de funciones SOCKET_READ
Ejemplo de diagrama de lógica de escalera SOCKET_READ
Ejemplo de diagrama de lógica de escalera SOCKET_READ
Ejemplo de texto estructurado SOCKET_READ
Ejemplo de texto estructurado SOCKET_READ
Resultados: TCP
Resultados: TCP
Resultados - UDP
Resultados - UDP
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal