Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
2 Redes Industriais
acesso ao meio por HDLC (High Level Data Link Control ).
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 .
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.
6 Redes Industriais
4.4. Modos de Transmissã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.
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.
A quantidade de bits por cada palavra de dados sempre será igual a 11.
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.
Redes Industriais 9
4.6. Formato de Mensagem
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.
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.
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.
- 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
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).
- 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:
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.
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.
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 (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.
Redes Industriais 17
Função 21 – Escrita em arquivo de registros
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.
18 Redes Industriais