Posts

Modbus é um protocolo de comunicação serial desenvolvido e publicado pela empresa Modicon (hoje uma empresa do grupo Schneider Electric) em 1979 pra uso em seus CLPs (Controladores Lógicos Programáveis). O protocolo Modbus se transformou no protocolo mais difundido para comunicação entres dispositivos de controle e automação industrial. Os motivos principais para o uso do Modbus em ambiente industrial são:

  • Foi desenvolvido especialmente para aplicações industriais;
  • Domínio público e sem cobrança de direitos autorais;
  • Fácil de utilizar e manter;
  • Comunicação de bits e words entre dispositivos de diferentes fabricantes sem restrições.

O Modbus permite a comunicação entre diversos dispositivos conectados a mesma rede, por exemplo, um sistema que mede temperatura e umidade e envia os dados lidos a um computador. O Modbus é frequentemente utilizado para interligar um computador rodando um software supervisório SCADA com as unidades remotas (RTU). No Modbus, muitos dos dados comunicados recebem o nome de dispositivos usuais nas linguagens Ladder de programação de CLPs, por exemplo, uma saída física binária é chamada coil (bobina), e uma entrada física é chamada contact (contato).

A manutenção do protocolo Modbus é feita pela entidade Modbus Organization desde abril de 2004, quando a Schneider Electric transferiu os direitos para essa organização. A Modbus Organization é uma associação de usuários e fabricantes de dispositivos compatíveis com o protocolo Modbus que defendem a continuidade da utilização do protocolo.

A tabela a seguir apresenta as variáveis fornecidas por um dispositivo escravo para um dispositivo mestre.

Variaveis-Modbus-1024x482-1

Principais versões do protocolo Modbus

Modbus RTU

O Modbus RTU é utilizado em comunicação serial e utiliza uma versão binária compacta dos dados. Os bytes de comando e dados são seguidos por um código de checagem cíclica redundante (CRC) para garantir a confiabilidade dos dados. O Modbus RTU é a implementação mais utilizada do protocolo Modbus. Os frames de comunicação são transmitidos de forma contínua sem espaços de tempo entre os bytes.

Modbus ASCII

Esta versão do protocolo utiliza caracteres ASCII na comunicação. O Modbus ASCII utiliza o Longitudinal Redundancy Checksum. Os frames de comunicação iniciam por “:” e terminam por “CR/LF”.

Modbus TCP/IP ou Modbus TCP 

Esta versão do Modbus é utilizada para comunicação utilizando redes TCP/IP, conectando pela porta 502. O Modbus TCP não requer um cálculo de checksum, isso porque o TCP/IP já garante a integridade dos dados.

Comunicação e dispositivos

Cada dispositivo da rede Modbus recebe um endereço único. Em redes seriais apenas os dispositivos mestre podem iniciar uma comunicação (comando). Em redes Ethernet, qualquer dispositivo pode enviar um comando Modbus, contudo, normalmente, apenas um dispositivo será mestre e enviará comandos. Os comandos Modbus contém em seu frame o endereço do dispositivo alvo da comunicação (entre 1 e 247). Apenas o dispositivo endereçado irá aceitar e processar o comando. Existe, contudo, o endereço zero (0) utilizado para o mestre comunicar com todos os dispositivos, comandos broadcast, sendo que esses comandos não são respondidos com uma mensagem de acknoledgement. Todos os comandos Modbus contém a informação de checksum para permitir aos dispositivos detectar falhas na comunicação. Os comandos básicos Modbus podem instruir um dispositivo a alterar o valor em um registro, controlar ou ler uma porta de I/O, e solicitar que um dispositivo envie um ou mais valores contidos em seus registros.

Muitos modems, rádios modem e gateways suportam o Modbus. Alguns desses dispositivos de comunicação são, inclusive, projetados para trabalhar com o protocolo Modbus. Na utilização do Modbus em aplicações wireless um cuidado especial deve ser tomado em relação a latência dos sistemas, fazendo com que os atrasos nas respostas aos comandos Modbus sejam maiores do que os tempos observados em redes cabeadas.

O frame de comunicação Modbus
Um frame de comunicação no protocolo Modbus é composto de:

  • Endereço
  • Função de comando
  • Dados
  • Checksum

Formato do frame Modbus RTU

Observações sobre CRC:

  • Polinômio: x16x15 + x2 + 1 (CRC-16-ANSI também conhecido como CRC-16-IBM, polinômio algébrico normal hexadecimal 8005 e invertido A001).
  • Valor inicial: 65,535.
  • Exemplo de frame em hexadecimal: 01 04   02   FF   FF   B8   80 (CRC-16-ANSI calculado de 01 a FF, resultando 80B8, sendo transmitido o Byte menos significativo primeiro e depois o Byte mais significativo.

Formato do frame Modbus ASCII

Endereço, função, dados e LRC são todos pares de caracteres ASCII que representam valores hexadecimais. Por exemplo, o valor 122 (7 x 16 + 10) será representado por “7A”.

LRC é calculado como a soma dos valores de 8 bits, negado (complemento de dois) e codificado como um valor de 8 bits. Exemplo: se o endereço, função e dados são 247, 3, 19, 137, 0 e 10, a soma é 416. O complemento de dois é (-416), reduzido em 8 bits é 96, que será representado por 60 em hexadecimal. O frame resulta: F7031389000A60<CR><LR>

Formato do frame Modbus TCP

O identificador da unidade é utilizado em redes com diversos dispositivos Modbus, como em sistemas com gateways. Nesse caso, o identificador de unidade informa o endereço do dispositivo por trás do gateway. Em modo nativo, os dispositivos Modbus TCP normalmente ignoram o identificador de unidade.

Os valores nos dados do frame Modbus são ordenados de forma que o byte mais significativo é transmitido primeiro.

Códigos de função Modbus

As funções 3 e 16 são as mais utilizadas quando utilizamos rádios modem como meio de comunicação pois agrupando os registros diminuímos o tempo total de varredura da comunicação.

Exemplo de interface Modbus

 

As Interfaces Modbus Alfacomp são uma família de módulos de entradas e saídas analógicas e digitais que comunicam pelo protocolo Modbus.

  • Protocolo de comunicação: Modbus RTU
  • Modbus mestre e escravo
  • Seleção de endereço por DIP switch
  • Alimentação: 10 a 30 VCC
  • Consumo máximo de 200 mA

Protocolo Modbus – Download em PDF

Leia também

Modbus é um protocolo de comunicação serial desenvolvido e publicado pela empresa Modicon (hoje uma empresa do grupo Schneider Electric) em 1979 pra uso em seus CLPs (Controladores Lógicos Programáveis). O protocolo Modbus se transformou no protocolo mais difundido para comunicação entres dispositivos de controle e automação industrial. Os motivos principais para o uso do Modbus em ambiente industrial são:

  • Foi desenvolvido especialmente para aplicações industriais;
  • Domínio público e sem cobrança de direitos autorais;
  • Fácil de utilizar e manter;
  • Comunicação de bits e words entre dispositivos de diferentes fabricantes sem restrições.

O Modbus permite a comunicação entre diversos dispositivos conectados a mesma rede, por exemplo, um sistema que mede temperatura e umidade e envia os dados lidos a um computador. O Modbus é frequentemente utilizado para interligar um computador rodando um software supervisório SCADA com as unidades remotas (RTU). No Modbus, muitos dos dados comunicados recebem o nome de dispositivos usuais nas linguagens Ladder de programação de CLPs, por exemplo, uma saída física binária é chamada coil (bobina), e uma entrada física é chamada contact (contato).

A manutenção do protocolo Modbus é feita pela entidade Modbus Organization desde abril de 2004, quando a Schneider Electric transferiu os direitos para essa organização. A Modbus Organization é uma associação de usuários e fabricantes de dispositivos compatíveis com o protocolo Modbus que defendem a continuidade da utilização do protocolo.

A tabela a seguir apresenta as variáveis fornecidas por um dispositivo escravo para um dispositivo mestre.

Variaveis-Modbus-1024x482-1

Principais versões do protocolo Modbus

Modbus RTU

O Modbus RTU é utilizado em comunicação serial e utiliza uma versão binária compacta dos dados. Os bytes de comando e dados são seguidos por um código de checagem cíclica redundante (CRC) para garantir a confiabilidade dos dados. O Modbus RTU é a implementação mais utilizada do protocolo Modbus. Os frames de comunicação são transmitidos de forma contínua sem espaços de tempo entre os bytes.

Modbus ASCII

Esta versão do protocolo utiliza caracteres ASCII na comunicação. O Modbus ASCII utiliza o Longitudinal Redundancy Checksum. Os frames de comunicação iniciam por “:” e terminam por “CR/LF”.

Modbus TCP/IP ou Modbus TCP 

Esta versão do Modbus é utilizada para comunicação utilizando redes TCP/IP, conectando pela porta 502. O Modbus TCP não requer um cálculo de checksum, isso porque o TCP/IP já garante a integridade dos dados.

Comunicação e dispositivos

Cada dispositivo da rede Modbus recebe um endereço único. Em redes seriais apenas os dispositivos mestre podem iniciar uma comunicação (comando). Em redes Ethernet, qualquer dispositivo pode enviar um comando Modbus, contudo, normalmente, apenas um dispositivo será mestre e enviará comandos. Os comandos Modbus contém em seu frame o endereço do dispositivo alvo da comunicação (entre 1 e 247). Apenas o dispositivo endereçado irá aceitar e processar o comando. Existe, contudo, o endereço zero (0) utilizado para o mestre comunicar com todos os dispositivos, comandos broadcast, sendo que esses comandos não são respondidos com uma mensagem de acknoledgement. Todos os comandos Modbus contém a informação de checksum para permitir aos dispositivos detectar falhas na comunicação. Os comandos básicos Modbus podem instruir um dispositivo a alterar o valor em um registro, controlar ou ler uma porta de I/O, e solicitar que um dispositivo envie um ou mais valores contidos em seus registros.

Muitos modems, rádios modem e gateways suportam o Modbus. Alguns desses dispositivos de comunicação são, inclusive, projetados para trabalhar com o protocolo Modbus. Na utilização do Modbus em aplicações wireless um cuidado especial deve ser tomado em relação a latência dos sistemas, fazendo com que os atrasos nas respostas aos comandos Modbus sejam maiores do que os tempos observados em redes cabeadas.

O frame de comunicação Modbus
Um frame de comunicação no protocolo Modbus é composto de:

  • Endereço
  • Função de comando
  • Dados
  • Checksum

Formato do frame Modbus RTU

Observações sobre CRC:

  • Polinômio: x16x15 + x2 + 1 (CRC-16-ANSI também conhecido como CRC-16-IBM, polinômio algébrico normal hexadecimal 8005 e invertido A001).
  • Valor inicial: 65,535.
  • Exemplo de frame em hexadecimal: 01 04   02   FF   FF   B8   80 (CRC-16-ANSI calculado de 01 a FF, resultando 80B8, sendo transmitido o Byte menos significativo primeiro e depois o Byte mais significativo.

Formato do frame Modbus ASCII

Endereço, função, dados e LRC são todos pares de caracteres ASCII que representam valores hexadecimais. Por exemplo, o valor 122 (7 x 16 + 10) será representado por “7A”.

LRC é calculado como a soma dos valores de 8 bits, negado (complemento de dois) e codificado como um valor de 8 bits. Exemplo: se o endereço, função e dados são 247, 3, 19, 137, 0 e 10, a soma é 416. O complemento de dois é (-416), reduzido em 8 bits é 96, que será representado por 60 em hexadecimal. O frame resulta: F7031389000A60<CR><LR>

Formato do frame Modbus TCP

O identificador da unidade é utilizado em redes com diversos dispositivos Modbus, como em sistemas com gateways. Nesse caso, o identificador de unidade informa o endereço do dispositivo por trás do gateway. Em modo nativo, os dispositivos Modbus TCP normalmente ignoram o identificador de unidade.

Os valores nos dados do frame Modbus são ordenados de forma que o byte mais significativo é transmitido primeiro.

Códigos de função Modbus

As funções 3 e 16 são as mais utilizadas quando utilizamos rádios modem como meio de comunicação pois agrupando os registros diminuímos o tempo total de varredura da comunicação.

Exemplo de interface Modbus

 

As Interfaces Modbus Alfacomp são uma família de módulos de entradas e saídas analógicas e digitais que comunicam pelo protocolo Modbus.

  • Protocolo de comunicação: Modbus RTU
  • Modbus mestre e escravo
  • Seleção de endereço por DIP switch
  • Alimentação: 10 a 30 VCC
  • Consumo máximo de 200 mA

Protocolo Modbus – Download em PDF

Leia também