FS_LOG_FILE
Registra (loga) dados em um arquivo do sistema de arquivos do controlador, em
formato binário ou texto conforme o comando (CMD), criando o arquivo
automaticamente caso ele ainda não exista. É um bloco de função (mantém
estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Nota
Antes de utilizar este bloco de função, consulte no manual do controlador utilizado se o mesmo possui suporte para sistema de arquivos no SDCARD.
Bloco de função
FS_LOG_FILE
+------------------+
BOOL ---|START DONE|--- BOOL
| |
| RESULT|--- INT
| |
INT ---|CMD ------------- |---
| |
STRING ---|DATA_FILE ------- |---
| |
ANY ---|DATA ------------ |---
+------------------+
Ao ativar START o bloco inicia o tratamento do comando indicado em CMD:
1: loga o dado emDATAno arquivo em formato binário (DATApode ser qualquer variável numérica ou estrutura de dados).2: loga o dado emDATAno arquivo em formato texto (DATAdeve ser obrigatoriamente uma variável do tipoSTRING, já formatada pela aplicação).10: formata o sistema de arquivos.20: elimina o arquivo de dados.
DATA_FILE deve conter o caminho completo do arquivo de log, sempre iniciando
pelo caractere '/' (diretório raiz) — por exemplo '/Dados.log',
'/Pasta_1/Dados.dat' ou '/PASTA_1/PASTA_2/Historico.log'. O tamanho
máximo do caminho é de 64 caracteres. Se o arquivo não existir, ele é criado
automaticamente antes da escrita.
Ao término do processamento, DONE emite um pulso (TRUE = finalizado; FALSE =
em andamento) e RESULT indica o resultado da última execução.
Dica
Recomendações para nomes de arquivos e diretórios:
Apesar do sistema de arquivos aceitar qualquer caracter para definição de um nome de arquivo ou diretório, recomenda-se utilizar apenas os tipos:
Caracteres alfabéticos de A-Z ou a-z
Caracteres numéricos de 0 - 9
Caracteres especiais . (ponto decimal) ou _ (underline)
O tamanho máximo permitido para nome do arquivo ou diretório é de 64 caracteres.
Apesar de permitir caracteres em minúscula e maiúscula na nomenclatura, o sistema não é “case sensitive”, ou seja, os nomes ‘DADOS.DAT’, ‘Dados.Dat’ e ‘dados.dat’ referem-se ao mesmo arquivo.
Essa recomendação é sugerida, pois quando o arquivo for eventualmente transferido para o computador, o arquivo/diretório deve obedecer as regras de nomeação do sistema operacional do PC.
Exemplos de nomes recomendados:
‘PASTA’
‘/Pasta_1/Pasta_2’
‘dados.dat’
‘abc_123.txt’
Exemplos de nomes não recomendados:
‘teste abc’
‘áãç’
‘abc’ e ‘ABC’ (considerados como o mesmo arquivo pelo sistema operacional windows)
Instruções de acesso para arquivos e diretórios:
O diretório inicial default do sistema de arquivo é o diretório raiz.
Para acessar diretamente o diretório raiz, utilizar ‘/’ antes do nome do arquivo ou diretório.
- Exemplos de caminho completo para diretórios:
‘/’ : Diretório raiz do sistema de arquivo
‘/PASTA_1’ : Diretório “PASTA_1” localizado na raiz do sistema de arquivo
‘/PASTA_1/PASTA_2’ : Caminho completo para diretório “PASTA_2” a partir da “PASTA_1” localizado na raiz do sistema de arquivo
‘/p1/p2/p3’ : Caminho completo para diretório “p3” a partir dos diretórios “/p1/p2”
- Exemplos de caminho completo para arquivos:
‘/dados.dat’ : Arquivo “dados.dat” localizado na raiz do sistema de arquivo
‘/PASTA_1/Log.dat’ : Arquivo “Log.dat” localizado dentro do diretório “/PASTA_1”
‘/DADOS/Jan/Dados.bak’ : Arquivo “Dados.bak” localizado dentro dos diretórios “/DADOS/Jan”
‘/P1/P2/P3/SETUP.CFG’ : Arquivo “SETUP.CFG” localizado dentro dos diretórios “/P1/P2/P3”
Parâmetros
Nome |
Direção |
Tipo |
Dimensão |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|---|
START |
IN |
BOOL |
— |
FALSE |
— |
Quando em TRUE, inicia o tratamento do comando associado ao arquivo. |
CMD |
IN_OUT |
INT |
— |
— |
1, 2, 10, 20 |
Comando associado ao arquivo de dados (ver Bloco de função). |
DATA_FILE |
IN_OUT |
STRING |
:* |
— |
máx. 64 caracteres |
Caminho completo do arquivo de log; deve iniciar com |
DATA |
IN_OUT |
ANY |
— |
— |
— |
Registro de dados a logar (numérico/estrutura para |
DONE |
OUT |
BOOL |
— |
— |
— |
Pulso de fim de execução (TRUE = processo finalizado). |
RESULT |
OUT |
INT |
— |
— |
RET_CODE |
Código de retorno da última execução (ver Códigos de retorno). |
Códigos de retorno
RESULT é do tipo RET_CODE. Use os identificadores com o namespace HILS
(ex.: HILS.FS_NOTFOUND). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Função executada com sucesso. |
5 |
GL_INV_PAR |
Parâmetro(s) inválido(s). |
6 |
GL_INV_CMD |
Comando inválido ou não reconhecido. |
51 |
SO_ALO_ERR |
Sem memória disponível no equipamento. |
167 |
FS_CORRUPT |
Sistema de arquivo corrompido. |
173 |
FS_INVALIDNAME |
O nome de arquivo é inválido. |
174 |
FS_NOTFOUND |
O arquivo não foi encontrado. |
178 |
FS_INVALID_DIR |
Diretório inválido ou inexistente. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O controlador utilizado deve possuir suporte a sistema de arquivos em SDCARD (consulte o manual do equipamento).
DATA_FILEdeve iniciar com'/'e ter no máximo 64 caracteres.Para
CMD=2(texto),DATAdeve ser umaSTRINGjá formatada pela aplicação.
Observações
Se o arquivo não existir, ele é criado automaticamente na primeira escrita.
RESULTé atualizado ao encerramento de cada comando;DONEsinaliza o fim do processamento por pulso.
Ver também
FS_WRITE_DATA_FILE, FS_WRITE_DATA_TEXT, FS_FORMAT, FS_DELETE_FILE_DIR
Exemplo
Exemplo 1 — log em arquivo CSV (texto)
Gera um arquivo de dados históricos tipo CSV (texto). O registro a ser logado é
uma variável do tipo STRING cujo conteúdo é formatado pela aplicação.
Clique aqui para baixar a tabela de variáveis
VAR
TICK_LOG : HILS.TICK; (* Temporizador para logar dados periodicamente *)
LOG_FILE_CSV : HILS.FS_LOG_FILE; (* Funcao de LOG do sistema de arquivos *)
FILE_NAME_CSV : STRING := '/Dados.csv'; (* Caminho para o nome do arquivo de dados na raiz *)
CMD_LOG_CSV : INT; (* Comando para logar dados historicos *)
APP_DATA_CSV : STRING; (* Registro de dados a ser logado no arquivo *)
END_VAR
(* ... *)
// Temporizador para logar os dados periodicamente a cada 30 seg
TICK_LOG(TM := T#30s);
// Ativa log do dado historico
IF(TICK_LOG.EV) THEN
// Formata string a ser escrita no arquivo CSV
(* ... *)
APP_DATA_CSV := CONCAT((* ... *), (* ... *)); // OBS.: montar aqui a string a ser logada
(* ... *)
// Ativa comando para logar string no arquivo CSV
CMD_LOG_CSV := 2;
END_IF;
// Loga string no arquivo de dados historicos tipo CSV
LOG_FILE_CSV(
START := TRUE, // [BOOL] Ativacao da funcao
CMD := CMD_LOG_CSV, // [INT] Comando associado ao arquivo de dados
DATA_FILE := FILE_NAME_CSV, // [STRING] Caminho completo para o nome do arquivo de dados
DATA := APP_DATA_CSV // [STRING] Registro de dados a ser logado no arquivo
//DONE => , // [BOOL] Pulso de fim de execucao da funcao
//RESULT => // [INT] Codigo de retorno da execucao da ultima funcao
);
(* ... *)
Exemplo 2 — log em arquivo DAT (binário)
Gera um arquivo de dados históricos tipo DAT (binário). O registro a ser logado é
uma estrutura de dados (HISTORY_DATA) cujos campos contêm os dados desejados.
Clique aqui para baixar a tabela de variáveis
TYPE
HISTORY_DATA : STRUCT
Timestamp : DT; (* Timestamp do registro de dados *)
Temperatura : REAL; (* Temperatura atual *)
Umidade : REAL; (* Umidade atual *)
END_STRUCT;
END_TYPE
VAR
TICK_LOG : HILS.TICK; (* Temporizador para logar dados periodicamente *)
LOG_FILE_DAT : HILS.FS_LOG_FILE; (* Funcao de LOG do sistema de arquivos *)
FILE_NAME_DAT : STRING := '/Dados.dat'; (* Caminho para o nome do arquivo de dados *)
CMD_LOG_DAT : INT; (* Comando para logar dados historicos *)
APP_DATA_DAT : HISTORY_DATA; (* Registro de dados a ser logado no arquivo *)
END_VAR
(* ... *)
// Temporizador para logar os dados periodicamente a cada 5 seg
TICK_LOG(TM := T#5s);
// Ativa log do dado historico
IF(TICK_LOG.EV) THEN
// Monta registro de dados a ser escrito no arquivo DAT
(* ... *)
APP_DATA_DAT.Timestamp := HILS.GET_SYSTIME();
APP_DATA_DAT.Temperatura := 25.0;
APP_DATA_DAT.Umidade := 45.0;
(* ... *)
// Ativa comando para logar estrutura de dados no arquivo DAT
CMD_LOG_DAT := 1;
END_IF;
// Loga estrutura no arquivo de dados historicos tipo DAT
LOG_FILE_DAT(
START := TRUE, // [BOOL] Ativacao da funcao
CMD := CMD_LOG_DAT, // [INT] Comando associado ao arquivo de dados
DATA_FILE := FILE_NAME_DAT, // [STRING] Caminho completo para o nome do arquivo de dados
DATA := APP_DATA_DAT // [ANY] Registro de dados a ser logado no arquivo
//DONE => , // [BOOL] Pulso de fim de execucao da funcao
//RESULT => // [INT] Codigo de retorno da execucao da ultima funcao
);
(* ... *)