You are on page 1of 5

19/2/2014

Arduino com ScadaBR - CERTI - SCADABR

Arduino com ScadaBR


Contedo 1 Pr requisitos 2 Preparao Bsica 3 Preparando o Arduino para comunicao Modbus 4 Configurando no ScadaBR

Pr requisitos
- Software do Arduino 1.0 instalado no PC - Software ScadaBR mais recente instalado no PC - Conhecimentos bsicos do Arduino (portas, pinos, etc) - Conhecimento sobre carregar/baixar programas para o Arduino - Conhecimento sobre como utilizar bibliotecas e "arquivos .h" para um projeto mais organizado - Conhecimento bsico sobre o protocolo Modbus - Conhecimento bsico sobre o ScadaBR - usurios iniciantes devero estudar em https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/iniciandoscadabr

Preparao Bsica
Foi desenvolvido um pequeno programa para posicionar o servomotor. Testado e tudo OK - arduino, serial, servomotor operando etc. Este passo para ter certeza que no h nenhum problema, antes de partir para a comunicao propriamente dita. Recomendamos que vc tambm execute um teste simples antes de comear.

Preparando o Arduino para comunicao Modbus


O Programa utilizado est em anexo nesta pgina, veja link para download mais abaixo. Foi usado o software Arduino Modbus RTU - veja em http://sites.google.com/site/jpmzometa/arduinombrt/arduino-modbus-slave Muito bom o trabalho desses caras, inclusive com contribuies de pessoas que j estavam usando antes com o Mango M2M, vale a pena dar uma conferida. Neste exemplo escolhemos baixar o arquivo .pde que mais fcil, mas se vc quiser maior organizao, use o tar.gz e estude como fazer import das bibliotecas corretamente.
https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino 1/5

19/2/2014

Arduino com ScadaBR - CERTI - SCADABR

Aps o upgrade do Arduino 1.0, existe uma correo a fazer. O comando:


S e r i a l . p r i n t ( q u e r y [ i ] ,B Y T E ) ;

foi ento trocado por:


S e r i a l . w r i t e ( b y t e ( q u e r y [ i ] ) ) ;

Preste muita ateno nestes trechos de cdigo a seguir, pois aqui vc define o endereo do slave, a quantidade de registradores, e as definies de porta serial.

/ *M o d b u sR T Uc o m m o np a r a m e t e r s , t h eM a s t e rM U S Tu s et h es a m e p a r a m e t e r s* / e n u m{ M B _ S L A V E=1 ,/ *m o d b u ss l a v ei d * / } ; / *s l a v er e g i s t e r se x a m p l e* / e n u m{ M B _ R E G 0 , M B _ R E G 1 , M B _ R E G 2 , M B _ R E G 3 , M B _ R E G S/ *t o t a ln u m b e ro f r e g i s t e r so ns l a v e* / } ; i n tr e g s [ M B _ R E G S ] ;/ *t h i si st h e s l a v e ' sm o d b u sd a t am a p* / v o i ds e t u p ( ) { / *M o d b u ss e t u pe x a m p l e ,t h e m a s t e rm u s tu s et h es a m eC O M p a r a m e t e r s* / / *1 1 5 2 0 0b p s ,8 N 1 ,t w o d e v i c e n e t w o r k* / c o n f i g u r e _ m b _ s l a v e ( 1 1 5 2 0 0 ,' n ' , 0 ) ; } v o i dl o o p ( ) { / *T h i si sa l lf o rt h eM o d b u s s l a v e* / u p d a t e _ m b _ s l a v e ( M B _ S L A V E ,r e g s , M B _ R E G S ) ; / *y o u rc o d eg o e sh e r e* / }

Aqui no loop exatamente onde precisa ser adicionado o seu programa principal. A cada loop, ser verificado pelo comandou p d a t e _ m b _ s l a v ese houve um pedido de um Master Modbus (no nosso caso o Master ser o ScadaBR). Se o Arduino receber um pedido de "write", ele atualizar o valor da varivel r e g s (que um array com os registradores) ficando o valor disponvel para o restante do programa. Se o Arduino receber um pedido de "read", ento ele responder com o contedo atual do item especfico no array r e g s . Por isso se vc quer "disponibilizar" o valor de um sensor, varivel interna etc. para o ScadaBR, lembre-se se salvar a mesma no registrador correspondente (ou seja, r e g s [ 0 ] ,r e g s [ 1 ] etc.) ao final do loop. Neste exemplo convencionamos que o valor escrito no registrador zero, ser a posio do servomotor, e foi programada a funo loop()
https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino 2/5

19/2/2014

Arduino com ScadaBR - CERTI - SCADABR

correspondente. Agora basta fazer "Upload" do programa para o equipamento, usando o software do Arduino, e aps a transferncia automaticamente j estar disponvel como um Slave Modbus RTU, na mesma porta serial do Arduino.

Configurando no ScadaBR
Agora que o Arduino j est conversando como um Slave, basta cadastrar o datasource e o datapoint Modbus para ele (para mais detalhes sobre configurao de modbus, veja no manual do ScadaBR, ou procurar "scadabr modbus" no youtube).

https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino

3/5

19/2/2014

Arduino com ScadaBR - CERTI - SCADABR

https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino

... e Pronto! Imediatamete a varivel "Servo" se torna disponvel no ScadaBR. s ir at a watchlist e digitar alguns valores (observe que o datapoint foi definido como "Configurvel" na figura acima!). Qualquer valor digitado imediatamente transmitido ao Arduino, permitindo que o ScadaBR controle qualquer funo que se deseje no Arduino.

Video - Arduino Modbus com ScadaBR

https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino

4/5

19/2/2014

Arduino com ScadaBR - CERTI - SCADABR

Caso vc tenha alguns sensores, basta salvar seus dados no array r e g sao final do loop, e automaticamente o ScadaBR j ser capaz de capturar dados e gerar histricos, grficos, visualizaes na watch list e muito mais. Esperamos que vc goste... a companhia que faltava para o seu Arduino ficar muito mais inteligente! ;-)

https://sites.google.com/a/certi.org.br/certi_scadabr/home/minicursos/arduino

5/5