HI_PORTAL

Envia mensagens de dados ao portal de telemetria da HI Tecnologia. Cada mensagem contém data/hora do evento, um identificador e um dado (qualquer tipo numérico ou de tempo: DT, TIME, DATE, TOD). É um bloco de função (requer instância) e opera em conjunto com TEL_BUF, que faz a interface com o portal.

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

Bloco de função

                     HI_PORTAL
                 +----------------+
        BOOL ----|EN           ENO|---- BOOL
                 |                |
         INT ----|EV_ID     RESULT|---- INT
                 |                |
         ANY ----|DATA ---------- |----
                 |                |
HILS.TEL_BUF ----|TEL_GAT-------- |----
                 +----------------+

Requer instância. A instância de TEL_BUF passada em TEL_GAT deve ser executada antes da chamada de HI_PORTAL, pois é recebida como parâmetro já inicializada.

Parâmetros

Nome

Direção

Tipo

Padrão

Descrição

EN

IN

BOOL

TRUE

Habilitação do bloco.

EV_ID

IN

INT

0

Identificador da mensagem.

ENO

OUT

BOOL

FALSE

Saída de habilitação.

RESULT

OUT

INT

0

Código de retorno do processamento (RET_CODE; ver Códigos de retorno).

DATA

IN_OUT

ANY

—

Dado a inserir na mensagem (numérico ou de tempo).

TEL_GAT

IN_OUT

HILS.TEL_BUF

—

Instância do bloco TEL_BUF (gerência das mensagens do portal).

Códigos de retorno

RESULT é do tipo RET_CODE: 0 (HILS.SUCCESS) indica sucesso; qualquer valor diferente de 0 indica falha (consulte o catálogo de códigos RET_CODE do ambiente).

Pré-condições

  • A instância de TEL_BUF passada em TEL_GAT deve ser executada antes da chamada de HI_PORTAL (é recebida como parâmetro já inicializada).

  • As variáveis do buffer do portal devem ser globais para serem coletadas:

    • PTEL_EL : INT (%MW0) — nº de mensagens disponíveis para coleta.

    • PTEL_MSGS : HILS.TEL_V2_DATA_TYPE (%MVW1, [0..9]) — buffer de mensagens.

Ver também

TEL_BUF, WGATE_SEND

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    EV          : INT := 0;              (* Nº do evento associado *)
    DT_VALUE    : UINT := 123;           (* Valor do dado *)
    TEL_GATEWAY : HILS.TEL_BUF;          (* Interface com o portal de telemetria *)
    PORTAL      : HILS.HI_PORTAL;        (* Bloco de registro de eventos *)
END_VAR
VAR_EXTERNAL
    PTEL_EL     : INT := 0;              (* Nº de mensagens disponíveis p/ coleta (Global) *)
    PTEL_MSGS   : HILS.TEL_V2_DATA_TYPE; (* Buffer de mensagens do portal (Global) *)
END_VAR

(* Interface com o portal de telemetria.
   Se o nº de elementos da FIFO for negativo, o portal removeu essa quantidade;
   nessa condição, removê-los do buffer.
   IMPORTANTE: TEL_BUF deve ser chamado ANTES de HI_PORTAL, pois é passado como parâmetro. *)
TEL_GATEWAY(
  WR   := FALSE,
  REM  := -PTEL_EL,    (* remove as mensagens que o portal já processou *)
  FIFO := PTEL_MSGS
  );
PTEL_EL := TEL_GATEWAY.ELEM;

(* Insere o dado no portal sempre que o evento for diferente de zero *)
IF (EV <> 0) THEN
  PORTAL(EV_ID := EV, DATA := DT_VALUE, TEL_GAT := TEL_GATEWAY);
  EV := 0; (* aguarda novo evento *)
END_IF;