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
SOCKET_READ
Parâmetros da SOCKET_READ
Parâmetro
Tipo do parâmetro
Tipo de dados
Descrição
Execute
Entrada
BOOL
Habilitação da instrução.
  • TRUE: Borda ascendente detectada; inicia a instrução com a pré-condição de que a última operação esteja concluída.
  • FALSE: Não inicia a instrução.
Instance
Entrada
UDINT
Copia do Manipulador de soquete retornado de uma instrução SOCKET_CREATE ou SOCKET_ACCEPT.
  • Para os tipos de soquete UDP e TCP Client, copia o Manipulador de soquete retornado de uma instrução SOCKET_CREATE.
  • Para o tipo de soquete TCP Server, copia o Manipulador de soquete retornado de uma instrução 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.
  • O tamanho da matriz de dados deve ser >= (Offset + Length).
  • A matriz de dados pode ser maior do que Length do soquete lido.
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.
  • TRUE: Operação concluída com êxito.
  • FALSE: A operação está em progresso ou foi encontrada uma condição de erro.
A saída é atualizada de maneira síncrona a partir da varredura do programa.
Busy
Saída
BOOL
  • TRUE: A operação não foi concluída.
  • FALSE: A operação foi concluída.
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.
  • TRUE: Um erro foi detectado.
  • FALSE: Sem 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 blocos de função SOCKET_READ
Exemplo de diagrama de ladder SOCKET_READ
Exemplo de diagrama de ladder SOCKET_READ
Exemplo de texto estruturado SOCKET_READ
Exemplo de texto estruturado SOCKET_READ
Resultados - TCP
Resultados - TCP
Resultados - UDP
Resultados - UDP
Dê sua opinião
Tem dúvidas ou comentários sobre esta documentação? Por favor, envie seu comentário aqui.
Normal