Constructor de Tramas Modbus
Construye, decodifica e inspecciona tramas Modbus RTU/TCP/ASCII con cálculo automático de CRC-16 y LRC, interpretación de datos y generación de respuestas.
Presets comunes
Acerca de esta herramienta
Construye tramas Modbus RTU, TCP y ASCII válidas para la comunicación con dispositivos embebidos. La herramienta gestiona el cálculo de CRC-16 y LRC, cabeceras MBAP, interpretación de valores de registros, generación de tramas de respuesta y proporciona un desglose visual de cada byte de la trama con segmentos codificados por colores.
Características
Tres protocolos — Modbus RTU (CRC-16), Modbus TCP (cabecera MBAP) y Modbus ASCII (LRC)
11 function codes — Read Coils (01), Read Discrete Inputs (02), Read Holding Registers (03), Read Input Registers (04), Write Single Coil (05), Write Single Register (06), Read Exception Status (07), Diagnostics (08), Write Multiple Coils (0F), Write Multiple Registers (10), Read/Write Multiple Registers (17)
Decodificador de tramas — pega tramas en hexadecimal para decodificar con autodetección de protocolo RTU/TCP, validación de CRC/LRC y detección de respuestas de excepción
Interpretación de datos — decodifica datos de registros como Unsigned Int 16, Signed Int 16, Unsigned Int 32 o Float 32 con selección de orden de bytes (Big-Endian, Little-Endian, Mid Big-Endian, Mid Little-Endian)
Constructor de respuestas — genera tramas de respuesta válidas para cualquier function code, incluyendo respuestas de excepción con todos los códigos de excepción estándar
Ayuda de formato de datos — introduce valores decimales y conviértelos automáticamente a bytes hexadecimales, soportando uint16, int16, uint32 y float32
Cambio de formato de dirección — alterna entre notación base 0, base 1 y notación Modicon (4xxxx, 3xxxx) con conversión automática
Presets comunes — 8 ejemplos de tramas de carga rápida para pruebas instantáneas
Formatos de copia — copia como hex con espacios, sin espacios, array de C o literal de bytes de Python
Bytes codificados por colores — desglose visual con colores distintos para slave/unit, function code, datos, CRC/LRC, protocolo y segmentos de error
Enlace compartible — URL compartible que codifica la configuración actual de la trama
Cómo usar
Modo construcción
Selecciona el modo Build Frame (por defecto)
- Elige el protocolo (RTU, TCP o ASCII)
Configura la dirección del esclavo, el function code, la dirección de inicio y la cantidad
Para funciones de escritura, introduce los datos en hexadecimal o usa la ayuda de formato de datos para introducir valores decimales/float
La trama se genera automáticamente con CRC-16 (RTU), cabecera MBAP (TCP) o LRC (ASCII)
Copia la trama en tu formato preferido usando los botones de copiar
Modo decodificación
Selecciona el modo Decode Frame
Elige el protocolo o usa Auto-detect
Pega una trama en hexadecimal (p. ej.,
01 03 04 00 0A 00 64 B2 62)Pulsa Decode o presiona Enter
Selecciona el formato de interpretación de datos (uint16, int16, float32, etc.) para ver los valores de los registros
Constructor de respuestas
Selecciona el modo Response Builder
- Elige el function code para la respuesta
Introduce los datos de respuesta en bytes hexadecimales, o selecciona Exception Response para construir una trama de error
Visión general del protocolo Modbus
Modbus es un protocolo de comunicación serie desarrollado por Modicon en 1979 para dispositivos industriales (PLCs, sensores, actuadores). Sigue una arquitectura maestro/esclavo donde el maestro inicia las solicitudes y los esclavos responden.
Estructuras de trama
| Protocolo | Estructura de trama | Verificación de error |
|---|---|---|
| RTU | [Slave] [FC] [Data...] [CRC Lo] [CRC Hi] | CRC-16 |
| TCP | [Transaction ID] [Protocol ID] [Length] [Unit ID] [FC] [Data...] | TCP/IP |
| ASCII | : [Slave] [FC] [Data...] [LRC] CR LF | LRC |
Referencia de function codes
| Código | Nombre | Tipo de dato | Acceso |
|---|---|---|---|
01 | Read Coils | Discrete Output (1 bit) | Lectura |
02 | Read Discrete Inputs | Discrete Input (1 bit) | Lectura |
03 | Read Holding Registers | Registro de 16 bits | Lectura |
04 | Read Input Registers | Registro de 16 bits | Lectura |
05 | Write Single Coil | Discrete Output (1 bit) | Escritura |
06 | Write Single Register | Registro de 16 bits | Escritura |
07 | Read Exception Status | 8 coils (diagnóstico) | Lectura |
08 | Diagnostics | Datos de sub-función | Lectura/Escritura |
0F | Write Multiple Coils | Discrete Output (1 bit) | Escritura |
10 | Write Multiple Registers | Registro de 16 bits | Escritura |
17 | Read/Write Multiple Registers | Registro de 16 bits | Lectura/Escritura |
Notación de direcciones Modicon
La documentación tradicional de Modbus usa rangos de direcciones Modicon para identificar los tipos de datos:
| Rango | Tipo de dato | Function codes | Dirección de protocolo |
|---|---|---|---|
00001–09999 | Coils (salida discreta) | 01, 05, 0F | 0–9998 (0x0000–0x270E) |
10001–19999 | Discrete Inputs | 02 | 0–9998 (0x0000–0x270E) |
30001–39999 | Input Registers | 04 | 0–9998 (0x0000–0x270E) |
40001–49999 | Holding Registers | 03, 06, 10 | 0–9998 (0x0000–0x270E) |
Códigos de excepción
Cuando un esclavo no puede procesar una solicitud, devuelve una respuesta de excepción con el function code en OR con 0x80 y un código de excepción:
| Código | Nombre | Descripción |
|---|---|---|
01 | Illegal Function | Function code no soportado por el esclavo |
02 | Illegal Data Address | Dirección no disponible en el dispositivo esclavo |
03 | Illegal Data Value | Valor fuera de rango para el esclavo |
04 | Slave Device Failure | Error irrecuperable en el esclavo |
05 | Acknowledge | Solicitud aceptada pero el procesamiento requiere tiempo |
06 | Slave Device Busy | El esclavo está ocupado procesando otra solicitud |
08 | Memory Parity Error | Falló la verificación de paridad del área de archivo extendida |
0A | Gateway Path Unavailable | Gateway mal configurado o no disponible |
0B | Gateway Target No Response | El dispositivo de destino no respondió al gateway |
Orden de bytes (endianness)
Los registros Modbus son de 16 bits, pero muchos dispositivos almacenan valores de 32 bits (enteros, floats) en dos registros. El orden de bytes varía según el fabricante:
| Nombre | Orden | Ejemplo (Float 123.456) |
|---|---|---|
| Big-Endian (AB CD) | El más común, estándar Modbus | 42 F6 E9 79 |
| Little-Endian (CD AB) | Palabras intercambiadas | E9 79 42 F6 |
| Mid Big-Endian (BA DC) | Bytes intercambiados | F6 42 79 E9 |
| Mid Little-Endian (DC BA) | Completamente invertido | 79 E9 F6 42 |
Privacidad
Toda la construcción de tramas, decodificación, cálculo de CRC/LRC e interpretación de datos se realiza íntegramente en tu navegador. Ningún dato Modbus se transmite a ningún servidor. El enlace compartible solo codifica los parámetros de la trama en los parámetros de la URL.
Referencia de comandos Linux
Herramientas comunes para probar la comunicación Modbus desde la línea de comandos:
Leer Holding Registers con mbpoll
Leer registros vía TCP con modbus-cli
Leer registros con pymodbus
Escribir un registro con mbpoll
Escanear dispositivos Modbus
Cálculo de CRC-16
Modbus RTU usa CRC-16 con el polinomio 0xA001 (forma reflejada de 0x8005). El CRC se calcula sobre todos los bytes de la trama excepto el propio CRC, y se añade en orden little-endian (byte bajo primero, byte alto segundo).
Cálculo de LRC
Modbus ASCII usa un Longitudinal Redundancy Check. El LRC es el complemento a dos de la suma de 8 bits de todos los bytes del mensaje (desde la dirección del esclavo hasta el último byte de datos). Se transmite como dos caracteres ASCII hexadecimales antes del CR LF final.