HIWG_FSMAN
Este bloco de função implementa uma interface de dados com o Portal de Telemetria da HI Tecnologia.
Implementa uma cache dados (DTC_MAN) associada a um arquivo no sistema de arquivos que mantém os dados publicados salvos no arquivo quando a chache estiver cheia e, automaticamente recupera os dados do arquivo para a cache a medida que os dados da cache são transferidos para o portal. Opera em conjunto com a função HIWG_FSPUBLISH que é responsavel por inserir na cache os dados a serem transferidos para o Portal de Telemetria.
Esta é uma das possibilidades de integração dos dados de uma aplicação com o Portal de Telemetria da HI Tecnologia.
Utiliza uma cache de dados (DTC_MAN) capaz de manter qualquer dos tipos nativos de dados suportados pelo HIstudio. Desta forma, a aplicação pode criar dados associados à variáveis do programa e inserí-los na cache de dados que posteriormente serão coletados pelo Portal de Telemetria. Estes dados, contém além de um identificador do dado na aplicação, o valor do dado associado, e a data/hora em que o dado foi gerado, permitido que, eventos identificados pelo programa de aplicação sejam reportados para o Portal de Telemetria com a informação correta do instante que o mesmo ocorreu, independentemente do momento em que esta informação foi coletada pelo portal.
O bloco mantem os dados inseridos em uma cache em memória e, caso a mesma fique cheia é criado um arquivo no sistema de arquivos e, os novos valores inseridos passam a ser salvos no mesmo até que possam ser transferidos para o portal. Todo o processo de criação e eliminação do arquivo e inserção e remoção dos dados é gerenciado automaticamante pelo bloco.
Importante
Este bloco possui uma variavel interna retentiva que mantem a posição corrente do dado a ser lido do arquivo para envio para o portal. Este valor é inicializado com Zero quando a entrada START for FALSE. Portanto, para preservar o valor desta variável em quedas de energia ou reset do equipamento a aplicação deverá sempre manter o parâmetro de entrada START ativado.
O Processo de inicialização do SDCARD é mais demorado e, se o bloco for ativado no inicio da aplicação, durante a inicialização, o mesmo poderá reportar erro (HILS.RE_NOT_AVA = código 24) na inicialização durante algum tempo (1 a 2 segundos), até que o SDCARD esteja apto a operar.
Bloco
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 ---------- |---
+--------------------+
Dica
Para conhecer melhor o recurso e suas funcionalidades acesse o vídeo tutorial: Buffer de dados no SD CARD
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
TRUE |
Habilita operação do gerenciador de acesso a cache de dados |
|
CLR |
Entrada |
BOOL |
FALSE |
Limpa o conteudo da cache de dados |
|
WR_HYS |
Entrada |
USINT |
1 |
Histeresse em blocos de dados para salvar os dados no arquivo |
|
RD_HYS |
Entrada |
USINT |
1 |
Histeresse em blocos de dados na RAM para iniciar a leitura dos dados do arquivo |
|
F_NAME |
Entrada/Saída |
STRING |
:* |
Nome do arquivo associado |
|
CACHE |
Entrada/Saída |
INT |
[*] |
Vetor de inteiros reservados para armazenar os blocos de dados |
|
WR_CACHE |
Entrada/Saída |
INT |
[*] |
Cache de escrita no arquivo |
|
RD_CACHE |
Entrada/Saída |
INT |
[*] |
Cache de leitura do arquivo |
|
READY |
Saída |
BOOL |
FALSE |
Bloco pronto para operação. |
|
RD_EV |
Saída |
BOOL |
FALSE |
Indica ocorrencia de um evento associado a cache de leitura do arquivo |
|
WR_EV |
Saída |
BOOL |
FALSE |
Indica ocorrencia de um evento associado a cache de escrita do arquivo |
|
RD_RESULT |
Saída |
INT |
0 |
Código de retorno da última interação com a cache de leitura do arquivo |
|
WR_RESULT |
Saída |
INT |
0 |
Código de retorno da última interação com a cache de escrita do arquivo |
|
EMPTY |
Saída |
BOOL |
Cache de mensagens vazia |
||
FULL |
Saída |
BOOL |
Cache de mensagens cheia |
||
BLOCKS |
Saída |
INT |
0 |
Nro. de blocos de dados presentes na cache |
|
TOTAL |
Saída |
INT |
Nro total de mensagens suportados pela cache |
||
PERC |
Saída |
UINT |
Percentual de utilização da cache (0..100%) |
Entradas
START
Habilita operação do gerenciador de acesso a cache de dados. Enquanto esta entrada estiver inativa a cache de dados não será alterada pelo bloco.
CLR
Quando ativo, limpa a cache de blocos de dados removendo todos os blocos de dados presentes na cache e elimina o arquivo associado a cache caso exista.
Importante
Somente altere o valor deste parâmetro quando a entrada START estiver inativa.
WR_HYS
Define o nro. de blocos de dados que devem existir na cache de escrita do arquivo para que o processo de escrita efetivamente ocorra. Caso o nro de blocos de dados já inseridos nesta cache seja inferior a WR__HYS o dado continua sendo mantido na cache e o processo de escrita não é ativado.
Importante
Somente altere do valor deste parâmetro quando a entrada START estiver inativa.
RD_HYS
Define o nro. de blocos de dados livres que devem existir na cache do portal para que o processo de leitura dos dados do arquivo e transferência para a cache do portal efetivamente ocorra.
Importante
Somente altere do valor deste parâmetro quando a entrada START estiver inativa.
Entradas / Saídas
F_NAME
Define o nome do arquivo a ser utilizado para manter os dados inseridos pela aplicação enquanto o portal não os remover. Este parâmetro deve ser especificado com o caminho completo. O diretório raiz é identificado pelo caractere ‘/’, e desta forma este parâmetro deve sempre iniciar com este caractere.
Exemplos de nomes de arquivo origem: ‘/Dados.log’, ‘/Pasta_1/Err.dat’
O tamanho máximo permitido para o caminho completo do nome do arquivo é de 64 caracteres.
Importante
Nunca altere este parâmetro enquando a entrada START estiver ativa.
CACHE
Este parâmetro é um vetor de inteiros utilizados para implementar uma cache em memória responsavel por manter os dados publicadas pela aplicação até que os mesmos sejam transferidos pelo Portal de Telemetria.
Importante
Para que o Portal de Telemetria possa acessar as informações armazenadas na cache, é necessário que o parâmetro CACHE seja declarado como uma variável global exportada (com endereço explícito). O primeiro endereço deste parâmetro deverá ser especificado na configuração do conector do associado no Portal de Telemetria para que este recurso possa ser utililzado.
Tamanho da cache de dados
Para operação correta do bloco é necessário que este parâmetro tenha capacidade para armazenar no mínimo um dado do maior tipo utilizado pela aplicação. O Portal de Telemetria, no processo de polling dos dados tenta ler inicialmente, 10 blocos de dados (DIB´s) da cache alocada, independentemente se existem no momento estes dados inseridos. Desta forma, o tamanho mínimo da cache de dados de interface com o portal deve ser de 101 variáveis inteiras (uma para manter o número de dados disponíveis na cache e 100 para alocar espaço para 10 blocos de dados).
Para mais informações sobre blocos de dados e a operação da cache consulte CACHE.
RD_CACHE
Cache de dados a ser associada ao processo de leitura do arquivo presente no bloco para manter os dados inseridos pela aplicação enquanto o portal não os remover. Para mais informações sobre este parâmetro consulte FS_CACHE.
WR_CACHE
Cache de dados a ser associada ao processo de escrita do arquivo presente no bloco para manter os dados inseridos pela aplicação enquanto o portal não os remover. Para mais informações sobre este parâmetro consulte FS_CACHE.
Saídas
READY
Indica que o bloco terminou o processo de inicialização e já esta operacional caso as saídas RD_RESULT e WR_RESULT sejam zero.
RD_EV
Indica ocorrência de um evento de falha associado ao processo de leitura do arquivo. Quando ocorrer este evento o resultado reportado pela saída RD_RESULT indica o código de falha detectado neste processo.
WR_EV
Indica ocorrência de um evento de falha associado ao processo de escrita no arquivo. Quando ocorrer este evento o resultado reportado pela saída WR_RESULT indica o código de falha detectado neste processo.
RD_RESULT
Código de retorno da última interação com a cache de leitura do arquivo com falha. Este valor deve ser avaliado sempre que a saída RD_EV for ativada.
WR_RESULT
Código de retorno da última interação com a cache de escrita do arquivo com falha. Este valor deve ser avaliado sempre que a saída WR_EV for ativada.
EMPTY
Quando ativa indica que não existem blocos de dados na cache de blocos de dados para serem obtidos.
FULL
Quando ativa indica que o número máximo de blocos de dados suportadas pela cache de blocos de dados foi atingido. Nova inserções de mensagens através da função DTC_PUSH retornarão erro indicando que não existe mais espaço.
BLOCKS
Indica o número de blocos de dados disponíveis na cache de blocos de dados do portal.
TOTAL
Indica o número máximo de mensagens suportadas na cache de blocos de dados do portal.
PERC
Especifica o percentual da cache ocupado com blocos de dados a serem coletados. Este parâmetro pode ser útil quando a aplicação deseja alterar os crítérios para inserção de blocos de dados, quando a cache de blocos de dados se aproxima do limite de mensagens.
Saídas
Exemplo
Declaração de Variáveis
Nome |
Classe |
Tipo |
Dimensão |
Valor Inicial |
Descrição |
|---|---|---|---|---|---|
RUN |
Local |
BOOL |
Ativa o bloco |
||
PUB |
Local |
BOOL |
Publica um dado no portal |
||
CLR |
Local |
BOOL |
Limpa a cache do portal |
||
PUB_RET |
Local |
INT |
Código de retorno da publicação |
||
DATA |
Local |
REAL |
123.456 |
Dado a ser publicado |
|
CACHE |
Local |
INT |
[0..50] |
Cache do portal |
|
RD_CACHE |
Local |
INT |
[0..30] |
Cache de leitura |
|
WR_CACHE |
Local |
INT |
[0..30] |
Cache de escrita |
|
ID |
Local |
INT |
456 |
ID do dado |
|
WGFSMAN |
Local |
HILS.HIWG_FSMAN |
Gerenciador de acesso ao portal |
||
F_NAME |
Local |
STRING |
:10 |
‘/TESTE.LOG’ |
Nome do arquivo associado ao portal |
Código ST
WGFSMAN( // HIWG_FSMAN
START := RUN, // [BOOL] Habilita operação do gerenciador de acesso a cache de dados
CLR := CLR, // [BOOL] Limpa o conteudo da cache de dados
WR_HYS := 2, // [USINT] Histeresse em blocos de dados para salvar os dados no arquivo
RD_HYS := 3, // [USINT] Histeresse em blocos de dados na RAM para iniciar a leitura dos dados do arquivo
F_NAME := F_NAME, // [STRING] Nome do arquivo associado
CACHE := CACHE, // [INT] Vetor de inteiros reservados 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 de telemetria
0, // ATRIB [INT] - Atributo associado ao dado
FALSE, // GEN_TS [BOOL] = Gera automaticamente o timestamp associado ao dado fornecido (ignora o valor do parâmetro TS)
HILS.GET_UTC_SYSTIME(), // TS [DT] = Timestamp a ser associado ao dado a ser salvo na cache
DATA, // DATA [] = Dado ou vetor de dados a ser enviado para o portal
WGFSMAN //
);
PUB := FALSE;
END_IF;