Sei sulla pagina 1di 18

Unidade 4

Protocolo ModBus
O protocolo pode ser apresentado como a “linguagem” utilizada pelos componentes de
uma rede para a troca de dados. Para que isto ocorra, é necessário que os dispositivos
envolvidos façam uso de um mesmo protocolo.

Uma das funções do protocolo é dividir uma mensagem em pequenos pacotes de


tamanho fixo, minimizando desta forma a taxa de ocupação do meio no envio de grandes
mensagens e otimizando o uso da rede,
rede, permitindo que outras estações tenham a
oportunidade de transmitir seus dados. Obviamente cada pacote tem o seu endereço de
origem e destino previamente estabelecidos e incorporados ao pacote para que somente a
estação destino o aceite. As interfaces ou placas de rede tem um endereço fixo e único,
gravado em hardware a fim de identificá-las
identificá em uma rede.

No passado a maioria dos protocolos utilizados nas comunicações seriais RS232 e


RS485 eram proprietários, ou seja, desenvolvidos pelos próprios fabricantes
fabricantes para aplicações
específicas.. Atualmente existem protocolos abertos utilizados por vários fabricantes que
possibilitam a comunicação entre estes diversos equipamentos.
Um dos protocolos que se destacou pala sua larga utilização na area industrial é o
MODICON MODBUS.

4.1. Histórico
O protocolo Modbus foi desenvolvido pela Modicon Industrial Automation Systems,
hoje Schneider, para comunicar um dispositivo mestre com outros dispositivos escravos.
Embora seja utilizado normalmente sobre conexões seriais padrão RS-232 e RS-485
485, ele
também pode ser usado como um protocolo da camada de aplicação de redes industriais tais
como TCP/IP sobre Ethernet. Este á talvez o protocolo de mais larga utilização em automação
industrial, pela sua simplicidade e facilidade de implementação.

Redes Industriais 1
4.2. Tipos de Protocolos ModBus
O protocolo Modbus pode ser utilizado em todos os níveis de rede da Automação
Industrial. São três os diferentes tipos de protocos Modbus existentes (Modbus TCP/IP,
Modbus Plus e Modbus Padrão). Na figura abaixo é apresentada uma aplicação com o
protocolo Modbus atuando nos níveis de supervisão, controle e campos de uma planta
industria.l

O MODBUS TCP/IP é usado para comunicação entre sistemas de supervisão e


controladores lógicos programáveis. O protocolo Modbus é encapsulado no protocolo TCP/IP e
transmitido através de redes padrão ethernet com controle de acesso ao meio por CSMA/CD
(Carrier-Sense Multiple Acces with Collision Detection).

O MODBUS PLUS é usado para comunicação entre si de controladores lógicos


programáveis, módulos de E/S, chaves de partida eletrônica de motores, interfaces homem
máquina etc. O meio físico é o RS-485 com taxas de transmissão de 1 Mbps, controle de

2 Redes Industriais
acesso ao meio por HDLC (High Level Data Link Control ).

O MODBUS PADRÃO é usado para comunicação dos CLPs com os dispositivos de


entrada e saída de dados, instrumentos eletrônicos inteligentes (IEDs) como relés de proteção,
controladores de processo, atuadores de válvulas, transdutores de energia e etc. o meio físico
é o RS-232 ou RS-485 e o controle de acesso ao meio é o mestre-escravo.

O padrão MODBUS PLUS define um Protocolo de mensagens na camada de


aplicação, posicionado no 7º nível do Modelo de Referência OSI que provê
comunicação “cliente/servidor” entre dispositivos conectados a diferentes tipos de
barramentos ou topologias de rede. Este padrão também especifica um protocolo de
comunicação serial para requisições MODBUS PLUS e MODBUS PADRÃO entre um mestre e
um ou vários escravos conforme a figura abaixo.

4.3. Controle de Acesso ao Meio


Os protocolos de acesso ao meio, regras para acesso ao meio físico, são funções da
camada de enlace do modelo OSI. Na maioria das vezes foram desenvolvidos para uma
topologia particular de rede, embora possam ser usados em qualquer topologia.
A avaliação de protocolos de controle de acesso considera atributos específicos como:

Redes Industriais 3
• capacidade: vazão máxima, em porcentagem da banda passante disponível, que o
método de acesso pode tirar do meio. Variáveis que podem afetar a capacidade são:
taxa de transmissão, comprimento da rede, número de nós, tamanho do quadro,
tamanho do cabeçalho, retardo em cada estação.
• prioridade: desejável principalmente nas aplicações de tempo real.
• retardo de transferência: soma dos retardos de acesso e transmissão. Embora, no
geral, se apresente como variável aleatória, em alguns protocolos tem valor máximo
limitado.
O nível de enlace se preocupa exclusivamente com os procedimentos a serem
seguidos na transmissão e recepção das mensagens, recuperação de erros, sincronismo entre
os equipamentos em relação à comunicação, conexão e desconexão, etc., deixando para o
nível de aplicação o tratamento das informações relativas ao processo que se deseja
supervisionar e/ou controlar.
O controle da comunicação é disciplinado por códigos HEXA ou ASCII (dependendo
do protocolo utilizado) transmitidos em uma determinada sequências sendo que os
procedimentos referentes ao sincronismo entre as mensagens e equipamentos são
implementadas pelos processos de select e polling.
Para o protocolo Modbus podemos analisar o funcionamento dos três método de
acesso utilizado.

4.3.1. CSMA/CD
No método CSMA/CD (Carrier-Sense Multiple Acces with Collision Detection) a
deteção de colisão é feita durante a transmissão. O nó escuta a rede durante toda a
transmissão e a aborta assim que ocorra colisão, então espera por um tempo para tentar a
retransmissão.
Um fator limitante do método é a necessidade que o quadro tenha um tamanho
mínimo para que uma colisão possa ser detectada por todas as estações.
Detectada a colisão, duas técnicas de retransmissão podem ser utilizadas:
• espera aleatória exponencial truncada (truncated exponential back off): ao detectar a
colisão, a estação espera por um tempo aleatório de 0 a um limite superior. A cada

4 Redes Industriais
nova colisão o limite é dobrado, de forma a controlar o canal e mantê-lo estável
mesmo com tráfego alto.
• retransmissão ordenada (orderly back off): após a detecção da colisão, as estações só
podem começar a transmitir em intervalos de tempo a eles determinado previamente.
Terminada a transmissão das mensagens colididas, a estação com o menor intervalo
tem direito de transmitir sem colisão. Se não o fizer passa seu direito à segunda, e
sucessivamente até que ocorra uma transmissão, quando o algoritmo CSMA/CD se
reinicia.
O CSMA/CD com espera aleatória exponencial truncada tornou-se padrão
internacional (ISO 8802-3/IEEE 802.3), sendo atualmente o mais popular, com larga escala de
produção em chipset para comunicação.
4.3.2. HDLC
Protocolo desenvolvido pela ISO em 1979 com o objetivo de padronizar um protocolo
orientado a bit para transmissão de dados síncronos half ou full-duplex, com configuração
ponto a ponto ou multiponto, em linhas comutadas ou permanentes.
O campo de informações possui tamanho variável, não necessariamente múltiplo de 8
bits, podendo conter de 1 bit até um tamanho máximo em torno de 2 Kbytes .

FLAG ENDEREÇO CONTROLE INFORMAÇÃO FCS FLAG


8 8 BITS 8 BITS N BITS 16 8
BITS BITS BITS

Tal protocolo proporciona uma melhor utilização do canal de comunicação por poder
operar em full-duplex, permitindo o envio de até 7 quadros consecutivos sem a necessidade de
confirmação individual de recebimento de cada quadro por parte da estação receptora. Isso
não acontece em protocolos half-duplex (ex: protocolo BSC), onde, para cada mensagem
enviada, a estação transmissora fica esperando uma confirmação (positiva ou negativa) da
estação receptora. Este tempo de espera do transmissor por uma resposta do receptor é
reduzido significativamente em protocolos full-duplex .

Redes Industriais 5
4.3.3. Mestre-Escravo (Select / Polling)
O protocolo Modbus operando em linha serial é um protocolo mestre-escravos. Isso
significa que somente um mestre é conectado ao barramento ao mesmo tempo. Quanto aos
escravos, um ou mais nós (número máximo de 247) podem ser conectados a este mesmo
barramento.
Uma comunicação Modbus é sempre iniciada pelo mestre. O nó escravo nunca irá
transmitir dados sem receber uma requisição do nó mestre. Os nós escravos nunca irão se
comunicar entre eles. O nó mestre inicia somente uma transação Modbus por vez.
O nó mestre emite uma requisição para um nó escravo em dois modos:
Unicast – o mestre endereça a somente um escravo. Depois de receber e
processar a requisição, o escravo retorna uma mensagem de resposta para o mestre. Neste
modo, uma transação Modbus consiste de 2 mensagens: uma requisição do mestre e
uma resposta do escravo. Cada escravo deve ter um endereço único (de 1 a 247) de forma
a poder ser endereçado independentemente de outros nós.

Ao receber a mensagem enviada pelo mestre, o escravo executa a função solicitada e


envia uma resposta contendo o resultado desta função. Este processo da comunicação é
chamado de select.

Ao receber a mensagem, o escravo realiza a função solicitada e envia uma resposta


contendo o resultado. Este processo da comunicação é chamado de polling.

Broadcast – o nó mestre pode enviar uma mensagem para todos os escravos.


Nenhuma resposta deve ser retornada para requisições broadcast enviadas pelo mestre. As
requisições broadcast são necessariamente mensagens de escrita. Todos os dispositivos
devem aceitar mensagens broadcast para escrita. O endereço 0 é reservado para
identificar uma mensagem broadcast.

6 Redes Industriais
4.4. Modos de Transmissão

Existem dois modos de transmissão: ASCII (American Code for Informastion


Interchange) e RTU (Remote Terminal Unit), que são selecionados durante a configuração dos
parâmetros de comunicação.

Estes modos definem o conteúdo em bits dos campos das mensagens transmitidas
serialmente no barramento. Eles determinam como a informação é empacotada nos
campos das mensagens e, posteriormente, como são decodificadas.

O modo de transmissão (e o padrão da porta serial) deve ser o mesmo em todos os


dispositivos conectados a linha serial.

Embora o modo ASCII seja requirido em algumas aplicações específicas,


interoperabilidade entre dispositivos Modbus pode ser alcançada somente se cada
dispositivo tiver o mesmo modo de transmissão. Todos os dispositivos devem
implementar o modo RTU. A modo de transmissão ASCII é opcional.

Os dispositivos devem ser configurados pelos usuários para o modo de


transmissão desejado, RTU ou ASCII. O modo padrão deve ser RTU.

4.4.1. Modo de transmissão ASCII


Quando o dispositivo for configurado para este modo, para cada palavra de dados da
mensagem são enviados dois caracteres no padrão ASCII. A principal vantagem do modo
ASCII é a possibilidade de haver intervalos grandes entre o envio dos dados de uma mesma
mensagem. Em relação à formação da palavra de dados que comporá o conjunto de dados

Redes Industriais 7
(framing) da mensagem, são adotados alguns critérios.

Como todos os dados são enviados no padrão ASCII, o framing apresentará apenas
valores de 30H à 39H e 41H à 46H, que correspondem respectivamente aos números 0 à 9 e A
à F no padrão hexadecimal, que correspondem aos números 0 à 9 e 10 à 15 no padrão
decimal.

A quantidade de bits por cada palavra de dados sempre será igual a 10.

- 1 START bit, 7 DATA bits, SEM paridade, 2 STOP

- 1 START bit, 7 DATA bits, paridade PAR, 1 STOP

- 1 START bit, 7 DATA bits, paridade IMPAR, 1 STOP

O campo de checksum, usado para checar a integridade da mensagem enviada, é


gerada pelo método LRC.

4.4.2. Modo de transmissão RTU


Quando o dispositivo for configurado para este modo, para cada byte (8 bits) na
mensagem irá conter 2 caracteres hexadecimais de 4 bits.. A principal vantagem do modo RTU
em relação ao ASCII é a maior densidade de caracteres que é enviada numa mesma
mensagem, aumentando o desempenho da comunicação. Em relação à formação da palavra
de dados que comporá o conjunto de dados (framing) da mensagem, são adotados alguns
critérios.

A quantidade de bits por cada palavra de dados sempre será igual a 11.

- 1 START bit, 8 DATA bits, SEM paridade, 2 STOP

- 1 START bit, 8 DATA bits, paridade PAR, 1 STOP bits

- 1 START bit, 8 DATA bits, paridade IMPAR, 1 STOP bits

Paridade par é requerida, outros modos (paridade impar, sem paridade) podem ser
utilizados. No sentido de garantir maior compatibilidade com outros produtos é
recomendado suportar o modo sem paridade. O modo de paridade padrão deve ser paridade
par.

8 Redes Industriais
Como os caracteres são transmitidos serialmente:

Cada caracter é enviado nesta ordem (da esquerda para a direita). Bit menos
significante ... Bit mais significante.

O campo de checksum, usado para checar a integridade da mensagem enviada, é


gerada pelo método CRC.

4.5. Regras de Endereçamento ModBus

O espaço de endereçamento Modbus compreende 256 diferentes endereços.

O endereço 0 é reservado para broadcast. Todos os escravos devem reconhecer o


endereço de broadcast. O mestre Modbus não tem endereço específico, somente os nós
escravos devem ter um endereço. Os endereços devem ser únicos em um barramento
Modbus serial.

Redes Industriais 9
4.6. Formato de Mensagem

Na transmissão de uma mensagem Modbus, há identificadores de início e fim de


framing, específicos para cada um dos modos de transmissão. Este recurso permite aos
dispositivos da rede detectarem o início de uma mensagem, ler o seu campo de endereço e
determinar qual dispositivo está sendo endereçado (ou todos no caso do acesso ser tipo
broadcast) e finalmente, ler todo o conteúdo da mensagem até o seu final.

O protocolo de aplicação Modbus define uma simples unidade de dados de


protocolo (Protocol Data Unit – PDU) independentemente das camadas adjacentes.

As características do protocolo Modbus em um barramento ou topologia de rede


específica introduzem alguns campos adicionais ao PDU. O cliente que inicializa uma
transação Modbus constrói um Modbus PDU e, então adiciona campos para que construa o
PDU apropriado para uma dada comunicação.

Em uma comunicação Modbus sobre barramento serial, o campo endereço contém o


endereço de um determinado escravo. Como descrito anteriormente, os endereços válidos
para nós escravos estão na faixa de 0 a 247 decimal. Um mestre endereça um escravo
colocando o endereço do escravo no campo endereço da mensagem. Quando o escravo
retorna sua resposta, ele coloca o seu próprio endereço no campo endereço da mensagem de
resposta para permitir que o mestre identifique qual escravo está respondendo.

10 Redes Industriais
O código de função indica para o servidor que tipo de ação deve se executada. O
código de função pode ser seguido por um campo de dados que contém parâmetros da
requisição e da resposta.

O campo de verificação de erro é resultado de um cálculo de verificação de


redundância que é adicionado ao conteúdo da mensagem. Dois métodos para cálculo são
usados, dependendo do modo de transmissão que está sendo utilizado (RTU ou ASCII).

4.6.1.
1. Framing no Modo ASCII

Neste modo o início das mensagens são identificadas através do caracter dois pontos
( : ),, correspondente ao valor ASCII 3AH,, e o seu término é identificado pelo conjunto de
caracteres Retorno de Carro (Carriage Return – CR) e Avanço de Linha (Line Feed – LF),
respectivamente com correspondentes em ASCII aos valores 0DH e 0AH.

Os caracteres permitidos para transmissão para todo o resto da mensagem são 0 à 9


e A à F, respectivamente correspondentes aos caracteres ASCII 30H à 39H e 41H à 46H.
Abaixo é apresentada a tabela ASCII onde pode ser conferido os valores dos caracteres.

Redes Industriais 11
Os dispositivos da rede monitoram continuamente o barramento e quando é detectado
o caracter 3AH tem início a decodificação do próximo campo, que indica para quem é a
mensagem que está sendo transmitida.

Intervalos de até 1 segundo podem ocorrer entre o envio de cada caracter dentro de
uma mesma mensagem sendo que para intervalos maiores, o escravo assume ocorrência de
erro. A seguir é mostrado um framing típico no modo ASCII.

O exemplo a seguir utiliza valores em DECIMAL e respectivos em HEXA e ASCII,


usados para ilustrar a formação do framing de dados:

- endereço do indicador: 69 = 45H = 34H 35H

- função Modbus: leitura de registradores: 03 = 03H = 30H 33H

- registrador inicial a ser lido: 11 = 0BH – pela norma Modbus: 000AH = 30H 30H 30H
41H

- número total de registradores a serem lidos: 1 = 0001H = 30H 30H 30H 31H

- Checksum (LRC) gerado: 173 = ADH = 41H 44H

Para os valores acima será gerado o seguinte framing de dados:

4.6.2. Framing no Modo RTU

Diferentemente do modo ASCII, o modo RTU não possui bytes que indiquem início e

12 Redes Industriais
fim de framing. Para identificar estes campos, não deve haver nenhuma transmissão de dados
por um período mínimo, equivalente a 3.5 vezes o tamanho da palavra de dados.

Por exemplo, suponha que a taxa de transmissão seja de 19200 bps. Para esta taxa,
o tempo total para envio de 1 palavra de dados (11 bits) é de 572.9 us (11 x (1 / 19200))
portanto, para identificar um início e/ou término de framing, não deve haver transmissão por um
período mínimo de 2.005 ms (3.5 x 572.9 us).

Para o restante da mensagem são aceitos todos os caracteres hexadecimais.

Os dispositivos ficam monitorando o barramento e checando intervalos de silêncio


que, após detectados, dá início à recepção da mensagem, de maneira similar ao modo ASCII.
Após a recepção de toda a mensagem, deve ser gerado pelo mestre um intervalo silêncio
similar ao do início da mensagem, caracterizando o fim da mesma. A seguir é mostrado um
framing típico no modoRTU.

Os campos Endereço do Indicador e Função Modbus possuem um único byte ao


invés de 2 como no modo ASCII e outra particularidade está na sequência de envio dos bytes
de checksum da mensagem. O primeiro byte enviado é o menos significativo e depois o mais
significativo.

O exemplo a seguir utiliza os mesmos valores do exemplo empregado no modo


ASCII:

- endereço do indicador: 69 = 45H

- função Modbus: leitura de registradores: 03 = 03H

- registrador inicial a ser lido: 11 = 0BH – pela norma Modbus: 000AH

- número total de registradores a serem lidos: 1 = 0001H

- Checksum (CRC) gerado: 19627 = 4CABH – pela norma Modbus RTU = ABH 4CH

Redes Industriais 13
Para os valores acima será gerado o seguinte framing de dados:

4.7. Funções ModBus

Existem três categorias de códigos de funções Modbus disponíveis, os códigos ditos


públicos, os códigos definidos pelo fabricantes e os reservados, normalmente utilizados por
algumas empresas para registrar produtos, não disponíveis para uso público.

Serão descritas em detalhes apenas as funções da categoria pública para os modos


ASCII e RTU mas antes, é necessário saber como os dados são referenciados no protocolo
Modbus.

Os códigos variam de 1 a 255 (0x01 a 0xff), mas apenas a faixa de 1 a 127 (0x01 a
0x7f) é utilizada, já que o bit mais significativo é reservado para indicar respostas de exceção.
Normalmente, uma resposta inclui o código de função da requisição que lhe deu origem. No
entanto, em caso de falha, o bit mais significativo do código é ativado para indicar que o
conteúdo do campo de dados não é a resposta esperada, mas sim um código de diagnóstico.

14 Redes Industriais
Função 01 – Lê estado das saídas

Este código de função é utilizado para ler o estado de 1 a 2000 saídas contíguas de
um dispositivo remoto. A PDU do pedido especifica o endereço inicial (1ª saída) e o número de
saídas. A mensagem de resposta contém bits de dados correspondents aos estados das
saídas (1 bit para cada saída). O estado é indicado como: 1=Ligado, 0=Desligado. Se o
número de saídas não é um múltiplo de 8, eles serão preenchidos com “0” para completar um
múltiplo de 8.

Função 02 – Lê entradas discretas

Este código de função é utilizado para ler o estado de 1 a 2000 entradas discretas
contíguas de um dispositivo remoto. A PDU do pedido especifica o endereço inicial (1ª entrada)
e o número de entradas. A mensagem de resposta contém bits de dados correspondents aos

Redes Industriais 15
estados das entradas (1 bit para cada entrada). O estado é indicado como: 1=Ligado,
0=Desligado. Se o número de entradas não é um múltiplo de 8, eles serão preenchidos com “0”
para completar um múltiplo de 8.

Função 03 – Lê registradores internos

Este código de função é utilizado para ler o conteúdo de um bloco de registradore es


internos contíguos de um dispositivo remoto. A PDU do pedido especifica o endereço inicial (1ª
registrador) e o número de registradores. A mensagem de resposta contém 2 bytes de dados
para cada registrador. O primeiro byte contém os bits de ordem mais alta e o Segundo byte
contém os bits de ordem mais baixa.

Função 04 – Lê Registradores de Entrada (Entradas Analógicas)

Este código de função é utilizado para ler de 1 a aproximadamente 125 registradors


registradores de entrada (entradas analógicas) de um dispositivo remoto. A PDU do pedido
especifica o endereço inicial (1ª registrador) e o número de registradores. A mensagem de
resposta contém 2 bytes de dados para cada registrador. O primeiro byte contém os bits de
ordem mais alta e o Segundo byte contém os bits de ordem mais baixa.

Função 5 – Escreve em uma saída discreta

Este código de função é utilizado para escrever “0” ou “1” em uma única saída
discreta de um dispositivo remoto. O pedido de escrita especifica uma constante no campo de
dados para determinar a ação ON / OFF. O valor FF00h liga a saída e o valor 0000h a desliga.
Qualquer outro valor é inválido e consequentemente não afetará a saída. A PDU especifica o
endereço da saída a ser manipulada.

16 Redes Industriais
Função 6 – Escreve em um registrador interno

Este código de função é utilizado para escrever em um registrador interno de um


dispositivo remoto. A PDU do pedido especifica o endereço do registrador a ser escrito. A
mensagem de resposta (sem erro) é um eco do pedido, enviada após a execução do comando.

Função 15 – Escreve em saídas

Este código de função é utilizado para escrever (FORCE) em uma série de saídas
contíguas de um dispositivo remoto. As saídas recebem os valores “1” ON e “0” OFF. A PDU
do pedido especifica o endereço do registrador a ser escrito. A mensagem de resposta contém
2 bytes de dados para cada registrador. O primeiro byte contém os bits de ordem mais alta e o
Segundo byte contém os bits de ordem mais baixa.

Função 16 – Escreve em registradores de retenção

Este código de função é utilizado para escrever em um bloco de registradores


contíguos de um dispositivo remoto. Os valores a serem escritos nos registradores são
especificados no campo de dados (2 bytes por registrador).

Função 20 – Leitura de arquivo de registros

Este código de função é utilizado para realizar a leitura de um arquivo (registros) de


um dispositivo remoto. Os pedidos de dados (comprimento) são providos em termos de bytes e
a resposta é provida em termos de registros. Um arquivo é um conjunto de registros. Cada
arquivo contém 10000 registros, endereçados de 0000 à 9999 em decimal ou 0000 à 270Fh.
Por exemplo, o registro 12 é endereçado como 12.

Redes Industriais 17
Função 21 – Escrita em arquivo de registros

Este código de função é utilizado para escrever em um arquivo (registros) de um


dispositivo remoto. Os pedidos de dados (comprimento) são providos em termos de bytes e a
resposta é provida em termos de words. Um arquivo é um conjunto de registros.

Função 22 – Máscara lógica com registrador

Este código de função é utilizado para modificar o conteúdo de um registrador de


retenção específico através de operações de mascaramento com o conteúdo do registrador.
Esta função pode ser utilizada para posicionar (“1”) ou zerar (“0”) bits individuais do registrador.

Função 23 – Leitura / Escrita em registradores.

Esta função estabelece uma operação de leitura e uma de escrita em uma única
transação. O pedido especifica o endereço inicial e o número de registradores de retenção a
serem lidos e endereço inicial e número de registradores a serem escritos. A resposta normal
(sem erro) contém os dados do grupo de registradores que foram lidos.

Função 43 – Leitura de Identificação do dispositivo

Esta função permite ler a identificação e informações adicionais relativas às


características físicas e funcionais de um dispositivo remoto.

18 Redes Industriais

Potrebbero piacerti anche