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 |
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 |
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 |
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_SRCdeve estar previamente configurado para protocolo ASCII (com ou sem SOF/EOF).SEND_STRdeve estar montada antes de ativarSTART.
Observações
Quando há SOF/EOF configurados,
REC_STRrecebe 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 sinalizaREADY.
Ver também
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;
(* ... *)