Redes Industriais - Modbus

Olá!

Peço desculpas aos leitores pela demora em colocar mais posts, mas às vezes tenho uma preocupação de colocar um conteúdo informativo e de qualidade. A maior parte das ilustrações são feitas por mim mesmo, para proporcionar um conteúdo exclusivo e diferenciado. Agradeço a compreensão!

Então, vamos para mais um post sobre redes industriais. Neste vamos abordar o protocolo Modbus RTU, um dos primeiros
protocolos para comunicação de dados industriais. O protocolo Profibus DP, que é um protocolo mais recente e muito utilizado na indústria, será abordado no próximo post, que será publicado até na próxima sexta-feira 12/06.

Vamos nessa...

Visão geral sobre protocolos de comunicação

Conforme já mostramos no post "Redes Industriais - Visão Geral", o protocolo é um dos três elementos que constituem uma rede, sendo os outros dois o meio físico e o endereçamento. O protocolo pode ser comparado grosseiramente com a linguagem ou o idioma falado pelos interlocutores interligados à rede, bem como sendo as regras de comunicação (quem fala e quando fala).
Um dos primeiros padrões de comunicação existentes é o RS-232 (meio físico). Esse padrão inicialmente, englobava também partes do protocolo, pois as regras de comunicação eram estabelecidas no meio físico, através dos pinos CTS/RTS (Clear to Send, Request do Send) e DTR/DSR (Data Terminal Ready, Data Set Ready). Contudo, estas funcionalidades e regras foram sendo absorvidas pelos protocolos, de maneira que o meio físico pôde ser simplificado em alguns casos.
No meio industrial, um dos primeiros protocolos desenvolvidos para comunicação entre dispositivos foi o protocolo Modbus, criado nos anos 70 (é engraçado dizer, mas do século passado) pela empresa MODICON que atualmente pertence ao grupo Schneider Electric. Esse precursor das redes industriais ainda é muito utilizado, pois é um bom padrão, simples e fácil de implementar e largamente integrado por uma imensa gama de fabricantes.

O protocolo Modbus

Em 1979, a MODICON publicou o padrão Modbus como uma interface de comunicação em rede ponto-multiponto, baseado numa arquitetura Mestre/Escravo. Nesta arquitetura, um dispositivo, denominado mestre, envia mensagens (dataframes) para um ou mais escravos da rede. Essas mensagens podem conter solicitações de leitura de dados e comandos com dados de escrita. Ao receber esses comandos, o escravo responderá com mensagens contendo dados solicitados, confirmações de que os dados foram escritos ou ainda, códigos de erro.

O dataframe das mensagens Modbus é mostrado na Figura 1.

Figura 1 - Estrutura do dataframe Modbus

Basicamente, conforme mostrado na Figura 1, o dataframe é composto por elementos relativos ao meio físico utilizado (Serial ou Ethernet) e por elementos específicos do protocolo.

Para ficar mais claro, se o protocolo Modbus for utilizado em uma aplicação sobre um meio serial (RS-232, RS-485 ou RS-422), os dispositivos possuem um endereço decimal, então o campo "Endereçamento adicional" será composto por 2 bytes com o endereço do dispositivo de destino da mensagem (1 a 256 ou 01 a FF, em hexadecimal) e o campo "verificação de erros" será composto por 2 bytes de verificação de erros, gerado por um algoritmo de CRC (Cyclic Redundancy Check, Verificação cíclica de redundância). Informações adicionais sobre esse algoritmo podem ser encontradas nesse link.

Se esse protocolo for aplicado sobre conexões TCP (sobre Ethernet), o campo "Endereçamento adicional" seria composto por um cabeçalho que contém basicamente o endereço IP do dispositivo escravo (servidor) e o campo "verificação de erros" já não mais existiria.

A velocidade de comunicação da rede Modbus no caso de redes seriais é limitada, geralmente, a 38.400bps ou 57.600bps. Muitas vezes, podemos encontrar equipamentos que podem chegar a velocidades elevadas (até 115kbps), contudo, numa rede composta por diversos equipamentos, a velocidade ficará limitada de acordo com os dispositivos usados e de acordo com a extensão da rede.

Endereçamento de memória e comandos

Os dispositivos escravos Modbus disponibilizam seus dados em pontos de memória que serão lidos/escritos pelos comandos do protocolo. Estes comandos são direcionados para a leitura/escrita de bits e palavras, conforme mostra a Figura 2.

Figura 2 - Modelo de dados e comandos Modbus

Assim, de acordo com a necessidade, o mestre será programado para enviar comandos, em conjunto com os parâmetros necessários para efetuar a leitura ou escrita de valores na memória do dispositivo.

A Figura 3 mostra um exemplo de uma transação Modbus executada com sucesso, ou seja, um mestre envia uma solicitação que é processada pelo escravo, que por sua vez, responde com uma mensagem de confirmação.

Figura 3 - Transação Modbus sem erro

Por outro lado, principalmente durante um start-up ou testes em uma rede, pode acontecer que, ao configurar a solicitação num mestre, a área de memória solicitada em um comando não exista naquele escravo, ou ainda, que naquele escravo não esteja implementado um determinado comando e, portanto, não haverá resposta para o mesmo. Nesses casos, o dispositivo escravo poderá responder a uma solicitação indevida com uma mensagem de erro, que indicará exatamente qual é o problema verificado. Esta situação está ilustrada na Figura 4.

Figura 4 - Transação Modbus com mensagem de erro

Por fim, também pode ocorrer um equívoco de configurações como por exemplo, erros de endereçamento de dispositivo (desejo ler um valor no dispositivo 5, mas configurei fisicamente nesse dispositivo o endereço 6), erros de configuração de velocidade (a rede trabalha a 19.200bps, mas o dispositivo está configurado a 9.600bps) ou mesmo paridade, bem como problemas físicos, como ruptura de um cabo de comunicação. Nesses casos, o escravo estará indisponível para responder qualquer solicitação do mestre (mesmo porque ele não vai receber essa solicitação, devido aos problemas citados). Assim, entra em ação o Timeout configurado no mestre. Ao disparar qualquer solicitação, o mestre inicia a contagem de um tempo de timeout. Se uma resposta não for recebida dentro desste tempo, o mestre detecta que o dispositivo não responde e pode tomar uma ação a partir disso. Esta situação está ilustrada na Figura 5.

Figura 5 - Transação Modbus com Timeout

Polling

Um mestre em uma rede Modbus RTU executa uma sequência de comandos para a leitura e escrita nos dispositivos da rede, ou seja, ele lê e escreve dados no escravo 1, em seguida no escravo 2 e assim por diante, até o fim da lista de comandos. Após o último comando, ele inicia novamente o ciclo. Este processo é chamado de Polling, que traduzido grotescamente, significa "sondagem", ou seja, o mestre Modbus executa a sondagem dos dispositivos da rede, de acordo com a sequência de comandos configurados em sua memória.

A Figura 6 mostra um exemplo de configuração de um dispositivo Modbus Master. Observe que existe toda uma configuração da porta serial (Baud Rate, controle de fluxo, paridade, etc.), bem como do intervalo de Poll, ou seja, o intervalo entre os comandos que, nesse caso também é o mesmo tempo de Timeout. A tabela apresentada nesta mesma figura, é a tabela de Polling do mestre, onde aparecem comandos de leitura e escrita (coluna Cmd Type) para dois dispositivos com endereços 1 e 2.

Figura 6 - Exemplo de configuração de um Mestre Modbus

Conclusão - Protocolo Modbus

Para concluírmos esta parte, o protocolo Modbus é o mais difundido e possui características interessantes para o uso em equipamentos industriais. Quando o mesmo funciona sobre redes seriais, existe uma limitação em termos de velocidade, o que deve ser avaliado quando da aplicação. A possibilidade de uso deste protocolo sobre Ethernet (Modbus TCP), deu uma nova roupagem, possibilitando a utilização do mesmo dentro de uma infraestrutura muito comum atualmente no meio industrial. Por ter uma implementação simples e utilização de hardware e meios físicos não específicos, este protocolo possibilita a sua implementação a partir de qualquer PC padrão, utilizando qualquer linguagem de programação que possibilite manipulação da porta serial (Modbus RTU) ou sockets (Modbus TCP), tais como C, C++, VB, Java, dentre outras.

Exemplos de utilização do VB para esse caso podem ser encontrados no site www.modbus.pl. Outras informações sobre o protocolo modbus podem ser encontradas no site da organização www.modbus-ida.org, fazendo o download da especificação aqui.


5 comentários:

Leonardo Ribeiro disse...

Excelente Post Ada. Só poderia da próxima vez aumentar um pouco o tamanho das imagens ou colocar um link na própria imagem para uma imagem maior.

Obrigado!

Unknown disse...

Obrigada pelas informações.

http://www.elan.ind.br

Jefferson disse...

Ótimo post! se puder me enviar materiais sobre redes industriais ficarei grato! Estou atuando na área de automação e preciso saber disso!

Obrigado

Anônimo disse...

Ótimo post! se puder me enviar materiais sobre redes industriais ficarei grato! Estou atuando na área de automação e preciso saber disso!


email: jefferson.almeida@live.com

Anônimo disse...

Bom artigo ;

http://www.controleeletronica.com.br

automacoes.com - Todos os direitos reservados
Desenvolvido por Adailton Cunha