SCADA para PC e Celular

Olá, olha eu mais uma vez aqui, das últimas vezes não estava conseguindo nem comunicar com o CLP, hj já consigo fazer o ScadaBR conversar em ModBus IP com o CLP GE 90-30, já consegui montar meu supervisório, já consegui até colocar para ter acesso pela internet, o projeta está realmente muito fera, quando eu terminar tudo vou postar aqui a minha aplicação para poder ajudá-los.

SITUAÇÃO: Bom, mas vamos ao que interessa, estou fazendo o supervisório para um laboratório remoto, a idéia é ter acesso via PC pela internet ou na rede (até aqui já está funcionando) e ter acesso via celular tb, meu celular até consegue entrar na página de login do ScadaBR, mas de cara ele já avisa que não vai funcionar por causa do meu navegador que é o Opera Mini 6, meu celular é ching-ling, só comprei pra isso mesmo e ele não tem suporte a um navegador melhor (assim como a maioria dos celulares), então com isso eu não consigo acessar o ScadaBR, aí fuçando na net descobri um projeto específico para celular e gratuito que é o iPHC2.1, aqui o site (http://www.iphonehomecontroller.com/ PS. Não precisa de um iPhone) , ele é feito em PHP com banco de dados em MySQL, tem como servidor o Apache 2 (na verdade ele usa o XAMPP, antigo LAMPP do linux, agora multiplataforma que é um conglomerado juntando todos esses programas que falei, ótimo pra quem não domina essa área) e o melhor é que não precisa ser instalado no celular como todos os pagos que eu vi, só na máquina servidora, assim como ScadaBR (até aqui tb consegui fazer funcionar, já até na internet).

PROBLEMAS: Apesar do iPHC2.1 ser visivel pela internet ele ainda não conversa com o ScadaBR ou com o CLP, como é que eu faço para o iPHC2.1 conversar com o ScadaBR? Pensei que se eu conseguisse escrever os valores do iPHC direto no Banco de Dados Derby do ScadaBR poderia dar certo, ou talvez trocar o banco de dados do ScadaBR pelo MySQL que aí ia ficar com o mesmo banco de dados do iPHC, sei que o iPHC foi feito para ser usado em automação residencial no sistema X10 que não usa CLP e sim um módulo ligado a usb do pc e a tomada, transformando a informação em um sinal modulado dentro da rede elétrica, porém tenho certeza que é possível reprogramar esta parte, tenho uma noção média de HTML, minha dificuldade é com o PHP do iPHC mas quanto a isso dou um jeito, o que parece ser mais difícil é mexer com o JAVA do ScadaBR, é tudo meio escondido, exemplo, vou fazer uma página inicial na qual vc escolhe se está usando um CELULAR ou um PC, nessa tela ia ter usuário e senha, a idéia é depois de preenchido o usuário e senha se eu clicar em CELULAR, essa página ia verificar no iPHC se a senha está certa e logar, isso é mais fácil, se invés de CELULAR eu clicar em PC ele ia verificar se a senha do ScadaBR está certa e logar, isso parece ser impossível de ser feito visto que não consigo achar onde fica a página de login para ter acesso ao seu código e descobrir como implementa-lo na minha página inicial, to quase desistindo desta parte e deixando que a senha seja colocada direto na página do ScadaBR ou do iPHC, resumindo minha dificuldade maior está em fazer o iPHC conversar com o ScadaBR, ah, até pensei que talvez aquele trem do PUBLISHERS pudesse ajudar em algo, mas não sei como funciona, ajudem aí quem puder, por favor!

SUGESTÃO: Esse supervisório que estou montando é para fazer o ensaio de motores em vazio e com carga de um laboratório a distância, ah principio é isso, porém estou sentindo a falta de algum gerenciamento de prioridades de usuários, por exemplo tenho 2 professores neste projeto e alguns alunos que vão ter acesso a este supervisório, se um professor estiver logado no ScadaBR e começar a fazer o Ensaio do motor e um aluno chegar no sistema, este aluno não poderá modificar o que o professor fez ou interromper o processo no meio, quanto a isso tem solução, é só criar um usuário para os alunos com permissão apenas de leitura ok, agora e se um professor estiver fazendo o Ensaio e o outro professor tb se logar eu não tenho como dar mais prioridade para um do que para outro, visto que ambos terão permissão de escrita no Supervisório, creio que a prioridade poderia ser feita de algumas formas diferentes, quem está a mais tempo ter prioridade, ou um usuário ter mais prioridade que outro mesmo que ambos possam escrever e além disso seria importante que tivesse uma tela ou quadro o tempo todo mostrando os usuários online (logados) e quantos são porque no meu caso provavelmente vai existir uma senha universal para todos alunos que quiserem só bisbilhotar, só com permissão de leitura, poderia ser um usuário aluno, porém podem ter 5 pessoas ao mesmo tempo logadas como alunos, o mesmo pode acontecer para os professores, se não for muita pretenção e tiver como incluir esta alteração nesta próxima versão 0.9 seria ótimo, alias, para que dia está previsto o lançamento?

Obrigado por lerem até aqui, isso pra quem conseguiu, rs, como sempre meus comentários são enormes, abraço a todos e parabéns pelo projeto, está cada dia melhor!

Pessoal, já consegui andar um pouco sozinho, achei no site da CERTI algo sobre integradores, criei um Data_Source do tipo SQL, aí segui o modelinho para preenchimento de DRIVER, STRING E DECLARAÇÃO, Marquei “Consulta baseada em linha” e mandei executar o teste de declaração, ele me retornou a tabela abaixo, sei que não vai aparecer certinho, mas tentei separar as colunos do titulo com “|” . Cada linha da tabela corresponde a um botão o botão “Ligar Processo” que tem como “id” 41 está ligado (status ON), é do tipo Luz (Light) e aciona o endereço A1. Esse SCADA foi criado pro sistema X10 onde eu só precisava ir no adaptador da lâmpada e selecionar o endereço entre A1 e P16, o sinal de liga desliga e mandado pela rede elétrica, mas não estou usando isso, quero que ele converse com o ScadaBR que por sua vez vai ligar um CLP, o qual já conversa com o ScadaBR.

id (INT) | name (VARCHAR) | type (VARCHAR) | addressnum (INT) | addresslet (VARCHAR) | status (VARCHAR)
41 Ligar Processo light 1 a on
42 Desligar Processo light 2 a off
45 Valvulas Abertas other 3 a off
46 Sensor de Nivel Baixo - SNB other 4 a on
47 Sensor de Nivel Alto - SNA other 5 a on
48 Misturador Ligado other 6 a off
49 Bomba Ligada other 7 a off

Se apareceu essa tabela parece que já está comunicando com o MySQL, certo?
Pelo que vi no tutorial tinha que ter uma coluna do tipo “data_value (INT)” para apresentar o valor, no meu caso o valor é apresentado na coluna “status (VARCHAR)” como ON ou OFF. Talvez por isso que quando eu crio o Data_point e vou na Watch list ele fica mostrando uma ampulheta no lugar do valor e depois mostra “n/a”, tem algo a mais para fazer no ScadaBR ou tenho que mexer no estilo das colunas da tabela do Banco de Dados MySQL? E se for isso mesmo a solução, como devo fazer esta mudança.
Gostaria de saber um pouco mais de explicação sobre “Declaração de atualização”, qual a diferença entre o update e o insert e quais as outras opções que tem para colocar aqui, obrigado pela atenção.

Enquanto isso eu vou dando mais dicas para poderem me ajudar, além de tudo que eu já pedi de ajuda acima queria contar que fui no PHPMyAdmin, que é o gerenciador do banco de dados MySQL do XAMPP e criei um banco de dados, nele criei uma tabela, aparentemente igual a essa aqui https://1386041173922612085-a-certi-org-br-s-sites.googlegroups.com/a/certi.org.br/certi_scadabr/home/minicursos/scadabr-integradores/myTable.png?attachauth=ANoY7cqvHYqMtpbitHJvNUlp6oZT9OJVbeRLOTN4ZwQ0MNBob5DxQgJDcTuMRIciHPVElp11guih2iD33k4ZSo_w3v4AqQnga2i9FWbc7f3reumnu3ftbNHR5r0NfV2G-BeeIDI5-Bs94CByRvB47rVgLSV2CjzAeVYVXOibWaj3H20bJsTM-cZGOnBrucoghO81D1sMmdEoY1Et1j9eQo-rUMeN2CktDCdqC9av9k11b2_g1duk62KB0GsA0y1Mb-QGD0QmRAZV&attredirects=0 , deixa só eu ser mais espécifico, na coluna “id”, eu marquei para “primary”, “auto increment” , “INT” e não coloquei o tamanho, a própria tabela gerou com o tamanho 11, na coluna, “data_point” eu marquei “VARCHAR” e tamanho “30”, na coluna “data_value” eu marquei “INT” e tamanho “30” e na coluna “ts” marquei “TIMESTAMP” e não coloquei tamanho, preenchi a tabela com os mesmos valores do exemplo do link acima.
Pronto, aí fui no ScadaBR, criei um data_source do tipo SQL chamado “testando”, preenchi igual no exemplo de integradores, só mudei o nome do banco de dados e da tabela, lembrando que no IP eu troquei por localhost pq está tudo na mesma máquina, quando mandei executar o teste com consulta baseada em linha, ele montou a tabela igualzinha a que eu tinha criado, então parecia tudo bem + uma vez, aí fui pro ponto final que seria criar um data_point com uma das linhas da tabela, coloquei o nome “TEMP”, tipo de dado “Numérico” e identicador da coluna “TEMP”, não coloquei nada em “Declaração de Atualização” salvei e habilitei data_point e data_source, quando vou no Watch List e adiciono o data_point aparece a ampulheta no valor denovo e fica eternamente, se eu clicar em outra parte e voltar na Watch list mostra “n/a” no valor, quando volto no Data_source SQL que criei ele mostra esse alarme “Apr 16 19:19: ‘testando’: Nenhum data point encontrado para linha identificada por “1” no conjunto de resultados”.
No meu caso, a temperatura coincide com a linha 1 de id 1, mas se eu apagar esse data_point e pegar o da linha 2 que pra mim é UR ou o da linha 3 que no meu caso é P ele continua dando o mesmo alarme referente a linha 1 “Apr 16 19:19: ‘testando’: Nenhum data point encontrado para linha identificada por “1” no conjunto de resultados”. Estou precisando urgentíssimo de ajuda aqui, por favor alguém, Vitor, gtl, Baggio, scadabr, agora conclamei o clã ahiuahuih! Valeu pessoal. Abraço!

oi Fabio

vamos uma coisa de cada vez então.
em primeiro lugar como vc falou seus posts são bastante longos, e fica difícil de ler. uma dica simples é vc primeiro começar a separar as frases, um ‘enter’ a mais de vez em quando não faz mal e vc consegue separar os assuntos.

  1. integração do scadabr com softwares externos

bom, primeiro só pra esclarecer, quando se usa a integração via datasource SQL, o que acontece é que o ScadaBR vai conseguir LER dados de um outro software. Não significa que vc vai conseguir mandar comandos para esse outro software. mas essa não é a única possibilidade, na verdade existem pelo menos 3 caminhos principais de integração:

A) via datasource SQL, o scadaBR LÊ os dados de um outro software. esse outro software pode ser qualquer coisa, uma interface com usuário, outro scada etc. O ScadaBR conseguiria controlar equipamentos a partir de comandos no outro software, por exemplo vc escreve um valor na tabela do outro software, então o scadaBR consegue ler esse valor, e executar um comando, script etc. a partir deste valor.
observe que o outro software NÃO está enxergando o ScadaBR, é o ScadaBR que enxerga esse outro software pelo datasource!!! então essa integração não serve se vc quiser visualizar os dados do ScadaBR pela interface de outro software. mas veja os outros métodos a seguir.

B) via tabelas SQL do scadabr, qualquer outro software que esteja preparado para falar com SQL, pode LER os dados que estão dentro do scadabr. por isso fornecemos a estrutura das tabelas do scadabr no guia de integradores. Observe que agora nesse caso o software externo pode ser usado para visualizar os dados do ScadaBR; porém não é recomendado deixar que esse software escreva dados diretamente na base de dados do ScadaBR.

C) via API com certeza é o método mais flexível, nas por isso exige um pouco mais de treinamento. Com a API pode-se tanto LER como ESCREVER em uma variável usando comandos tipo ‘web-service’, basicamente em qualquer linguagem. temos exemplos em php, vb, java, python entre outros. além de ler e escrever na variável, via API é possível consultar e reconhecer alarmes, configurar datasources e datapoints, puxar históricos etc.


  1. Extensão do scadabr para rodar diretamente em celular

em princípio os meios atuais possíveis são criando uma “public view” e acessando direto via celular; ou então criando uma ‘custom jsp’; e outra forma ainda seria criar sua própria tela em uma linguagem que tenha mais habilidade como o PHP.

public view:
se a tela for mais simples sem muitos efeitos especiais, deve rodar até nos browsers mais simples, tente criar a public view e fazer login direto na URL da public view, mesmo ele dizendo que não pode.

custom jsp:
pessoalmente nunca criei uma custom jsp, então teria que ser consultado no próprio código-fonte ou fórum (em inglês) do mango. aliás quando tivermos feito uma custom jsp, ou se algum leitor aqui do fórum já tiver feito, por favor mandar os exemplos.
JSP basicamente é uma liguagem de servidor como o PHP, nesse caso vc cria sua página HTML normalmente e insere as tags JSP suportadas pelo mango & scadabr, que serão preenchidos automaticamente quando visualizadas no browser. por exemplo vc pode visualizar os datapoints etc. em uma página customizada. pra quem quiser aprender um pouco de java web, é o jeito mais interessante, pois usa as funcionalidades (componentes) do próprio engine do mango/scadabr, sem adaptações ou ‘gambiarras’.

criando a própria tela em outra linguagem:
no wiki do scadabr, abra em uma nova janela o ‘minicursos’ e consulte os tópicos mais avançados. Vc precisa pelo menos conhecimentos básicos na linguagem que escolher, seja php, python etc., mas com certeza essa opção dá uma flexibilidade muito grande.


3, Integração entre o scadabr e o iphc

olha não entendi muito bem como vc vai fazer, veja que conforme a revisão acima vc integrando o datasource SQL e apontando para a base de dados do ihpc, vc em princípio conseguiria ler alguns valores lá e comandar os equipamentos com o ScadaBR, é isso mesmo? mas não seria possível por esse caminho “enxergar” os dados do supervisório pelo iphc.

de qualquer jeito estou fazendo aqui uma revisão (testes) com o datasource SQL e vou tentar reproduzir a tua situação específica. assim só olhando sem testar me parece algo com os tipos de datasource – usar tipos Numeric quando for campo INT ou Double, e usar tipo Alphanumeric quando for uma string. Assim vc poderia ler ‘on’ e ‘off’ como string e depois manipular isso pra binário via script ou metadatasource.


bom fábio, realmente faltou esclarecer o cenário inteiro da integração com iphc, ou talvez eu não tenha entendido bem alguma parte, mas vc dá um toque aqui no fórum tentando deixar mais claro: basicamente vc quer ver o scadabr pelo celular, ou quer é mandar os comandos para o scada? acho que faz sentido tentar os dois né, visualizar e mandar comandos, então quem sabe vc repensa a estratégia, pode existir um caminho mais fácil.

quando eu tiver a resposta sobre as dúvidas mais específicas do SQL e porque dá o erro na linha 1 eu posto novamente.

um abraço, obrigado por todo o feedback até agora!!!

victor

Olá Victor,

Obrigado pela atenção e resposta super explicada ao meu post.
Vou começar a treinar a organização de meus enormes posts hehehe.

  1. Integração do ScadaBR com softwares externos:

O que eu imaginava é que ao usar DataSource SQL, por haver nos DataPoints a “Declaração de Atualização”, fosse possível além de ler um dado, também escrevê-lo, senão é, pra que que serve essa declaração e o parâmetros Insert e Update, achei que fosse tipo Read e Write.

A) Imaginei mandar comandos pelo iPHC para o ScadaBr, o que já me disse que é possível, porém tb desejava ler dados, na verdade achei que não ia precisar mandar o iPHC ler, achei que por script daria para o própria ScadaBR escrever na tabela MySQL.

B) Eu até pensei em mudar a base de dados do ScadaBR de Derby para MySQL, porém achei que do outro método já daria certo, mesmo assim ainda pensava nisso porém não achei material de ajuda suficiente para que eu conseguisse migrar de um para outro, fiquei com um pouco de medo de zicar tudo, não tenho dados que precisam ser guardados, por enquanto, posso perder todos, só os datapoints e telas, etc que quero guardar.

C) API para mim ainda é grego, li no Wikipédia, no site da CERTI sobre API, mas ainda não entendi bem como funciona, se é possível fazer por PHP talvez seja algo cabível dentro dos meus poucos conhecimentos, se puder dar mais uma luz sobre esse assunto na resposta, ficaria grato.


  1. Extensão do scadabr para rodar diretamente em celular:

public_view:
Antes não conhecia a public_view, então meu celular não tinha navegador suportado para o ScadaBR, recentemente descobri a public_view (aliás, o material estava bem perdido, se tivesse como concentrar para ajudar a galera nova) a qual meu celular até suporta, o browser do celular é o Opera Mini 6, o mais simples, sem suporte a nada, hehehe, eu até consigo acessar a public_view, mas alguns problemas acontecem, se eu colocar alguma imagem de fundo tomando toda a tela, no celular ela aparece pequena, o equivalente à 1/10 da tela e os componentes nos devidos lugares, mas sem o fundo ficam meio perdidos (talvez por isso que no exemplo que o site da CERTI deu o fundo era branco), outra, quando um data_point vai para 1 o gif animado não mostra, nem animado e nem na última imagem da sequência, pára no meio e por fim, não sei como fazer acesso na public_view por senha (tem como?), sei deixar para acesso anônimo com set ou read, no meu caso, teria que ser “set” só para quem é autorizado, aliás estava contando com a public_view para disponibilizar acesso para os alunos curiosos apenas como “read”.

custom jsp:
Desculpa, não faço ainda muito idéia do que está falando aqui, preciso estudar, mas não tem nada a ver com a API que citou acima? em que essa custom é vantajosa em geral e no meu caso?


  1. Integração entre o ScadaBR e o iPHC:

Então Victor, é mais ou menos isso que disse mesmo para a integração, quero escrever no ScadaBR pelo SQL e achei que dava para o ScadaBR escrever no SQL segundo citei no começo do post (quero ler e escrever), quanto ao tipo, eu já tentei colocar alphanumeric pensando no ON - OFF mas e esse double o que é? Tinha pensado mesmo era usando script do tipo, "se o metadatapoint mudar(iPHC) -> então mude o datapoint do ScadaBR para o mesmo valor) e outro script fazendo o inverso (se o datapoint mudar -> mude o metadatapoint).


  1. INCLUINDO NO POST - Atualização automática da página:

Tive alguns problemas no celular do tipo de atualização, na public_view, quando mudo o data_point no PC o celular não atualiza sozinho, tenho que dar um refresh, já o contrário, o pc atualiza, alguém sabe resolver? O problema tb aconteceu no iPHC, só que o iPHC parece que não tem nenhuma instrução de refresh automático quando houver mudança, se alguém souber o comando para PHP pode postar aí.

Victor, espero que tenha ficado mais claro o que eu pensava em fazer na integração, se for impossível pode falar, obrigado por toda a atenção até agora e pelo ótimo trabalho que a equipe tem feito colaborando para a comunidade de Engenheiros Open Source rs.

Abraço,
Fábio

Opa!

1297% de melhoria na organização do post!!! hahah
:slight_smile:

Bom, eu cometi um grande engano sobre o datasource SQL!

É possível sim atualizar o valor, vc tem completa razão sobre a “declaração de atualização”.
Estava faltando um detalhe no help, mas achei no fórum do mango. Se quiser olhar estaria aqui:
http://mango.serotoninsoftware.com/forum/posts/list/571.page#2748

Mas vamos ao que interessa, vamos ver a tal “declaração de atualização” - segundo o forum do mango, seria algo mais ou menos nessa linha:
UPDATE sometable.Test SET B=? WHERE A=‘1’ ;

Estou usando exatamente a base de dados do exemplo do wiki (com TEMP, UR e P) :
https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/scadabr-integradores

Para poder escrever no banco de dados, na variável TEMP, fiz a declaração assim:

UPDATE mytable SET data_value=? WHERE data_point=‘TEMP’ ;

Resultado: FUNCIONOU UMA BELEZINHA! hehehe

Bom fabio, tenho que dar uma saída por agora mas logo continuo com as respostas.
Em uma linha mais geral, acho que é possível conseguir o que vc quer, mesmo que precise alguns “ajustes técnicos” (pra não dizer gambiarras hehehe - brincadeira…)

abraço, t+

Já dizia o provérbio, “Uma imagem vale mais do que mil palavras”, um vídeo então deve valer mais do que um milhão delas.
Bom galera, depois de 2 meses voltei a dar atenção ao problema e não consegui resolve-lo, então coloquei o vídeo a seguir para ajudá-los a entender minha dificuldade:

espero que ajude.
PS.: Tem uma músiquinha de fundo pra não deixar o vídeo mto vazio, rs!

Abraço

Dalhe Fabio

Acho que reproduzi o problema, e entendi o que aconteceu, era uma pequena bobagem (está provavelmente errado no manual).
Veja se resolve: na declaração de seleção, troque o “select m.* from modules m” pelo seguinte:

SELECT m.data_point, m.data_value, m.ts FROM modules m

Aqui funcionou… a explicação é que a primeira coluna retornada pela consulta deve ser já o datapoint, a segunda coluna deve ser o valor, e a terceira o timestamp. Do jeito que está documentado ele retorna 4 colunas, e o supervisório procurou pela primeira coluna e encontrou “1” e não “Q1”.

Com a consulta acima ele vem certinho.

Sobre o vídeo, se eu postasse uma resposta, a trilha sonora seria assim:
“don´t worry… ´bout a thing… ´cause every little thing… gonna be allright!!!”

:slight_smile: bom fim-de-semana

Victor

AOOW Victor, don’t cry foi boa haiuhIUhaUIhaiUh, afinal acho que sou o mais chorão aqui do fórum mesmo hehehe.

Cara, nem acredito que era uma coisa tão boba assim, funcionou praticamente perfeitamente com a sua dica…COMO É DURO SER BURRO… victor, nesse banco de dados que criei no vídeo, o “teste_novo”, dentro da tabela “modules” tinha 2 linhas “S1” e “S2”, quando fiz o que vc disse funcionou, na Watch List ele mostra o valor agora, graças a Deus, mas aquele erro continuou aparecendo, até que eu criasse os 2 datapoints, estranho não?! fiz testes, se crio só o S1, ele fala:

Nenhum data point encontrado para linha identificada por “S2” no conjunto de resultados

se eu crio o S2 ele fala o mesmo pra S1, aí criei os 2 e sumiu o erro, só que na Watch List S2 mostra o valor correto, mesmo qdo mudo direto no “phpMyAdmin”, ele atualiza direto, mto loko isso, porém o S1 que está com o valor “0” no banco de dados fica mostrando o valor “1”, se mudo no “phpMyAdmin” ele não muda e permanece com o valor “1”, suspeito que ele está mostrando o valor do “id” no lugar de mostrar o valor do “data_value”.

Pra não ficar dúvida, está abaixo a configuração dos data points S1 e S2:

S1 - Esse está mostrando 1 eternamente;

NOME: Saída 1
XID: DP_643367
TIPO DE DADO: Numérico
IDENTIFICADOR DE COLUNA: S1
DECLARAÇÃO DE ATUALIZAÇÃO: UPDATE modules SET data_value=? WHERE data_point=S1’ ;

S2 - Esse está perfeito;

NOME: Saída 2
XID: DP_313203
TIPO DE DADO: Numérico
IDENTIFICADOR DE COLUNA: S2
DECLARAÇÃO DE ATUALIZAÇÃO: UPDATE modules SET data_value=? WHERE data_point=S2’ ;

Achei estranho que só deu certo para o 1º, na configuração do Data_Source SQL só mudei exatamente o que vc falou, entendi mais ou menos a sintaxe, nunca mexi com nenhum banco de dados, é uma linguagem nova pra mim.
Para esse banco de dados que eu criei seguindo o manual da CERTI-INTEGRADORES deu quase certo, agora, para o banco de dados do iPHC não deu, então surgem perguntas em minha cabeça:

  • O ScadaBR só entende qual é a coluna do Data point na tabela se estiver escrito exatamente igual ao exemplo? ou seja, se estiver escrito “data_point” ? No iPHC não existe esse nome, mas se for esse o caso eu acho que consigo mudar.

  • A mesma pergunta de cima para os valores dos data_points, ele só entende se estiver escrito “data_value”?

  • A coluna de Data Point precisa ser sempre a primeira? sei que na criação não é necessário, mas na hora de fazer a leitura dela lá no SELECT ela deve ser sempre a primeira a ser lida? Existe uma ordem?

  • Eu preenchi certo esse identificador de coluna? Pra que serve? Não entendi pela ajuda do ScadaBR? Seria para identificar exatamente qual linha da tabela estou pegando? Se for, essa informação já não está disposta na declaração de atualização em “…WHERE data_point=S2’ ;” ?

  • Na declaração de atualização, segundo o exemplo acima, eu só consigo fazer LEITURA do banco de dados, certo? para ESCREVER é só trocar o UPDATE por INSERT? se sim, como determinar qual valor vai ser escrito? Parece mais fácil escrever por script, mas talvez não seja igual a escrita que fazemos em outros data_points e parece que realmente não é, qual a melhor forma de escrever em uma linha de uma tabela de um DB?

Não vou escrever mais pra vc não ficar com preguiça de responder ahIUhaUaUI, da próxima faço outro vídeo pra cansar menos seus olhos ahiuhauaIHuahi, Valeu Victor!

Abraço!!

Alguma resposta?

Alguma resposta??

Fazendo mais testes consegui resolver o problema que tive do ScadaBR de só ler um data point e não ler o outro q tinha id=1… a solução? bom, não faço idéia, criei outro banco de dados igual ao anterior, uma tabela igual, com 3 linhas, adicionei as 3 como data points como já tinha feito antes e mandei a watch list mostrar os valores, mostrou, depois disso fui no phpMyAdmin e mudei os valores dos 3 data points, um por vez e eles se atualizaram no ScadaBR, os 3, até o que tinha id=1, então não sei o que tinha acontecido antes, porém, agora que consegui fazer um banco de dados criado funcionar, preciso fazer a adaptação do banco de dados do iPHC para este padrão, então as perguntas acima ainda permanecem, por favor respondam quando puderem as perguntas do último post.

[MODIFICADO ABAIXO]

Gente, consegui mais um grande avanço, não sei o que fiz também, aparentemente tá tudo igual, mas agora eu consigo ler e escrever no banco de dados só usando o UPDATE igual descrito acimo UHUUUUUUUUUUU, muito bom, agora o trem ta andando, mas ainda permanecem as perguntas acima com relação a adaptação do iPHC e o banco de dados.

[MODIFICADO ABAIXO - 03/08/2011]

Estou satisfeitíssimo com o ScadaBR e estou voltando aqui para dar um feedback do que aconteceu, após conseguir comunicar o ScadaBr com um Banco de Dados SQL criado no formato certo, me esforcei pra fazer o iPHC se encaixar no formato que o ScadaBR entende, mudando a coluna “name” para “data_point” e a coluna “status” para “data_value”, fiz isso no banco de dados do iPHC e na programação dele, então consegui começar a ler os valores do iPHC na Watch List.

Com a declaração de atualização UPDATE como descrito acima já é possível ler e escrever no data_point manualmente, clicando na chavinha e escrevendo o valor, parece que a declaração INSERT só serve para criar uma nova linha no banco de dados, o que pra mim não é importante, visto que no phpMyAdmin eu crio uma nova linha bem mais fácil, talvez seja interessante para quem quer fazer isso automaticamente, mas pra isso não sei bem como fazer, nem faço idéia de uma aplicação que possa ser usada para inserir automaticamente linhas.

Por fim fiz os ajustes para fazer as modificações do iPHC serem passadas ou atualizadas no ScadaBR e vice-versa. Pra isso, o trabalho foi feito praticamente todo no ScadaBR, criei um data_point (Virtual e binário - só para acender e apagar) que queria manipular no ScadaBR chamado “Luz da Sala”. Também criei um data_point (SQL Alfanumérico - o iPHC não usa “0” e “1”, mas usa “off” e “on”) o qual recebia o valor do banco de dados do iPHC.

Pra comunicar o data_point virtual para o sql e vice-versa crei Scripts.
1º Script - Para receber o valor do iPHC e escrever no ScadaBR

----------------Início Script---------------------------
if (Luz da Sala_SQL.value == “on”)
return true;
return false;
----------------Fim Script---------------------------

Depois criei um point link colocando este script como origem e o “Luz da Sala_Virtual” como destino.

2º Script - Para receber o valor do ScadaBR e escrever no iPHC

----------------Início Script---------------------------
a = “on”;
b = “off”;

if (Ligar.value == true)
c = a;

if (Ligar.value == false)
c = b;

return c;
----------------Fim Script---------------------------

Depois criei um point link colocando este script como origem e o “Luz da Sala_SQL” como destino.

E Voilá… tudo funcionou perfeitamente como eu queria, quando mando o iPHC ligar a “luz da sala” ela é mostrada como ligada no iPHC e manda o sinal para o ScadaBR que é quem de verdade vai realizar a ação de ligar a luz, e ela liga. Quando no ScadaBR eu ligo a luz, ele liga e manda alterar o banco de dados do iPHC e ele mostra que foi ligado, quase perfeito, o único problema é que o iPHC não atualiza a página sozinho quando uma alteração acontece no banco de dados, então tenho que dar F5 sempre, o iPHC é feito em PHP, se alguém puder me ajudar com isso, ficaria muito grato.

Fora isso, eu estou muito satisfeito e por mim, posso considerar o tópico encerrado, a menos que alguém precise de ajuda nesse sentido aí eu posso ajudar tranquilamente. Ah, ajuda aí com o F5…

Grato e um abraço
Fábio

Olá Fabio, primeiramente parabéns pelo projeto.

O que você precisa é muito simples, é só adicionar uma tag HTML em suas páginas.
Para recarregar a página automaticamente é só adicionar esta linha aqui:

<META HTTP-EQUIV=“REFRESH” CONTENT=“X; url=pagina.html”>

Coloque esta tag <META> entre as tags <HEAD>

<head>
<title>…</title>
<META HTTP-EQUIV=“REFRESH” CONTENT=“X; url=pagina.html”>
</head>

X = tempo em segundos. O atributo url é opcional.

Se quiser mais detalhes sobre isto procure na web por “html reload page” ou “html autorefresh”

Marcio

Pessoal estou com o mesmo problema que o Fabio, porém mesmo depois de seguir todos os passos deste fórum a minha watch list ainda mostra (n/a) ou a ampulheta...

Acredito que o problema seja na "declaração de atualização" que fica em Detalhes do data point, quando insiro o comando UPDATE `mytable` SET `data_value`=? WHERE `data_point`='TEMP' ; algumas palavras do comando ficam sublinhadas de vermelho, indicando algum erro, e não consigo identificar o mesmo.

Meu objetivo é receber valores de um banco de dados MySQL, criar a data point e plotar um gráfico em tempo real usando uma representação gráfica. Se trata de um projeto de pesquisa da faculdade, desde já agradeço a quem puder me ajudar.

Obrigado.

Olá Fabio,

  Sou estudante e estou fazendo um projeto de iniciação científica em que um tablet rodará um aplicativo que funcionará da seguinte maneira:

1) Deficiente físico seleciona uma opção por exemplo acender a luz

2) Informação é passada ao supervisório

3)Luz é acesa

Porém estou somente no segundo ano de Sistemas de Informação, então não tenho muita base e não sei muito ainda sobre o ScadaBr, principalmente quanto como poderei fazer essa comunicação. Creio que será um grande desafio, e como eu estou perdida e li seus comentários percebi que seu projeto tem alguma relação com o meu.

Se você puder me ajudar, pelo menos me dar uma luz de por onde começar agradeceria muito.

 

Atenciosamente,

  Juliana Salgado

Boa noite @fabiodurao,

Conseguisse progredir na consulta com data source sql?

Grato.

Bom dia Fabio, estou fazendo uma pesquisa com base para o meu TCC, essa pesquisa consiste em fazer a comunicação com o medidor ME237, essa conexão já foi estabelecida pelo Modbus IP, porem estou com um problema que é de conseguir acessar o supervisório pela internet ou na rede por qualquer PC, e vi que voce já conseguiu essa parte de acordo com seu comentário, poderia me dar uma dica sobre como conseguiu? desde já agradeço muito.