Você está na página 1de 3

Arduino com ScadaBR

Contedo
1. 1 Pr requisitos
2. 2 Preparao Bsica
3. 3 Preparando o Arduino para comunicao Modbus
4. 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/iniciando-scadabr
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/arduino-mbrt/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.

Aps o upgrade do Arduino 1.0, existe uma correo a fazer. O comando:
Serial.print(query[i], BYTE);

foi ento trocado por:
Serial.write(byte(query[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.

/* Modbus RTU common parameters, the Master MUST use the same
parameters */
enum {
MB_SLAVE = 1, /* modbus slave id */
};
/* slave registers example */
enum {
MB_REG0,
MB_REG1,
MB_REG2,
MB_REG3,
MB_REGS /* total number of registers on slave */
};

int regs[MB_REGS]; /* this is the slave's modbus data map */


void setup()
{
/* Modbus setup example, the master must use the same COM parameters
*/
/* 115200 bps, 8N1, two-device network */
configure_mb_slave(115200, 'n', 0);
}


void loop()
{
/* This is all for the Modbus slave */
update_mb_slave(MB_SLAVE, regs, MB_REGS);

/* your code goes here */
}

Aqui no loop exatamente onde precisa ser adicionado o seu programa principal.

A cada loop, ser verificado pelo comando update_mb_slave se 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 regs (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 regs.

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, regs[0], regs[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() 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).

Você também pode gostar