Calculadora de CRC y LRC Modbus

Calcule o compruebe el CRC-16 de una trama Modbus RTU o el LRC de una trama Modbus ASCII y lea todos los campos codificados en sus bytes.

Modbus y comunicaciones serie Actualizado Gratis, sin registro

CRC-16, RTU

Añada 76 87 para transmitir esta trama. Si pega una trama con su CRC, se comprobará ese valor.

Leer registros de retención, petición

BytesCampoValorSignificado
11Dirección de unidad17Servidor al que va destinada esta trama o del que procede
03Función0x03Leer registros de retención
00 6BDirección inicial107Registro de retención 40108, dirección de protocolo 0x006B
00 03Cantidad33 registros de retención; la respuesta contiene 6 bytes de datos
76 87CRC-160x8776Primero el byte menos significativo

Trama completa

  • Con espacios11 03 00 6B 00 03 76 87
  • Matriz de C0x11, 0x03, 0x00, 0x6B, 0x00, 0x03, 0x76, 0x87
  • Sin espacios1103006B00037687
  • Modbus ASCII, seguido de CR LF:1103006B00037E
Cálculo del CRC byte a byte

El registro empieza en 0xFFFF. Cada byte se combina mediante XOR con su byte menos significativo; después se desplaza ocho veces a la derecha y se aplica XOR con 0xA001 cuando sale un bit 1.

ByteValorRegistro posterior
1110x4C7F
2030xE14D
3000x3521
46B0xF7B4
5000x77F7
6030x8776

El registro termina en 0x8776 y se envía primero el byte menos significativo: 76 87.

Valores de ejemplo
Comprobación
Comprobación
Trama

Ejemplos

Desde la dirección de unidad. Péguela con su CRC para comprobarlo

Bytes CRC en el orden de transmisión

76 87

Petición de Leer registros de retención a unidad 17.

Valor CRC
0x8776
Trama completa
11 03 00 6B 00 03 76 87
Longitud de la trama con CRC
8 bytes

Modbus envía primero el byte menos significativo del CRC.

Cómo se calcula
  1. CRC = CRC-16/MODBUS(trama), inicio 0xFFFF, polinomio 0xA001=11 03 00 6B 00 03=0x8776
  2. Se envía primero el byte menos significativo=0x8776 → 76 87

Choose the gateway connection for this Modbus line.

Configurar un sistema

El CRC-16 Modbus de 11 03 00 6B 00 03 es 0x8776; se envía primero el byte menos significativo, como 76 87.

Consejo: Pegue una trama de una captura serie, incluido el CRC. Si el código de función determina su longitud, se comprueban los últimos bytes y el resultado indica si llegó íntegra.

Cómo calcular un CRC-16 Modbus

Cada trama Modbus RTU termina con un CRC de 16 bits calculado sobre todos los bytes anteriores, con el byte menos significativo primero en la transmisión. Un dispositivo que calcula un CRC distinto descarta la trama sin responder; por eso, un CRC incorrecto se manifiesta como un tiempo de espera agotado y no como una excepción. Modbus ASCII usa en su lugar un LRC más sencillo de un byte. La calculadora obtiene ambos y muestra la trama byte a byte.

CRC-16 (Modbus RTU)

inicio 0xFFFF; por cada byte: XOR y luego 8 × (desplazar a la derecha; si salió un 1, XOR con 0xA001)

Empiece con 0xFFFF. Combine el primer byte mediante XOR con el byte menos significativo del registro; después desplace ocho veces a la derecha y aplique XOR con 0xA001 tras cada desplazamiento que expulse un 1. Repita el proceso con todos los bytes, desde la dirección de unidad hasta el último byte de datos.

Orden de bytes en la transmisión

CRC 0x8776 → se transmite 76 87

El CRC es el único campo de una trama Modbus que se transmite con el byte menos significativo primero. Todos los demás, incluidas las direcciones y los valores de los registros, se transmiten con el byte más significativo primero.

LRC (Modbus ASCII)

LRC = (0x100 − (suma de bytes mod 0x100)) mod 0x100

Sume los bytes de dirección, función y datos; descarte cualquier acarreo por encima de 8 bits y calcule el complemento a dos. Se transmite como dos caracteres hexadecimales después de los datos y antes de CR LF.

Ejemplos: CRC Modbus

Leer tres registros de retención de la unidad 17

Unidad 0x11 (17), función 03, desde la dirección 0x006B, tres registros: la petición de la guía de línea serie Modbus. Su CRC es 0x8776 y se transmite como 76 87; por tanto, la trama completa es 11 03 00 6B 00 03 76 87.

Bytes CRC en el orden de transmisión 76 87 Abrir en la calculadora

La misma petición en Modbus ASCII

0x11 + 0x03 + 0x00 + 0x6B + 0x00 + 0x03 = 0x82. Su complemento a dos es 0x7E; por tanto, el LRC es 7E y la línea es :1103006B00037E, seguida de CR LF.

Byte LRC 7E Abrir en la calculadora

Comprobar una trama capturada

Una captura serie muestra 01 03 00 00 00 0A C5 CD. Introduzca los seis primeros bytes: el CRC resulta C5 CD, igual que los dos últimos bytes capturados, por lo que el valor de comprobación coincide con los bytes anteriores de la trama. Si son distintos, compruebe el cableado, la terminación y el ruido antes de culpar al dispositivo.

Bytes CRC en el orden de transmisión C5 CD Abrir en la calculadora

CRC y LRC de peticiones Modbus habituales

Peticiones de las unidades 1 y 17, con el CRC en el orden de transmisión y el LRC de Modbus ASCII.

Trama (hex.)CRC-16 transmitidoLRC
01 03 00 00 00 0184 0AFB
01 03 00 00 00 0AC5 CDF2
01 04 00 00 00 0271 CBF9
01 06 00 01 00 0398 0BF5
11 03 00 6B 00 0376 877E
11 10 00 01 00 02 04 00 0A 01 02C6 F0CB

Descargar esta tabla (CSV)

Preguntas sobre CRC Modbus

¿Por qué se transmite primero el byte menos significativo del CRC Modbus?

Se debe a la forma de calcular el CRC, desplazando a la derecha desde el bit menos significativo. La especificación de línea serie Modbus fija el orden: primero el byte menos significativo y luego el más significativo. Tanto las herramientas que muestran 0x8776 como las tramas que terminan en 76 87 son correctas.

¿Qué ocurre cuando el CRC es incorrecto?

El dispositivo descarta la trama y no responde; por tanto, el maestro ve un tiempo de espera agotado. Nunca envía una excepción por un CRC incorrecto. Los errores CRC repetidos suelen apuntar a problemas de terminación, polarización, puesta a tierra o recorrido del cable.

¿Utiliza CRC Modbus TCP?

No. Modbus TCP se apoya en la comprobación de errores de TCP y sustituye el CRC por la cabecera MBAP. Una pasarela entre TCP y RTU añade y elimina el CRC.

¿Qué variante de CRC utiliza Modbus?

CRC-16/MODBUS: polinomio 0x8005 en forma reflejada (0xA001), valor inicial 0xFFFF y sin XOR final.

Límites de este resultado

  • Un CRC coincidente solo demuestra que los bytes introducidos reproducen el código de comprobación; no valida la función, dirección, cantidad ni respuesta del dispositivo.
  • Las tramas Modbus TCP no llevan CRC; aquí no se construye la cabecera MBAP.

Medir de forma continua

Un ZMB construye y comprueba por sí mismo las tramas RTU. Consulta localmente el dispositivo Modbus por RS-485 y envía los datos al Gateway mediante la red mallada inalámbrica.

Guías relacionadas

Fuentes

  1. MODBUS over Serial Line Specification and Implementation Guide V1.02 (se abre en una nueva pestaña) (PDF) Modbus Organization, 2006-12-20
  2. SCADAPack E Modbus frame diagnostics example (se abre en una nueva pestaña) Schneider Electric, modified 2025-08-18