Você está na página 1de 6

07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

Modbus
Origem: Wikipédia, a enciclopédia livre.

Modbus é um Protocolo de comunicação de dados utilizado em sistemas de automação industrial.


Criado originalmente no final da década de 1970, mais especificamente em 1979,[1] pela fabricante
de equipamentos Modicon. É um dos mais antigos e até hoje mais utilizados[2] protocolos em redes
de Controladores lógicos programáveis (PLC) para aquisição de sinais(0 ou 1) de instrumentos e
comandar atuadores. A Schneider Electric (atual controladora da Modicon) transferiu os direitos
do protocolo para a Modbus Organization (Organização Modbus[3]) em 2004 e a utilização é livre
de taxas de licenciamento.[1] Por esta razão, e também por se adequar facilmente a diversos meios
físicos, é utilizado em milhares de equipamentos existentes e é uma das soluções de rede mais
baratas a serem utilizadas em Automação Industrial.

Características técnicas
O Modbus é um protocolo de comunicação da camada de aplicação (modelo OSI) e pode utilizar o
RS-232, RS-485 ou Ethernet como meios físicos - equivalentes camada de enlace (ou link) e
camada física do modelo. O protocolo possui comandos para envio de dados discretos (entradas e
saídas digitais) ou numéricos (entradas e saídas analógicas).

Modelo de comunicação
O protocolo Modbus especifica que o modelo de comunicação é do tipo mestre-escravo (ou
servidor-cliente). Assim, um escravo não deve iniciar nenhum tipo de comunicação no meio físico
enquanto não tiver sido requisitado pelo mestre. Por exemplo, a estação mestre (geralmente um
PLC) envia mensagens solicitando dos escravos que enviem os dados lidos pela instrumentação ou
envia sinais a serem escritos nas saídas, para o controle dos atuadores ou nos registradores. A
imagem abaixo mostra um exemplo de rede Modbus com um mestre (PLC) e três escravos
(módulos de entradas e saídas, ou simplesmente E/S). Em cada ciclo de comunicação, o PLC lê e
escreve valores em cada um dos escravos.

Acesso ao meio

https://pt.wikipedia.org/wiki/Modbus 1/6
07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

No entanto, ainda é possível haver colisões durante o acesso ao meio compartilhado, e o protocolo
não é específico em como solucioná-las. Como ilustração de um problema possível, suponha que,
em uma dada aplicação do protocolo Modbus sobre um barramento RS-485, o mestre requisita
seus escravos em sequência. Suponha também que o mestre, após um tempo específico, passa a
requisitar o escravo seguinte, tendo recebido ou não uma resposta do escravo anterior. Nesse caso,
se o primeiro escravo demora mais tempo para responder do que o tempo que o mestre espera,
pode acontecer de o primeiro escravo responder bem no período em que o mestre resolveu fazer a
requisição ao escravo seguinte, ou no período em que o segundo escravo já tinha iniciado sua
resposta – havendo colisão no meio. Não há nada especificado no protocolo para resolver esse tipo
de problema. Cabe inteiramente à aplicação – através de hardware ou software - implementar de
forma correta o acesso ao meio, os parâmetros de time-out etc.

Frames
Basicamente, uma comunicação em Modbus obedece a um frame que contém o endereço do
escravo, o comando a ser executado, uma quantidade variável de dados complementares e uma
verificação de consistência de dados (CRC).

Exemplo-1: Se o PLC precisa ler as 10 primeiras entradas analógicas (do endereço 0000 ao 0009)
no módulo 2. Para isso é preciso utilizar o comando de leitura de múltiplos registros analógicos
(comando 3). O frame de comunicação utilizado é mostrado abaixo (os endereços são mostrados
em sistema hexadecimal):

endereço comando end. dos registros quant. de registros CRC


02 03 00 00 00 0A 2 caracteres

A resposta do escravo seria um frame semelhante composto das seguintes partes: O endereço do
escravo, o número do comando, os dez valores solicitados e um verificador de erros (CRC). Em
caso de erros de resposta (por exemplo um dos endereços solicitados não existe) o escravo
responde com um código de erro.

A resposta para a pergunta acima seria a seguinte:

Mas antes uma pequena recordação!

Para se entender este frame de resposta, antes precisamos saber corretamente o que é um byte.

Cada palavra tem as seguintes formas, - bit, - nibble, - byte e - word.

Segue abaixo uma tabela representação de cada formato.

Bit Nibble Byte Word


1 = 4 bits = 8 bits = 16 bits

Agora que ja sabemos o que é byte podemos então decifrar o frame da rede modbus.

Exemplo-2: Reposta da pergunta citada no exemplo-1.

RX 02 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(xx xx CRC)

https://pt.wikipedia.org/wiki/Modbus 2/6
07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

O primeiro byte(02) é o nó do escravo; O segundo byte(03) é a função utilizada para leitura, sendo
essa um Holding Register; O terceiro byte é a quantidade de endereços que o Slave(escravo) está
enviando ao Master, sendo que a cada 2 bytes se forma uma Word que significa uma palavra de 16
bit, por isso este frame tem 14 (hexadecimal) = 20 bytes que é = 10 word ou 10 palavras de 16 bits
que tem seu range mínimo de -32768 ate 32767.

Com isso entendemos que o Slave(Escravo) respondeu 10 endereços a ao master e todos com o
valor zero.

Comandos do MODBUS
Os principais comandos do Modbus são mostrados na tabela abaixo:

código do
descrição
comando
0x01 Lê um número variável1 de saídas digitais (bobinas)
0x02 Lê um número variável1 de entradas digitais

0x03 Lê um número variável1 de registros retentivos (saídas analógicas ou


memórias)
0x04 Lê um número variável1 de registros de entrada (entradas analógicas)
0x05 Força uma única bobina (altera o estado de uma saída digital)
0x06 Preset de um único registro (altera o estado de uma saída analógica)
0x07 Lê exceções2 (registros de erro)
0x08 Várias funções de diagnóstico
0x0F Força uma quantidade variável1 de bobinas (saídas digitais)
0x10 Preset de uma quantidade variável1 de registros (saídas analógicas)
1 A quantidade de variáveis a ler é definida no frame de solicitação
2Oito bits previamente configurados. Não é necessário fornecer parâmetros de endereçamento
com este comando pois o escravo vai enviar sempre os oito bits pré configurados.

Para alguns comandos de diagnóstico, tais como reinício de comunicação, reset do módulo ou
sincronização de relógio, podem ser utilizados comunicações do tipo broadcast, ou seja, destinada
a todos os escravos simultaneamente.

Modbus serial
Em redes seriais baseadas em RS-485 ou RS-232 o Modbus pode ter dois modos de transmissão:
RTU e ASCII.

Modbus RTU

https://pt.wikipedia.org/wiki/Modbus 3/6
07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

O termo RTU, do inglês Remote Terminal Unit, refere-se ao modo de transmissão onde endereços
e valores são representados em formato binário. Neste modo para cada byte transmitido são
codificados dois caracteres. Números inteiros variando entre -32768 e 32767 podem ser
representados por 2 bytes. O mesmo número precisaria de quatro caracteres ASCII para ser
representado (em hexadecimal). O tamanho da palavra no modo RTU é de 8 bits.

Formato do pacote RTU


Endereço do Escravo Código da Função Dados CRC
1 byte 1 byte 0 a 252 bytes 2 bytes (CRC-16)

Modbus ASCII

Os dados são dados codificados e transmitidos através de caracteres ASCII - cada byte é
transmitido através de dois caracteres. Apesar de gerar mensagens legíveis por pessoas este modo
consome mais recursos da rede. Por exemplo, para transmitir o byte 0x5B este deverá ser
codificado em dois caracteres ASCII: 0x35 (“5”) e 0x42 (“B”). O tamanho da palavra no modo
ASCII é de 7 bits. Somente são permitidos caracteres contidos nos intervalos

0-9
A-F

Intervalo entre duas mensagens deve ser de 3,5 caracteres.

Formato do pacote ASCII


Início Endereço Função Dados LRC Final
":" (ASCII 2 2 0 a 2 x 252 2 CR+LF (ASCII 0x0Dh +
0x3Ah) caracteres caracteres caracteres caracteres 0x0Ah)

Modbus TCP
Aqui os dados são encapsulados em formato binário em frames TCP para a utilização do meio
físico Ethernet (IEEE 802.3). Quando o Modbus/TCP é utilizado, o mecanismo de controle de
acesso é o CSMA-CD (Próprio da rede Ethernet) e as estações utilizam o modelo cliente-servidor.

Retrocompatibilidade e Conversores

Suponha que um PLC precisa trocar dados usando o protocolo Modbus-TCP com dispositivos
antigos, que não suportam esse protocolo, e estão conectados em um barramento RS-485. Nesse
caso, existem no mercado conversores Modbus-TCP<->Modbus Serial RS-232/485. Esses
dispositivos diferem de um conversor puramente físico, que somente converteria os sinais elétricos
de um protocolo físico para outro. Eles, em vez disso, implementam os protocolos TCP e IP, além
de implementar também o protocolo Modbus.

Isso é necessário, pois é preciso haver uma conexão TCP entre o conversor e o PLC, já que essa
conexão não pode existir diretamente com os equipamentos antigos. O conversor precisa, portanto,
implementar o protocolo TCP e aceitar conexões através de sockets etc. Caso contrário, a
comunicação não seria possível.

Além disso, o conversor precisará tirar os dados Modbus – que estão dentro do pacote IP, que por
sua vez está dentro do quadro Ethernet – para enviar ao escravo correto no barramento RS-485.

https://pt.wikipedia.org/wiki/Modbus 4/6
07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

Há também conversores com várias saídas seriais. Nesse caso, é possível separar os escravos em
vários barramentos distintos, cada um em uma porta. No primeiro barramento, podem ser
colocados os escravos cujos endereços vão de 1 ao 10; no segundo, de 11 a 20, e por aí em diante –
isso é só um exemplo.

Nessa configuração, o conversor precisaria ler o pacote Modbus, interpretá-lo ao ponto de saber
qual é o endereço do escravo de destino, para então enviá-lo à porta de saída correta.

Modbus Plus
Versão que possui vários recursos adicionais de roteamento, diagnóstico, endereçamento e
consistência de dados. Esta versão ainda é mantida sob domínio da Schneider Electric e só pode
ser implantada sob licença deste fabricante.

Referências
1. Modbus Organization, Inc. «Modbus FAQ» (http://www.modbus.org/faq.php) (em inglês).
Consultado em 30 de agosto de 2012
2. ControlDesign.com. «Three Variants Dominate Industrial Ethernet» (http://www.controldesign.c
om/industrynews/2010/021.html) (em inglês). Consultado em 12 de outubro de 2012
3. Modbus Organization, Inc. «Modbus Organization» (http://www.modbus.org/) (em inglês).
Consultado em 7 de setembro de 2012

Ligações externas
Links em inglês:

Descritivo do protocolo (https://web.archive.org/web/20120323224832/http://www.protocessor.


com/solutions/key-protocols/Modbus.php)
A íntegra da especificação do protocolo (versão 1.1b) (http://www.modbus.org/docs/Modbus_A
pplication_Protocol_V1_1b.pdf)
Site da Organização Modbus - associação de fabricantes (http://www.modbus.org)
Site da Schneider Automation (https://web.archive.org/web/20060820111049/http://www.modic
on.com/Default.htm)
Como Modbus trabalha (http://www.simplymodbus.ca/FAQ.htm)
Modbus Test software (https://www.eltima.com/modbus-tester-software.html)

Links em português:

Resumo sobre redes Modbus (https://web.archive.org/web/20091216142719/http://www.autom


acoes.com/2009/05/redes-industriais-modbus-rtu-e-profibus.html)
Modbus (http://www.cerne-tec.com.br/Modbus.pdf)
Modos de Transmissão RTU e ASCII do Modbus (http://www.tede.udesc.br/tde_arquivos/1/TD
E-2006-04-20T061306Z-138/Publico/anexo_A.pdf)[ligação inativa]
Modbus-Master (http://iffwww.iff.kfa-juelich.de/~wuttke/doku/doku.php?id=jwu:modbus) em
Ruby.

Software gratuito para Modbus:

Software do teste do programa demostrativo de Modbus Simply Modbus (http://www.simplymo


dbus.ca/download.htm)
https://pt.wikipedia.org/wiki/Modbus 5/6
07/11/23, 07:57 Modbus – Wikipédia, a enciclopédia livre

Software gratuito que simula dispositivos escravos : Modbus Simulator (http://www.plcsimulato


r.org/)
Código fonte do protocolo para (https://web.archive.org/web/20050909214017/http://www.proto
cessor.com/techsupport/Free_Modbus_RTU_Source_Code.asp)microcontrolador PIC
Projetos de código aberto no (http://freshmeat.net/search/?q=modbus&section=projects&Go.x
=0&Go.y=0)Freshmeat
Projetos de código aberto no (https://sourceforge.net/search/?words=modbus)Sourceforge
Software para simulação e testes em Modbus (http://www.win-tech.com/)

Obtida de "https://pt.wikipedia.org/w/index.php?title=Modbus&oldid=64267954"

https://pt.wikipedia.org/wiki/Modbus 6/6

Você também pode gostar