DTC_FWRMAN

Este bloco implementa uma interface para escrita de blocos de dados em um arquivo. Utiliza uma cache de dados onde a aplicação insere o dado através da função DTC_PUSH e o bloco é responsável por criar o arquivo associado caso não exista e salvar os dados presentes na cache no arquivo associado, fechando ou não o mesmo no final do processo.

Para mais informações sobre a cache de escrita, consulte o bloco DTC_MAN

Bloco

               DTC_FWRMAN
          +------------------+
  BOOL ---|START      FS_DIBS|--- DINT
          |                  |
  BOOL ---|CLOSE        READY|--- BOOL
          |                  |
  BOOL ---|DELETE          EV|--- BOOL
          |                  |
  BOOL ---|WAIT        RESULT|--- INT
          |                  |
 USINT ---|HYSTER     O_FLAGS|--- WORD
          |                  |
STRING ---|F_NAME ---------- |---
          |                  |
   INT ---|FS_CACHE -------- |---
          +------------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Opções

Descrição

START

Entrada

BOOL

FALSE

Ativa o bloco e inicializa o mesmo para processar os blocos inseridos na cache

CLOSE

Entrada

BOOL

Enquanto estiver ativo, sempre que o arquivo for aberto para escrita o mesmo é fechado no final do processo

DELETE

Entrada

BOOL

Elimina o arquivo associado

WAIT

Entrada

BOOL

FALSE

Aguarda esta entrada estar inativa para ativar o processo de escrita

HYSTER

Entrada

USINT

1

Histeresse de dados para salvar em arquivo

F_NAME

Entrada/Saída

STRING

[*]

Nome do arquivo associado a cache de mensagens (FS_CACHE)

FS_CACHE

Entrada/Saída

INT

[*]

Cache de dados utilizada internamente para escrita pelo sistema de arquivo

FS_DIBS

Saída

DINT

-1

Nro de blocos de dados existentes no arquivo associado

READY

Saída

BOOL

FALSE

Sinaliza que o bloco esta inicializado e apto para operação

EV

Saída

BOOL

Sinaliza com um pulso o fim de um processo do bloco (flush, delete, write)

RESULT

Saída

INT

Código de retorno do processo de inicializacao ou operação

O_FLAGS

Saída

WORD

Flags de status da cache e do arquivo associado

STATE

Local

USINT

0

n_retain

Estado corrente

FS_DELETE

Local

BOOL

n_retain

Remove o arquivo associado

FILE_OPENED

Local

BOOL

n_retain

flag que existe arquivo aberto

LSTART

Local

BOOL

FALSE

n_retain

Ultimo estado da entrada RUN

LDELETE

Local

BOOL

n_retain

UNREC_ERR

Local

BOOL

n_retain

CLOSE_NEXT

Local

USINT

n_retain

Proximo estado após fechar o arquivo

WRITTEN_DIBS

Local

UINT

n_retain

Tamanho em nro de blocos a serem escritos no arquivo

SAVED_DIBS

Local

UINT

n_retain

Nro de blocos já salvos no arquivo (flushed)

DTC

Local

HILS.DTC_MAN

Gerenciador de blocos de dados em RAM

FS_OPEN

Local

HILS.FS_OPEN_FILE

FS_LEN

Local

HILS.FS_LEN_FILE

FS_CLOSE

Local

HILS.FS_CLOSE_FILE

FS_CREATE

Local

HILS.FS_CREATE_FILE

FS_WRITE

Local

HILS.FS_WRITE_DATA_FILE

FS_REMOVE

Local

HILS.FS_DELETE_FILE_DIR

FS_INFO

Local

HILS.FS_FILE_INFO

Entradas

START

Habilita operação do bloco. Enquanto esta entrada estiver inativa a cache de escrita associada não será alterada pelo bloco e o arquivo associado, caso exista não será acessado. Ao ser ativada o bloco executa um processo de incialização e, quando concluído ativa a saída READY com o resultado do processo sendo apresentado na saída RESULT. Quando a entrada START for desativada, se o arquivo associado estiver aberto o mesmo será fechado e o sinal READY será desativado apenas após o arquivo ser fechado.

CLOSE

Esta entrada, se mantida ativada, para cada ciclo de escrita o bloco irá abrir o arquivo escrever os dados disponíveis na cache de escrita e fechar novamente o arquivo. Quando a entrada estiver inativa, após o primeiro ciclo de escrita o arquivo é mantido aberto otimizando o tempo de execução das subsequentes escritas. Quando a entrada for ativada o arquivo será fechado novamente.

DELETE

Esta entrada quando ativa inicia o processo de elimação do arquivo com o nome especificado pelo parâmetro F_NAME. Ao terminar o processo o arquivo estara removido do sistema de arquivo.

Nota

Se, após a eliminação do arquivo for inserido um novo dado na cache de escrita, o bloco irá criar novamente o arquivo e inserir o dado no mesmo.

WAIT

Esta entrada quando ativa suspende o processo de escrita (caso não esteja em execução), mantendo as informações corrente do arquivo disponíveis para utilização. Pode ser utilizada para sincronizar acesso de escrita e leitura a um mesmo arquivo.

HYSTER

Esta entrada define o nro de blocos de dados que devem existir na cache de escrita para que o processo de transferência dos dados para o arquivo seja iniciado. O valor default é 1 indicando que sempre que existir no mínimo 1 bloco de dados este será automaticamente transferido para o arquivo associado. Este parâmetro deve ser avaliado para não sobrecarregar o processo de escrita caso o nro de dados da aplicação a serem salvos em arquivo seja elevado. Valores maiores de histeresse indicam que o bloco irá manter uma quantidade maior de dados na cache e, quando o número de dados definido neste parâmetro for atingido o bloco irá salvar todos os dados da cache em um único processo de escrita. Quando for necessário forçar a transferencia de todos os dados para o arquivo utilize a entrada dtc_fwrman_close.

Nota

Este parâmetro por ser alterado com o bloco ativo. Quanto alterado o novo valor será avaliado na próxima inserção de dados na cache.

F_NAME

Define o nome do arquivo a ser utilizado no processo de escrita. 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 alterar este parâmetro enquando a entrada START estiver ativa.

FS_CACHE

Cache de dados de escrita mantida em memória como uma fila dos blocos de dados para serem transferidos para o sistema de arquivo. Para mais informações consulte CACHE.

Saídas

FS_DIBS

Informa o número de blocos de dados (DIBS) disponíveis no arquivo especificado pelo parâmero F_NAME. Se o arquivo não existir quando o bloco for ativado pela entrada START esta saída retornará -1 até que seja inserido um valor na cache de escrita, momento que o arquivo será criado e o valor inserido no mesmo, atualizando o valor desta saída.

Nota

Observe que o número de blocos de dados (DIB) não é necessárimente o número de valores que estão no arquivo, visto que podem exisitir dados que necessitam de mais de uma DIB para serem armazenados (ex: strings e vetores de variáveis).

READY

Quando ativa indica que o processo de inicialização do foi concluido e o bloco está apto a operar.

EV

Sinaliza com um pulso o fim de um ciclo do bloco. Neste momento o resultado da operação iniciada é reportado no parâmetro RESULT. Caso o valor de result seja zero o processo iniciado foi concluído com sucesso. Este processo pode se referir a uma escrita ativada pela inserção de dado na cache de escrita ou, o fechamento do arquivo solicitado pela ativação da entrada CLOSE ou, a remoção do arquivo solicitada pela ativação da entrada DELETE.

RESULT

Tipo Dado

Descrição

INT

Código de retorno na execução da função, do tipo RET_CODE, onde:

  • Se for igual a 0: Função executada com sucesso - código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [2]

O_FLAGS

Este parâmetro mapeia em bits as seguintes informaçôes:

BIT

Descrição

0

Quando em 1 indica que a cache de escrita esta vazia

1

Quando em 1 indica que a cache de escrita esta cheia

2

Quando em 1 indica que não existe arquivo com o nome especificado no momento

8

Quando em 1 indica que ocorreu falha no processo de inicializacao do bloco. Esta condição pode ocorrer se houver algum problema com o acesso ao sistema de arquivo do equipamento:

  • Não disponível no equipamento

  • Sistema de arquivo sem memória de massa (sem SDCARD) etc.

  • Diretório cheio ou em falha etc.

9

Quando em 1 indica que o tamanho do arquivo associado é invalido ou seja, o número de bytes do arquivo não é multiplo de um bloco de dados. Neste caso, o bloco não paraliza o processo, apenas indica esta condição.

Exemplo

Declaração de Variáveis

Nome

Classe

Tipo

Dimensão

Valor Inicial

INSERT

Local

BOOL

FALSE

EN_FS

Local

BOOL

FALSE

HIST

Local

USINT

1

DATA

Local

INT

2468

FS_CACHE

Local

INT

[0..50]

0

TS

Local

DT

DT#2020-06-25-15:36:55.36

ID

Local

INT

123

INX

Local

UINT

0

QNT

Local

UINT

1

FS_WMAN

Local

HILS.DTC_FWRMAN

LOG_NAME

Local

STRING

‘/TL1.LOG’

Clique aqui para baixar a tabela de variáveis

Código ST

// Mantem o gerenciado operando (ativando a variavel EN_FS)
FS_WMAN(  // DTC_FWRMAN
    START    := EN_FS,     // [BOOL] Ativa o processo de inserção do dado
    HYSTER   := HIST,      // [USINT] Histeresse de dados para salvar em arquivo
    F_NAME   := LOG_NAME,  // [STRING] Nome do arquivo associado a cache de mensagens (FS_CACHE)
    FS_CACHE := FS_CACHE   // [INT] Cache de mensagens utilizada internamente para escrita pelo sistema de arquivo
    );


IF INSERT THEN
  // ativa a variavel INSERT para inserir um dado na cache de escrita para ser transferido para o arquivo
  RET := HILS.DTC_PUSH(
          ID,       // ID [INT] = Identificador da mensagem no portal de telemetria
          FALSE,    // GEN_TS [BOOL] = Gera automaticamente o timestamp associado ao dado fornecido (ignora o valor do parâmetro TS)
          TS,       // TS [DT] = Timestamp a ser associado ao dado a ser salvo na cache
          INX,      // I_INX [UINT] = Indice inicial quando o dado for um vetor (nao utilizado quando o dado for escalar)
          QNT,      // QNT [UINT] = Quantidade de dados a partir do indice inicial quando o dado for um vetor (nao utilizado quando o dado for escalar)
          DATA,     // DATA [] = Dado ou vetor de dados a ser enviado para o portal
          FS_CACHE  // CACHE [INT] = Cache de mensagens de escrita
          );

  INSERT := FALSE;
END_IF;