HIWG_FSMAN
Implementa uma interface de dados com o Portal de Telemetria da HI Tecnologia, mantendo uma cache de dados (DTC_MAN) associada a um arquivo no sistema de arquivos que grava os dados publicados quando a cache enche e os recupera automaticamente à medida que são transferidos ao portal; requer SDCARD e opera em conjunto com HIWG_FSPUBLISH. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
HIWG_FSMAN
+--------------------+
BOOL ---|START READY|--- BOOL
| |
BOOL ---|CLR RD_EV|--- BOOL
| |
USINT ---|WR_HYS WR_EV|--- BOOL
| |
USINT ---|RD_HYS RD_RESULT|--- INT
| |
| WR_RESULT|--- INT
| |
| EMPTY|--- BOOL
| |
| FULL|--- BOOL
| |
| BLOCKS|--- INT
| |
| TOTAL|--- INT
| |
| PERC|--- UINT
| |
STRING ---|F_NAME ------------ |---
| |
INT ---|CACHE ------------- |---
| |
INT ---|WR_CACHE ---------- |---
| |
INT ---|RD_CACHE ---------- |---
+--------------------+
O bloco mantém os dados inseridos pela aplicação (via HIWG_FSPUBLISH) em uma cache em memória (DTC_MAN) capaz de armazenar qualquer dos tipos nativos de dados suportados pelo HIstudio. Cada dado carrega um identificador, o valor associado e a data/hora em que foi gerado, permitindo que eventos identificados pela aplicação sejam reportados ao Portal de Telemetria com o instante correto de ocorrência, independentemente do momento em que a informação for coletada pelo portal.
Caso a cache em memória fique cheia, o bloco cria um arquivo no sistema de arquivos e passa a salvar nele os novos valores até que possam ser transferidos ao portal. Toda a criação e eliminação do arquivo e a inserção/remoção dos dados é gerenciada automaticamente pelo bloco.
Para que o Portal de Telemetria acesse as informações armazenadas, o parâmetro CACHE deve ser declarado como variável global exportada (com endereço explícito), e o primeiro endereço deste vetor deve ser especificado na configuração do conector associado no portal.
Importante
Este bloco possui uma variável interna retentiva que mantém a posição corrente do dado a ser lido do arquivo para envio ao portal. Este valor é inicializado com zero quando a entrada START está em FALSE. Portanto, para preservar o valor desta variável em quedas de energia ou reset do equipamento, a aplicação deverá sempre manter a entrada START ativada.
O processo de inicialização do SDCARD é mais demorado; se o bloco for ativado no início da
aplicação, durante a inicialização, ele poderá reportar erro (HILS.RE_NOT_AVA = código
24) por algum tempo (1 a 2 segundos), até que o SDCARD esteja apto a operar.
Nota
Somente altere as entradas CLR, WR_HYS, RD_HYS e F_NAME com a entrada
START inativa. As saídas RD_RESULT e WR_RESULT devem ser avaliadas sempre que,
respectivamente, RD_EV ou WR_EV forem ativadas. O tamanho máximo do caminho completo
em F_NAME é de 64 caracteres e deve iniciar por / (raiz), ex.: /Dados.log,
/Pasta_1/Err.dat. A cache do portal (CACHE) deve ter no mínimo 101 inteiros (1 para
o número de dados disponíveis + 100 para 10 blocos de dados). Consulte
Estrutura da cache (CACHE), Parâmetros e Parâmetros.
Dica
Para conhecer melhor o recurso e suas funcionalidades acesse o vídeo tutorial: Buffer de dados no SD CARD
Parâmetros
Nome |
Direção |
Tipo |
Dimensão |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|---|
START |
IN |
BOOL |
— |
TRUE |
— |
Habilita a operação do gerenciador de acesso à cache de dados. Enquanto inativa, a cache não é alterada pelo bloco. |
CLR |
IN |
BOOL |
— |
FALSE |
— |
Quando ativo, limpa a cache de blocos de dados e elimina o arquivo associado, se existir. Altere apenas com |
WR_HYS |
IN |
USINT |
— |
1 |
blocos |
Nº de blocos que devem existir na cache de escrita para que o processo de gravação no arquivo ocorra. Altere apenas com |
RD_HYS |
IN |
USINT |
— |
1 |
blocos |
Nº de blocos livres que devem existir na cache do portal para iniciar a leitura dos dados do arquivo. Altere apenas com |
F_NAME |
IN_OUT |
STRING |
:* |
— |
— |
Nome (caminho completo, iniciando por |
CACHE |
IN_OUT |
INT |
[*] |
— |
— |
Vetor de inteiros que implementa a cache em memória dos dados do portal. Deve ser variável global exportada (mín. 101 inteiros). |
WR_CACHE |
IN_OUT |
INT |
[*] |
— |
— |
Cache associada ao processo de escrita do arquivo. |
RD_CACHE |
IN_OUT |
INT |
[*] |
— |
— |
Cache associada ao processo de leitura do arquivo. |
READY |
OUT |
BOOL |
— |
FALSE |
— |
Indica que o bloco terminou a inicialização e está operacional (com |
RD_EV |
OUT |
BOOL |
— |
FALSE |
— |
Indica a ocorrência de um evento de falha no processo de leitura do arquivo; o código é reportado em |
WR_EV |
OUT |
BOOL |
— |
FALSE |
— |
Indica a ocorrência de um evento de falha no processo de escrita no arquivo; o código é reportado em |
RD_RESULT |
OUT |
INT |
— |
0 |
RET_CODE |
Código de retorno da última interação com falha na cache de leitura do arquivo (avaliar quando |
WR_RESULT |
OUT |
INT |
— |
0 |
RET_CODE |
Código de retorno da última interação com falha na cache de escrita do arquivo (avaliar quando |
EMPTY |
OUT |
BOOL |
— |
— |
— |
Ativa quando não há blocos de dados na cache para serem obtidos. |
FULL |
OUT |
BOOL |
— |
— |
— |
Ativa quando o número máximo de blocos suportado pela cache foi atingido. Novas inserções via DTC_PUSH retornam erro de falta de espaço. |
BLOCKS |
OUT |
INT |
— |
0 |
— |
Número de blocos de dados disponíveis na cache do portal. |
TOTAL |
OUT |
INT |
— |
— |
— |
Número máximo de blocos de dados suportado pela cache do portal. |
PERC |
OUT |
UINT |
— |
— |
0 .. 100 % |
Percentual da cache ocupado com blocos de dados a serem coletados. |
Códigos de retorno
As saídas RD_RESULT e WR_RESULT carregam códigos de retorno (identificadores do
namespace HILS, ex.: HILS.RE_NOT_AVA), avaliados quando RD_EV / WR_EV ativam.
Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Processo executado com sucesso. |
24 |
RE_NOT_AVA |
Recurso não disponível (ex.: SDCARD ainda em inicialização). |
26 |
RE_RES_FUL |
Buffer do recurso cheio (cache sem espaço). |
27 |
RE_RES_EMP |
Buffer do recurso vazio. |
167 |
FS_CORRUPT |
Sistema de arquivos corrompido. |
173 |
FS_INVALIDNAME |
Nome de arquivo inválido. |
174 |
FS_NOTFOUND |
Arquivo não encontrado. |
176 |
FS_OPEN_LIMIT |
Número máximo de arquivos abertos alcançado. |
Lista completa: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O equipamento deve possuir um SDCARD operacional; durante sua inicialização o bloco pode reportar
RE_NOT_AVA(24) por 1 a 2 segundos.CACHE deve ser declarado como variável global exportada (com endereço explícito), com no mínimo 101 inteiros.
F_NAME deve conter o caminho completo iniciando por
/(máx. 64 caracteres).Altere CLR, WR_HYS, RD_HYS e F_NAME apenas com START inativo.
Observações
Para preservar a posição de leitura retentiva em quedas de energia/reset, mantenha START sempre ativado.
Opera em conjunto com HIWG_FSPUBLISH, responsável por inserir na cache os dados a serem transferidos ao portal.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
RUN : BOOL; (* Ativa o bloco *)
PUB : BOOL; (* Publica um dado no portal *)
CLR : BOOL; (* Limpa a cache do portal *)
PUB_RET : INT; (* Código de retorno da publicação *)
DATA : REAL := 123.456; (* Dado a ser publicado *)
CACHE : ARRAY [0..50] OF INT; (* Cache do portal *)
RD_CACHE : ARRAY [0..30] OF INT; (* Cache de leitura *)
WR_CACHE : ARRAY [0..30] OF INT; (* Cache de escrita *)
ID : INT := 456; (* ID do dado *)
WGFSMAN : HILS.HIWG_FSMAN; (* Gerenciador de acesso ao portal *)
F_NAME : STRING[10] := '/TESTE.LOG'; (* Nome do arquivo associado ao portal *)
END_VAR
WGFSMAN( (* HIWG_FSMAN *)
START := RUN, (* [BOOL] Habilita operação do gerenciador de acesso à cache *)
CLR := CLR, (* [BOOL] Limpa o conteúdo da cache de dados *)
WR_HYS := 2, (* [USINT] Histerese de blocos para salvar os dados no arquivo *)
RD_HYS := 3, (* [USINT] Histerese de blocos na RAM para iniciar a leitura *)
F_NAME := F_NAME, (* [STRING] Nome do arquivo associado *)
CACHE := CACHE, (* [INT] Vetor reservado para armazenar os blocos de dados *)
WR_CACHE := WR_CACHE, (* [INT] Cache de escrita no arquivo *)
RD_CACHE := RD_CACHE (* [INT] Cache de leitura do arquivo *)
);
IF PUB THEN
PUB_RET := HILS.HIWG_FSPUBLISH(
ID, (* ID [INT] Identificador da mensagem no portal *)
0, (* ATRIB [INT] Atributo associado ao dado *)
FALSE, (* GEN_TS [BOOL] Gera o timestamp automaticamente *)
HILS.GET_UTC_SYSTIME(), (* TS [DT] Timestamp associado ao dado *)
DATA, (* DATA Dado ou vetor de dados enviado ao portal *)
WGFSMAN (* Instância do gerenciador *)
);
PUB := FALSE;
END_IF;