SCADABR + Datalogger

Olá,

Alguém saberia me responder se é possível criar um banco de dados (Datalogger) utilizando o SCADABR?

Eu estou tendo meus primeiros contatos com a plataforma e até então, nas pesquisas da vida, não cheguei a ver nenhum projeto que usava o SCADA para estar fazendo um histórico ou documentação de dados obtidos dos sistemas ao longo da supervisão. O parâmetros estão sempre sendo supervisionados em tempo real. Alguém saberia me informar se o SCADA disponibiliza alguma ferramente de datalogger de dados?

Desde já, muito obrigado pela atenção de todos!

Olá amigo,

O ScadaBR “salva” todos os históricos dos DataPoint por Scan, e não por batelada. Você pode salvar esses dados em um novo banco de dados como eu fiz. Tambem existe outras maneiras de realizar o datalogger por batelada …

1 curtida

Opa! Muito esclarecedor, Jonatas! Obrigado!

Tu conheces alguma fonte em que eu possa estar buscando me capacitar sobre essas ferramentas? Que ferramentes disponíveis são essas que você utiliza? Poderia me dizer o nome?

Atenciosamente,

Olá,

Você pode usar um DataSource do tipo SQL, e alimentar o banco de dados com os valores dos DataPoint desejado, exemplo:

P1
P2
P3
Grava

Quando grava estiver em nível lógico 1 então eu gravo P1,P2 e P3 no banco …

Oi Jonatan. Muito boa dica. Será que seria possível fazer uma exemplo basico e subir um video?

Olá amigo,

Vou fazer sim…

1 curtida

Opa. Boa ideia Luis! E muito obrigado Jonatan!

Valeu meu amigo. Vai ajudar muito!!

Olá amigos,

Achei mais fácil eu fazer um passo a passo com imagens mesmo, mas estou aqui para qq coisa.

Bom, falamos de um DataLogger do tipo Batelada ou seja, efetue um registro quando desejado e não a cada mudança de status ou periodo. Ex:

P1 = 100
P2 = 200
P3 = 500
P4 = 600
DataTime = Data Atual do Sistema
send = 0

Quando a TAG send estiver em nível lógico 1, então eu gravo uma nova linha no banco de dados.

Esse é o objetivo!

1 Passo:

Criar um DATA SOURCE SQL

Propriedades do SQL

Nome da Classe : com.mysql.jdbc.Driver
String de conn : jdbc:mysql://localhost:3306/nomedoBD
Nome user : root
Senha:
Declaração de Seleção: select * from datalogger (Essa declaração será enviada ao SGBD a cada 1 Segundo conforme configurado)

Data Points

Nome : nome que sera utilizado pelo ScadaBR
Tipo de dados: ?
Nome da Coluna: nome da coluna a qual se obterá o resultado da query (select * from datalogger)

Em cada DataPoint é adicionado uma declaração de atualização, quando for alterado o valor do DataPoint no ScadaBR também seja atualizado na tabela Datalogger.

P1 = update `datalogger` SET  `p1`=? where id=1
P2 = update `datalogger` SET  `p2`=? where id=1
P3 = update `datalogger` SET  `p3`=? where id=1
P4 = update `datalogger` SET  `p4`=? where id=1
send = update `datalogger` SET  `send`=? where id=1

Testando …
Ao realizar a query select * from datalogger LIMIT 1, o resultado é movido para cada DataPoint configurado com o nome da coluna

Watch list

O resultado da query informada no DataSource.
Declação de seleção: select * from datalogger LIMIT 1

2 Passo:

Bom, falamos de um DataLogger do tipo Batelada ou seja, efetue um registro quando desejado e não a cada mudança de status ou periodo. Ex:

P1 = 100
P2 = 200
P3 = 500
P4 = 600
send = 0

Quando a TAG send estiver em nível lógico 1, então eu gravo uma nova linha no banco de dados. Esse é o objetivo!
Eu não encontrei outra maneira a não ser essa que eu utilizo, se alguém estiver disposto a contribuir para melhoria, estamos aqui.

Eu precisei criar 2 BANCO de dados: Datalogger e Relatorio.
Datalogger: só utilizei o primeiro registro, quando a coluna send do banco Datalogger estiver em 1, eu pego esse registro e adiciono em Relatorio.
Relatorio: onde será armazenado o DataLogger

Eu copio o primeiro registro da Tabela Datalogger e Adiciono um novo registro em Relatório através de um gatilho. Esse gatilho está adicionado na Tabela Datalogger e é acionado em qq UPDATE da tabela Datalogger. Parâmetros:

INSERT INTO relatorio(p1,p2,p3,p4,DataTime)
SELECT AUX.p1,AUX.p2,AUX.p3,AUX.p4,NOW()
FROM datalogger AUX
WHERE AUX.id=1 and AUX.send=1

A Data e o ID é adicionado automaticamente, o ID na sequencia e a DATA atual.
Então para adicionarmos um novo registro em Relatorio, é só mudar a coluna send da tabela Datalogger para 1.

Scripting

Nesse script escrevo 1 no DataPoint send do DataSource SQL e logo em seguida escrevo 0. Logo o gatilho já vai ter adicionado um novo registro na tabela Relatorio, com os dados atuais da tabela DataLogger.
Esse script pode ser adicionado em um evento qq.

Resultado:
Tabela Datalogger após alterado send para 1


Tabela Relatorio depois de alterado o send da tabela Datalogger para 1

1 curtida

Jonatas, tu é o cara! Muito obrigado, meu irmão!

Vou estudar esse conteúdo e tentar implementar aqui.

Valeu pela ajuda, meu querido! Esse tutorial agregou bastante valor ao fórum ScadaBR

Fico feliz em ajudar