Asesoría Agenda una llamada de descubrimiento técnico hoy mismo »

· Industrial Protocols  · 3 min de lectura

Guía de Supervivencia Modbus RTU: RS485, Ruido y Troubleshooting

¿Tu red Modbus falla de noche? Guía técnica profunda sobre terminación, polarización (biasing), tierras y cómo usar un osciloscopio para ver el ruido.

¿Tu red Modbus falla de noche? Guía técnica profunda sobre terminación, polarización (biasing), tierras y cómo usar un osciloscopio para ver el ruido.

En el papel, Modbus RTU sobre RS485 es sencillo. En la práctica, es una de las mayores fuentes de dolores de cabeza en planta. ¿Por qué? Porque RS485 es una línea de transmisión física sujeta a las leyes del electromagnetismo, no solo a bits y bytes.

Si tu red tiene “timeouts” aleatorios o errores de CRC constantes, no es un bug en tu código; es un problema de física. En esta guía vamos a “destripar” la capa física.

1. La Física del RS485: Terminación y Reflexiones

El cable RS485 debe tratarse como una línea de transmisión. Cuando una señal viaja por un cable y llega a un final abierto, la energía “rebota” y regresa, chocando con los nuevos datos. Esto se llama reflexión de señal.

El Remedio: Resistencia de 120Ω

Debes colocar una resistencia de 120 Ohmios en los dos extremos físicos del bus (y solo en los extremos).

  • Error común: Poner resistencias en cada esclavo. Esto sobrecarga el driver y quema el puerto.
  • Efecto: La resistencia absorbe la energía al final del cable, eliminando el rebote.

2. Fail-Safe Biasing (Polarización)

Cuando ningún dispositivo está transmitiendo, el bus entra en un estado de “alta impedancia”. En este momento, el voltaje diferencial entre A y B puede ser de 0V. Para un receptor RS485, 0V es una zona indeterminada: el ruido ambiental puede interpretarse como bits falsos, generando errores de “Frame Error” o bytes basura.

Implementación Técnica

Necesitas forzar un voltaje diferencial mínimo (típicamente >200mV) mediante resistencias de pull-up y pull-down:

  • Pull-up (560Ω a 1kΩ) en la línea D+ (A) a VCC (5V).
  • Pull-down (560Ω a 1kΩ) en la línea D- (B) a GND.

[!TIP] Muchos conversores industriales (Moxa, Advantech) tienen micro-switches internos para habilitar esto. ¡Aprovéchalos!

3. El Tercer Hilo: La Tierra Común

“RS485 solo necesita dos hilos”. Mentira. Aunque es un protocolo diferencial, los transceptores tienen un límite de voltaje en modo común (usualmente -7V a +12V). Si la tierra de un PLC en el tablero A está a 50V de diferencia de la tierra de un sensor en el tablero B, el chip RS485 se va a quemar o dejará de leer.

  • Solución: Usa cable blindado de par trenzado. Usa el blindaje o un tercer hilo conductor para unir los terminales G o SG de todos los dispositivos.

4. Troubleshooting con Código

Para diagnosticar, necesitas herramientas que no asuman que todo está bien. He creado un repositorio con utilidades para esto:

👉 GitHub: modbus-troubleshooting-toolkit

Escaneo de Esclavo (Script Práctico)

Si no sabes la ID de un esclavo, puedes usar este snippet de Python (requiere pyserial y pymodbus):

import serial
from pymodbus.client import ModbusSerialClient

client = ModbusSerialClient(
    port='/dev/ttyUSB0',
    baudrate=9600,
    stopbits=1,
    bytesize=8,
    parity='N'
)

for slave_id in range(1, 248):
    result = client.read_holding_registers(0, 1, slave=slave_id)
    if not result.isError():
        print(f"¡Esclavo encontrado en ID: {slave_id}!")

Fuentes y Lectura Profunda

  1. Texas Instruments: AN-1057 Ten Ways to Bulletproof RS-485 Interfaces (Documento técnico de referencia mundial).
  2. Modbus.org: Modbus over Serial Line Specification & Implementation Guide V1.02.
  3. Maxim Integrated: Glosario de RS-485 y Terminación.

¿Seguís teniendo problemas? Revisá mi Guía Definitiva de Protocolos para ver cómo manejar los datos una vez que la física está resuelta.

Volver al blog

Related Posts

View All Posts »