Início - Aquisição de Dados - Desmistificando o endereçamento MODBUS RTU

Desmistificando o endereçamento MODBUS RTU

Leandro Roisenberg

Introdução:

MODBUS RTU é um protocolo de comunicação amplamente utilizado em automação industrial, permitindo a troca de dados sem interrupções entre dispositivos mestre e escravo. Um aspecto essencial do MODBUS RTU é o esquema de endereçamento, que envolve tanto a Unidade de Dados de Protocolo (PDU) quanto os endereços lógicos. Neste post, exploraremos como a apresentação negociada da PDU simplifica a comunicação e o processo de conversão entre endereços PDU e endereços lógicos para os diferentes tipos de registradores.

É importante esclarecer desde o início que o endereçamento MODBUS é frequentemente mal compreendido, pois a documentação dos dispositivos, os softwares SCADA e o próprio protocolo utilizam representações diferentes dos mesmos dados. Este artigo foca em como o endereçamento funciona no nível do protocolo e como os endereços lógicos (amigáveis para humanos) são derivados dele.

Apresentação da Unidade de Dados de Protocolo (PDU):

No MODBUS RTU, a PDU (Unidade de Dados de Protocolo) é uma parte fundamental do quadro de comunicação utilizado para trocar dados entre os dispositivos mestre e escravo. A PDU é estruturada para incluir os seguintes componentes:

Código de Função (1 byte)
O código de função serve como um comando que instrui o dispositivo escravo sobre o tipo de ação que o dispositivo mestre deseja executar. É um valor de um único byte que indica operações como leitura de dados, escrita de dados ou solicitação de informações de diagnóstico.

Do ponto de vista do endereçamento, o Código de Função define implicitamente o tipo de registrador (coils, entradas discretas, registradores de entrada ou registradores de retenção). Isso significa que o mesmo valor de endereço de registrador pode se referir a dados completamente diferentes dependendo do Código de Função utilizado.

Endereço do registrador (2 bytes)
O campo de endereço do registrador especifica o ponto de partida do registrador na memória do dispositivo escravo. É um valor de dois bytes que ajuda o dispositivo mestre a identificar a localização dos dados a serem acessados ou manipulados. Dentro da definição da PDU, o MODBUS define o endereço de cada elemento de dado variando de 0 a 65535.

Esse endereço é sempre baseado em zero e é o único endereço que é realmente transmitido no meio físico.

Campos de dados adicionais (até 250 bytes)
Dependendo do código de função específico, a PDU pode incluir campos adicionais com comprimentos variáveis, estendendo-se até 250 bytes. Esses campos adicionais carregam os dados necessários para executar a operação solicitada. Por exemplo, ao ler dados, os campos adicionais podem incluir o número de registradores a serem lidos, enquanto a escrita de dados exigiria os valores a serem gravados nos registradores.

Desmistificando o endereçamento MODBUS RTU - PDU do MODBUS RTU

Ao incluir o código de função, o endereço do registrador e os campos adicionais na PDU, o MODBUS RTU garante uma troca de dados eficiente e confiável entre os dispositivos mestre e escravo.

Entendendo os quatro tipos de registradores

O MODBUS RTU define quatro tipos de registradores, cada um com finalidades distintas na automação industrial:

Coils (Saídas discretas)
Coils representam saídas binárias que podem ser controladas pelo dispositivo mestre. Eles possuem dois estados: LIGADO (1) e DESLIGADO (0). Coils são lidos e escritos pelo mestre, permitindo o controle de diversos processos industriais.

Entradas discretas
As entradas discretas fornecem dados de entrada binários ao dispositivo mestre. Esses registradores são somente leitura para o mestre e geralmente representam o estado de sensores ou chaves.

Registradores de entrada
Os registradores de entrada armazenam dados analógicos ou dados recebidos de sensores. Esses registradores são somente leitura para o mestre e fornecem informações valiosas sobre o ambiente externo.

Registradores de retenção
Os registradores de retenção funcionam como um canal de comunicação bidirecional, permitindo operações de leitura e escrita. São comumente usados para controlar dispositivos escravos e armazenar dados temporários.

Um detalhe fundamental, mas frequentemente negligenciado, é que esses quatro tipos de registradores representam quatro espaços de endereçamento independentes.
Como resultado, é perfeitamente válido que o mesmo número de registrador (por exemplo, endereço 13) exista simultaneamente como coil, entrada discreta, registrador de entrada e registrador de retenção.
O tipo de registrador não é determinado pelo endereço em si, mas pelo Código de Função utilizado na requisição MODBUS.

Calculando Endereços Lógicos a partir de Endereços PDU

O protocolo de aplicação MODBUS define com precisão as regras de endereçamento da PDU. Em uma PDU MODBUS, cada dado é endereçado de 0 a 65535.
Ele também define claramente um modelo de dados MODBUS composto por 4 blocos que compreendem vários elementos numerados de 1 a n.

Estrutura e endereçamento do bloco de dados MODBUS RTU

Para converter os endereços PDU em endereços lógicos para Coils, Entradas Discretas, Registradores de Entrada e Registradores de Retenção, aplica-se um offset. A fórmula de conversão é a seguinte:

Endereço Lógico = Endereço PDU do Registrador + Offset

ou

Endereço PDU do Registrador = Endereço Lógico – Offset

De acordo com modbus.org:

“Os offsets (pré-mapeamento) entre o modelo de dados MODBUS e a aplicação do dispositivo são totalmente específicos do fabricante.”

Na prática, porém, offsets “convencionais” amplamente aceitos são frequentemente utilizados na indústria, puramente para fins de legibilidade humana, mesmo que não façam parte do próprio protocolo MODBUS.

Exemplos típicos incluem:

  • 1 ou 0 para coils
  • 10001 para entradas discretas
  • 30001 para registradores de entrada
  • 40001 para registradores de retenção

Representações de endereços lógicos e offsets

Por exemplo, em vez de se referir a um item como registrador de retenção 14 no endereço 13, o manual do dispositivo usaria as seguintes representações:

  • 4014 (offset = 4001)
  • 40014 (offset = 40001)
  • 400014 (offset = 400001).

Em cada caso, o primeiro número, 4, indica registradores de retenção. A escolha entre 4XXX, 4XXXX e 4XXXXX depende do espaço de endereçamento do dispositivo. Por exemplo, se todos os 65536 registradores estiverem em uso, a notação 4XXXXX é utilizada, permitindo um intervalo de 400001 a 465536. Por outro lado, se apenas alguns registradores forem utilizados, a prática comum é usar o intervalo de 4001 a 4999.

Em documentações de vários fabricantes, o endereço de um registrador de retenção pode ser representado de múltiplas formas, o que pode gerar confusão:

  • Endereço PDU 13
  • Endereço lógico 4014
  • Endereço lógico 40014
  • Endereço lógico 400014

Independentemente da representação do endereço lógico utilizada, a comunicação MODBUS RTU real sempre se baseia exclusivamente no endereço PDU combinado com o Código de Função.

Seguem alguns exemplos:

  • Para endereço lógico 4014 e offset 4001 -> Endereço PDU = 4014 – 4001 = 13
  • Para endereço lógico 40014 e offset 40001 -> Endereço PDU = 40014 – 40001 = 13
  • Para endereço lógico 400014 e offset 400001 -> Endereço PDU = 400014 – 400001 = 13

Caso inverso: do PDU para o endereço lógico

A situação oposta também pode ocorrer. Na documentação do fabricante para um registrador de entrada, um endereço PDU de 33 pode ser utilizado. No entanto, o software SCADA trabalha com o formato lógico 3XXXX ou 3XXXXX para registradores de entrada.

Nesse caso, o offset é 30001 ou 300001, dependendo da convenção de endereçamento.

Por exemplo, com um offset de 300001:

Endereço lógico = Endereço PDU + Offset = 33 + 300001 = 300034

Exemplos de dispositivos reais

Na documentação do medidor de energia iEM3250, a Schneider Electric utiliza endereços de registradores de retenção como 30, 50, 70, etc. É evidente que o offset é 0, o que significa que os endereços apresentados são endereços PDU.

Lista de registradores e mapa de endereçamento MODBUS RTU

Para ler o “Número de série” usando um software SCADA que trabalha com endereços lógicos no formato 4XXXXX:

Endereço lógico = Endereço PDU + Offset = 130 + 400001 = 400131

Na documentação do medidor de potência e energia PR720, a Yokogawa utiliza o formato 4XXXX para registradores de retenção.

Lista e exemplo de mapeamento de endereços de dados MODBUS RTU

É evidente que o offset aqui é 40001.

O endereço PDU para “Valor do limite superior de corrente de demanda” é:

Endereço PDU = 40106 – 40001 = 105

Conclusão

Compreender o processo de conversão entre endereços PDU e endereços lógicos é fundamental para uma comunicação eficaz em sistemas de automação industrial baseados em MODBUS RTU.

Igualmente importante é entender que o MODBUS utiliza múltiplos espaços de registradores independentes e que o Código de Função seleciona implicitamente qual espaço de registradores está sendo endereçado.
Os formatos de endereços lógicos e os offsets são convenções humanas sobrepostas ao protocolo e não afetam os dados reais transmitidos no meio físico.

Ao aplicar os offsets corretos e interpretar os endereços no contexto do Código de Função apropriado, engenheiros e operadores podem otimizar a troca de dados e garantir operações industriais sem interrupções.

Leandro Roisenberg

ARTIGOS RELACIONADOS

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.