TEL_FS_GATEWAY
Este bloco implementa uma interface de dados (“gateway”) para o portal de telemetria da HI Tecnologia. Utiliza uma FIFO mapeada em um vetor onde armazena registros de dados, disponibilizando-os para coleta pelo portal de telemetria.
Os registros de dados são inicialmente armazenados em uma CACHE de entrada de dados, e posteriormente transferidos para a FIFO. Se a FIFO ficar cheia, automaticamente cria-se o arquivo de dados DATA_FILE, e os dados da CACHE são transferidos para este arquivo de dados DATA_FILE.
Estes registros de dados na FIFO podem ser acessados pelo portal de telemetria através da leitura de variáveis do tipo “Holding Register”. O portal de telemetria é responsável por ler os dados disponíveis na FIFO, e posteriormente informar a quantidade efetiva de registros coletados para sua respectiva remoção da FIFO.
A medida que o portal de telemetria coleta os dados da FIFO, e existe o arquivo DATA_FILE com dados, automaticamente os dados deste arquivo DATA_FILE são transferidos para a FIFO. Quando todos os dados do arquivo DATA_FILE são transferidos para a FIFO, o arquivo é automaticamente eliminado.
Este arquivo de dados é gerenciado internamente por este bloco de função, de tal forma que a interface com o portal de telemetria é realizada sempre através da FIFO, e a gerencia deste arquivo de dados DATA_FILE é transparente para o portal de telemetria.
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 ao invés do sistema de arquivo, utilize o bloco de função TEL_BUF.
Bloco
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 ------------ |----
+------------------+
Parâmetros
Nome |
Parâmetro |
Tipo Dado |
V. Ini. |
Descrição |
EN |
Entrada |
BOOL |
TRUE |
Habilitação de entrada |
INS |
Entrada |
BOOL |
FALSE |
Inseri um registro de dados na FIFO a cada ativação |
DEL |
Entrada |
INT |
0 |
Quantidade de registros de dados a remover da FIFO |
CMD |
Entrada/Saída |
INT |
0 |
Comando associado ao arquivo de dados |
DATA_FILE |
Entrada/Saída |
STRING |
Nome do arquivo para armazenamento de dados |
|
CACHE |
Entrada/Saída |
ANY |
CACHE para armazenar registros de dados de entrada a serem inseridos na FIFO |
|
FIFO |
Entrada/Saída |
ANY |
FIFO para armazenar os registros de dados disponiveis para o portal de telemetria |
|
DATA |
Entrada/Saída |
ANY |
Registro de dados a ser inserido na FIFO |
|
ENO |
Saída |
BOOL |
FALSE |
Habilitação de saída |
EMPTY |
Saída |
BOOL |
FALSE |
FIFO vazia |
RESULT |
Saída |
INT |
0 |
Código de retorno da execução da última função deste bloco de função |
FULL |
Saída |
BOOL |
FALSE |
FIFO cheia |
ELEM |
Saída |
UINT |
0 |
Nro. de registros de dados presentes na FIFO |
TOTAL |
Saída |
UINT |
0 |
Nro. total de registros de dados suportado pela FIFO |
Detalhamento dos Parâmetros
Parâmetro |
Descrição |
EN |
A entrada “EN” e a saída “ENO” estão disponíveis apenas na linguagem ladder, não sendo utilizadas nas demais linguagens de programação do controlador. A entrada “EN” é inicializada como “true”, sendo utilizada na linguagem ladder para otimização do ciclo de execução quando o respectivo bloco está desabilitado. |
INS |
A cada solicitação de inserção com valor TRUE, transfere-se um único valor do registro de dados especificado no parâmetro DATA para a CACHE de dados de entrada. |
DEL |
O comando de remoção de dados da FIFO tem prioridade sobre o comando de inserção de dados, ou seja, se os comandos (INS e DEL) forem ativados simultaneamente, os registros serão inicialmente removidos e posteriormente um novo registro de dados será inserido na FIFO. Note que podemos remover (DEL) vários registros da FIFO de uma única vez, mas inserir (INS) apenas um único registro de dados por vez. |
CMD |
|
FIFO |
O array alocado para a FIFO deve ser múltiplo do tamanho do registro de dados “HILS.TEL_V2_DATA_TYPE”, Esta fifo deve ser dimensionada de acordo com a quantidade máxima de eventos que a aplicação deseja disponibilizar para cada ciclo de leitura pelo portal de telemetria. Por exemplo, se a aplicação deseja disponibilizar até 24 eventos para leitura pelo portal de telemetria, deve-se criar uma fifo com 24 eventos, e como cada evento possui tamanho de 10 variáveis UINT, é necessário alocar 240 variáveis UINT, especificando uma dimensão [0..239] para a fifo. |
CACHE |
O array alocado para a CACHE deve ser múltiplo do tamanho do registro de dados “HILS.TEL_V2_DATA_TYPE”, Esta cache deve ser dimensionada de acordo com a quantidade máxima de eventos simultâneos que a aplicação deseja disponibilizar para o portal de telemetria. Por exemplo, se a aplicação pode publicar até 10 eventos simultâneos para o portal de telemetria, deve-se criar uma cache com pelo menos 10 eventos, e como cada evento possui tamanho de 10 variáveis UINT, é necessário alocar 100 variáveis UINT, especificando uma dimensão [0..99] para a cache. |
DATA |
|
RESULT |
|
Exemplo
Considerações sobre este exemplo de utilização:
Cada registro de dados é composto por 10 campos UINT, totalizando 10 variáveis UINT por registro de dados
Disponibilizar uma CACHE com suporte para armazenar até 50 registros de dados de entrada simultaneamente, totalizando então 50 * 10 = 500 variáveis do tipo UINT
Disponibilizar uma FIFO com 24 registros de dados para coleta pelo portal de telemetria, totalizando 24 * 10 = 240 variáveis do tipo UINT
Podemos definir as seguintes variáveis:
Declaração de Variáveis
Nome |
Tipo |
Dimensão |
Valor Inicial |
Opções |
Descrição |
|---|---|---|---|---|---|
FILE_NAME |
STRING |
‘Dados.dat’ |
Nome para o arquivo de dados |
||
TEL_COUNT |
INT |
rent |
Contador de registros de dados disponíveis para coleta pelo portal (0..24) |
||
TEL_CACHE |
UINT |
[0..499] |
rent |
Buffer para CACHE com até 50 registros de dados de entrada |
|
TEL_FIFO |
UINT |
[0..239] |
rent |
Buffer para FIFO com até 24 registros de dados para o portal telemetria |
|
TEL_DATA |
HILS.TEL_V2_DATA_TYPE |
Registro de dados para inserção no buffer da FIFO |
|||
TEL_GTWAY |
HILS.TEL_GATEWAY |
Instancia do bloco de interface com portal de telemetria |
|||
p_insert |
BOOL |
Inseri um único registro de dados na FIFO |
|||
p_delete |
INT |
Remove vários registros de dados da FIFO |
Código ST
(* Exemplo de remoção de registros *)
if ((* ... *)) (* OBS.: gerar condição para remover dados na FIFO *)
p_remove := 2; (* ativa remoção de 2 registros de dados na FIFO *)
end_if;
(* ... *)
(* Exemplo de inserção de um registro *)
if ((* ... *)) (* 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 tipo TEL_V2_DATA_TYPE *)
p_insert := TRUE; (* ativa inserção de dado *)
end_if;
(* ... *)
(* Bloco de gerencia da FIFO com registros de dados utilizados para interfacear com o portal de telemetria *)
TEL_GTWAY(INS := p_insert, DEL := p_remove, DATA_FILE := FILE_NAME, CACHE := TEL_FIFO, FIFO := TEL_FIFO, DATA := TEL_DATA);
(* ... *)
(* se executou alguma inserção ou remoção na FIFO, atualiza o nro resultante de elementos na FIFO *)
if ((p_insert = TRUE) OR (p_remove > 0) OR (TEL_COUNT <> TB.ELEM)) then
(* atualiza nro de elementos disponíveis na FIFO de interface com portal de telemetria *)
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_remove > 0 then
p_remove := 0;
end_if;
end_if;