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

LRC, ASCII

Añada 7E para transmitir esta trama. Si pega una trama con su LRC, 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
7ELRC0x7ESe envía como dos caracteres ASCII antes de CR LF

Trama completa

  • Con espacios11 03 00 6B 00 03 7E
  • Matriz de C0x11, 0x03, 0x00, 0x6B, 0x00, 0x03, 0x7E
  • Sin espacios1103006B00037E
  • Modbus ASCII, seguido de CR LF:1103006B00037E
Cálculo del LRC byte a byte

Cada byte se añade a la suma y se descarta el acarreo.

ByteValorSuma posterior
1110x11
2030x14
3000x14
46B0x7F
5000x7F
6030x82

La suma termina en 0x82; su complemento a dos es el LRC, 7E.

Comprobación
Comprobación
Trama

Ejemplos

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

Byte LRC

7E

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

Trama ASCII antes de CR LF
:1103006B00037E
Suma de los bytes, descartando los acarreos
0x82
Longitud de la trama con dos puntos, LRC y CR LF
17 caracteres

Modbus ASCII envía cada byte como dos caracteres hexadecimales; empieza con dos puntos y termina en CR LF.

Cómo se calcula
  1. Suma = dirección + función + datos, descartando los acarreos=11 + 03 + 00 + 6B + 00 + 03=0x82
  2. LRC = complemento a dos de la suma = (0x100 − suma) mod 0x100=0x100 − 0x82=0x7E

Choose the gateway connection for this Modbus line.

Configurar un sistema

El LRC Modbus ASCII de 11 03 00 6B 00 03 es 7E; por tanto, la trama es :1103006B00037E seguida de CR LF.

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