Introdução ao protocolo Modbus e método de cálculo do código de verificação CRC do Modbus RTU

O protocolo Modbus é um protocolo de comunicação desenvolvido pela empresa americana Modicon (atualmente Schneider Electric) em 1979. O seu objetivo é utilizar um par entrançado para conseguir a comunicação entre vários dispositivos. O Modbus tornou-se rapidamente o padrão de facto na indústria de automação, e a Modicon lançou-o ao público sem cobrar quaisquer taxas de patente. Através do protocolo Modbus, a comunicação entre dispositivos de controlo (tais como PLC, conversores de frequência e DCS) de diferentes fabricantes pode ser facilmente conseguida.

DTU/Edge Gateway/Plataforma IoT/Módulo Gateway/Protocolo Modbus

Método de comunicação do protocolo Modbus

O protocolo Modbus adopta um método de comunicação de pergunta e resposta, que tem as vantagens da simplicidade, hardware barato, grande versatilidade, fácil utilização e fácil desenvolvimento e implementação. O Modbus RTU tornou-se quase o protocolo de comunicação preferido para os autómatos domésticos e os conversores de frequência.

O protocolo Modbus não requer um módulo de comunicação especializado. A pilha e os mecanismos de protocolo necessários para a comunicação são implementados em software e pertencem ao nível 7 do modelo de referência ISO-OSI. Outra vantagem é que pode comunicar através de qualquer meio de transmissão, incluindo pares entrançados, comunicações sem fios, fibra ótica, Ethernet, modems telefónicos, telemóveis e micro-ondas. Isto facilita o estabelecimento de uma ligação Modbus numa instalação nova ou existente.

Modbus ASCII, Modbus RTU e Modbus TCP

Existem três versões do Modbus atualmente em uso: Modbus ASCII, Modbus RTU e Modbus TCP. O protocolo Modbus ASCII necessita de converter um byte de dados em dois bytes de código ASCII antes de os enviar. Os dados do protocolo Modbus RTU são codificados em binário, e cada byte de dados requer apenas um byte de comunicação.

A comunicação Modbus RTU adopta o modo mestre-escravo e pode transmitir até 255 bytes de dados. Um dispositivo mestre comunica com um ou mais dispositivos escravos. Os dispositivos principais típicos são o PLC, o PC, o DCS (sistema de controlo distribuído) ou a RTU (unidade terminal remota). Os dispositivos escravos Modbus RTU são geralmente dispositivos de campo.

Quando um dispositivo mestre Modbus RTU pretende obter dados de um dispositivo escravo, o dispositivo mestre envia uma mensagem que contém o endereço da estação do dispositivo escravo, os dados necessários e um código de verificação CRC utilizado para detetar erros. Todos os outros dispositivos na rede podem receber esta mensagem, mas apenas o dispositivo secundário cujo endereço é especificado responderá. Os dispositivos escravos numa rede Modbus não podem iniciar a comunicação, apenas podem responder quando o dispositivo mestre fala com eles.

Modbus

O Modbus TCP pode ser entendido como Modbus na Ethernet. O Modbus TCP utiliza simplesmente a norma TCP/IP para simplesmente empacotar e comprimir os pacotes de informação Modbus. Isto permite que os dispositivos Modbus TCP se liguem e comuniquem através de redes Ethernet e de fibra ótica. Em comparação com a interface RS-485, o Modbus TCP também permite a utilização de mais endereços, pode adotar uma arquitetura multi-mestre e a taxa de transmissão pode atingir o nível GB/s. O número de estações secundárias na rede Modbus TCP é apenas limitado pelas capacidades da camada física da rede. Normalmente, o número de estações secundárias é de cerca de 1024.

O Modbus RTU utiliza um código de verificação de redundância cíclica (CRC) de 16 bits. Através de um procedimento complexo de ORing e shifting dos dados, o CRC é gerado pelo dispositivo mestre e verificado pelo dispositivo recetor. Se os valores CRC calculados por ambas as partes não coincidirem, o dispositivo escravo solicitará a retransmissão da informação. O protocolo Modbus RTU divide-se em protocolo mestre Modbus RTU e protocolo escravo Modbus RTU. Comunicação Modbus é controlada por códigos de função e a estação principal acede diretamente à área de dados da estação secundária.

Método de cálculo do código de verificação CRC Modbus RTU

Apenas 8 bits de dados, o bit de início e o bit de paragem são utilizados no cálculo do CRC. Se houver um bit de paridade, incluindo o bit de paridade, estes não são envolvidos no cálculo CRC.

O método de cálculo do CRC é o seguinte:

  1. Carregue um registo de 16 bits com um valor de 0XFFFF. Este registo é o registo CRC.
  2. XOR os primeiros dados binários de 8 bits (ou seja, o primeiro byte do quadro de informações de comunicação) com o registo CRC de 16 bits, e o resultado do XOR é ainda armazenado no registo CRC.
  3. Deslocar o conteúdo do registo CRC um bit para a direita, preencher o bit mais alto com 0 e detetar se o bit deslocado é 0 ou 1.
  4. Se o bit deslocado for zero, repita o terceiro passo (deslocar novamente um bit para a direita); se o bit deslocado for 1, o registo CRC é XORED com 0XA001.
  5. Repita os passos 3 e 4 até que o deslocamento à direita seja efectuado 8 vezes, de modo a que todos os dados de 8 bits sejam processados.
  6. Repetir os passos 2 e 5 para processar o byte seguinte do quadro de informações de comunicação.
  7. Depois de todos os bytes do quadro de informações de comunicação serem calculados de acordo com os passos acima, os bytes alto e baixo do registo CRC de 16 bits obtido são trocados.
  8. O conteúdo final do registo CRC é: Código de verificação CRC.

Artigos recentes

Contactar-nos