¿Qué es el checksum CRC-16 de Modbus?
El CRC-16 es la verificación de redundancia cíclica de dos bytes que cierra toda trama Modbus RTU y permite al receptor detectar corrupción en una línea serial. Cualquiera que lea una captura RTU o depure por qué un dispositivo ignora una petición necesita saber qué cubre el CRC, cómo lo usa el receptor y por qué desaparece en TCP. Esta referencia explica el CRC de Modbus RTU sin pedirle que implemente el polinomio a mano.
CRC-16 de Modbus en una línea: El CRC-16 de Modbus es una verificación de redundancia cíclica de dos bytes que se añade a toda trama RTU. El transmisor lo calcula sobre la dirección de esclavo, el código de función y los datos; el receptor lo recalcula y compara. Si difieren, la trama se corrompió en el cable y el receptor la descarta en silencio, sin respuesta de error. Aparece solo en RTU, no en ASCII ni en TCP.
Qué cubre el CRC y cómo se verifica
En Modbus RTU el CRC-16 son los dos últimos bytes de la trama. El transmisor corre un cálculo de redundancia cíclica sobre todos los bytes anteriores - la dirección de esclavo, el código de función y todos los datos - y añade el valor resultante de dieciséis bits, con el byte bajo primero, una peculiaridad que conviene recordar porque la mayoría de los campos multibyte de Modbus van con el byte alto primero. El receptor corre el cálculo idéntico sobre los bytes que recibió y compara su resultado con el CRC que le enviaron.
Si los dos coinciden, la trama se acepta como íntegra; si difieren, el receptor concluye que la trama se corrompió en tránsito y la descarta en silencio. No hay acuse negativo, y eso importa: una falla de CRC se ve, desde el maestro, exactamente igual que la ausencia total de respuesta. Por eso los problemas de ruido en la línea se presentan como timeouts y no como errores explícitos, un patrón de síntomas que se traslapa con los temas de tiempos de la referencia del retardo de respuesta serial de Modbus.
Por qué existe el CRC y dónde no está
El CRC existe porque una línea serial es un canal desprotegido donde el ruido eléctrico, las reflexiones por mala terminación o un transceptor marginal pueden voltear bits. Un CRC de dos bytes atrapa los errores en ráfaga típicos de esas fallas con mucha más confiabilidad que una suma simple, y por eso RTU usa un CRC mientras el viejo modo ASCII usa una verificación de redundancia longitudinal más débil, un contraste que se traza en la referencia del modo de transmisión Modbus RTU frente a ASCII.
Modbus TCP no tiene CRC en absoluto. La trama TCP con encabezado MBAP se apoya en las sumas de verificación y la entrega confiable del propio TCP, así que un CRC a nivel Modbus sería redundante, como explica la comparación de Modbus TCP frente a RTU. El CRC es, por tanto, una característica exclusiva del RTU serial, y su ausencia es una de las pistas rápidas que distinguen una captura RTU de una TCP.
Preguntas frecuentes
¿Qué pasa cuando falla la verificación de CRC en Modbus?
El receptor descarta la trama en silencio, sin responder. En Modbus RTU no hay acuse negativo, así que una falla de CRC es idéntica, desde el lado del maestro, a que no llegue respuesta alguna. Por eso los problemas de ruido de línea y de terminación suelen manifestarse como timeouts y no como mensajes de error explícitos.
¿Qué bytes cubre el CRC de Modbus?
Todos los bytes de la trama anteriores al propio CRC: la dirección de esclavo, el código de función y todos los datos. Los dos bytes del CRC se añaden después, con el byte bajo primero, a diferencia de la mayoría de los campos multibyte de Modbus, que van con el byte alto primero. El receptor recalcula el CRC sobre los mismos bytes y compara.
¿Por qué Modbus TCP no lleva CRC?
Porque TCP ya aporta sus propias sumas de verificación y garantiza entrega confiable y ordenada, así que un CRC a nivel Modbus no añadiría nada. Las tramas TCP llevan un encabezado MBAP en lugar de la dirección serial y el CRC. El CRC-16 es exclusivo del RTU serial; ASCII usa un LRC y TCP no usa ningún checksum a nivel Modbus.
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.