Comunicando arduino com o ScadaBR

Gostaria de saber como faço para que o ScadaBR leia 0/1 enviado pelo arduino, alterando desta forma o data point. tentei fazer com ASCII serial, mas não coonseguir. Estou utilizando o cabo USB e um GIF binario na representação grafica.

Você precisa se atentar ao protocolo de comunicação, é possível trabalhar em ASCII serial, com tanto que vc desenvolva o protocolo para o arduino, o que as pessoas tem usado é o protocolo modbus serial e até mesmo o modbus ip, que eu ainda não usei, pesquise aqui no site e no site do labdegaragem que tem muita coisa sobre este protocolo, que foi desenvolvido para arduino pelo jpmzometa.

Att

Eng. Fabio Durão

Completando o que o Fábio disse,

Eu já usei o MODBUS IP, e confesso achei bem melhor. Infelizmente onde eu instalei não tenho um ponto de rede fisica, então tive que colocar o slave com um simulador, aquele ponto wifi, que solta do outro lado ethernet. O equipamento acha que está conectado fisicamente, porém ele é wifi.

O grande segredo é usar as bibliotecas certas. Agora estou usando muito a do jpmzometa, porém ainda tenho dúvidas se as funções de escrita do scadabr no slave estão ativas, pois sempre tenho problema.

No MODBUS IP sempre funcionou perfeitamente.

 

1 curtida

Eu já consegui comunicar o arduino com o ScadaBR, mas eu usei o modbus serial para fazer esta comunicação através de uma biblioteca chamada ModBusSlave.tar.

Neste site você pode entender melhor: https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino

A melhor forma de comunicar é usando o protocolo modbus(tcp/ip ou serial), tenho alguns sistemas rodando no scadabr só com arduino, tenho até conversor modbus serial para tcp/ip com arduino todos usando modbus. (http://187.19.197.46:8095/KT/login.htm usuario: visita senha: 12345) veja esse link é um pequeno supervisorio que roda só com arduino todos os escravos são arduinos.

 

Alisson,

eu gostei de mais ver seu sistema. Tenho perguntas pois tenho um sistema semelhante montado.

Como mede o volume de água? Vi que com ultrassom não é robusto. Pode explicar?

E a energia? usa que tipo de sensor? Parabens.

p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }

Olá farmsid, quem falo que o ultrassom não eh robusto? Essas duas caixas de água do sistema usam o mesmo sensor o hc-sr04, no inicio perdi muitos sensores devido a falta de experiencia em fazer um bom isolamento para que a umidade da caixa não danificasse o sensor, basta apenas a parte útil do sensor ficar exposta e mais nada 6 meses de uso e o sensor esta novo ainda. Medidor de temperatura e umidade uso o sensor sht21 http://www.ebay.com/itm/2014-New-1pc-Standard-SHT21-Digital-Temperature-And-Humidity-Sensor-Module-New-/351048423928?pt=LH_DefaultDomain_0&hash=item51bc1dd9f8 só achei no ebay no brasil não achei. Medidor de tensão, até 400v desenvolvi com ajuda de pequenos trafos um medidor para ligar no Arduíno, em alta tensão no meu caso 13.8kv eu transformei o Arduíno em gatway ou seja ele esta ligado a um relé de proteção para cubículo e dele eu coleto em serial modbus as informações e depois envio em madbus ip para o scadabr.

 

abraço qualquer duvida mais pode falar

Alisson,

pois é, falei da robustes exatamente por me falarem que oxida facil. Vou dar uma pesquisada. Se der para mostrar como fez, agradeço. Mas então vc deve ter feito uma caixa para colocar ele dentro e só deixou as saídas de fora, é isso? 

Esse sensor nunca achei aqui mesmo. Mas eu até gosto do DHT22. O dht11 acho fraco.

Comprei uns sensores no ML que prometem medir voltagem alternada. A voltagem continua faço usando divisor de tensão. 

Só to percebendo uma coisa. A leitura de uma porta analógica ta sendo muito influenciada pela leitura de outras portas. To tentando colocar um delay entre as leituras, mas também estou buscando outra alternativa. Se souber dá um toque. Coloquei os graficos neste post do laboratorio de garagem. 

http://labdegaragem.com/forum/topics/scadabr-arduinos-influ-ncia-entre-as-portas-anal-gicas

No meu caso estou tentando medir voltagem e corrente geradas por paineis solares. A voltagem to fazendo com divisor de tensão, imaginando que o máximo é 25v. Dai fiz um divisor de tensão e coloquei o ajuste nos calculos.

A corrente to usando um ACS712. Esse aqui ta me dando um pouco de trabalho pois está com um erro muito grande. Variando muito. To fazendo uns ajustes com capacitores mas ainda não tenho a solução.

Vou implementar  uma média também.

Eu uso muito o modbus ip e o modbus RTU. Os slaves são todos arduinos. 

A biblioteca que uso é a do JPMzomenta, pois as outras não conseguir fazer trabalhar em rede RS485 com mais de um slave.

Vou publicar detalhes em um post separado para conhecer o que estou usando.

Ola, Biblioteca modbus - vou publica em uma pasta no dropbox as bibliotecas q uso com exemplos bem claros para que vc possa compreender a JPM.. usei no passado mais nao gostei muito. A respeito de medir tensões com arduino, ja fiz alguns medidores dentro da pasta do dropbox vou colocar a foto de 1 que fiz, da muita dor de cabeça até chega a um prototipo ideal, se vc tiver oportunidade de abrir equipamentos de outros fabricantes e tentar compreender um circuito de medição podera lhe ajudar. Eu vou posta fotos do circuito que fiz e do sensor de nível com as devidas proteções.

 

abraço

Alisson,

O que você puder fazer para a comunidade ajudará bastante. O JPMZometa parou de trabalhar com aquela biblioteca. Recentemente peguei o material do prof. André Sarmento, que acredito é uma atualização do JPMZometa.

Segundo o André ele incluiu outras funções MODBUS. Acredito que deve ter melhorado. Só me restou uma dúvida, pois na parte de configuração não fica informado quantos bits de parada. Parece que a norma manda que seja 2 bits.

Eu até hoje não tinha comanda algo do mestre no escravo. Sempre dava erro. Segundo pesquisa com os amigos o MODBUS é exigente em alguns prazos e se tiver algum delay no código teria problema.

Uma biblioteca modbus slave encontrada no arduino.cc é muito boa, porém só pode trabalhar com um slave.

E eu brinco com várias coisas ao mesmo tempo.

A ultima coisa que inclui foi o controle remoto de um galinheiro via GSM/GPRS que quero te apresentar.

Então, se puder publicar o material vou ficar muito agradecido.

até

Aos amigos que quiserem ver algumas coisas que posto sobre scadabr podem acessar meu canal no youtube.

www.youtube.com.br/farmsidney

Até mais.

Alisson,

não se esqueça que vc aguçou nossa curiosidade e estamos aqui doidos para ver suas informações.

Sidney

kkk, blz amigo o tempo eh que me falta aqui. Vamos iniciar por partes, vou publicar primeiro as bibliotecas modbus IP que possuo, e um código exemplo com sensor ultrassonico, apóis todas as duvidas sanadas passaremos para bibliotecas rs 485 e a demais q possuo

Alisson,

estou esperando. Vou te explicar realmente o que eu quero ver.

Iniciei minha instalação do ScadaBR usando o MODBUS RTU e RS485. Os conversores tanto USB-RS485 quanto o RS485-TTL são os incubados pelo Laboratório de Garagem, cujo responsável é o amigo Wiechert.

Meus slaves, por questão de custo, são arduinos. O protocolo modbus que comecei a usar foi o do JPMZometa. Depois passei a usar o do Wiechert por ter umas tradução de explicações, porém é o mesmo.

A grande questão é que eu queria que um slave fizesse leitura de sensores e o controle de atuadores. Se o sensor fosse na porta analógica acho que não teria problema. A questão que os sensores são um DHT11, um DHT22 e DS18B20. Todos eles tem bibliotecas próprias. Quando conjuto esses sensores com atuadores como ligar uma porta 13, que possui um led, não tenho sucesso. Parece que qualquer delay acrescentado no código dá problema. Já testei a leitura simples de portas e realmente funciona. Mas isso significa que eu teria que ter dois slaves para cobrir uma região, sendo um como leitor e outro como atuador.

Passei recentemente a usar a biblioteca do JPMZometa modificada pelo André Sarmento. Ele fez uma modificação acrescentando funções MODBUS que não estavam implementadas ainda. Acho que ficou melhor mas ainda não resolveu meu problema.

Até agora, como não tenho solução, vou fazer exatamente isso. Limpar os códigos que tenho para ficar só leitura ou só escrita e se necessário colocar dois próximos para controlar umidade do solo por exemplo. Um lê e o outro abre a válvula da água.

Só para constar, eu testei uma biblioteca modbus que consta no site arduino.cc porém ela tem um problema. Não pode ser usada com mais de um slave por vez, pois não tem a função de enable que liga ou desliga a comunicação.

Sobre sensores tenho vários. Me encanta o estudo sobre sistemas Scada, especialmente para controle de processos. Eu uso na automação da minha casa e da minha chácara. 

Quando vi que você tinha um monitoramento de hidroponia fiquei fascinado pois é um novo projeto que tenho. Quero plantar uns moranguinhos e uma alface.

Só para completar, depois passei a usar o MODBUS IP. Com essa biblioteca chamada MUDBUS não tive problema. Nem mesmo para execução. Tenho um slave ligado a um gateway GSM em um galinheiro.

Conhecer um projeto como o seu ajuda a ampliar as possibilidades de uso e implementação.

Então, não deixe mesmo de mostrar para podermos aprimorar sempre o conhecimento.

até

 

p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }

Ola pessoal desculpa a demora, falta de tempo e de internet, vamos la.

De inicio será necessário baixa as bibliotecas modbus rtu-485, estou usando( https://code.google.com/p/simple-modbus/downloads/list ) baixa a slave v8 . O shield rs485 do laboratório de garagem( http://www.labdegaragem.org/loja/31-shields/shield-rs485.html ) . Neste shield rs-485 ele usa o pino 6 para habilitar a comunicação, neste pino você ira coloca também o transistor(você devera testa o bc547 e bc558 pois fiz o projeto e não lembro qual usei) a base do transistor você coloca no pino 6 e o emissor no tx coletor na rede. Baixe o código analise teste a comunicação e tire suas duvidas. Abraço

Alisson,

fiz a tarefa de casa direitinho. Bom, as bibliotecas simplemodbus já são minhas conhecidas. Tanto ela como a do JPMZometa quanto a modificada pelo André se comportam da mesma forma. A organização é boa também.

O conversor USB-RS485 e RS485-TTL são bem esses mesmo que uso.

Esse uso do transistor no shield eu não entendi. O meu funciona sem. Tem algum motivo especial?

Explicado esse detalhe passaremos a conversar sobre o código.

Ah, detalhe, já comprei os sensores ultrasonicos para fazer um controle de nível de pó (ração), inspirado por você.

até 

Blz, o transistor eh para que vc monte um rede com varios arduino e eles possam conversar numa boa, se vc nao estiver com esse problema então desconsidera o que lhe passei. Quando o sensor chega me fala que vou lhe passa as bibliotecas com codigo prontinho só para vc relaxa e goza ehehhe  abraço.

Alisson,

Realmente acho que ainda não preciso desse transistor. A rede funciona bem com o conversor e os shields.

Estou com os sensores de tensão AC, corrente AC e DC (ACS712) e tensão DC é um divisor de tensão.

Tudo isso para medir energia da casa e de paineis solares. Esse trabalho eu quero te mostrar em detalhes.

Vamos às bibliotecas. Qualquer uma delas parece que tem um problema quando usa delays. Se eu usar um DHT11, por exemplo, para medir temperatura e umidade e neste mesmo slave eu tentar mudar o status de uma porta, como ligar uma luz, o modbus dá um erro.

Os sensores ultrassonicos também chegaram. Minha opinião era baseada em um post que vi na internet falando da fragilidade deste sensor a oxidação.

Então, até encontrei um case para ele, que deixa só os "olhinhos" de fora. Será que isso ajuda?

O que penso em fazer. Controlar o nível de ração/milho em um reservatório do galinheiro e também o nível de solução de um tanque de hidroponia (vou te imitar, kkk).

O erro parece pequeno, na casa de um ou dois cm, correto?

No que me ajudar eu vou correr para implantar.

até

Sidney

O erro realmente eh isso mesmo ~5cm, mas como seu processo não requer precisão igualmente ao meu então o sistema fica extremamente confiavel. essa semana montei outro monitor de nível usando o ultrassonico ficou bom, estou agora monitorando uma pequena represa de água que em nossa região chamamos de pscina ela tem 250cm de profundidade por 150m de comprimento. O codigo esta pronto comigo me passe um email q lhe envio. abraço

Quanto a função delay, ela não é suportado devido ao tempo de atualização do datasource, nunca utilizei mas conheço um rapaz que já precisou e disse que a função MILIS resolve o problema.

Att

Eng. Fabio Durão