STR_SEND_REC

Envia o conteúdo de uma STRING pelo canal de comunicação especificado e, opcionalmente, recebe do equipamento remoto uma resposta também no formato de STRING; o canal precisa estar configurado para protocolo ASCII. É um bloco de função (mantém estado entre scans; requer instância).

Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função

Bloco de função

              STR_SEND_REC
           +-----------------+
  BOOL ----|START       READY|---- BOOL
           |                 |
  BOOL ----|REPLY      RESULT|---- INT
           |                 |
  UINT ----|COMM_SRC         |
           |                 |
STRING ----|SEND_STR ------- |----
           |                 |
STRING ----|REC_STR -------- |----
           +-----------------+

Quando ativado, o bloco envia pelo canal de comunicação especificado, para o equipamento remoto, o conteúdo da string presente em SEND_STR. Uma vez enviada, a aplicação é notificada e pode aguardar um pacote de resposta retornado pelo equipamento remoto. Essa resposta é opcional: é possível apenas aguardar o término do envio e encerrar o tratamento. A saída READY vai a TRUE quando a transação termina, momento em que RESULT é atualizado.

Os parâmetros REC_STR e SEND_STR são as strings definidas para recepção e envio dos dados. O pacote de dados recebido em REC_STR, quando há SOF ou EOF configurados, não inclui esses caracteres. Caso a aplicação precise enviar o pacote com SOF e/ou EOF, é de sua responsabilidade inserir esses caracteres na string SEND_STR.

Importante

Para operação correta, o canal de comunicação utilizado deve ser previamente configurado para operação com protocolo ASCII, com ou sem SOF e EOF.

Nota

O canal de comunicação é indicado em COMM_SRC por um identificador numérico (ex.: HILS.COM1_PORT_ID = 0, HILS.SOCK3_PORT_ID = 11). Os identificadores são definidos no tipo COMM_CHAN_ID da biblioteca HI_STD; cada equipamento disponibiliza um subconjunto desses recursos — consulte o manual do equipamento.

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

START

IN

BOOL

FALSE

—

Inicia uma transação de comunicação (ativa na transição de subida).

REPLY

IN

BOOL

FALSE

—

Se TRUE, o bloco aguarda uma resposta do equipamento remoto em REC_STR.

COMM_SRC

IN

UINT

0

COMM_CHAN_ID

Identificador do canal de comunicação (0: COM1, 1: COM2, 11: SOCKET 3 …).

SEND_STR

IN_OUT

STRING

—

—

String a ser enviada pelo canal de comunicação especificado.

REC_STR

IN_OUT

STRING

—

—

String a receber na transação (quando a recepção está habilitada por REPLY).

READY

OUT

BOOL

FALSE

—

Quando TRUE, indica transação de comunicação concluída.

RESULT

OUT

INT

0

RET_CODE

Código de retorno da última transação; atualizado quando READY vai a TRUE.

Códigos de retorno

RESULT é do tipo RET_CODE. Use os identificadores com o namespace HILS (ex.: HILS.CO_REC_TMO). Códigos mais comuns deste bloco:

Código

Identificador

Significado

0

SUCCESS

Transação executada com sucesso.

10

GL_CMD_TMO

Timeout na execução do comando.

68

CO_TRA_BUF_OVL

Overflow no buffer de transmissão (string de envio grande demais).

69

CO_REC_BUF_OVR

Overrun no buffer de recepção.

70

CO_COM_ERR

Erro genérico de comunicação.

74

CO_INV_CHA

Canal de comunicação inválido.

78

CO_TRA_TMO

Timeout na transmissão do frame.

79

CO_REC_TMO

Timeout na recepção do frame (sem resposta do equipamento remoto).

87

CO_COM_BRO

Comunicação interrompida.

Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.

Pré-condições

  • O canal indicado em COMM_SRC deve estar previamente configurado para protocolo ASCII (com ou sem SOF/EOF).

  • SEND_STR deve estar montada antes de ativar START.

Observações

  • Quando há SOF/EOF configurados, REC_STR recebe apenas o payload — os caracteres de delimitação não são incluídos.

  • Para enviar SOF/EOF junto ao pacote, insira-os manualmente em SEND_STR.

  • Com REPLY = FALSE, o bloco apenas conclui o envio e sinaliza READY.

Ver também

COMM_SEND_REC, COMM_REC_SEND, CONFIG_SERIAL

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    MY_TRANS : HILS.STR_SEND_REC;    (* Instancia do bloco de comunicação STR_SEND_REC *)
    MY_SEND  : BOOL;                 (* Inicia uma transação *)
    MY_S_STR : STRING[5] := 'hello'; (* String que será enviada ao equipamento remoto *)
    MY_R_STR : STRING[100];          (* String que receberá a resposta *)
END_VAR

(* ... *)

(* Ative a variavel MY_SEND quando desejar iniciar uma transação *)
(* ... *)

(* aguarda envio do pacote e a resposta do equipamento remoto *)
MY_TRANS(
  START      := MY_SEND,           // Inicia uma transação (ativa na transição de subida)
  REPLY      := TRUE,              // Aguarda resposta do equipamento remoto
  COMM_SRC   := HILS.COM1_PORT_ID, // Identificador do canal de comunicação (COM1)
  REC_STR    := MY_R_STR,          // buffer para receber o pacote de resposta
  SEND_STR   := MY_S_STR           // buffer utilizado para montar o pacote a ser enviado
  );

(* aguarda final da transação *)
IF (MY_TRANS.READY) THEN

  IF (MY_TRANS.RESULT = 0) THEN
    (* transação realizada com sucesso. Trata o conteudo recebido em MY_R_STR *)
    (* ... *)

  ELSE
    (* transação realizada com falha *)
    (* ... *)

  END_IF;

  MY_SEND := FALSE; // prepara para proxima transação

END_IF;
(* ... *)