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