FS_LOG_FILE
Este bloco permite logar dados em um arquivo de dados. Através do tipo de comando (CMD) é possível logar dados em arquivos do tipo binário ou texto. Se o arquivo não existe, automaticamente cria-se o arquivo e escreve o dado no arquivo.
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
FS_LOG_FILE
+------------------+
BOOL ---|START DONE|--- BOOL
| |
| RESULT|--- INT
| |
INT ---|CMD ------------- |---
| |
STRING ---|DATA_FILE ------- |---
| |
ANY ---|DATA ------------ |---
+------------------+
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Opções |
Descrição |
START |
Entrada |
BOOL |
FALSE |
Ativação da função |
||
CMD |
Entrada/Saída |
INT |
Comando associado ao arquivo de dados |
|||
DATA_FILE |
Entrada/Saída |
STRING |
:* |
Caminho completo para o nome do arquivo de dados a serem logados |
||
DATA |
Entrada/Saída |
ANY/STRING |
Registro de dados a ser logado no arquivo |
|||
DONE |
Saída |
BOOL |
Pulso de fim de execução da função |
|||
RESULT |
Saída |
INT |
Código de retorno da execução da última função |
Detalhamento dos Parâmetros
Parâmetro |
Descrição |
START |
Quando ativado, inicia o processo de tratamento de um comando. |
CMD |
Este bloco trata os seguintes comandos associados ao arquivo de dados:
|
DATA_FILE |
Este parâmetro deve ser especificado com o caminho completo para o nome do arquivo de log dos dados. O diretório raíz é identificado pelo caractere ‘/’, e desta forma este parâmetro deve sempre iniciar com este caractere.
|
DATA |
Registro de dados a ser logado no arquivo de dados.
|
DONE |
Pulso de fim de execução da função.
|
RESULT |
Código de retorno da execução da última função, onde:
|
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”
Exemplo 1
Este exemplo ilustra a utilização deste bloco de função FS_LOG_FILE do sistema de arquivos do controlador para gerar arquivo de dados históricos tipo CSV (texto). Neste caso o registro de dados a ser logado corresponde a uma variável do tipo STRING cujo conteúdo deve conter os dados que se deseja logar.
Declaração de variáveis
Nome |
Tipo |
Valor Inicial |
Descrição |
|---|---|---|---|
TICK_LOG |
HILS.TICK |
Temporizador para logar dados periodicamente |
|
LOG_FILE_CSV |
HILS.FS_LOG_FILE |
Função de LOG do sistema de arquivos |
|
FILE_NAME_CSV |
STRING |
‘/Dados.csv’ |
Caminho para o nome para o arquivo de dados na raiz |
CMD_LOG_CSV |
INT |
Comando para logar dados históricos |
|
APP_DATA_CSV |
STRING |
Registro de dados a ser logado no arquivo |
Código ST
(* ... *)
// Temporizador para logar os dados periodicamente a cada 30 seg
TICK_LOG(TM := T#30s);
// Ativa log do dado histórico
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 históricos tipo CSV
LOG_FILE_CSV(
START := TRUE, // [BOOL] Ativação da função
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 a serem logados
DATA := APP_DATA_CSV // [STRING] Registro de dados a ser logado no arquivo
//DONE => , // [BOOL] Pulso de fim de execução da função
//RESULT => // [INT] Código de retorno da execução da última função deste bloco de função
);
(* ... *)
Exemplo 2
Este exemplo ilustra a utilização deste bloco de função FS_LOG_FILE do sistema de arquivos do controlador para gerar arquivo de dados históricos tipo DAT (binário). Neste caso o registro de dados a ser logado corresponde a uma estrutura de dados cujos campos contem os dados que se deseja logar.
Declaração de Tipos de dados
Definição do tipo de dados “HISTORY_DATA” referente ao registro de dados a ser logado no arquivo.
Nome do campo |
Tipo Dado |
Descrição |
Timestamp |
DT |
Timestamp do registro de dados |
Temperatura |
REAL |
Temperatura atual |
Umidade |
REAL |
Umidade atual |
Declaração de variáveis
Nome |
Tipo |
Valor Inicial |
Descrição |
|---|---|---|---|
TICK_LOG |
HILS.TICK |
Temporizador para logar dados periodicamente |
|
LOG_FILE_DAT |
HILS.FS_LOG_FILE |
Função de LOG do sistema de arquivos |
|
FILE_NAME_DAT |
STRING |
‘/Dados.dat’ |
caminho para o nome para o arquivo de dados |
CMD_LOG_DAT |
INT |
Comando para logar dados históricos |
|
APP_DATA_DAT |
HISTORY_DATA |
Registro de dados a ser logado no arquivo |
Código ST
(* ... *)
// Temporizador para logar os dados periodicamente a cada 5 seg
TICK_LOG(TM := T#5s);
// Ativa log do dado histórico
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 string no arquivo de dados históricos tipo DAT
LOG_FILE_DAT(
START := TRUE, // [BOOL] Ativação da função
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 a serem logados
DATA := APP_DATA_DAT // [STRING] Registro de dados a ser logado no arquivo
//DONE => , // [BOOL] Pulso de fim de execução da função
//RESULT => // [INT] Código de retorno da execução da última função deste bloco de função
);
(* ... *)