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 TRUE, gera automaticamente o timestamp do dado (ignora TS); quando FALSE, usa TS.

TS

IN

DT

—

—

—

Timestamp a associar ao dado quando GEN_TS for FALSE.

I_INX

IN

UINT

—

0

—

Índice do elemento inicial a enviar quando DATA é vetor (ignorado se escalar).

QNT

IN

UINT

—

0

—

Quantidade de elementos a partir de I_INX quando DATA é vetor (ignorado se escalar).

DATA

IN

ANY

—

—

—

Dado ou vetor de dados a enviar ao portal. Aceita qualquer tipo nativo suportado pelo equipamento, inclusive STRING (exceto vetores de STRING).

MSGS

IN

INT

[*]

—

—

Cache de mensagens (vetor de INT) utilizada pela instância do bloco WGATE_MAN.

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, WSTRING) ou índice/quantidade de vetor inválidos.

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

  • O bloco WGATE_MAN deve ser chamado no início do ciclo, antes de WGATE_SEND_EX.

  • MSGS deve ser o mesmo vetor de INT informado em CACHE do bloco WGATE_MAN.

  • Deve haver espaço disponível na cache para acomodar a nova mensagem.

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 PERC do bloco WGATE_MAN).

  • I_INX e QNT só têm efeito quando DATA é um vetor.

Ver também

WGATE_MAN, WGATE_SEND

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;