DTC_FWRMAN
Escreve blocos de dados de uma cache de escrita em um arquivo: cria o arquivo
se não existir, transfere os dados que a aplicação insere via DTC_PUSH e o
fecha (ou não) ao final. É um bloco de função (requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
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 -------- |---
+------------------+
Como bloco de função, requer uma instância própria e mantém estado entre ciclos:
os dados inseridos na cache via DTC_PUSH são transferidos ao arquivo conforme
a histerese configurada, criando o arquivo quando necessário.
Parâmetros
Apenas a interface pública (as variáveis internas Local do bloco não são parâmetros):
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
START |
IN |
BOOL |
FALSE |
— |
Ativa e inicializa o bloco; ao concluir ativa |
CLOSE |
IN |
BOOL |
FALSE |
— |
Se ativo, abre/fecha o arquivo a cada escrita; se inativo, mantém aberto entre escritas. |
DELETE |
IN |
BOOL |
FALSE |
— |
Elimina o arquivo |
WAIT |
IN |
BOOL |
FALSE |
— |
Suspende a escrita (se não estiver em execução); útil para sincronizar escrita e leitura do mesmo arquivo. |
HYSTER |
IN |
USINT |
1 |
blocos |
Nº de blocos na cache para disparar a transferência ao arquivo (histerese). Alterável com o bloco ativo. |
F_NAME |
IN_OUT |
STRING |
— |
= 64 caracteres |
Caminho completo do arquivo (inicia com |
FS_CACHE |
IN_OUT |
INT [*] |
— |
vetor |
Cache de escrita (fila de blocos a transferir). Ver a estrutura em |
FS_DIBS |
OUT |
DINT |
-1 |
blocos |
Nº de blocos (DIB) no arquivo; |
READY |
OUT |
BOOL |
FALSE |
— |
Inicialização concluída; bloco apto a operar. |
EV |
OUT |
BOOL |
FALSE |
— |
Pulso ao fim de um ciclo (write/flush, delete ou fechamento); |
RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da inicialização ou operação (ver Códigos de retorno). |
O_FLAGS |
OUT |
WORD |
16#0 |
bitmap |
Flags de status da cache e do arquivo (ver O_FLAGS). |
O_FLAGS
Mapa de bits de status:
Bit |
Descrição |
|---|---|
0 |
Cache de escrita vazia. |
1 |
Cache de escrita cheia. |
2 |
Não existe arquivo com o nome especificado neste momento. |
8 |
Falha na inicialização do bloco (sistema de arquivo indisponível, sem mídia/SDCARD, diretório cheio ou em falha). |
9 |
Tamanho do arquivo inválido (nº de bytes não é múltiplo de um bloco). Não interrompe o processo, apenas sinaliza. |
Códigos de retorno
RESULT é do tipo RET_CODE: 0 ( HILS.SUCCESS ) indica sucesso; qualquer valor
diferente de 0 indica falha na inicialização ou na operação (consulte o catálogo de
códigos RET_CODE do ambiente). Para status detalhado de arquivo/cache, ver O_FLAGS.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
INSERT : BOOL := FALSE;
EN_FS : BOOL := FALSE;
HIST : USINT := 1;
DATA : INT := 2468;
RET : INT;
FS_CACHE : ARRAY [0..50] OF INT := 0;
TS : DT := DT#2020-06-25-15:36:55.36;
ID : INT := 123;
INX : UINT := 0;
QNT : UINT := 1;
FS_WMAN : HILS.DTC_FWRMAN;
LOG_NAME : STRING := '/TL1.LOG';
END_VAR
(* Mantém o gerenciador operando (ativando a variável EN_FS) *)
FS_WMAN(
START := EN_FS, (* [BOOL] Ativa o processo de escrita *)
HYSTER := HIST, (* [USINT] Histerese de dados para salvar em arquivo *)
F_NAME := LOG_NAME, (* [STRING] Nome do arquivo associado à cache (FS_CACHE) *)
FS_CACHE := FS_CACHE (* [INT] Cache usada internamente para escrita *)
);
IF INSERT THEN
(* Insere um dado na cache de escrita para ser transferido ao arquivo *)
RET := HILS.DTC_PUSH(
ID, (* [INT] Identificador da mensagem *)
FALSE, (* [BOOL] Gera automaticamente o timestamp (ignora TS) *)
TS, (* [DT] Timestamp a associar ao dado *)
INX, (* [UINT] Índice inicial quando o dado for vetor *)
QNT, (* [UINT] Quantidade a partir do índice quando vetor *)
DATA, (* [] Dado ou vetor de dados *)
FS_CACHE (* [INT] Cache de escrita *)
);
INSERT := FALSE;
END_IF;