0% acharam este documento útil (0 voto)
375 visualizações

Modbus Arduino PDF

Este documento explica como configurar a comunicação entre um Arduino Uno simulado no Proteus e o software ScadaBR usando o protocolo Modbus. É necessário criar um circuito no Proteus com sensores, atuadores e o chip ATmega328P e configurar a porta serial do COMPIM. Também é preciso adicionar pontos de dados no ScadaBR para ler e escrever nos registradores Modbus e visualizar os valores.

Enviado por

KNNL
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
375 visualizações

Modbus Arduino PDF

Este documento explica como configurar a comunicação entre um Arduino Uno simulado no Proteus e o software ScadaBR usando o protocolo Modbus. É necessário criar um circuito no Proteus com sensores, atuadores e o chip ATmega328P e configurar a porta serial do COMPIM. Também é preciso adicionar pontos de dados no ScadaBR para ler e escrever nos registradores Modbus e visualizar os valores.

Enviado por

KNNL
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 14

MODBUS COM ARDUINO Vamos fazer um Atmega328P comunicar-se com o ScadaBR.

Eu testei esse programa com um Arduino Uno e funcionou muito bem. Para obter mais praticidade, resolvi utilizar o Proteus para simular o arduino Uno. A comunicao com o ScadaBR vai fazer uso do protocolo Modbus, vamos precisar tambm de um emulador de porta serial - o Virtual Serial Port Emulator ou outro equivalente, no meu caso, criei um par de portas seriais COM1 e COM2. A COM1 ficou sendo utilizada pelo componente COMPIM do Proteus e a COM2 ficou sendo utilizada pelo ScadaBR. Na tela abaixo, temos o Virtual Serial Port Emulator apresentado o par de portas recm-criadas.

Agora precisamos criar um pequeno circuito no Proteus com os componentes exibidos abaixo. Devemos ter chaves e potencimetros para simular sensores e lig-los aos pinos digitais e s entradas analgicas bem como ligar leds para simular as cargas que desajamos acionar. O nosso circuito ser capaz de l o estado lgico de 4 chaves, l www.mundoarduino.com

a tenso presente em 6 entradas analgicas e acionar 4 cargas. Tambm no devemos esquecer de adicionar o componente COMPIM responsvel pela comunicao serial com o ScadaBR. Faamos as ligaes conforme a figura abaixo:

Clicando no Atmega328P podemos configurar o micro para executar o arquivo hex responsvel pela implementao do protocolo Modbus. Voc pode fazer o download do arquivo no site www.mundoarduino.com.

www.mundoarduino.com

O componente COMPIM dever ser configurado conforme a figura abaixo

www.mundoarduino.com

O ScadaBR ficar responsvel pela exibio dos estados das chaves, leitura das portas analgicas e pela atuao das cargas, no nosso caso, as cargas so apenas leds. Supondo que voc j tenha o ScadaBR instalado, devemos criar um Data Sources para servir de fonte de dados para o ScadaBR. Vamos adicionar um Data Sources do tipo Modbus Serial.

Clicando no cone do Data Sources e depois selecionando tipo Modbus Serial, podemos testar a comunicao com o Proteus. Devemos nos assegurar que o Modbus Serial esteja utilizando a porta serial e velocidade correta. Se a simulao no Proteus estiver rodando, ao clicarmos em Pesquisar por ns(desabilite o Data Sources antes de eecutar a pesquisa), ser localizado o escravo 1 que o atmega328P rodando no Proteus. Clicando em Ler dados se selecionarmos a Faixa de registros apropriada Registrador holding, bem como o nmero de registradores que estamos utilizando no nosso caso 14 registradores: 04 para as pinos digitais , 6 para as entradas analgicas e 4 para as cargas, ns teremos acesse direto ao valores atuais dos registradores conforme vemos na figura abaixo:

www.mundoarduino.com

Mas isso no tudo, ns devemos criar Data um Data Points para cada registrador .No exemplo abaixo, criamos um Data Point para l a entrada analgica do Atmega328P.

www.mundoarduino.com

Quando clicarmos em adicionar ponto, estaremos preparando um Data Point para o ScadaBR para l a entrada ADC0 (pino 23) do Atmega328P. Se desejarmos l outra entrada analgica devemos da mudar o campo Offset(baseado em 0), para 1 e assim sucessivamente at o valor 5, quando ento estaremos lendo todas as entradas analgicas do Atmega328P.Veja na figura abaixo, a configurao do data Point para l a entrada analgica. Para as entradas analgicas podemos inserir um fator multiplicativo e assim lermos as tenses presentes nos pinos variando de 0V a 5V e no de 0 a1023.

Clicando em Watch List Detalhes do Data Point Editar data Point poderemos atribuir uma mscara e um sufixo para a grandeza que estamos medindo.Veja a figura abaixo:

www.mundoarduino.com

Vamos discutir mais sobre o cdigo que roda no micro em outra oportunidade, mas uma boa olhada no trecho abaixo, d a compreenso necessria para estabelecer o Offset necessrio para configurar os Data Points tanto para as entradas digitais , analgicas, bem como as rotinas necessrias para escrever nos pinos do Atmega328P e atuar cargas.O programa completo pode ser baixado na Internet pesquise no google modbus slave arduino e encontrar facilmente o arquivo .pde que implementa o protocolo modbus. O trecho de cdigo abaixo contm a parte realmente importante com as modificaes necessrias para trabalha com o Atmega328P.
enum { MB_SLAVE = 1, }; /* slave registers example */ enum { MB_REG0, MB_REG1, MB_REG2, MB_REG3, MB_REG4, MB_REG5, /* modbus slave id */

www.mundoarduino.com

MB_REG6, MB_REG7, MB_REG8, MB_REG9, MB_REG10, MB_REG11, MB_REG12, MB_REG13, 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(19200, 'n', 0); boolean chave0=13; boolean chave1=12; boolean chave2=11; boolean chave3=10; //boolean rele0=9; //boolean rele1=8; //boolean rele2=7; // boolean rele3=6;

pinMode(13,INPUT); pinMode(12,INPUT); pinMode(11,INPUT); pinMode(10,INPUT); pinMode(9,OUTPUT);

www.mundoarduino.com

pinMode(8,OUTPUT); pinMode(7,OUTPUT); pinMode(6,OUTPUT);

void loop() { /* This is all for the Modbus slave */ update_mb_slave(MB_SLAVE, regs, MB_REGS); regs[MB_REG0]=analogRead(0); regs[MB_REG1]=analogRead(1); regs[MB_REG2]=analogRead(2); regs[MB_REG3]=analogRead(3); regs[MB_REG4]=analogRead(4); regs[MB_REG5]=analogRead(5); regs[MB_REG6]=digitalRead(13); regs[MB_REG7]=digitalRead(12); regs[MB_REG8]=digitalRead(11); regs[MB_REG9]=digitalRead(10); switch ( regs[MB_REG10]) { case 1: digitalWrite(9,HIGH); break; case 0: digitalWrite(9,LOW); break; default: digitalWrite(9,LOW); }

switch ( regs[MB_REG11]) { case 1:

www.mundoarduino.com

digitalWrite(8,HIGH); break; case 0: digitalWrite(8,LOW); break; default: digitalWrite(8,LOW); }

switch ( regs[MB_REG12]) { case 1: digitalWrite(7,HIGH); break; case 0: digitalWrite(7,LOW); break; default: digitalWrite(7,LOW); }

switch ( regs[MB_REG13]) { case 1: digitalWrite(6,HIGH); break; case 0: digitalWrite(6,LOW); break; default: digitalWrite(6,LOW); }

www.mundoarduino.com

Veja o exemplo de configurao de um Data Point para l uma chave com o Atmega328P.

E abaixo a configurao de um Data Point para escrever no Atmega328P um valor binrio e assim poder comandar cargas.

www.mundoarduino.com

O problema ento se resume em ter o cuidado de atribuir o nmero do escravo, Offset, tipo de dados adequados corretos aos Data Points e para fazer tudo isso, basta observar bem o trecho do cdigo postado nesse tutorial. Obviamente voc tambm livre para baixar da internet a biblioteca Modbus para Arduino e alter-la para atender suas necessidades.

www.mundoarduino.com

Por fim, clicando em Watch list voc poder acrescentar todos os Data Points para visualizar aos valores neles armazenados bem como alterar o nvel lgico dos pinos configurados como sada e acionar as cargas a eles ligadas. Veja a figura abaixo:

www.mundoarduino.com

www.mundoarduino.com

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy