WGATE_SEND_EX
Insere um dado nativo — escalar ou vetor — na cache de mensagens gerenciada pelo bloco de função WGATE_MAN, com timestamp automático ou informado, para posterior coleta pelo Portal de Telemetria; é a versão estendida de WGATE_SEND e é uma função.
Biblioteca: HI_STD · Namespace: HILS · Tipo: função
Função
WGATE_SEND_EX
+--------------+
INT ----|ID |---- INT
| |
BOOL ----|GEN_TS |
| |
DT ----|TS |
| |
UINT ----|I_INX |
| |
UINT ----|QNT |
| |
ANY ----|DATA |
| |
INT ----|MSGS |
+--------------+
A função insere o dado DATA na cache de mensagens MSGS para posterior coleta
pelo Portal de Telemetria. A cache é o mesmo vetor de INT informado em
WGATE_MAN:CACHE; o bloco WGATE_MAN é
responsável por transmitir as mensagens acumuladas ao portal.
Em relação a WGATE_SEND, esta versão estendida permite associar um
timestamp ao dado (gerado automaticamente via GEN_TS ou informado em TS) e
enviar um trecho de um vetor de dados nativos (via I_INX e QNT). Não são
suportados vetores de STRING.
Importante
O bloco WGATE_MAN deve ser chamado no início do ciclo da
aplicação, antes de qualquer chamada de WGATE_SEND_EX.
Parâmetros
Nome |
Direção |
Tipo |
Dimensão |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|---|
ID |
IN |
INT |
— |
0 |
— |
Identificador do dado associado à mensagem no Portal de Telemetria. |
GEN_TS |
IN |
BOOL |
— |
FALSE |
— |
Quando |
TS |
IN |
DT |
— |
— |
— |
Timestamp a associar ao dado quando |
I_INX |
IN |
UINT |
— |
0 |
— |
Índice do elemento inicial a enviar quando |
QNT |
IN |
UINT |
— |
0 |
— |
Quantidade de elementos a partir de |
DATA |
IN |
ANY |
— |
— |
— |
Dado ou vetor de dados a enviar ao portal. Aceita qualquer tipo nativo suportado pelo equipamento, inclusive |
MSGS |
IN |
INT |
[*] |
— |
— |
Cache de mensagens (vetor de |
Códigos de retorno
A função retorna um INT com o código de retorno da operação. Use os identificadores
com o namespace HILS (ex.: HILS.GL_INV_PAR). Códigos mais comuns desta função:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Dado inserido na cache com sucesso. |
5 |
GL_INV_PAR |
Parâmetro inválido: tipo de dado não suportado (ex.: estrutura, |
28 |
RE_FIL_OVF |
Número de mensagens disponíveis na cache insuficiente. |
Lista completa: RET_CODE - Códigos de retorno do firmware G5.
Retorno / Saídas
Retorna um INT com o código de retorno da operação RET_CODE: 0 ( HILS.SUCCESS ) indica que o
dado foi inserido na cache com sucesso; qualquer valor diferente de zero indica falha
(ver Códigos de retorno).
Pré-condições
Observações
A cache mantém as informações de cada dado salvo no equipamento até que sejam coletadas pelo portal.
Recomenda-se enviar novos dados apenas quando houver espaço disponível na cache (ver saída
PERCdo bloco WGATE_MAN).I_INXeQNTsó têm efeito quandoDATAé um vetor.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
MY_EV : BOOL := FALSE; (* Flag para inserção de dado na cache *)
MY_DATA : UDINT := 1234; (* valor a ser inserido na cache de mensagens *)
MY_ID : INT := 1000; (* identificador do dado no portal de telemetria *)
RET : INT; (* código de retorno da função de envio de dados para o portal *)
WCACHE : ARRAY [0..200] OF INT; (* Cache do portal com capacidade de 20 mensagens. Tamanho mínimo. *)
WEB_GATE : HILS.WGATE_MAN; (* Gerenciador de mensagens do portal de telemetria. *)
END_VAR
(* --- Gerência das mensagens reportadas para o portal de telemetria -----
*
* ATENÇÃO: Este bloco deve obrigatoriamente ser chamado no início do ciclo
* da aplicação corrente, antes de qualquer chamada da função
* WGATE_SEND_EX.
*)
WEB_GATE( (* WGATE_MAN *)
COMM := HILS.SOCK1_PORT_ID, (* [USINT] Canal de comunicação conectado ao portal de telemetria *)
TMO := T#40s, (* [TIME] Timeout para indicar desconexão com o portal *)
CACHE := WCACHE (* [INT] FIFO - área onde serão armazenados os registros *)
);
(* Quando MY_EV for TRUE e a cache estiver com menos de 50% envia MY_DATA para o portal,
com timestamp gerado automaticamente (GEN_TS := TRUE) *)
IF (MY_EV AND (WEB_GATE.PERC < 50)) THEN
RET := HILS.WGATE_SEND_EX(ID := MY_ID, GEN_TS := TRUE, DATA := MY_DATA, MSGS := WCACHE);
IF RET = 0 THEN
MY_EV := FALSE;
END_IF;
END_IF;