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

Clique aqui para baixar a tabela de variáveis

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;