Dominando o Modbus Poll para Simulação de Master Modbus

Fundamentos do Protocolo Modbus

1.1 O que é Modbus?

Modbus é um protocolo de comunicação serial mestre-escravo, criado em 1979 pela Modicon (agora Schneider Electric). É um dos protocolos mais amplamente utilizados na automação industrial para troca de dados entre CLPs, sensores, medidores, inversores de frequência e outros dispositivos.

Características Principais:

  • Arquitetura Mestre-Escravo: Um mestre inicia requisições ativamente, enquanto múltiplos escravos respondem passivamente.
  • Simples e Eficiente: Estrutura de trama concisa, fácil de implementar.
  • Aberto e Gratuito: Especificações do protocolo são públicas, sem custos de licenciamento.
  • Multiplataforma: Suporta comunicação serial (RS485/RS232) e Ethernet (TCP/IP).

1.2 Modos de Transmissão Modbus

Modo Camada Física Codificação Verificação Características
Modbus RTU RS485 / RS232 Binária CRC-16 Mais comum, compacto e eficiente.
Modbus ASCII RS485 / RS232 Texto (caracteres hexadecimais) LRC Alta legibilidade, baixa eficiência, raramente usado.
Modbus TCP Ethernet (TCP/IP) Binária Nenhuma (TCP possui verificação própria) Alta velocidade, pode atravessar redes.

1.3 Principais Diferenças entre Modbus TCP e RTU

Dimensão Modbus RTU Modbus TCP
Camada Física Serial RS485/RS232 Ethernet TCP/IP
Início da Trama Intervalo de silêncio de 3.5 caracteres Cabeçalho MBAP (7 bytes)
Verificação CRC-16 (2 bytes) Nenhuma (depende da verificação TCP e retransmissões)
Conexão Sem conexão, half-duplex Com conexão, full-duplex, conexão persistente
Endereço Endereço do Escravo (1 byte) Unit ID (1 byte no MBAP)
Tamanho Máximo da Trama ≤ 256 bytes ≤ 1492 bytes (limitado por MTU)
Taxa Típica 9600 ~ 115200 bps 10/100/1000 Mbps
Nós Máximos 32 (expansível para 247) Teoricamente ilimitado
Distância de Transmissão ≤ 1200 metros (sem repetidor) Atravessa redes e campi.

1.4 Quatro Tipos de Registradores Modbus

Modbus mapeia os dados do dispositivo em 4 tipos de registradores:

Tipo de Registrador Faixa de Endereço do CLP Permissões Leitura/Escrita Largura de Dados Uso Típico
Coils (Bobinas) 00001 ~ 09999 Leitura/Escrita 1 bit Válvulas solenoides, LEDs, saídas de relé.
Discrete Inputs (Entradas Discretas) 10001 ~ 19999 Somente Leitura 1 bit Entradas digitais, status de fim de curso.
Input Registers (Registradores de Entrada) 30001 ~ 39999 Somente Leitura 16 bits Entradas analógicas (temperatura, pressão).
Holding Registers (Registradores de Retenção) 40001 ~ 49999 Leitura/Escrita 16 bits Configuração de parâmetros, saídas analógicas (AO), valores de configuração.

Entendimento Chave: Endereços do CLP (ex: 40001) são "endereços lógicos" para humanos. Na comunicação real, endereços de offset baseados em zero são usados. Ex: 40001 → offset 0, 40010 → offset 9.

1.5 Tabela de Códigos de Função Modbus

O código de função é um byte central na trama de requisição Modbus, determinando "o que ler/escrever".

Código de Função (Hex) Código de Função (Dec) Nome Objeto da Operação Tipo de Operação
0x01 01 Read Coils Bobinas (0xxxx) Leitura (bit)
0x02 02 Read Discrete Inputs Entradas Discretas (1xxxx) Leitura (bit)
0x03 03 Read Holding Registers Registradores de Retenção (4xxxx) Leitura (palavra)
0x04 04 Read Input Registers Registradores de Entrada (3xxxx) Leitura (palavra)
0x05 05 Write Single Coil Bobinas (0xxxx) Escrita (bit único)
0x06 06 Write Single Register Registradores de Retenção (4xxxx) Escrita (palavra única)
0x0F 15 Write Multiple Coils Bobinas (0xxxx) Escrita (múltiplos bits)
0x10 16 Write Multiple Registers Registradores de Retenção (4xxxx) Escrita (múltiplas palavras)

Regra de Resposta de Exceção: O escravo retorna código de função + 0x80, com um código de exceção nos dados. Ex: requisição com código de função 0x03, resposta 0x83 indica exceção.

1.6 Estrutura da Trama Modbus

Trama Modbus RTU

┌────────┬──────────┬──────────┬──────────┬──────────┐
│ Endereço │ Código de Função │ Campo de Dados │ CRC Baixo │ CRC Alto │
│ 1 Byte  │ 1 Byte      │ N Bytes    │ 1 Byte    │ 1 Byte    │
└────────┴──────────┴──────────┴──────────┴──────────┘
  ↑ Pelo menos 3.5 caracteres de silêncio antes da trama
    

Trama Modbus TCP (MBAP + PDU)

┌────────────┬────────────┬──────────┬──────────┬──────────────┐
│ Identif. Transação │ Identif. Protocolo │ Campo de Comprimento │ Identif. Unidade │ PDU (Código de Função + Dados) │
│ 2 Bytes      │ 2 Bytes (=0)   │ 2 Bytes      │ 1 Byte      │ N Bytes            │
└────────────┴────────────┴──────────┴──────────┴──────────────┘
    

1.7 Tabela de Códigos de Exceção Modbus

Código de Exceção (Hex) Nome Significado
0x01 Illegal Function Código de função não suportado.
0x02 Illegal Data Address Endereço de dados inválido (endereço inexistente).
0x03 Illegal Data Value Valor de dados inválido (fora da faixa permitida).
0x04 Slave Device Failure Falha no dispositivo escravo.
0x05 Acknowledge Confirmado, mas o processamento não foi concluído.
0x06 Slave Busy Escravo ocupado, incapaz de responder.

Operação Inicial com Modbus Poll

2.1 Introdução ao Software

Modbus Poll, desenvolvido pela Witte Software, é um simulador de mestre Modbus essencial para engenheiros de automação industrial na depuração de dispositivos escravos Modbus.

  • Suporta Modbus RTU / ASCII / TCP / UDP.
  • Permite múltiplas janelas para monitorar diferentes escravos ou áreas de registro simultaneamente.
  • Oferece captura de pacotes, registro de dados e gráficos em tempo real.
  • Versão mais recente: v13.2.0 (suporta comunicação segura Modbus TLS).

Download oficial: www.modbustools.com
Restrições de avaliação: desconexão automática após 10 minutos, impossibilidade de estabelecer conexões após 30 dias.

2.2 Instalação e Primeira Execução

  1. Baixe a versão correspondente do site oficial (32 bits / 64 bits / ARM64).
  2. Execute o instalador e siga as instruções.
  3. Na primeira execução, uma janela de registro aparecerá. Clique em "Register Later" para usar a versão de avaliação.
  4. Recomenda-se instalar Modbus Poll e Modbus Slave em diretórios diferentes para evitar a sobreposição de arquivos de configuração.

2.3 Passo 1: Estabelecer Conexão

Conexão Serial (RTU/ASCII)

Caminho: Connection → Connect... (F3)

Parâmetro Valor Típico Descrição
Connection Type Serial Seleciona conexão serial.
Serial Port COM3 (exemplo) Selecione a porta serial correta.
Baud Rate 9600 Valores comuns: 9600 / 19200 / 115200.
Parity None None / Even / Odd.
Data Bits 8 Geralmente 8.
Stop Bits 1 Geralmente 1.
Mode RTU 99% dos dispositivos usam RTU; dispositivos mais antigos podem usar ASCII.
Timeout 1000 ms Tempo limite de resposta; pode ser estendido para 2000ms em redes complexas.
Scan Rate 1000 ms Intervalo de polling.

Conexão TCP

Caminho: Connection → Connect... → Selecione TCP/IP

Parâmetro Valor Típico Descrição
IP Address 192.168.1.100 Endereço IP do dispositivo escravo.
Port 502 Porta padrão do Modbus TCP.
Timeout 1000 ms Tempo limite de conexão.
IPv4 / IPv6 IPv4 Geralmente IPv4.

Quick Connect

Connection → Quick Connect (F5): Útil para configurações usadas com frequência, permitindo conexão rápida com um clique.

2.4 Passo 2: Configurar Janela de Leitura/Escrita

Após conectar com sucesso, configure "o que ler e de onde ler":

Caminho: Setup → Read/Write Definition... (F8)

Parâmetro Descrição Exemplo
Slave ID Endereço do escravo (1-247). 1
Function Código de função. 03 (Ler Registradores de Retenção).
Address Endereço inicial (endereço de offset, começando em 0!). 0 (corresponde ao endereço CLP 40001).
Quantity Número de registradores a ler. 10
Scan Rate Período de polling (milissegundos). 1000
Alias Nome para o registrador, para facilitar a memorização. "Sensor de Temperatura"

Fórmula de Conversão de Endereço: Endereço CLP 40001 → Preencher 0, Endereço CLP 40010 → Preencher 9. Ou seja, Endereço CLP - 40001 = Endereço de Offset.

2.5 Operações Básicas

Leitura de Dados

Após a conexão e configuração da janela de leitura/escrita, o Modbus Poll começa a consultar automaticamente. A janela principal exibe os dados retornados pelo escravo em tempo real.

Escrita de Dados

  • Dê um duplo clique em um valor na área de dados → uma caixa de edição aparecerá → digite o novo valor → clique OK.
  • Esta funcionalidade é extremamente útil para ajustar parâmetros do dispositivo, como modificar um valor de setpoint de temperatura diretamente.

Visualização de Mensagens de Comunicação

Display → Communication...: Abre uma janela que exibe os dados brutos hexadecimais enviados e recebidos em tempo real, juntamente com informações decodificadas. É a principal ferramenta para solucionar problemas.

Gráfico em Tempo Real

Display → Real Time Charting: Plota os dados dos registradores como curvas em tempo real. Ideal para observar tendências de variação de dados. Clique com o botão direito em um dado → Link To Chart para associá-lo.

Funcionalidades Avançadas do Modbus Poll

3.1 Monitoramento Paralelo com Múltiplas Janelas

O Modbus Poll suporta a interface MDI (Multiple Document Interface), permitindo:

  • Abrir múltiplas abas de conexão simultaneamente.
  • Cada janela pode ter configurações independentes de Slave ID, código de função e faixa de endereço.
  • Monitorar múltiplos dispositivos ou diferentes blocos de registradores do mesmo dispositivo ao mesmo tempo.

Cenário Prático: Um CLP pode ter centenas de registradores distribuídos em diferentes áreas (temperatura, pressão, fluxo, status). Usar várias janelas para monitorar essas áreas separadamente torna a visualização clara.

3.2 Formatos de Dados e Exibição

Clique com o botão direito na área de dados → Format para alterar o formato de exibição:

Formato Descrição Cenário de Uso
Signed Inteiro de 16 bits com sinal. Temperaturas (podem ser negativas).
Unsigned Inteiro de 16 bits sem sinal. Contadores, códigos de status.
Float Ponto flutuante de precisão simples (ocupa 2 registradores). Valores analógicos precisos.
Hex Hexadecimal. Visualizar dados brutos, comparar com a documentação do protocolo.
ASCII Caractere ASCII. Identificadores de dispositivo, números de versão.
Binary Binário. Verificar status de bits.

Tratamento de Endianness: Se dados de 32 bits (Float/Long) forem exibidos incorretamente, tente:

  • Swap Bytes: Troca a ordem dos bytes.
  • Swap Words: Troca a ordem das palavras (pares de bytes).

Ordem de Bytes Comum:

Nome Descrição Cenário Típico
ABCD (Big-endian) Byte mais significativo primeiro. Modbus padrão.
DCBA (Little-endian) Byte menos significativo primeiro. Comum em sistemas x86.
BADC Ordem de bytes trocada. Alguns sistemas DCS.

3.3 Registro e Exportação de Dados

Registro em Excel

Setup → Excel Log...: Configura o registro automático de dados em um arquivo Excel, ideal para análise de tendências de longo prazo.

Configuração Recomendação
Intervalo de Amostragem ≥ 1 segundo.
Formato de Registro CSV (para facilitar análise posterior).
Condição de Ativação Registrar apenas quando os dados mudam para reduzir o tamanho do arquivo.

Registro em Texto (Log)

Setup → Log...: Configura o log de comunicação, registrando todas as mensagens enviadas e recebidas.

3.4 Scan de Escravos e Endereços

Scan de Escravos (Slave Scan)

Functions → Slave Scan...: Escaneia automaticamente dispositivos escravos em uma faixa de endereço especificada para descobrir rapidamente quais dispositivos estão online no barramento.

Scan de Endereços (Address Scan)

Functions → Address Scan...: Para um escravo especificado, escaneia quais registradores têm dados válidos, ajudando a mapear rapidamente os dados do dispositivo.

Essas funções são muito úteis quando o mapeamento de dados do dispositivo é desconhecido, agindo como um "detector automático".

3.5 Test Center (Centro de Teste)

Functions → Test Center...: Permite editar manualmente comandos hexadecimais e enviá-los, útil para:

  • Enviar códigos de função incomuns.
  • Construir casos de teste de exceção.
  • Controlar precisamente o conteúdo de cada byte.

3.6 Regras de Cores (Colors)

Setup → Colors...: Define regras de cor condicionais para os dados, por exemplo:

  • Temperatura > 80°C → Fundo vermelho (Alarme).
  • Tempreatura < 20°C → Fundo azul (Indicação de baixa temperatura).
  • Erro de comunicação → Fundo amarelo.

Resumo de Pontos de Conhecimento e Armadilhas

4.1 A Armadilha do Offset de Endereço ⚠️

Este é o ponto mais propenso a erros, sem dúvida!

Cenário Manual do Dispositivo Indica Preencher no Modbus Poll Explicação
Endereço CLP 40001 40001 0 40001 - 40001 = 0
Endereço CLP 40010 40010 9 40010 - 40001 = 9
Endereço CLP 40100 40100 99 40100 - 40001 = 99
Endereço CLP 30001 30001 0 30001 - 30001 = 0
Endereço do Protocolo 0x0063 0x0063 99 Converter hexadecimal diretamente para decimal.

Lembre-se: Modbus Poll usa endereços de offset baseados em zero, enquanto os manuais de dispositivos frequentemente usam endereços CLP baseados em um.

4.2 Código de Função Incompatível com Tipo de Registrador

Exemplo de Erro Procedimento Correto
Ler 30001 (Registrador de Entrada) com código de função 03. Use código de função 04.
Ler 40001 (Registrador de Retenção) com código de função 04. Use código de função 03.
Ler 00001 (Bobina) com código de função 03. Use código de função 01.
Tentar escrever em um Registrador de Entrada (3xxxx). Impossível - Registradores de Entrada são somente leitura.

Retorno de Erro: Illegal Function (0x01) ou Illegal Data Address (0x02).

4.3 Problemas de Endianness (Ordem de Bytes)

Sintoma: Dados de ponto flutuante ou inteiros longos de 32 bits parecem "números aleatórios".

Causa: Diferentes dispositivos usam ordens de bytes distintas para dados multi-byte.

Método de Diagnóstico:

  1. Mude o formato para Hex e observe os bytes brutos.
  2. Tente marcar/desmarcar Swap Bytes / Swap Words.
  3. Consulte a documentação do dispositivo sobre a ordem de bytes.

Caso Clássico:

Valor real de temperatura do dispositivo: 25.5°C
Hexadecimal do ponto flutuante de precisão simples IEEE 754: 0x41CC0000

Se a ordem de bytes estiver incorreta, pode ser exibido como:
- Swap Bytes: 0xCC410000 → Valor completamente diferente.
- Swap Words: 0x000041CC → Valor muito pequeno.
   

4.4 Armadilhas Comuns de Comunicação Serial

Armadilha Manifestação Solução
Fiação A/B invertida Comunicação completamente falha. Inverta os fios A/B do RS485.
Taxa de Baud incompatível Timeout contínuo ou caracteres ilegíveis. Verifique cada parâmetro da taxa de baud do dispositivo.
Porta COM ocupada Impossibilidade de abrir a porta. Feche outros programas de porta serial (ex: software de programação CLP).
Número da porta COM flutuante O número da porta muda após reconectar o dispositivo. No Gerenciador de Dispositivos do Windows, fixe o número da porta COM manualmente.
Falta de resistor de terminação Comunicação instável em longas distâncias, erros intermitentes. Adicione um resistor de terminação de 120Ω nas extremidades do barramento RS485.
Conversor não isolado Erros contínuos como "Insufficient bytes" perto de inversores de frequência. Use um conversor USB-RS485 com isolamento.
Paridade inconsistente Erro de verificação CRC. Certifique-se de que as configurações de Paridade no Poll e no dispositivo sejam idênticas.

4.5 Armadilhas Comuns de Comunicação TCP

Armadilha Manifestação Solução
Firewall bloqueando Tempo limite de conexão. Permita a porta 502 ou desabilite temporariamente o firewall para testes.
IP fora da mesma sub-rede Ping falha. Verifique os endereços IP e máscaras de sub-rede.
Porta diferente de 502 Conexão recusada. Alguns dispositivos usam portas não padrão (ex: 5020, 1502); consulte o manual.
Escravo não iniciado Conexão recusada. Verifique se o dispositivo escravo está ligado e o serviço Modbus está habilitado.
Confusão IPv4/IPv6 Falha na conexão. Confirme se a versão do protocolo correto está selecionada.

4.6 Configuração Inadequada da Frequência de Polling

Problema Causa Recomendação
Scan Rate muito rápido (ex: 10ms) Escravo não consegue processar, retorna Slave Busy. Ajuste com base no tempo de resposta do dispositivo; geralmente 100~1000ms.
Scan Rate muito lento (ex: 10s) Dados não atualizados em tempo hábil, perdas de variações instantâneas. Dados críticos ≤ 500ms, outros dados 1-2 segundos.
Quantidade excessiva de registradores lidos de uma vez Tempo limite de resposta, dados truncados. Ler no máximo 100 registradores por vez (recomendado 10-50).

4.7 Considerações sobre Operações de Escrita

  • Escrever um único registrador (código de função 06): Dê um duplo clique no valor para modificar.
  • Escrever múltiplos registradores (código de função 16): Preste atenção ao formato e ordem de bytes dos dados.
  • Escrever bobinas (código de função 05): ON = FF00, OFF = 0000; outros valores são inválidos.
  • Endereço de Broadcast (Slave ID = 0): Suporta apenas operações de escrita (códigos de função 06/16), não leitura.

4.8 Dica de Depuração com Porta Serial Virtual

Use o VSPD (Virtual Serial Port Driver) para criar pares de portas seriais virtuais. Combinado com o simulador Modbus Slave, permite a depuração sem hardware:

[Modbus Poll] ←→ COM10 ←→ COM11 ←→ [Modbus Slave]
   

Vantagens:

  • Ambiente de teste sem custo de hardware.
  • Detecção antecipada de problemas de compatibilidade de protocolo.
  • Simulação de vários cenários de exceção.

Perguntas Frequentes (FAQ)

Q1: Modbus Poll exibe "Timeout" após conectar ao dispositivo. Como depurar?

R: Verifique na seguinte ordem:

  1. Camada Física: Verifique a fiação (A/B do RS485 invertidos? Cabo de rede conectado?).
  2. Parâmetros: Verifique se a taxa de baud, bits de dados, bits de parada e paridade correspondem ao dispositivo.
  3. Endereço: Confirme se o Slave ID está correto (muitos dispositivos usam o padrão 1).
  4. Camada de Rede (TCP): Ping o IP do dispositivo para confirmar conectividade de rede; verifique se o firewall permite a porta 502.
  5. Status do Dispositivo: Confirme se o dispositivo está ligado e em estado comunicável.
  6. Aálise de Pacotes: Abra Display → Communication para verificar se há alguma troca de dados.

Q2: Por que os dados lidos são todos 0 ou parecem aleatórios?

R: Quatro causas comuns:

  1. Erro de Offset de Endereço: A causa mais provável. O manual indica 40001, mas o campo Address no Poll deve ser 0, não 40001.
  2. Código de Função Incorreto: Usar 03 para ler a área de 3xxxx (deveria ser 04).
  3. Ordem de Bytes Incorreta: Para dados de 32 bits, tente Swap Bytes / Swap Words.
  4. Dispositivo Não Operando: O dispositivo escravo pode não ter dados reais e retorna 0.

Q3: O que significa o erro "Illegal Function"?

R: Este é um código de exceção retornado pelo escravo (0x01), indicando que o escravo não suporta o código de função solicitado.

Possíveis Causas:

  • O dispositivo é somente leitura e não suporta códigos de função de escrita (05/06/16).
  • Certos blocos de registradores são desabilitados para escrita no nível de hardware.
  • Código de função incompatível com o tipo de registrador (ex: usar 03 para ler a área 1xxxx).

Q4: Modbus RTU e Modbus TCP podem se conectar diretamente?

R: Não diretamente, mas podem ser interligados através de um conversor de protocolo (gateway):

[Mestre Modbus TCP] ←→ [Gateway (TCP para RTU)] ←→ [Escravo Modbus RTU]
   

O gateway é responsável por:

  • Lado TCP: Atua como um servidor para receber requisições TCP.
  • Lado RTU: Converte para tramas RTU e envia para o dispositivo serial.
  • Preste atenção à configuração da ordem de bytes e tempos limite.

Q5: Por que não consigo escrever em um registrador usando o código de função 06 (escrever um único registrador)?

R: Verifique:

  1. Confirme se o registrador é gravável (registradores de retenção 4xxxx são graváveis, registradores de entrada 3xxxx são somente leitura).
  2. Confirme se o valor de escrita está dentro da faixa permitida (alguns registradores têm limites máximos).
  3. Confirme se o Slave ID está correto.
  4. Verifique a janela de Communication para ver se há códigos de exceção retornados.
  5. Alguns dispositivos podem exigir um comando de "salvar" (como escrever em um registrador específico) após a escrita para persistir a configuração.

Q6: Qual o significado do "endereço de broadcast 0" no Modbus?

R: Slave ID = 0 é o endereço de broadcast, com as seguintes características:

  • Todos os escravos recebem e processam a requisição.
  • Suporta apenas operações de escrita (códigos de função 06, 16), não leitura.
  • Os escravos não retornam resposta; o mestre assume que a operação foi concluída após o envio.
  • Uso típico: Escrever o mesmo parâmetro em múltiplos dispositivos simultaneamente, disparar movimento síncrono em múltiplos dispositivos.

Q7: O que significam Tx, Err, ID, F, SR no Modbus Poll?

R:

  • Tx (Transmission): Número total de tramas de requisição enviadas.
  • Err (Error): Contador de erros de comunicação.
  • ID (Slave ID): Endereço do escravo atualmente conectado.
  • F (Function Code): Código de função em uso.
  • SR (Scan Rate): Taxa de polling atual (em milissegundos).

Q8: Quantos dispositivos Modbus podem ser conectados a um barramento RS485 no máximo?

R:

  • Valor Teórico: 32 dispositivos (limitado pela capacidade de acionamento do padrão RS485).
  • Solução de Expansão: Use repetidores RS485; cada repetidor pode expandir mais 32 dispositivos.
  • Recomendação Prática: Considerando a qualidade do sinal e a manutenção, não mais que 16 dispositivos por barramento é recomendado.
  • Faixa total de endereços dos dispositivos: 1 a 247.

Q9: Como determinar se um dispositivo suporta Modbus TCP?

R:

  1. Verifique a placa de identificação ou manual do dispositivo por "Modbus TCP" ou interface "Ethernet".
  2. Procure por uma porta de rede RJ45 no dispositivo.
  3. Acesse o menu de configuração do dispositivo e procure por configurações relacionadas ao servidor TCP.
  4. Use Ping para testar a alcançabilidade do IP do dispositivo.

Q10: Um número de ponto flutuante de 32 bits ocupa 2 registradores. Qual deve ser o valor de Quantity ao ler?

R: Se você quiser ler 1 número de ponto flutuante (que ocupa 2 registradores de 16 bits), defina Quantity como 2.

De forma geral: N números de ponto flutuante → Quantity = N × 2.

Melhores Práticas de Engenharia

6.1 Gerenciamento Padronizado de Configurações

Arquivo de Configuração do Dispositivo

Crie um arquivo de configuração independente para cada dispositivo:

## Dispositivo: Sensor de Temperatura Marca XX
- Modelo: XXX-1000
- Comunicação: Modbus RTU
- Parâmetros Seriais: 9600 / 8 / N / 1
- Slave ID: 3
- Mapeamento de Registradores:
 - 40001 (0x0000): Valor de Temperatura Atual (Float, Somente Leitura)
 - 40003 (0x0002): Valor Limite Superior de Alarme de Temperatura (Float, Leitura/Escrita)
 - 40005 (0x0004): Palavra de Status do Dispositivo (Unsigned16, Somente Leitura)
- Observações Especiais: Ordem de bytes Little-Endian, marcar Swap Bytes.

Convenção de Nomenclatura de Arquivos

<nomeprojeto>_<tipodispositivo>_<slaveid>_<data>.mbs
Ex: EstacaoTratamentoAgua_Bomba01_Slave3_20250615.mbs
</data></slaveid></tipodispositivo></nomeprojeto>

6.2 Metodologia de Depuração em Fases

Não tente ler todos os dados de uma vez! Siga estas etapas:

  1. 1ª Etapa: Confirmação da Conexão Física
    → Verificação de fiação, identificação de porta, instalação de driver.
  2. 2ª Etapa: Estabelecimento de Comunicação Básica
    → Use parâmetros mais simples (código de função 03, ler 1 registrador conhecido) para verificar a comunicação.
  3. 3ª Etapa: Exploração do Mapeamento de Endereços
    → Use Address Scan para descobrir quais registradores estão ativos no dispositivo.
  4. 4ª Etapa: Verificação da Interpretação de Dados
    → Confirme o tipo de dados, ordem de bytes e fator de escala de cada registrador individualmente.
  5. 5ª Etapa: Teste de Funcionalidade de Escrita
    → Teste se a escrita de parâmetros é eficaz e se comandos de salvamento são necessários.
  6. 6ª Etapa: Verificação de Estabilidade
    → Execute por um longo período e observe se há erros intermitentes.

6.3 Estratégia de Monitoramento com Múltiplas Janelas

┌─────────────────────────────────────────────────┐
│  Janela 1: Status do Sistema (Slave 1, FC=03, Addr=0, Qty=10)  │
├─────────────────────────────────────────────────┤
│  Janela 2: Dados de Temperatura (Slave 1, FC=04, Addr=0, Qty=20)  │
├─────────────────────────────────────────────────┤
│  Janela 3: Dados de Pressão (Slave 2, FC=03, Addr=0, Qty=10)  │
├─────────────────────────────────────────────────┤
│  Janela 4: Status de Alarme (Slave 1, FC=02, Addr=0, Qty=16)  │
└─────────────────────────────────────────────────┘

Princípios:

  • Divida por áreas funcionais, não misture tudo.
  • Defina Quantity para a menor quantidade necessária em cada janela.
  • Use Alias para registradores críticos para melhorar a legibilidade.

6.4 Melhores Práticas de Registro de Dados

Recomendação Descrição
Intervalo de Amostragem ≥ 1s Amostragens muito rápidas raramente trazem benefícios adicionais para análise e geram dados excessivos.
Use formato CSV Facilita o processamento posterior com ferramentas como Excel ou Python.
Defina Condições de Gatilho Registre apenas quando os dados mudam ou apenas eventos de erro, para otimizar o tamanho do arquivo.
Arquivamento Periódico Para operação de longo prazo, divida os arquivos de log periodicamente para evitar que fiquem muito grandes.
Capturas de Tela de Parâmetros Críticos Tire capturas de tela da interface do Poll em momentos de anomalia como evidência.

6.5 Recomendações de Parâmetros para Otimização de Desempenho

Parâmetro Valor Recomendado Descrição
Scan Rate 100~1000ms Ajuste com base na velocidade de resposta do dispositivo.
Timeout 2 a 3 vezes o tempo de resposta do dispositivo. Evita falsos tempos limite.
Inter-frame Delay ≥ 20ms Atraso entre tramas para garantir tempo de processamento suficiente para o escravo.
Quantidade de Registradores por Leitura 10~50 Mais que isso pode causar tempo limite de resposta.
Número de Janelas Concorrentes ≤ 10 Mais janelas podem consumir excessivamente memória e CPU.

6.6 Recomendações de Proteção de Segurança

Risco Medida de Proteção
Transmissão em Claro O protocolo Modbus não possui criptografia nativa; em cenários sensíveis, implante em redes isoladas.
Exposição de Rede Dispositivos Modbus TCP não devem ser expostos diretamente à internet; use firewalls/VPNs para isolamento.
Acesso Não Autorizado Utilize VLANs, listas de permissão de portas e outras medidas para restringir o acesso.
Modbus TLS O Modbus Poll v13+ suporta Modbus TCP/Security (TLS); priorize seu uso.
Auditoria de Operações Mantenha logs para operações críticas, registrando quem modificou o quê e quando.

6.7 Lista de Ferramentas para Depuração em Campo

Essenciais:

  • ☑ Modbus Poll (Depuração Mestre)
  • ☑ Modbus Slave (Simulação Escravo)
  • ☑ VSPD (Driver de Porta Serial Virtual para depuração sem hardware)
  • ☑ Conversor USB-RS485 Isolado (Recomendado com chip FTDI)
  • ☑ Resistor de Terminação 120Ω × 2
  • ☑ Cabo de Rede × 2 (um direto, um cruzado)
  • ☑ Laptop (Recomendado: Windows 10/11)

Opcionais:

  • ☐ Wireshark (Análise de pacotes Modbus TCP)
  • ☐ Python + pymodbus (Scripts de teste automatizados)
  • ☐ Multímetro (Medição de tensão diferencial RS485)
  • ☐ Osciloscópio (Análise da qualidade do sinal)

6.8 Árvore de Decisão para Solução de Problemas

Problema de Comunicação
│
├─ Sem Resposta (Timeout)
│   ├─ Conexão Física → Verificar fiação, cabos, conversor.
│   ├─ Configuração de Parâmetros → Verificar taxa de baud, endereço, código de função.
│   ├─ Status do Dispositivo → Confirmar alimentação, sem estado de falha.
│   └─ Porta Ocupada → Fechar outros programas seriais, executar como administrador.
│
├─ Erros Intermitentes
│   ├─ Interferência Eletromagnética → Usar cabo blindado, longe de inversores.
│   ├─ Falta de Resistor de Terminação → Adicionar resistor de 120Ω nas extremidades do barramento.
│   ├─ Polling Muito Rápido → Aumentar Scan Rate.
│   └─ Fonte de Alimentação Instável → Verificar qualidade da energia, aterramento.
│
└─ Resposta Presente, mas Dados Incorretos
   ├─ Erro de Offset de Endereço → Verificar se o campo <strong>Address</strong> está preenchido corretamente (offset).
   ├─ Ordem de Bytes Incorreta → Tentar `Swap Bytes` / `Swap Words`.
   ├─ Tipo de Dados Incorreto → Confirmar se é Signed/Unsigned/Float.
   └─ Fator de Escala → O valor bruto pode precisar de conversão (ex: ×0.1 ou ÷10).

Apêndice: Tabelas de Referência Rápida

A. Relação Taxa de Baud vs. Distância de Transmissão

Taxa de Baud Distância Máxima (RS485, sem repetidor) Cenário de Uso
9600 ~1200m Longas distâncias, múltiplos nós.
19200 ~800m Distâncias médias.
38400 ~600m Distâncias mais curtas.
57600 ~400m Distâncias curtas, alta velocidade.
115200 ~200m Distâncias curtas, velocidade muito alta.

B. Parâmetros de Comunicação Padrão de Fabricantes Comuns

Fabricante/Tipo de Dispositivo Taxa de Baud Padrão Slave ID Padrão Observações
Schneider Electric PLC 9600 1 Paridade geralmente Even.
Siemens Instruments 9600 1 Verificar configurações de chave DIP.
Controladores de Temperatura Chineses 9600 1 Alguns suportam 19200.
Inversores de Frequência 19200 1 Paridade geralmente None.
Medidores de Energia Inteligentes 2400/9600 1-32 Consultar modelo específico.

C. Conversão Rápida: Hexadecimal ↔ Decimal ↔ Endereço CLP

Endereço CLP Offset (Decimal) Offset (Hex)
40001 0 0x0000
40010 9 0x0009
40011 10 0x000A
40051 50 0x0032
40100 99 0x0063
40101 100 0x0064
41001 1000 0x03E8
42001 2000 0x07D0

Conclusão em uma frase: Modbus Poll é a "canivete suíço" para depuração de comunicação industrial. Dominando a conversão de offset de endereço, a correspondência de códigos de função e o tratamento de ordem de bytes, você resolverá 90% dos problemas de depuração. Em caso de dificuldades, abra a janela Communication, analise camada por camada, desde a física até o protocolo, e o problema será desvendado.

Este documento foi escrito com base no Modbus Poll v13.x; algumas funcionalidades podem diferir em versões anteriores.

Tags: Modbus modbus poll protocolo serial Automação Industrial TCP/IP

Publicado em 10-8 19:56