Calculadora de CRC-16 Modbus

Pegue en hexadecimal los bytes de una trama Modbus RTU. Sin su CRC obtiene los dos bytes que debe agregar; con su CRC sabe si la trama está íntegra.

Cómo funciona el CRC de Modbus

El algoritmo

Modbus RTU usa CRC-16 con el polinomio reflejado 0xA001 (0x8005 en forma directa) y un valor inicial de 0xFFFF, sin XOR final. Cada byte se combina con XOR en el registro, que luego se desplaza a la derecha ocho veces, aplicando XOR con 0xA001 cada vez que el bit que sale es un 1.

Orden de bytes en la línea

El CRC es el único lugar de Modbus que va con el byte bajo primero. Un CRC de 0x0A84 se envía como 84 0A, y por eso una solicitud para leer un registro en la dirección 0 del equipo 1 termina en 84 0A.

Verificar una trama capturada

Calcule el CRC sobre toda la trama, incluidos sus dos últimos bytes. Una trama íntegra da cero, porque el CRC se eligió para anularse a sí mismo. Cualquier otro resultado significa que un byte se perdió, se agregó o se corrompió en la línea.

Preguntas frecuentes

¿Por qué mi equipo no responde a una trama con el CRC correcto?

El CRC solo prueba que la trama llegó como se envió. Revise la dirección del esclavo, la velocidad, la paridad y los bits de parada, y las líneas A y B, que es fácil invertir. Un equipo con otra dirección ignora la trama en silencio.

¿Modbus TCP usa CRC?

No. Modbus TCP se apoya en las verificaciones de TCP y Ethernet y lleva un encabezado MBAP en su lugar. El CRC pertenece a Modbus RTU sobre una línea serial como RS485.

¿Cuál es el CRC de "123456789"?

0x4B37, el valor de verificación estándar de CRC-16/MODBUS. Es una forma rápida de confirmar que una rutina de CRC está bien implementada.

¿Lee sensores Modbus en campo?

Genesis lee sensores RS485 Modbus, transductores analógicos y sondas 1-Wire en los mismos cuatro puertos y los reporta por red celular. Cuéntenos qué necesita leer.

Hablemos →