TEL_BUF

Este bloco implementa uma interface de dados com o portal de telemetria da HI Tecnologia. Implementa uma FIFO em um vetor de registros exportados como Holding Registers. Registros de dados podem ser inseridos nesta FIFO e o portal é responsável para ler os registros e informar quantos devem ser removidos.

Bloco

             TEL_BUF
         +--------------+
BOOL ----|EN         ENO|---- BOOL
         |              |
BOOL ----|WR        ELEM|---- UINT
         |              |
 INT ----|REM      TOTAL|---- UINT
         |              |
         |         EMPTY|---- BOOL
         |              |
         |          FULL|---- BOOL
         |              |
         |        RESULT|---- INT
         |              |
     ----|FIFO -------- |----
         |              |
     ----|DATA -------- |----
         +--------------+

Este bloco, opera em conjunto com o bloco HI_PORTAL que gerencia a o processo de inserção e remoção de eventos para o portal de telemetria da HI Tecnologia.

Formatos de dados

Existem 2 implementações de dados para utilização com este bloco. Em ambas, cada mensagem é composta por um vetor de 10 variáveis do tipo UINT.

Formato da versão V2

Esta versão foi desenvolvida para operação com o firmware G5 e é versão corrente para acesso ao Portal

O formato da base de dados do portal de telemetria para versão V2 é:

Cada registro de dados deve ser definido com tipo de dados “TEL_V2_DATA_TYPE” (definido nos tipos de dados da biblioteca HI_STD).

Este tipo é composto por 10 campos, descritos a seguir:

  • Timestamp (tipo DataTime)

    • 1o .. 4o campos: Valor da data/hora associado ao evento

  • Valor do registro de dados

    • 5o .. 8o campos: Valor numérico do dado associado. Pode ser qualquer valor numérico de 8 a 64 bits

  • Especificação do registro de dados

    • 9o campo: Tipo do valor numérico, definido pelo portal de telemetria (UINT)

  • Reserva para expansão

    • 10o campo.

Formato da versão V1

Esta versão foi desenvolvida para operação com o firmware G3S e não deve ser utilizada para novos desenvolvimentos.

O formato da base de dados do portal de telemetria para versão V1 é:

Cada registro de dados deve ser definido com tipo de dados “TEL_DATA_TYPE” (definido nos tipos de dados da biblioteca HI_STD).

Este tipo é composto por 10 campos, descritos a seguir:

  • Timestamp do registro de dados

    • 1o campo: Ano (UINT)

    • 2o campo: Mes (UINT)

    • 3o campo: Dia (UINT)

    • 4o campo: Hora (UINT)

    • 5o campo: Minutos (UINT)

    • 6o campo: Segundos (UINT)

    • 7o campo: Milisegundos (UINT)

  • Valor do registro de dados

    • 8o campo: Valor numérico LSB (UINT)

    • 9o campo: Valor numérico MSB (UINT)

  • Especificação do registro de dados

    • 10o campo: Tipo do valor numérico, definido pelo portal de telemetria (UINT)

Base de dados associada ao bloco (FIFO)

A base de dados definida para interface de troca de dados entre o equipamento e o portal de telemetria da HI Tecnologia deve possuir a seguinte estrutura:

  • Numero de registros de dados históricos (INT)

  • Buffer com “n” registros de dados históricos (ARRAY UINT)

Por exemplo, considerando que cada registro de dados é composto por 10 campos UINT, e se desejarmos disponibilizar um buffer com 20 registros de dados para o portal de telemetria, totalizamos 20 * 10 = 200 variáveis UINT. Podemos então definir as seguintes variáveis para a interface com o portal de telemetria:

Nome

Tipo

Dimensão

V.Inic.

Opçoes

Descrição

TEL_COUNT

INT

rent

Contador de registros de dados disoníveis para portal

TEL_BUFFER

UINT

[0..199]

rent

Buffer com até 20 registros de dados para portal telemetria

Importante

Comandos de remoção tem prioridade sobre o comando de inserção de dados, ou seja, se executados simultâneamente, os registros serão inicialmente removidos e após este processo um novo registro de dados será inserido na FIFO.

Parâmetros

Nome

Parâmetro

Tipo Dado

V. Ini.

Descrição

EN

Entrada

BOOL

TRUE

Habilitação de entrada

WR

Entrada

BOOL

FALSE

Escrita de um registro no buffer

REM

Entrada

INT

0

Nro. de elementos a remover do buffer

ENO

Saída

BOOL

TRUE

Habilitação de saída

ELEM

Saída

UINT

0

Nro. de elementos presentes na FIFO

TOTAL

Saída

UINT

0

Nro total de elementos suportados pela FIFO

EMPTY

Saída

BOOL

FALSE

FIFO vazia

FULL

Saída

BOOL

FALSE

FIFO cheia

RESULT

Saída

INT

0

Código de returno da última interação

FIFO

Entrada/Saída

ANY

FIFO - área onde serão armazenados os registros

DATA

Entrada/Saída

ANY

Conteúdo do registro a ser inserido na FIFO

RESULT

Tipo Dado

Descrição

INT

Código de retorno na execução da função, do tipo RET_CODE, onde:

  • Se for igual a 0: Função executada com sucesso - código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [2]

Exemplo

Declaração de Variáveis

Nome

Tipo

Dimensão

Opções

Descrição

TEL_COUNT

INT

rent

Contador de registros de dados para portal

TEL_BUFFER

UINT

[0..239]

rent

Buffer de registros de dados para portal

TEL_DATA

TEL_DATA_TYPE

Registros de dados para inserção no buffer do portal

TB

HILS.TEL_BUF

Instancia do bloco de interface com portal de telemetria

p_insert

BOOL

Inseri um onico registro no buffer de dados

p_remove

INT

Remove vários registros no buffer de dados

Clique aqui para baixar a tabela de variáveis

Código ST

(* Exemplo de remoção de registros *)
if ((* ... *)) (* OBS.: gerar condição para remover dados no buffer *)
  p_remove := 2;    (* ativa remoção de 2 registros de dados no buffer *)
end_if;
(* ... *)

(* Exemplo de inserção de um registro *)
if ((* ... *)) (* OBS.: gerar condição para inserir dado no buffer *)
  TEL_DATA.VALUE[0]  := 1;   (* valor LSB do dado a ser inserido *)
  TEL_DATA.VALUE[1]  := 0;   (* valor MSB do dado a ser inserido *)
  TEL_DATA.DATA_TYPE := 0;   (* tipo de dado a ser inserido      *)
  p_insert := TRUE;          (* ativa inserção de dado no buffer *)
end_if;
(* ... *)

(* Bloco de gerencia do buffer de registros de dados utilizado para interfacear com o portal de telemetria *)
TB(WR := p_insert, REM := p_remove, FIFO := TEL_BUFFER, DATA := TEL_DATA);
(* ... *)

(* se executou alguma inserção ou remoção no buffer, atualiza o nro resultante de elementos no buffer *)
if ((p_insert = TRUE) OR (p_remove > 0) OR (TEL_COUNT <> TB.ELEM)) then

  (* atualiza nro de elementos disponíveis no buffer de interface com portal de telemetria *)
  TEL_COUNT := TB.ELEM;

  (* reseta solicitação de 1 ciclo de inserção no buffer *)
  if p_insert = TRUE then
    p_insert := FALSE;
  end_if;

  (* reseta solicitação de remoção de elementos no buffer *)
  if p_remove > 0 then
    p_remove := 0;
  end_if;
end_if;