Conforme j mostramos no post Viso Geral-Redes Industriais, oprotocolo um dos trs
elementos que constituem uma rede, sendo os outros dois o meio fsico e o endereamento. O protocolo pode ser comparado grosseiramente com a linguagem ou o idioma falado pelos interlocutores interligados rede, bem como sendo as regras de comunicao (quem fala e quando fala). Um dos primeiros padres de comunicao existentes o RS-232 (meio fsico). Esse padro inicialmente, englobava tambm partes do protocolo, pois as regras de comunicao eram estabelecidas no meio fsico, atravs 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 fsico pde ser simplificado em alguns casos. No meio industrial, um dos primeiros protocolos desenvolvidos para comunicao entre dispositivos foi o protocolo Modbus, criado nos anos 70 ( engraado dizer, mas do sculo passado) pela empresa MODICON que atualmente pertence ao grupo Schneider Electric. Esse precursor das redes industriais ainda muito utilizado, pois um bom padro, simples e fcil de implementar e largamente integrado por uma imensa gama de fabricantes. O protocolo Modbus Em 1979, a MODICON publicou o padro Modbus como uma interface de comunicao 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 solicitaes de leitura de dados e comandos com dados de escrita. Ao receber esses comandos, o escravo responder com mensagens contendo dados solicitados, confirmaes de que os dados foram escritos ou ainda, cdigos 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 fsico utilizado (Serial ou Ethernet) e por elementos especficos do protocolo. Para ficar mais claro, se o protocolo Modbus for utilizado em uma aplicao sobre um meio serial (RS-232, RS-485 ou RS-422), os dispositivos possuem um endereo decimal, ento o campo Endereamento adicional ser composto por 2 bytes com o endereo do dispositivo de destino da mensagem (1 a 256 ou 01 a FF, em hexadecimal) e o campo verificao de erros ser composto por 2 bytes de verificao de erros, gerado por um algoritmo de CRC (Cyclic Redundancy Check, Verificao cclica de redundncia). Informaes adicionais sobre esse algoritmo podem ser encontradas nesse link. Se esse protocolo for aplicado sobre conexes TCP (sobre Ethernet), o campo Endereamento adicional seria composto por um cabealho que contm basicamente o endereo IP do dispositivo escravo (servidor) e o campo verificao de erros j no mais existiria. A velocidade de comunicao 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 extenso da rede. Endereamento de memria e comandos Os dispositivos escravos Modbus disponibilizam seus dados em pontos de memria que sero lidos/escritos pelos comandos do protocolo. Estes comandos so 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 parmetros necessrios para efetuar a leitura ou escrita de valores na memria do dispositivo. A Figura 3 mostra um exemplo de uma transao Modbus executada com sucesso, ou seja, um mestre envia uma solicitao que processada pelo escravo, que por sua vez, responde com uma mensagem de confirmao.
Figura 3 Transao Modbus sem erro Por outro lado, principalmente durante um start-up ou testes em uma rede, pode acontecer que, ao configurar a solicitao num mestre, a rea de memria solicitada em um comando no exista naquele escravo, ou ainda, que naquele escravo no esteja implementado um determinado comando e, portanto, no haver resposta para o mesmo. Nesses casos, o dispositivo escravo poder responder a uma solicitao indevida com uma mensagem de erro, que indicar exatamente qual o problema verificado. Esta situao est ilustrada na Figura 4.
Figura 4 Transao Modbus com mensagem de erro Por fim, tambm pode ocorrer um equvoco de configuraes como por exemplo, erros de endereamento de dispositivo (desejo ler um valor no dispositivo 5, mas configurei fisicamente nesse dispositivo o endereo 6), erros de configurao de velocidade (a rede trabalha a 19.200bps, mas o dispositivo est configurado a 9.600bps) ou mesmo paridade, bem como problemas fsicos, como ruptura de um cabo de comunicao. Nesses casos, o escravo estar indisponvel para responder qualquer solicitao do mestre (mesmo porque ele no vai receber essa solicitao, devido aos problemas citados). Assim, entra em ao o Timeout configurado no mestre. Ao disparar qualquer solicitao, o mestre inicia a contagem de um tempo de timeout. Se uma resposta no for recebida dentro desste tempo, o mestre detecta que o dispositivo no responde e pode tomar uma ao a partir disso. Esta situao est ilustrada na Figura 5.
Figura 5 Transao Modbus com Timeout Polling Um mestre em uma rede Modbus RTU executa uma sequncia 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. Aps 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 sequncia de comandos configurados em sua memria. A Figura 6 mostra um exemplo de configurao de um dispositivo Modbus Master. Observe que existe toda uma configurao 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 tambm 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 endereos 1 e 2.
Figura 6 Exemplo de configurao de um Mestre Modbus Concluso Protocolo Modbus Para conclurmos esta parte, o protocolo Modbus o mais difundido e possui caractersticas interessantes para o uso em equipamentos industriais. Quando o mesmo funciona sobre redes seriais, existe uma limitao em termos de velocidade, o que deve ser avaliado quando da aplicao. A possibilidade de uso deste protocolo sobre Ethernet (Modbus TCP), deu uma nova roupagem, possibilitando a utilizao do mesmo dentro de uma infraestrutura muito comum atualmente no meio industrial. Por ter uma implementao simples e utilizao de hardware e meios fsicos no especficos, este protocolo possibilita a sua implementao a partir de qualquer PC padro, utilizando qualquer linguagem de programao que possibilite manipulao da porta serial (Modbus RTU) ou sockets (Modbus TCP), tais como C, C++, VB, Java, dentre outras. Exemplos de utilizao do VB para esse caso podem ser encontrados no site www.modbus.pl. Outras informaes sobre o protocolo modbus podem ser encontradas no site da organizao www.modbus-ida.org, fazendo o download da especificao aqui.