Cómo corregir errores CRC de Modbus RTU en RS-485
El síntoma es un enlace Modbus RTU que en su mayoría funciona pero sigue registrando errores CRC o de checksum, o uno que falla de forma constante aunque el cableado parezca conectado. Cada trama Modbus RTU lleva un CRC-16 que el receptor recomputa; cuando el valor recomputado no coincide, la trama se descarta en silencio, así que los errores CRC afloran como reintentos, timeouts intermitentes y huecos en las tendencias. Esta página recorre las causas en orden de probabilidad, desde los ajustes de puerto pasando por terminación y polarización hasta tierra y fallas de cable, con una prueba y una solución para cada una.
Corregir errores CRC de Modbus RTU en una línea: Un error CRC de Modbus RTU significa que llegaron bytes pero se corrompieron en tránsito, así que el CRC-16 recomputado por el receptor no coincidió con el de la trama y el mensaje se descartó. Los errores CRC constantes normalmente significan un desajuste de velocidad en baudios, paridad o bit de parada entre maestro y esclavo. Los errores intermitentes apuntan a la capa física: terminación de 120 ohmios faltante o duplicada, una línea inactiva sin polarizar, diferencias de potencial de tierra entre nodos, o cable ruidoso y sin trenzar. Corrija primero los ajustes de puerto, luego trabaje terminación, polarización y tierra en ese orden.
Primeras revisiones: ajustes de puerto antes que el cableado
Antes de tocar un destornillador, confirme que cada nodo del bus concuerde en velocidad en baudios, paridad y bits de parada. Un desajuste no produce silencio: produce basura. La UART receptora muestrea los bits en los momentos equivocados o interpreta el bit de paridad como dato, la trama se decodifica en bytes equivocados, y el chequeo CRC falla en casi todos los mensajes. Si su contador de errores muestra fallas en casi cada sondeo en vez de un golpe ocasional, un desajuste de ajustes es mucho más probable que un problema de cableado, y verificarlo no cuesta nada.
La especificación de Modbus sobre línea serial usa paridad par como predeterminada, con un bit de parada cuando hay paridad y dos bits de parada cuando la paridad está en ninguna. Los dispositivos de distintos fabricantes salen con predeterminados distintos, y un dispositivo de reemplazo configurado de fábrica es una fuente clásica de errores CRC repentinos en un bus que corrió limpio por años. Revise primero los ajustes en el dispositivo que se agregó o reemplazó más recientemente, porque el nodo más nuevo del bus es el más propenso a discrepar con el resto.
Terminación y polarización: los problemas de la línea inactiva
Si los ajustes coinciden y los errores son intermitentes, revise la terminación enseguida. Un bus RS-485 debe ser una sola cadena tipo margarita con un resistor de terminación en cada uno de sus dos extremos físicos, comúnmente de 120 ohmios para igualar la impedancia característica del par. Sin terminación en un bus más largo o más rápido, los flancos de señal se reflejan en los extremos abiertos y regresan encima de bits posteriores, corrompiendo tramas de forma impredecible. El error opuesto es igual de común: resistores de terminación habilitados en cada nodo en vez de solo en los dos extremos, lo cual carga el bus tan pesadamente que los drivers ya no pueden desarrollar un voltaje diferencial limpio.
La polarización, también llamada polarización de línea, es la prima más sutil. Entre tramas, ningún driver está en el bus y el par flota a menos que resistores de polarización lo jalen a un estado inactivo definido. Un par flotante deriva cerca del umbral del receptor, y el ruido eléctrico entonces lo voltea al azar, lo cual los receptores interpretan como bits de inicio y bytes fantasma. Esos bytes fantasma caen delante de tramas reales y rompen el CRC. La polarización pertenece a un solo punto del bus, normalmente el maestro o el convertidor, y muchos convertidores la tienen conmutable; revise que esté realmente habilitada. La especificación de línea serial Modbus describe tanto la terminación como la polarización precisamente por estas razones.
La prueba para ambas es un osciloscopio si lo tiene, y la sustitución si no. En un osciloscopio, las reflexiones se ven como campaneo tras cada flanco, y una polarización faltante se ve como una línea inactiva sentada cerca de cero voltios diferencial en vez de un desplazamiento definido. Sin osciloscopio, acorte temporalmente el bus a maestro más un esclavo cercano con terminación correcta: si los errores desaparecen en el bus corto y regresan en el tendido completo, la capa física del tendido largo es su problema.
Tierra, ruido y fallas de cable
RS-485 es diferencial, lo cual lo hace tolerante al ruido, pero los transceptores aun necesitan que la referencia de tierra de cada nodo se mantenga dentro de su rango de modo común. Cuando los nodos se alimentan de fuentes distintas en un sitio, las diferencias de potencial de tierra pueden empujar el par fuera de ese rango, corrompiendo datos o eventualmente dañando transceptores. El síntoma suele ser errores que se correlacionan con la conmutación de equipos - una bomba arrancando, un variador acelerando - en vez de con el tráfico. Las soluciones son un conductor común de señal tendido con el par donde el diseño lo permita, o convertidores y repetidores aislados que rompan la trayectoria de tierra por completo.
El cable en sí es el último de los sospechosos usuales pero uno real. El par debe estar trenzado, idealmente blindado con el blindaje aterrizado en un extremo, tendido lejos de conductores de potencia y de cables de salida de variadores. Un bus cableado como estrella en vez de cadena tipo margarita crea múltiples puntos de reflexión que ningún esquema de terminación puede domar del todo. Agua en una caja de conexiones, un conductor mellado o una terminal floja producen errores que vagan con la temperatura y la vibración. Caminar la ruta y reterminar juntas sospechosas es poco glamoroso y con frecuencia es la solución.
Cuándo escalar
Si los ajustes de puerto están verificados, la terminación y la polarización son correctas, se probó el aislamiento, y los errores persisten, deje de adivinar y capture evidencia. Un analizador de línea serial o un convertidor con puerto de monitoreo muestra si la corrupción ocurre en esclavos específicos, en momentos específicos, o en todo el bus, y ese patrón es lo que un ingeniero de soporte o un integrador necesita. Los errores persistentes confinados a un dispositivo sugieren un transceptor fallando en ese dispositivo; los errores en todo el bus que sobreviven al aislamiento sugieren una fuente ambiental que amerita la atención de un electricista.
También ayuda saber qué ve su capa SCADA. Un motor de sondeo reintenta las tramas fallidas, así que un bus corriendo con una tasa de error CRC de fondo puede verse sano en la superficie mientras quema su ancho de banda en reintentos. Una plataforma de monitoreo como Merobix que registra la calidad de comunicación por dispositivo y las fallas de sondeo a lo largo del tiempo convierte una degradación invisible en una tendencia sobre la que puede actuar antes de que el bus falle del todo, y muestra de inmediato si una corrección de cableado en verdad redujo la tasa de error.
Preguntas frecuentes
¿Qué causa errores CRC en una red Modbus RTU?
Cualquier cosa que corrompa bytes entre emisor y receptor. Los errores constantes en casi cada trama normalmente significan un desajuste de velocidad en baudios, paridad o bit de parada. Los errores intermitentes apuntan a la capa física: reflexiones por terminación faltante o duplicada, una línea inactiva flotante sin polarizar que genera bytes fantasma, diferencias de potencial de tierra entre nodos, ruido eléctrico acoplado de cableado de potencia cercano, o cable dañado y terminales flojas.
¿Un error CRC significa que el mensaje se perdió?
La trama corrompida la descarta el receptor, así que ese intercambio individual falla. Si de verdad se pierden datos depende del maestro, que normalmente reintenta el sondeo. Los errores CRC ocasionales por lo tanto cuestan latencia y ancho de banda en vez de datos, pero una tasa de error creciente significa más reintentos, sondeo efectivo más lento, y eventualmente timeouts cuando los reintentos se agotan, así que un bus con errores CRC crónicos debe corregirse en vez de tolerarse.
¿Dónde van los resistores de terminación en un bus RS-485?
En los dos extremos físicos de la cadena tipo margarita, y solo ahí. Cada extremo recibe un resistor a través del par, comúnmente de 120 ohmios para igualar la impedancia característica del cable. Habilitar terminación en nodos intermedios sobrecarga el bus y debilita la señal para todos. La polarización es distinta: pertenece a un solo punto, normalmente el maestro o el convertidor, para mantener la línea en un estado definido cuando ningún driver transmite.
Fuentes y lecturas
Referencias primarias de los organismos de normas y reguladores que definen este tema:
- Modbus Specifications - Modbus Organization
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.