TEL_FS_GATEWAY
Implementa uma interface de dados (“gateway”) para o portal de telemetria da HI Tecnologia, armazenando registros em uma FIFO mapeada em vetor com transbordo automático para um arquivo no sistema de arquivos quando a FIFO enche; requer controlador com suporte a sistema de arquivos em SDCARD. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Os registros de dados são inicialmente armazenados em uma CACHE de entrada e,
posteriormente, transferidos para a FIFO. Se a FIFO ficar cheia, o arquivo de dados
DATA_FILE é criado automaticamente e os dados da CACHE são transferidos para ele.
O portal de telemetria acessa os registros da FIFO lendo variáveis do tipo
“Holding Register”; é responsável por ler os dados disponíveis e informar a
quantidade efetiva de registros coletados para sua remoção da FIFO. À medida que o
portal coleta os dados e existe um arquivo DATA_FILE com dados, os registros
desse arquivo são transferidos automaticamente para a FIFO; quando todos são
transferidos, o arquivo é eliminado.
O arquivo de dados é gerenciado internamente pelo bloco, de forma que a interface
com o portal de telemetria é sempre realizada através da FIFO e a gerência do
DATA_FILE é transparente para o portal.
Este bloco opera em conjunto com o bloco HI_FS_PUBLISH, que ativa a publicação do dado para o portal de telemetria.
Nota
Antes de utilizar este bloco de função, consulte no manual do controlador utilizado se o mesmo possui suporte para sistema de arquivos no SDCARD.
Nota
Para gerenciar mensagens mantidas na memória do equipamento, em vez do sistema de arquivos, utilize o bloco de função TEL_BUF.
Bloco de função
TEL_FS_GATEWAY
+------------------+
BOOL ----|EN ENO|---- BOOL
| |
BOOL ----|INS EMPTY|---- BOOL
| |
INT ----|DEL RESULT|---- INT
| |
| FULL|---- BOOL
| |
| ELEM|---- UINT
| |
| TOTAL|---- UINT
| |
INT ----|CMD ------------- |----
| |
STRING ----|DATA_FILE --------|----
| |
ANY ----|CACHE ----------- |----
| |
ANY ----|FIFO ------------ |----
| |
ANY ----|DATA ------------ |----
+------------------+
As entradas EN e a saída ENO estão disponíveis apenas na linguagem ladder,
não sendo utilizadas nas demais linguagens do controlador. EN é inicializada em
TRUE e serve, no ladder, para otimizar o ciclo de execução quando o bloco está
desabilitado.
A cada solicitação de inserção (INS = TRUE) transfere-se um único registro,
especificado em DATA, para a CACHE de entrada. O comando de remoção (DEL)
tem prioridade sobre a inserção: se INS e DEL forem ativados simultaneamente,
os registros são primeiro removidos e depois um novo registro é inserido. É possível
remover vários registros de uma só vez, mas inserir apenas um por vez.
A entrada CMD trata os seguintes comandos associados ao arquivo de dados:
10— formatar o sistema de arquivos;20— eliminar o arquivo de dados;30— reiniciar a leitura dos dados a partir do início do arquivo.
O vetor da FIFO deve ser múltiplo do tamanho do registro HILS.TEL_V2_DATA_TYPE
e dimensionado conforme a quantidade máxima de eventos disponibilizada por ciclo de
leitura do portal. Cada evento ocupa 10 variáveis UINT; por exemplo, para 24 eventos
alocam-se 240 variáveis UINT, com dimensão [0..239].
O vetor da CACHE também deve ser múltiplo do tamanho de HILS.TEL_V2_DATA_TYPE
e dimensionado conforme a quantidade máxima de eventos simultâneos de entrada. Por
exemplo, para 10 eventos simultâneos alocam-se 100 variáveis UINT, com dimensão
[0..99].
O registro DATA usa o formato HILS.TEL_V2_DATA_TYPE, composto por:
Timestamp do registro (tipo nativo
DT);Valor numérico do registro (tipo nativo
W,DouL);Identificação do tipo de registro, definida pelo portal de telemetria (
UINT).
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
EN |
IN |
BOOL |
TRUE |
— |
Habilitação de entrada (apenas ladder). |
INS |
IN |
BOOL |
FALSE |
— |
A cada ativação, insere um registro de dados na FIFO. |
DEL |
IN |
INT |
0 |
— |
Quantidade de registros a remover da FIFO. |
CMD |
IN_OUT |
INT |
0 |
10 · 20 · 30 |
Comando associado ao arquivo de dados (ver descrição acima). |
DATA_FILE |
IN_OUT |
STRING |
— |
— |
Nome do arquivo para armazenamento de dados. |
CACHE |
IN_OUT |
ANY |
— |
— |
CACHE (vetor UINT) para os registros de entrada a inserir na FIFO. |
FIFO |
IN_OUT |
ANY |
— |
— |
FIFO (vetor UINT) com os registros disponíveis ao portal de telemetria. |
DATA |
IN_OUT |
ANY |
— |
— |
Registro ( |
ENO |
OUT |
BOOL |
FALSE |
— |
Habilitação de saída (apenas ladder). |
EMPTY |
OUT |
BOOL |
FALSE |
— |
FIFO vazia. |
FULL |
OUT |
BOOL |
FALSE |
— |
FIFO cheia. |
ELEM |
OUT |
UINT |
0 |
— |
Número de registros presentes na FIFO. |
TOTAL |
OUT |
UINT |
0 |
— |
Número total de registros suportado pela FIFO. |
RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da última operação (ver Códigos de retorno). |
Códigos de retorno
RESULT é do tipo RET_CODE, com os identificadores no namespace HILS
(ex.: HILS.SUCCESS):
0(HILS.SUCCESS) — função executada com sucesso;diferente de
0— falha na execução da função.
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O controlador deve possuir suporte a sistema de arquivos em SDCARD.
Os vetores
CACHEeFIFOdevem ter dimensão múltipla do tamanho do registroHILS.TEL_V2_DATA_TYPE(10 variáveis UINT por evento).
Observações
A inserção (
INS) processa um único registro por ativação; a remoção (DEL) pode processar vários registros de uma só vez e tem prioridade sobre a inserção.A gerência do arquivo
DATA_FILEé transparente ao portal, que sempre acessa os dados através da FIFO.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Considerações sobre este exemplo:
Cada registro de dados é composto por 10 campos UINT (10 variáveis UINT por registro).
CACHE com suporte a até 50 registros de entrada simultâneos:
50 * 10 = 500variáveis UINT.FIFO com 24 registros para coleta pelo portal:
24 * 10 = 240variáveis UINT.
Código ST
VAR
FILE_NAME : STRING := 'Dados.dat'; (* Nome para o arquivo de dados *)
TEL_COUNT : INT; (* Contador de registros disponíveis para coleta pelo portal (0..24) *)
TEL_CACHE : ARRAY [0..499] OF UINT; (* Buffer da CACHE com até 50 registros de entrada *)
TEL_FIFO : ARRAY [0..239] OF UINT; (* Buffer da FIFO com até 24 registros para o portal *)
TEL_DATA : HILS.TEL_V2_DATA_TYPE; (* Registro de dados para inserção na FIFO *)
TEL_GTWAY : HILS.TEL_FS_GATEWAY; (* Instancia do bloco de interface com o portal de telemetria *)
p_insert : BOOL; (* Insere um único registro de dados na FIFO *)
p_delete : INT; (* Remove vários registros de dados da FIFO *)
END_VAR
(* Exemplo de remoção de registros *)
IF ((* ... *)) THEN (* OBS.: gerar condição para remover dados na FIFO *)
p_delete := 2; (* ativa remoção de 2 registros de dados na FIFO *)
END_IF;
(* ... *)
(* Exemplo de inserção de um registro *)
IF ((* ... *)) THEN (* OBS.: gerar condição para inserir dado na FIFO/Arquivo *)
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 := 123; (* tipo de dado a ser inserido *)
(* ... *) (* preencher demais campos do registro TEL_V2_DATA_TYPE *)
p_insert := TRUE; (* ativa inserção de dado *)
END_IF;
(* ... *)
(* Bloco de gerência da FIFO com registros de dados usados na interface com o portal de telemetria *)
TEL_GTWAY(INS := p_insert, DEL := p_delete, DATA_FILE := FILE_NAME,
CACHE := TEL_CACHE, FIFO := TEL_FIFO, DATA := TEL_DATA);
(* ... *)
(* Se executou alguma inserção ou remoção na FIFO, atualiza o nro. resultante de elementos *)
IF ((p_insert = TRUE) OR (p_delete > 0) OR (TEL_COUNT <> TEL_GTWAY.ELEM)) THEN
(* atualiza nro. de elementos disponíveis na FIFO de interface com o portal *)
TEL_COUNT := TEL_GTWAY.ELEM;
(* reseta solicitação de 1 ciclo de inserção de dados na FIFO *)
IF p_insert = TRUE THEN
p_insert := FALSE;
END_IF;
(* reseta solicitação de remoção de dados da FIFO *)
IF p_delete > 0 THEN
p_delete := 0;
END_IF;
END_IF;