Tudo sobre o protocolo MODBUS

protocolo-modbus

O protocolo Modbus

Fala galera, tudo certo com vocês?

Hoje vamos falar sobre o protocolo Modbus e todas as suas variações. Com toda a certeza, você já se deparou com esse protocolo alguma vez na vida. A sua aplicação é bem ampla e normalmente oferece uma integração bem transparente e tranquila.

A ideia é falar sobre as características do protocolo e o seu funcionamento, além de informações adicionais. Como, por exemplo, o que precisa para se comunicar com um instrumento com protocolo modbus.

Vamos nessa?

Tabela de conteúdo:

O que é o protocolo Modbus?

O protocolo Modbus pode ser definido como uma forma de estabelecer uma comunicação mestre-escravo entre dispositivos inteligentes.

Seu desenvolvimento foi feito pela Modicom em 1979 e desde então, foi amplamente aplicado. A sua aplicação vai além das industriais, sendo utilizado em algumas soluções prediais, além de internet das coisas.

É importante ressaltar que o protocolo Modbus é independente. Com isso, é possível ter numa rede,  dispositivos de diferentes fornecedores comunicando-se entre si.

Neste artigo, veremos diversas variações do protocolo encontradas no mercado como, Modbus TCP/IP, Modbus RTU e ASCII. Focaremos no funcionamento e na diferença entre cada uma das possibilidades.

Onde utilizar o protocolo Modbus?

Vamos imaginar um cenário para lhe ajudar a entender melhor! 😉

Você precisa fazer a comunicação entre um dispositivo de campo, carinhosamente conhecido como escravo. Este dispositivo será responsável por enviar informações para um controlador, ou mestre, responsável pela análise e ação de comando.

Neste cenário, o protocolo Modbus seria uma das opções possíveis para conectar o mestre com escravo e os dois se entenderem. Seria essa a melhora opção? Pode ser que sim, ou pode ser que não.

Para afirmarmos isso, precisamos de um cenário muito bem construído e dessa forma, analisar a viabilidade de cada protocolo de comunicação.

O protocolo Modbus tem uma atuação muito maior do que apenas a de um protocolo industrial. Por conta da sua configuração simplicada e o seu uso simples, a sua viabilidade torna o Modbus uma solução flexível e viável para diferentes cenários.

Quando temos uma comunicação, ponto-a-ponto. Podemos utilizar o Modbus RS232. Agora, caso tenha diversos escravos na rede de comunicação, o Modbus RS 485 ou Modbus TCP/IP são mais adequados.

Como funciona o protocolo Modbus?

Primeiramente, vamos falar do protocolo Modbus no geral e depois entrar em suas variações, explicação seu funcionamento e as diferenças entre eles. Sua utilização é feita para comunicar devices com controladores para coleta de dados e comandos, certo?

Um exemplo muito bom seria a aplicação em medidores fiscais. Um dos protocolos aceitos em aplicações fiscais é o protocolo modbus e eu tive a oportunidade de fazer start-up de alguns medidores ultrassônicos de vazão em flares.

Estes medidores, em sua grande parte utilizam o protocolo modbus para enviar os dados de processo.

Você também pode usar o Modbus com um computador para configurar ou coletar dados de um dispositivo de campo. Você pode ter comunicação serial com o Modbus RTU e ASCII ou usando um cabo Ethernet para utilizar o Modbus TCP/IP.

Ok, agora é hora de entrar nos detalhes do protocolo.

Modbus RS232

O protocolo Modbus usando RS-232, tem uma distância máxima entre o mestre e o escravo de 15 metros. Além disso, essa aplicação permite apenas um mestre e um escravo, conhecido como uma conexão ponto-a-ponto.

Modbus RS422 e  Modbus RS485

Agora, os protocolos Modbus RS422 ou Modbus RS485, oferecem maior flexibilidade. Neste cenário, você tem um único mestre na rede, mas é possível ter diversos escravos.

A rede tem uma estrutura de cabos como Tx + / Tx- para realizar a transmição do sinal e o Rx + / Rx – mais um terra para receber a informação transmitida anteriormente.

Será muito mais comum você encontrar o protocolo Modbus RS485 do que o protocolo Modbus RS422, já que o RS485 permite até 32 escravos na rede sem utilizar repetidor. No entanto, você pode aplicar até 247 escravos caso coloque repetidores na rede, mantendo o comprimento máximo de 1200 metros.

Configuração do Modbus RS485

Quando é feita a adição de um novo dispositivo a uma rede, é necessário ter todos os dispositivos da rede na mesma taxa de transmissão ou bit, pois, o protocolo Modbus é  um protocolo assíncrono.

Normalmente, você pode obter uma velocidade de transmissão (Baud rate or bit rate) entre 9600 e 19200, mas pode configurar para ter velocidades mais rápidas de 300 ate 100.000.

Como é feita a troca de mensagem no protocolo Modbus?

Primeiramente, o protocolo faz o envio de uma condição inicial do mestre para os escravos. Esta mensagem enviada possui 28 bits ou 3,5 caracteres. Então, o mestre envia o endereço que os escravos recebem como um código funcional de 8 bits.

Protocolo modbus_Modbus.org
Imagem em cortesia da organização Morbus.org

Esta lista mostra os códigos funcionais mais comuns:

Essas informações serão encontradas em inglês, por isso vou manter as informações em inglês também para que você possa se familiarizar com o que vê ou verá no dia a dia, ok?

  • 1 – Read coil status
  • 2 – Read input status
  • 3 – Read holding registers
  • 4 – Read input registers
  • 5 – Write single-coil status
  • 6 – Write single register
  • 15- Write multiple-coil status
  • 16 – Write multiple registers

Após o envio dos  códigos de função, o mestre enviará os dados para os escravos. Essa mensagem também é em código de 8 bits. É importante ressaltar que, a quantidade enviada dependerá do tipo de escravo, mas você pode obter os detalhes no manual.

Em seguida, o mestre envia uma verificação de erro em 16 bits e, finalmente, uma condição de parada em 28 bits. Por outro lado, nós temos os escravos respondendo às perguntas do mestre com ecos, ou se mantendo em silêncio quando nada é requerido.

Modbus e os tipos de dados e endereçamento

É hora de falar um pouco sobre os de códigos de função e como eles se aplicam ao protocolo Modbus.

Protocolo Modbus

Com uma Coils, você pode ler e escrever uma mensagem de 1 bit em um endereço de 00001 a 09999. Utilizando discrete input você tem a função apenas de leitura, e essa mensagem também tem o tamanho de 1 bit e o seu endereço vai de 10001 a 19999.

Agora, com um Input register, você também terá o acesso apenas de leitura, mas sua mensagem será de 16 bits e o endereço vai de 30001 a 39999. Utilizando o Holding register, você possui o acesso de leitura e escrita com uma mensagem de 16 bits e um endereço indo de 40001 ate 49999.

Talvez vocês estejam se perguntando: “Como faço para ter uma mesagem de 32 bits?”

Boa pergunta!

Para ter um mesangem de 32 bits, você precisa de dois endereços de 16 bits para enviar junto. O mestre ou o escravo lerá as duas mensagens de 16 bits como uma unidade de 32 bits.

Como funciona o Modbus RTU (Remote Terminal Unit)?

Caso o master da rede seja configurado com RTU, cada unidade conterá dois caracteres hexadecimais de 4 bits. A opção RTU oferece melhor rendimento de dados do que o ASCII devido à sua excelente densidade de caracteres.

Como funciona Modbus TCP/IP?

Em 1999, o Modbus TCP / IP surgiu para lidar com a nova realidade dos protocolos Ethernet em aplicações industriais. O TCP / IP usa a internet para transportar os dados dos dispositivos, e as instruções do protocolo Modbus vêm através do TCP/IP.

Este protocolo foi desenvolvido para a internet e oferece interoperabilidade entre os fornecedores. Como sabemos, cada vez mais os protocolos Ethernet estão crescendo no meio industrial e o Modbus TCP/IP ainda é um excelente solução.

Por exemplo, diversas aplicações de WirelessHART, como a comunicação da gateway da rede com o sistema de controle utilizando Modbus TCP/IP.  Recentemente, outras adições foram feitas, como a opção do EtherNet/IP.

Como funciona o Modbus ASCII (American Standard Code for information Interchange)?

Você pode configurar os mestres para se comunicar com ASCII ou RTU. Em ASCII, cada unidade de 8 bits transmite como dois caracteres ASCII. O ASCII pode ter até um segundo entre os caracteres sem criar um erro na comunicação.

O que é CRC no protocolo Modbus?

Quando falamos das mensagens (frame) trocadas na rede Modbus RTU, todas essas incluirão o CRC (Cyclic Redundancy Check) ou em português, uma verificação de redundância cíclica. O CRC são 2 bytes no final da mensagem do Modbus RTU.

O mestre e o escravos utilizam estes dois bytes para fazer a verificação da integridade todas as mensagens que são recebidas por ambos. Mas como isso é calculado? Bom, o CRC é calculado levando em conta o restante da mensagem.

O que acontece é que quando um dispositivo recebe uma nova mensagem, ele calculará o seu próprio CRC e então comparará com o valor do CRC da mensagem recebida.

O que é são códigos de função na rede Modbus?

Quando uma mensagem é enviada entre um mestre e o escravo, o código de função (function code) é o responsável em dizer para o escravo que tipo de ação ele deve fazer.

Se você estiver utilizando o Modbus ASCII, o function code será 2 caracteres na messagem enviada já em se estiver utilizando o Modbus RTU, o function code é representado por 8 bits.

O que é o mapa Modbus?

Um mapa Modbus define simplesmente os dados que você encontrará num escravo — que tipo (vazão,pressão, etc.), qual local (tabela e endereço) e qual formato (byte, ordem das palavras e assim por diante).

Você pode encontrar dispositivos no mercado com mapas predefinidos, mas para a maioria deles, é possível criar os seus próprios dispositivos para se comunicar com o mestre.

Quais as diferenças entre o protocolo Modbus RTU e Modbus TCP/IP?

Levantei algumas características de cada um dos protocolos e listarei abaixo:

O protocolo Modbs RTU:

  • Utiliza a comunicação serial
  • O disposivitos da rede podem ser daisy-chain na rede
  • Pode utilizar repetidor na rede
  • Comprimento máximo 1200 metros
  • 32 escravos na rede sem utilizar repetidor e 247 com repetidor.

O protocolo Modbus TCP/IP

  • Rede Ethernet
  • Pode utilizar estrutura Ethernet existente
  • Mais rápido e fácil de fazer diagnósticos
  • Redução de custo com estrutura

Conversor da rede Modbus para outras redes

Uma solução bem comum e simples de aplicar são os conversores. No entanto, isso não quer dizer que conversores são a melhor maravilha do mundo. Conversores podem ser  complicados de configurar e um ponto a mais de problema na rede.

No caso do Modbus, você encontrará diversos conversores para outras redes.

A grande maioria funciona de forma bem tranquila e transparente. Você pode encontrar conversores de Modbus TCP/IP para EtherNet/IP ou, por exemplo para Profibus.

Ferramentas essenciais para utilizar numa rede Modbus

Como fazemos para testar a comunicação Modbus de um determinado equipamento, antes de coloca-lo na rede? Bom, essa é uma solução bem simples e comum de ser utilizada por técnicos e engenheiros de fabricantes.

Uma delas é o ModScan32, onde você pode ler as informações dos seus equipamentos para ter a certeza que tudo foi configurado de forma adequada, antes de implementar ele na rede.

Caso queira simular um escravo ou mais de um, outra solução bem antiga, mas ainda funcional, é o ModSim32. Você pode testar um ponto na rede para ter certeza que o cabo está ok, e o mestre está recebendo as informações.

Além desses softwares, você pode precisar de uma interface serial para Modbus RTU or ASCII, para isso interfaces como… diversas que tem no mercado irão ajudar no dia a dia.

Conclusão

Modbus está presente em diversas aplicações, mas precisamos ter conhecimento dos diferentes tipos e ferramentas essenciais para testar a rede e os seus equipamentos que se comunicam com o Modbus.

Você tem alguma pergunta? Deixe o seu comentário e vamos ajuda-lo! 😉

Forte abraço!

Veja alguns livros relacionado a este assunto:

Creative Commons License

Fabrício Andrade
Últimos posts por Fabrício Andrade (exibir todos)
8 Comentários

Fabrício Andrade

Tenho 12 anos de experiência no mundo da Automação industrial, comecei minha carreira na JAT Instrumentação, depois trabalhei na Emerson Automation Solutions e Endress+Hauser. Tive a chance de implementar projetos, ministrar treinamentos e resolver problemas em diversas empresas no Brasil e Latina América. Trabalhei por 3 anos na Alemanha em um e-commerce de automação industrial e hoje sou gerente de marketing digital global na Endress+Hauser Suiça focado em IIoT. Além disso, sou cartunista e baterista nas minhas horas de folga.

8 Comentários

  1. Carlos Henrique
    fevereiro 6, 2019 em 8:52 am

    Utilizo a comunicação Modbus e funciona super bem, essas ferramentas de teste ajudam bastante no dia a dia.

  2. Maria Fernanda
    setembro 13, 2019 em 5:53 pm

    Oi Fabrício. Eu preciso converter de Modbus TCP/IP para MQTT, você tem alguma sugestão além de conversores físicos? Sabe dizer se existe alguma solução possível em Python?

    • Anônimo
      setembro 17, 2019 em 9:13 pm

      Oi Maria, sei que a NOVUS tem conversores e um deles é para MQTT. Agora, sobre python, vou ficar te devendo ainda não vi uma solução utilizando.

  3. Erick
    outubro 4, 2019 em 7:14 pm

    Devo dizer que esse sem dúvidas é o melhor artigo que encontrei nas minhas buscas na internet sobre o protocolo Modbus, informações absolutamente claras e muito relevantes.
    Sanei todas as minhas dúvidas aqui, obrigado.

  4. Camila
    dezembro 18, 2019 em 3:50 pm

    Parabéns pelo conteúdo!! Sanou as minhas duvidas, muito obrigada.

  5. Andre Paz
    março 26, 2020 em 1:25 pm

    Você conhece alguma solução utilizando a linguagem c# para comunicação Modbus?
    Estou com dificuldade de fazer os meus slaves entenderem o que estou enviando via aplicativo terminal que montei no .Net

    • Anônimo
      março 26, 2020 em 5:42 pm

      Então normalmente isso é back end, o que encontrará no mercado já tem interface gráfica. Como trabalho com equipe de desenvolvimento, eles desenvolvem isso mas acho que não tem no mercado aberto pra galera.

  6. Renato
    novembro 11, 2022 em 9:33 pm

    Olá, tenho um inversor solar que suporta modbus rs 485, e sei que se ligar com um smart meter com rs485 rtu, consegue comunicar o consumo bidirecional, para o interface web do inversor, me mostrar os dados.
    Agora tenho uma bomba de calor daikin que tb suporta modbus e smart grid. Alguem sabe como conseguirei interagir os sistemas? A ideia é que o smart meter comunique excesso de corrente nao utilizada, e a bomba de calor mudar os set point e começar a utilizar a energia excedente para aquecer/arrefecer o deposito de inercia e aqs.
    Estou na duvida de como meter td a funcionar

Resposta para seu comentário

Seu email não será publicado. Os campos obrigatórios estão marcados!*