SOCKET_READ
A instrução SOCKET_READ lê os dados em um soquete e retorna o número de bytes especificado. Para Transmission Control Protocol (TCP), retorna quando qualquer dado for recebido, até atingir o número solicitado de bytes. Para User Datagram Protocol (UDP), completa quando um datagrama está disponível.
Detalhes da operação:
O comportamento de SOCKET_READ a seguir pode afetar as comunicações existentes, incluindo comunicação que não é realizada por soquete:
- Se a operação SOCKET_READ não for executada em sincronia com o dispositivo remoto, o controlador manterá suspenso o pacote de recebimento do dispositivo remoto até que uma das seguintes situações ocorra:
- SOCKET_READ é executado.
- O tempo-limite do soquete expira.
- RST é recebido de um dispositivo remoto.
- SOCKET_DELETE ou SOCKET_DELETEALL é executado.
- Uma ação de Alterar no modo de execução é realizada, que exclui todas as instâncias de soquete criadas.
- O controlador altera de modo de execução para modo de programa, o que exclui todas as instâncias de soquete criadas.
- O controlador altera de modo de execução para modo de programa, o que limpa as informações do contador de diagnóstico do soquete e as informações do contador do soquete individual.
- Se o valor dos parâmetros Length ou Offset for alterado enquanto a operação SOCKET_READ estiver em andamento (BUSY = True), ocorrerá um erro e o pacote de recebimento será descartado.
- A instrução SOCKET_READ pode retornar menos bytes do que o solicitado. RxLength contém o número de bytes de dados recebidos. Grave programas para verificar RxLength e, em seguida, emita outras solicitações de leitura para receber uma mensagem do aplicativo inteiro.
- No modo de Alteração no modo de execução, alterar uma entrada de SOCKET_READ durante a operação no estado BUSY resultará em um erro e o pacote recebido será descartado.
- As saídas são atualizadas de maneira assíncrona a partir da varredura do programa.
Linguagens suportadas: Diagrama de blocos de função, diagrama de ladder, texto estruturado.
Essa instrução aplica-se aos controladores L20E, L50E e L70E.
SOCKET_READ

Parâmetro | Tipo do parâmetro | Tipo de dados | Descrição |
|---|---|---|---|
Execute | Entrada | BOOL | Habilitação da instrução.
|
Instance | Entrada | UDINT | Copia do Manipulador de soquete retornado de uma instrução SOCKET_CREATE ou SOCKET_ACCEPT.
|
Timeout | Entrada | UDINT | Tempo limite para SOCKET_READ. O bloco de instruções retorna um Erro se o valor do tempo-limite for menor do que o valor mínimo. Intervalo do tempo-limite: De 1.000 a 86.400.000 milissegundos. Defina Timeout como 0 para usar o valor padrão 10.000 (10 segundos). |
Length | Entrada | UINT | Define o número de bytes a ser lido. Verifique o número real de bytes lido em RxLength. SOCKET_READ pode retornar menos bytes do que o solicitado. Aceita até 256 bytes. |
Offset | Entrada | UNIT | Offset na matriz de Dados. Inicia a leitura de dados lidos a partir deste local. |
Data | Saída | USINT[1..1] | Uma matriz para armazenar dados lidos do SOCKET_READ.
A saída é atualizada de maneira síncrona a partir da varredura do programa. |
Done | Saída | BOOL | Indica quando a operação é concluída.
A saída é atualizada de maneira síncrona a partir da varredura do programa. |
Busy | Saída | BOOL |
A saída é atualizada de maneira síncrona a partir da varredura do programa. |
Error | Saída | BOOL | Indica a ocorrência de um erro.
A saída é atualizada de maneira síncrona a partir da varredura do programa. |
Status | Saída | SOCK_STATUS | O status é definido usando o Tipo de dados SOCK_STATUS, que contém informações de ErrorID, SubErrorID e StatusBits. A saída é atualizada de maneira síncrona a partir da varredura do programa. |
RxLength | Saída | UNIT | Contém o número de bytes de dados recebidos. |
UDPAddr | Saída | O endereço do dispositivo enviando dados do User Datagram Protocol (UDP). O Exemplo define um UDPAddr de 192.168.2.100 e Porta 12000: UDPAddr.IPAddress[0]=192 UDPAddr.IPAddress[1]=168 UDPAddr.IPAddress[2]=2 UDPAddr.IPAddress[3]=100 UDPAddr.Port = 12000 Para Transmission Control Protocol (TCP), essa estrutura não será usada e conterá somente zeros. A conexão TCP transmite as informações de endereço remoto. |
Exemplos de SOCKET_READ
Exemplo de diagrama de blocos de função SOCKET_READ

Exemplo de diagrama de ladder SOCKET_READ

Exemplo de texto estruturado SOCKET_READ

Resultados - TCP

Resultados - UDP

Dê sua opinião