Modbbus
Trabalho Universitário: Modbbus. Pesquise 862.000+ trabalhos acadêmicosPor: gemin • 28/3/2015 • 833 Palavras (4 Páginas) • 260 Visualizações
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 comunicação com o ScadaBR vai fazer uso do
protocolo Modbus, vamos precisar também 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
recém-criadas.
Agora precisamos criar um pequeno circuito no Proteus com os componentes
exibidos abaixo. Devemos ter chaves e potenciômetros para simular sensores e ligá-los
aos pinos digitais e às entradas analógicas bem como ligar leds para simular as cargas
que desajamos acionar. O nosso circuito será capaz de lê o estado lógico de 4 chaves, lê
www.mundoarduino.com
a tensão presente em 6 entradas analógicas e acionar 4 cargas. Também não devemos
esquecer de adicionar o componente COMPIM responsável pela comunicação serial com
o ScadaBR. Façamos as ligações conforme a figura abaixo:
Clicando no Atmega328P podemos configurar o micro para executar o arquivo hex
responsável pela implementação 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á responsável pela exibição dos estados das chaves, leitura das
portas analógicas e pela atuação das cargas, no nosso caso, as cargas são 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 comunicação com o Proteus. Devemos nos assegurar que o Modbus
Serial esteja utilizando a porta serial e velocidade correta. Se a simulação no Proteus
estiver rodando, ao clicarmos em Pesquisar por nós(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 número de registradores que estamos utilizando no
nosso caso 14 registradores: 04 para as pinos digitais , 6 para as entradas analógicas e 4
para as cargas, nós teremos acesse direto ao valores atuais dos registradores conforme
vemos na figura abaixo:
www.mundoarduino.com
Mas isso não é tudo, nós devemos criar Data um Data Points para cada registrador
.No exemplo abaixo, criamos um Data Point para lê a entrada analógica 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 analógica devemos da mudar o campo Offset(baseado em 0), para 1 e assim
sucessivamente até o valor 5, quando então estaremos lendo todas as entradas
analógicas do Atmega328P.Veja na figura abaixo, a configuração do data Point para lê a
entrada analógica. Para as entradas analógicas podemos inserir um fator multiplicativo e
assim lermos as tensões presentes nos pinos variando de 0V a 5V e não de 0 a1023.
Clicando em Watch List – Detalhes do Data Point – Editar data Point poderemos
atribuir uma máscara e um sufixo para a grandeza que estamos medindo.Veja a figura
abaixo:
www.mundoarduino.com
Vamos discutir mais sobre o código que roda no micro em outra oportunidade, mas
uma boa olhada no trecho abaixo, dá a compreensão necessária para estabelecer o
Offset necessário para configurar os Data Points tanto para as entradas digitais ,
analógicas, bem como as rotinas necessárias 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 código abaixo contêm a parte realmente importante com
as modificações necessárias para trabalha com o Atmega328P.
enum {
MB_SLAVE = 1, /* modbus slave id */
};
/* slave registers example */
enum {
MB_REG0,
MB_REG1,
...