Escolar Documentos
Profissional Documentos
Cultura Documentos
(https://www.cooking-hacks.com/)
Você está aqui: Casa (https://www.cooking-hacks.com/) Tutorial Modbus para Arduino, Raspberry Pi e Intel Galileo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 1/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Like 13
ttp://www.cooking-hacks.com/rs-485-modbus-module-shield-board-for-arduino-raspberry-pi-intel-galileo)
O Modbus permite a comunicação entre muitos dispositivos conectados à mesma rede, por exemplo, um
sistema que mede a temperatura e a umidade e comunica os resultados a um computador. Muitos dos
tipos de dados são chamados de seu uso em relés de direção: uma saída física de um único bit é
chamada de bobina, e uma entrada física de um único bit é chamada de entrada discreta ou contato.
(/media/cooking/images/documentation/Modbus/RS232_board_1_big.jpg)
(/media/cooking/images/documentation/Modbus/RS_485_board_1_big.jpg)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 3/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Modbus
Kits
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 4/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Índice de artigos
1. Características
2. As tábuas
3. A biblioteca
4. Dispositivos de conexão
5. Compatibilidade de dispositivos
6. Obter os escudos
Modbus para Arduino / RaspberryPi / Galileo usa o modo de transmissão RTU. Este modo é usado em
comunicação serial e faz uso de uma representação compacta e binária dos dados para a comunicação
do protocolo. O formato RTU segue os comandos / dados com uma soma de verificação de verificação
de redundância cíclica como mecanismo de verificação de erros para garantir a confiabilidade dos
dados. Modbus RTU é a implementação mais comum disponível para o Modbus. Uma mensagem
Modbus RTU deve ser transmitida continuamente sem hesitações inter-personagens. As mensagens
Modbus são enquadradas por períodos inativos.
O modo de transmissão Modbus RTU geralmente inclui um bit de paridade para detectar erros de
transmissão. Você pode escolher transmitir dados com ou sem verificação de paridade, mas certifique-
se sempre de que todos os equipamentos conectados ao Modbus tenham o mesmo modo de
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 5/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/Serial_Frame_1_big.jpg)
Endereço: os endereços de dispositivos escravos válidos estão no intervalo de 0 ... 247
(decimal). Os dispositivos escravos individuais recebem endereços no intervalo de 1 ... 247. O valor
0 é reservado para mensagens de transmissão (sem resposta). Quando o escravo envia sua
resposta, ele coloca seu próprio endereço neste campo de endereço do quadro de resposta para
permitir ao mestre saber qual o escravo está respondendo.
Função de código: os códigos válidos estão no intervalo de 1 ... 255 (decimal). O campo de
código de função informa ao escravo que tipo de ação executar. Para uma resposta normal, o
escravo simplesmente faz eco do código da função original. Para uma resposta de exceção, o
escravo retorna um código que é equivalente ao código de função original com o seu bit mais
significativo configurado para uma lógica 1. Todos os dispositivos Modbus reconhecem o mesmo
conjunto de códigos de função.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 6/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Dados: o campo de dados contém informações adicionais que o escravo deve usar para executar
a ação definida pelo código da função. Isso pode incluir itens como endereços de registro,
quantidade de itens a serem manipulados, etc. Se nenhum erro ocorrer, o campo de dados contém
os dados solicitados. Se ocorrer um erro, o campo contém um código de exceção que o aplicativo
mestre pode usar para determinar a próxima ação a ser tomada.
CRC: A soma de verificação é calculada pelo mestre e enviada ao escravo. A soma de
verificação é recalculada pelo escravo e comparada ao valor enviado pelo mestre. Se uma diferença
for detectada, o escravo não irá construir uma resposta ao mestre.
O protocolo Modbus pode ser implementado através de camadas físicas RS-485 e RS-232. Cooking-
Hacks fornece o hardware e o software necessários para trabalhar com ambos os protocolos. O nome e
o uso das funções são os mesmos para RS-232 e RS-485, e as únicas mudanças são a biblioteca a
incluir e a instanciação do objeto. As diferenças entre os dois padrões são explicadas nos tutoriais
correspondentes.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 7/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/RS232_board_big.jpg)
(/media/cooking/images/documentation/Modbus/RS_485_board_big.jpg)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 8/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
O módulo RS-485 deve ser usado em combinação com o Multiprotocol Radio Shield. O Multiprotocol
Radio Shield tem dois soquetes. O módulo RS-485 deve estar conectado como mostrado nas próximas
figuras.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 9/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/RS232_multiprotocol_arduino_big.jpg)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 10/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/rs485_multiprotocol_radio_shield_arduino_big.jpg)
Obter Arduino (http://www.cooking-hacks.com/index.php/arduino-uno.html)
Obter o módulo RS-485 (http://www.cooking-hacks.com/rs-485-modbus-module-shield-board-for-arduino-
raspberry-pi-intel-galileo)
Obter o (http://www.cooking-hacks.com/rs-232-serial-modbus-module-shield-board-for-arduino-raspberry-
pi-intel-galileo) módulo (http://www.cooking-hacks.com/rs-485-modbus-module-shield-board-for-arduino-
raspberry-pi-intel-galileo)RS-232 (http://www.cooking-hacks.com/rs-232-serial-modbus-module-shield-
board-for-arduino-raspberry-pi-intel-galileo)
Obter o Multiprotocol Radio Escudo (http://www.cooking-hacks.com/multiprotocol-radio-shield-board-for-
arduino-rpi-intel-galileo)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 11/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/RS232_connectionbridge_raspberry_big.jpg)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 12/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/RS485_connectionbridge_raspberry_big.jpg)
Obter Raspberry Pi (http://www.cooking-hacks.com/index.php/shop/raspberry-pi.html)
Obter a ponte de conexão Raspberry Pi para Arduino (http://www.cooking-
hacks.com/index.php/raspberry-pi-to-arduino-shield-connection-bridge.html)
Get the RS-485 (http://www.cooking-hacks.com/rs-485-modbus-module-shield-board-for-arduino-
raspberry-pi-intel-galileo)
Get the RS-232 module (http://www.cooking-hacks.com/rs-232-serial-modbus-module-shield-board-for-
arduino-raspberry-pi-intel-galileo)
Avisos ::
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 13/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
O protocolo Modbus conta com uma biblioteca C ++ que permite gerenciar as funções Modbus de forma
simples. Esta biblioteca oferece um sistema de código aberto simples de usar.
Para garantir que o mesmo código seja compatível em ambas as plataformas (Arduino e Raspberry Pi),
usamos as bibliotecas ArduPi que permitem que os desenvolvedores usem o mesmo código.
Informações detalhadas podem ser encontradas aqui:
O protocolo Modbus inclui funções de biblioteca de alto nível para uma fácil administração. Antes de
começar a usar estas funções, você deve baixar os arquivos no próximo link. Este zip inclui todos os
arquivos necessários em várias pastas. Essas pastas incluem o arquivo necessário para usar o protocolo
Modbus no modo mestre e escravo.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 14/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
As bibliotecas são frequentemente distribuídas como um arquivo ou pasta ZIP. O nome da pasta é o
nome da biblioteca. Dentro da pasta serão os arquivos .cpp, arquivos .h e, muitas vezes, um arquivo
keywords.txt, pasta de exemplos e outros arquivos necessários para a biblioteca.
Para instalar a biblioteca, primeiro abandone o aplicativo Arduino. Descompacte o arquivo ZIP que
contém a biblioteca. Para instalar bibliotecas, descompacte o arquivo zip. Arraste as pastas para esta
pasta (sua pasta de bibliotecas). No Windows, provavelmente será chamado de "Meus documentos \
Arduino \ bibliotecas". Para usuários de Mac, provavelmente será chamado de "Documentos / Arduino /
bibliotecas". No Linux, será a pasta "bibliotecas" no seu bloco de desenho.
A biblioteca não funcionará se você colocar os arquivos .cpp e .h diretamente na pasta bibliotecas ou se
estiverem aninhados em uma pasta extra. Reinicie o aplicativo Arduino. Verifique se a nova biblioteca
aparece no item de menu Sketch-> Import Library do software.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 15/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Criar um programa que usa a biblioteca é tão simples como colocar seu código neste modelo onde diz
"seu código Arduino aqui"
Selecionar tudo
A compilação do programa (usando a biblioteca Modbus) pode ser feita de duas maneiras:
g ++ -c arduPi.cpp -o arduPi.o
g ++ -c RS485.cpp -o RS485.o
g ++ -c Modbusmaster485.cpp Modbusmaster485.o
g ++ -lpthread -lrt user-Modbus-app.cpp arduPi.o RS485.o Modbusmaster485.o -o usuá
Selecionar tudo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 16/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Selecionar tudo
sudo ./user-Modbus-app
Selecionar tudo
O módulo Modbus inclui funções de biblioteca de alto nível para uma fácil administração. Antes de
começar a usar estas funções, você deve baixar os arquivos no próximo link. Este zip inclui todos os
arquivos necessários em várias pastas. Essas pastas incluem o arquivo necessário para usar o protocolo
Modbus.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 17/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
As bibliotecas são frequentemente distribuídas como um arquivo ou pasta ZIP. O nome da pasta é o
nome da biblioteca. Dentro da pasta serão os arquivos .cpp, arquivos .h e, muitas vezes, um arquivo
keywords.txt, pasta de exemplos e outros arquivos necessários para a biblioteca.
Para instalar a biblioteca, primeiro abandone o aplicativo Arduino. Descompacte o arquivo ZIP que
contém a biblioteca. Para instalar bibliotecas, descompacte o arquivo zip. No Windows, provavelmente
será chamado de "Meus documentos \ Arduino \ bibliotecas". Para usuários de Mac, provavelmente será
chamado de "Documentos / Arduino / bibliotecas". No Linux, será a pasta "bibliotecas" no seu bloco de
desenho.
A biblioteca não funcionará se você colocar os arquivos .cpp e .h diretamente na pasta bibliotecas ou se
estiverem aninhados em uma pasta extra. Reinicie o aplicativo Arduino. Verifique se a nova biblioteca
aparece no item de menu Sketch-> Import Library do software.
Funções de inicialização
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 18/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Selecionar tudo
Selecionar tudo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 19/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Funções Utile
Selecionar tudo
NOTA:
O Modbus permite a comunicação entre muitos dispositivos conectados à mesma rede, por exemplo, um
sistema que mede a temperatura e a umidade e comunica os resultados a um computador. Muitos dos
tipos de dados são chamados de seu uso em relés de direção: uma saída física de um único bit é
chamada de bobina, e uma entrada física de um único bit é chamada de entrada discreta ou contato.
Neste exemplo, vamos mostrar como usar o módulo RS-485 para conectar as plataformas Arduino e
Raspbery Pi aos dispositivos de medição de dispositivos Modbus.
(/media/cooking/images/documentation/Modbus/modbus_device_big.jpg)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 21/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Em primeiro lugar, você deve ter certeza de que seu dispositivo é compatível com Arduino e Framboesa.
No manual do dispositivo serão descritos os parâmetros de comunicação (endereço do dispositivo, taxa
de transmissão ...). Você também deve verificar se o dispositivo usa o formato RTU. Existem muitas
variantes de protocolos Modbus, mas a biblioteca Arduino implementa o formato RTU. Modbus RTU é a
implementação mais comum disponível para o Modbus.
Parâmetro Configuração
Baud 19200
Paridade N
Bits de dados 8
Pare o bit 1
O próximo passo é saber quais comandos Modbus usam o dispositivo. Os comandos suportados devem
estar listados em uma tabela. Na próxima figura, você pode ver um exemplo dos comandos Modbus
extraídos de uma folha de dados. A biblioteca Modbus para Waspmote é compatível com a maioria dos
comandos Modbus.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 22/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
ID do escravo de retorno 17
Conecte os sinais A / B do módulo RS-485 com o sinal correspondente do dispositivo Modbus. O nome
desse sinal pode mudar dependendo do fabricante. Os nomes usuais deste sinal são A / B S + / S-, +/-,
etc.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 23/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/rs485_modbus_connecting_big.jpg)
No nosso exemplo, vamos ler o valor da temperatura do nosso dispositivo. Podemos ver no mapa do
registro, que o valor da temperatura é armazenado no registro 101 e é acessível com a função
readHoldingRegisters e é armazenado em formato de 16 bits (2 bytes). Portanto, a função necessária
Este site usa cookies. Ao clicar no botão "Aceitar" você concorda com o uso ✔ Aceitar
para
dos obter o valor da temperatura é mostrada no próximo exemplo de código.
cookies.
Leia mais (https://www.cooking-
hacks.com/privacy-policy-cookie-
restriction-mode/)
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 24/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Selecionar tudo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 25/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Raspberry Pi
g ++ -c Modbusmaster485.cpp -o Modbusmaster485.o
Selecionar tudo
Selecionar tudo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 26/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/Modbus_RS485_Serial_Out_big.png)
O Multiprotocol Radio Shield pode ser usado para conectar dois protocolos de comunicação ao mesmo
tempo e fazer interconexões entre diferentes sistemas e dispositivos. No próximo exemplo, vamos
interligar um dispositivo Modbus através do módulo RS-485 com protocolo sem fio usando e módulo
XBee.
NOTA:
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 27/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
Em AP = 0 todos os dados enviados através do UART serão enviados pelo módulo XBee.
Os módulos XBee 802.15.4 devem ser conectados usando pinos externos. Esses pinos
devem ter o pino 4 do XBee cortado ou desconectado para evitar interferências entre os
módulos.
Conecte o módulo RS-485 e os módulos XBee nos soquetes correspondentes, conforme mostrado na
próxima imagem.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 28/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/RS485_multiprotocol_xbee_big.jpg)
Se você estiver usando 802.15.4, use pinheiro externo com pin4 desconectado.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 29/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/XBee_pin4_big.jpg)
Você deve receber todos os dados em seu dispositivo de gateway.
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 30/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 31/32
20/12/2017 Modbus Tutorial for Arduino, Raspberry Pi and Intel Galileo
(/media/cooking/images/documentation/Modbus/XBee_Gateway_RS485_big.png)
Arduino
Selecionar tudo
Arduino Boards
Arduino Uno
Tabuleiros de framboesa
Raspberry Pi
Framboesa Pi (Modelo B +)
Raspberry Pi 2
Raspberry Pi 3
https://www.cooking-hacks.com/documentation/tutorials/modbus-module-shield-tutorial-for-arduino-raspberry-pi-intel-galileo/ 32/32