Página 1 de 1
Batch data logging

Enviado:
10 Set 2015 18:55
por edsont
Preciso desenvolver uma aplicação em Windows para registro de variáveis em lote, algo parecido com um registrador gráfico.
Os arquivos precisam ser individuais por lote, ao contrário dos sistemas supervisórios que ficam gravando continuamente os dados.
Alguém conhece algum software que permita fazer isso com certa facilidade? A opção que vejo no momento é o Labview, mas nunca usei ele. Já fiz isso antes usando Visual Basic 6, mas dá muito trabalho.
Provavelmente usarei Modbus TCP para aquisição.
Re: Batch data logging

Enviado:
11 Set 2015 07:24
por KrafT
Sempre que preciso algo desse tipo, faço em C# (Visual Studio). Ele tem uma classe, objeto, biblioteca,sei lá o nome certo da bagaça, que salva em XML se vc quiser. Aí vc pode manusear o XML como se fosse um banco de dados simples, mas muito melhor que texto plano.
Antes fazia com Delphi, mas essa bagaça faliu.

Re: Batch data logging

Enviado:
11 Set 2015 09:05
por edsont
Acho que vou ter que gravar os dados em formato binário mesmo em vez de XML. A quantidade de dados é grande. O lote pode durar até 15 horas. Com 1 amostra/segundo, com 3 variáveis vai dar 3 x 3600 x 15 = 162000 WORDS.
Esta ainda é a parte mais fácil. Preciso implementar toda a interface com o usuário, geração de relatórios, receitas de controle da máquina, programação do CLP etc. E tenho cerca de 2 meses pra entregar. Este estimo que seria o que preciso pra aprender a usar o Labview.
Re: Batch data logging

Enviado:
11 Set 2015 09:58
por J
KrafT escreveu:Sempre que preciso algo desse tipo, faço em C# (Visual Studio). Ele tem uma classe, objeto, biblioteca,sei lá o nome certo da bagaça, que salva em XML se vc quiser. Aí vc pode manusear o XML como se fosse um banco de dados simples, mas muito melhor que texto plano.
Antes fazia com Delphi, mas essa bagaça faliu.

Em C# para trabalhar com arquivo Binário eu uso:
csharp code
// Leitura
String strPlcCodeDn = String.Empty;
BinaryReader rd = new BinaryReader(stream);
strPlcCodeDn = rd.ReadString();
rd.Close();
csharp code
// Escrita
String[] strPlcCodeUp = null;
FileStream stream = new FileStream(path, FileMode.Create);
BinaryWriter wr = new BinaryWriter(stream);
// Preencho "strPlcCodeUp"
wr.Write(strPlcCodeUp[0]);
wr.Flush();
wr.Close();
Com isso posso criar quantos arquivos quiser, incluindo data no nome de criação, sequência numérica ... enfim, do jeito que quiser.
Re: Batch data logging

Enviado:
15 Set 2015 15:25
por edsont
Estive verificando como o sistema supervisório (Rockwell FactoryTalk SE) armazena os dados dos gráficos no SQL.
Cada valor é acompanhado do timestamp com resolução de milisegundos além de outros dados. Isso gera uma quantidade enorme de dados. Só não achei a localização dos arquivos para ver o tamanho.
Pensei em usar o SQL para facilitar a programação, talvez comprometendo um pouco o desempenho. Eu teria que gravar os dados todos num único banco de dados e criar um segundo banco com a numeração do lote e correspondente timestamp de inicio e fim do lote.
Outra opção seria criar um banco de dados para cada lote, mas não sei se isso é correto. Quando chegasse no lote mil haveriam mil bancos.
E pra complicar existe o risco de alguém desligar o computador (Panel PC) sem desligar o Windows, ou acabar a energia. Porque não usam registradores em papel?
Re: Batch data logging

Enviado:
15 Set 2015 15:36
por Red Neck Guy
Olha, eu sempre torci o nariz pra banco de dados.
Já fiz binário,arquivo texto, XML e arquivo de propriedades. Com exceção do XML, a consulta se torna custosa computacionalmente quando o número de registros é grande.
Com banco de dados, você pode trabalhar certinho nos relacionamentos dos dados e já trazer a consulta com as operações que precisa sobre os dados.
Hoje se alguém me pergunta, vamos salvar os dados em que? Nem cogito nada, é banco de dados.