Você está na página 1de 5

MODBUS

Modbus é um protocolo de comunicação da camada de Aplicação, posicionado no nível 7 do


modelo OSI, que permite a comunicação cliente/servidor entre equipamentos de automação
conectados em diferentes tipos de barramentos ou redes.

Atualmente, o Modbus é implementado nos seguintes tipos comunicação:


TCP/IP em redes Ethernet
Transmissão serial assíncrona numa variedade de mídias (EIA-TIA-202-E, EIA-422,
EIA-TIA-485-A, fibra, rádio, etc).
Modbus Plus - rede de passagem de token de alta velocidade.

Essa versatilidade confere ao protocolo Modbus a possibilidade de utilização em diferentes


tipos de rede.
Qualquer tipo de equipamento (PLC, HMI, Control Panel, Driver, Motion control, I/o Device)
pode utilizar o protocolo Modbus para iniciar uma operação remota. A mesma comunicação
pode ser realizada utilizando-se linhas seriais numa rede padrão Ethernet com protocolo
TCP/IP.
A Fig. 2 mostra um exemplo de uma estrutura de comunicação entre diferentes tipos de
equipamentos interconectados por diferentes tecnologias de rede utilizando o protocolo
Modbus.
Descrição do Protocolo

i- Estrutura do pacote de comunicação do protocolo Modbus

O ADU (apliccation data unit) é criado sempre pelo cliente que inicializa uma comunicação.
ii- Descrição do Campos

Function Code:
Indica ao servidor que tipo de ação deve ser executada.
O campo function code possui um byte de tamanho. Códigos válidos variam de 1-
255 em decimal (128-255 são reservados para respostas especiais) . Quando uma
mensagem é enviada do cliente para um equipamento servidor o campo function code
diz ao servidor que tipo de ação deve ser executada.
Códigos de sub-funções são adicionadas a alguns códigos de funções para definir
múltiplas ações.

Data:
O campo "Data" da mensagem enviada pelo cliente para o equipamento servidor
pode conter informações adicionas que o servidor deve usar para executar a ação
definida pela função requisitada pelo cliente.
Este campo pode ser de tamanho zero.

iii- Comunicação

Se ocorrer um erro na execução da ação especificada pela função contida num ADU, o
campo "Function Code" contém um código especial que indica ao servidor que tipo de ação
deve ser executada em seguida.
Quando o servidor responde ao cliente, ele utiliza o campo "Function Code" para indicar
uma resposta normal (error-free) ou que tipo de erro ocorreu (exception response) durante a
comunicação ou execução da ação especificada pela função. No caso de um resposta normal,
o servidor simplesmente copia o código original da função.

Para uma resposta de exceção, o servidor retorna o código equivalente à função original com
o bit mais significativo igual a 1.
iv- Tamanho do PDU

O tamanho do PDU (protocol data unit) do Modbus é limitado ao tamanho que foi definido
na primeira implementação do protocolo para sua utilização em linhas de comunicação serial
(max. RS485 ADU = 256 bytes).
Portanto, o tamanho do Modbus PDU para comunicação em linhas seriais é igual a 253 bytes.
256 - Server Adress (1byte) - CRC (2 bytes) = 253 bytes

conseqüentemente:
RS232 / RS485 ADU = 253 bytes + Server Adress (1byte) + CRC (2 bytes) = 256
bytes.
TCP Modbus ADU = 249 bytes + MBAP (7 bytes) = 256 bytes.

Obs.: MBAP - Modbus Application Protocol

v- Tipos de PDU

O protocolo Modbus define três tipos de PDU´s:

Modbus Request PDU


Modbus Response PDU
Modbus Exception Response PDU

vi - Comunicação Serial

Para a comunicação serial, o Modbus possibilita dois modos de comunicação entre os


equipamentos: ASCII ou RTU. Após definir o modo de transmissão o usuário deve
especificar os parâmetros de comunicação da porta serial (baud rate, parity mode, etc), que
devem ser os mesmos para todos os equipamentos conectados a rede Modbus.
vi - Modo ASCII

A grande vantagem é a possibilidade de intervalos grandes entre o envio dos dados de uma
mesma mensagem.
Para a identificação de início e fim de framing, são utilizados caracteres especiais.
Neste modo o campo checksum e gerado pelo método LCR.

vii - Modo RTU

Sua principal vantagem em relação ao modo ASCII é a possibilidade de enviar uma maior
densidade de caracteres, permitindo assim, um aumento no desempenho da comunicação.
Não utiliza caracteres especiais para identificação de início e fim de framing. Para identificar
esses campos, não deve haver nenhuma transmissão de dados por um período mínimo
equivalente a 3,5 vezes o tempo necessário para a transmissão de uma palavra de dados.