Códigos de función y excepción Modbus

Consulte un código de función o excepción Modbus público, o introduzca una respuesta como 83 02 para identificar la solicitud que falló y la causa.

Modbus y comunicaciones serie Actualizado Gratis, sin registro

¿Qué dato tiene?

Ejemplos

Código de función (16 o 0x10), respuesta de excepción capturada o palabras de un nombre en español o inglés

Excepción 0x03

Valor de datos no permitido

Solicitud que falló
0x10 Escribir varios registros
Significado
La estructura de la solicitud contiene un valor que el servidor no puede aceptar; esto no describe el valor de aplicación almacenado en un registro.
Bytes leídos
90 03

El primer byte es el código de función de la solicitud más 0x80; el segundo byte es el código de excepción.

Cómo se calcula

Exception response function code = request function code + 0x80

La respuesta 90 03 indica que la solicitud 0x10 Escribir varios registros falló con la excepción 0x03, Valor de datos no permitido.

Consejo: La falta de respuesta no es una excepción. Compruebe el cableado, el identificador de unidad, la velocidad en baudios, la paridad y la terminación antes de consultar el mapa de registros.

Cómo leer una respuesta de excepción Modbus

Cuando un dispositivo Modbus recibe una solicitud que no puede ejecutar, responde con una excepción: el código de función con el bit más significativo a 1 (el código más 0x80), seguido de un código de excepción de un byte. 83 02 significa que una solicitud Read Holding Registers (0x03) falló con la excepción 02, Illegal Data Address. Introduzca arriba los bytes de la respuesta para decodificarlos.

El byte de función

función de respuesta = función de solicitud + 0x80

Una respuesta normal repite el código de función de la solicitud. Una excepción activa el bit más significativo: 0x03 pasa a 0x83 y 0x10 pasa a 0x90. Reste 0x80 para encontrar la solicitud que falló.

El código de excepción

01 función · 02 dirección · 03 valor · 04 fallo del dispositivo

01 Illegal Function: el dispositivo no admite la solicitud. 02 Illegal Data Address: la dirección o el intervalo solicitado no existe en el dispositivo. 03 Illegal Data Value: no se admite un valor de la solicitud. 04 Server Device Failure: el dispositivo falló al ejecutarla. Son los nombres de las excepciones en la especificación Modbus.

Códigos de función en decimal y hexadecimal

FC16 = 16 en decimal = 0x10

Los manuales usan ambas notaciones. El campo anterior interpreta un número sin prefijo como decimal si corresponde a una función: 16 significa Write Multiple Registers. También muestra la posible interpretación hexadecimal; escriba 0x16 si desea expresamente esta última.

La falta de respuesta no es una excepción. Un tiempo de espera agotado puede deberse al cableado, el identificador de unidad, la velocidad en baudios, la paridad, la terminación o una trama descartada por un CRC incorrecto. Solo un dispositivo que haya interpretado la trama puede enviar una excepción.

Ejemplos de códigos de excepción Modbus

Respuesta 83 02 de un contador

Reste 0x80 de 0x83 y obtendrá 0x03, Read Holding Registers. La excepción 02, Illegal Data Address, indica que el dispositivo no dispone de los registros solicitados. Una causa habitual es un desplazamiento de una unidad por una referencia del tipo 40001 o una lectura que supera el final de un bloque. El conversor de direcciones Modbus ayuda con el primer caso.

Excepción 0x02 Dirección de datos no permitida Abrir en la calculadora

Respuesta 90 03 tras una escritura

0x90 − 0x80 = 0x10, Write Multiple Registers, y 03 corresponde a Illegal Data Value. El dispositivo recibió la trama, pero rechazó un valor: una consigna fuera de intervalo, un número de registros que no coincide con el número de bytes o una escritura en un bloque de solo lectura.

Excepción 0x03 Valor de datos no permitido Abrir en la calculadora

¿Qué función es la 16?

En decimal, la función 16 es Write Multiple Registers y se transmite como 0x10. En hexadecimal, 0x16 designa Mask Write Register, una solicitud distinta. Cuando un manual dice «FC16», se refiere al valor decimal.

Función 16 (0x10) Escribir varios registros Abrir en la calculadora

Códigos de función Modbus y sus respuestas de excepción

Los códigos de función públicos habituales en decimal y hexadecimal y el primer byte que devuelve un dispositivo cuando falla la solicitud.

FunciónNombreHexRespuesta de excepción
1Leer bobinas0x010x81
2Leer entradas discretas0x020x82
3Leer registros de retención0x030x83
4Leer registros de entrada0x040x84
5Escribir una bobina0x050x85
6Escribir un registro0x060x86
15Escribir varias bobinas0x0F0x8F
16Escribir varios registros0x100x90
22Escribir registro con máscara0x160x96
23Leer y escribir varios registros0x170x97
43Transporte de interfaz encapsulada0x2B0xAB

Descargar esta tabla (CSV)

Tablas de referencia

Códigos de función públicos

Funciones públicas definidas en V1.1b3. Que una función figure en la lista no demuestra que un dispositivo concreto la implemente.

CódigoFunciónAcceso a datosLímite de solicitud del protocoloNota sobre el transporte
0x01Leer bobinasLeer bobinas · bitsDe 1 a 2.000 bobinas contiguasProtocolo de aplicación
0x02Leer entradas discretasLeer entradas discretas · bitsDe 1 a 2.000 entradas contiguasProtocolo de aplicación
0x03Leer registros de retenciónLeer registros de retención · palabras de 16 bitsDe 1 a 125 registros contiguosProtocolo de aplicación
0x04Leer registros de entradaLeer registros de entrada · palabras de 16 bitsDe 1 a 125 registros contiguosProtocolo de aplicación
0x05Escribir una bobinaEscribir una bobina · bitExactamente una bobinaProtocolo de aplicación
0x06Escribir un registroEscribir un registro de retención · palabra de 16 bitsExactamente un registroProtocolo de aplicación
0x07Leer estado de excepciónLeer ocho salidas de estado definidas por la implementaciónSin datos en la solicitudSolo enlace serie
0x08DiagnósticosDiagnósticos de comunicación según la subfunciónSegún la subfunciónSolo enlace serie
0x0BObtener contador de eventos de comunicaciónLeer estado de comunicación y número de eventosSin datos en la solicitudSolo enlace serie
0x0CObtener registro de eventos de comunicaciónLeer estado de comunicación, contadores y bytes de eventosSin datos en la solicitudSolo enlace serie
0x0FEscribir varias bobinasEscribir bobinas contiguas · bitsDe 1 a 1.968 bobinas contiguasProtocolo de aplicación
0x10Escribir varios registrosEscribir registros de retención contiguos · palabras de 16 bitsDe 1 a 123 registros contiguosProtocolo de aplicación
0x11Informar ID del servidorLeer identidad específica del dispositivo y estado de funcionamientoSin datos en la solicitudSolo enlace serie
0x14Leer registro de archivoLeer uno o varios grupos de registros de archivoDe 7 a 245 bytes en la solicitudProtocolo de aplicación
0x15Escribir registro de archivoEscribir uno o varios grupos de registros de archivoDe 9 a 251 bytes en la solicitudProtocolo de aplicación
0x16Escribir registro con máscaraModificar bits de un registro de retenciónExactamente un registroProtocolo de aplicación
0x17Leer y escribir varios registrosEscribir registros de retención y después leerlosLeer de 1 a 125; escribir de 1 a 121 registrosProtocolo de aplicación
0x18Leer cola FIFOLeer el contador FIFO y los registros de valoresEl contador FIFO devuelto no supera 31Protocolo de aplicación
0x2BTransporte de interfaz encapsuladaInvocar una interfaz definida por MEITipos MEI publicados 0x0D y 0x0EProtocolo de aplicación

Fuente: MODBUS Application Protocol Specification, V1.1b3

Objetos de datos primarios

Las cuatro tablas de datos primarias de Modbus. La asignación a memoria del dispositivo y si las tablas se superponen dependen de la implementación.

ObjetoElementoAcceso del protocoloFunciones públicas principales
BobinasUn bitLectura y escritura0x01 leer · 0x05/0x0F escribir
Entradas discretasUn bitSolo lectura0x02 leer
Registros de entradaPalabra de 16 bitsSolo lectura0x04 leer
Registros de retenciónPalabra de 16 bitsLectura y escritura0x03 leer · 0x06/0x10/0x16/0x17 escribir

Fuente: MODBUS Application Protocol Specification, V1.1b3

Códigos de excepción

Códigos devueltos en una respuesta de excepción Modbus. Un tiempo de espera agotado o una trama descartada por error de CRC o paridad no son respuestas de excepción.

CódigoExcepciónSignificado en el protocolo
0x01Función no permitidaLa función solicitada no está permitida para este servidor o su estado actual.
0x02Dirección de datos no permitidaLa dirección inicial, el intervalo solicitado o su combinación no están permitidos para el servidor.
0x03Valor de datos no permitidoLa estructura de la solicitud contiene un valor que el servidor no puede aceptar; esto no describe el valor de aplicación almacenado en un registro.
0x04Fallo del dispositivo servidorSe produjo un error irrecuperable mientras el servidor intentaba ejecutar la acción solicitada.
0x05ConfirmaciónEl servidor aceptó una solicitud de programación especializada, pero necesita más tiempo para completarla.
0x06Dispositivo servidor ocupadoEl servidor está ocupado con un comando de programación de larga duración; el cliente puede volver a intentarlo más tarde.
0x08Error de paridad de memoriaFalló una comprobación de coherencia de registros de archivo al utilizar la función 0x14 o 0x15 con el tipo de referencia 0x06.
0x0ARuta de pasarela no disponibleUna pasarela no pudo asignar una ruta interna desde su puerto de entrada hasta la salida solicitada.
0x0BEl dispositivo de destino de la pasarela no respondióLa pasarela no obtuvo respuesta del dispositivo de destino.

Fuente: MODBUS Application Protocol Specification, V1.1b3

Preguntas sobre códigos de excepción Modbus

¿Qué significa la excepción Modbus 02?

Illegal Data Address: el dispositivo no dispone de la dirección solicitada o la dirección más el número de registros supera el intervalo disponible. Compruebe la convención de direcciones y la longitud de la lectura.

¿Qué significa la excepción Modbus 01?

Illegal Function: el dispositivo no admite ese código de función, o no lo admite en su estado actual. Muchos contadores solo admiten unas pocas funciones, a menudo 03, 04 y 16.

¿Por qué obtengo un tiempo de espera agotado en vez de una excepción?

El dispositivo no interpretó la solicitud: identificador de unidad, velocidad en baudios o paridad incorrectos, cables A y B invertidos, falta de terminación o error de CRC. Solo responde con una excepción un dispositivo que haya leído la trama correctamente. El comprobador de terminación y polarización RS-485 cubre el cableado.

¿Qué significan las excepciones 0A y 0B?

Son excepciones de pasarela. 0A, Gateway Path Unavailable, indica que la pasarela no pudo encaminar la solicitud; 0B, Gateway Target Device Failed to Respond, indica que el dispositivo detrás de ella no respondió. Ambas apuntan a la ruta posterior a la pasarela, incluida la conexión serie.

Límites de este resultado

  • Un código de función público no demuestra que un servidor concreto lo admita; consulte el mapa de registros y la documentación del firmware del dispositivo.
  • El código de función, por sí solo, no determina el significado ni la escala de los registros, su signo, el orden de bytes y palabras, la convención de direcciones ni la seguridad de una escritura.
  • Las funciones exclusivas del enlace serie no son servicios generales de Modbus TCP. Una pasarela puede imponer otras restricciones.
  • Distinga la falta de respuesta de una respuesta de excepción. También deben investigarse el cableado, los tiempos, el identificador de unidad, el CRC, la paridad, el encaminamiento y la disponibilidad del dispositivo.

Medir de forma continua

Un ZMB lee y escribe dispositivos Modbus RTU localmente y envía los datos al Gateway por la red mallada inalámbrica. Así se puede integrar un contador sin tender un cable de datos hasta el cuadro.

Guías relacionadas

Fuentes

  1. MODBUS Application Protocol Specification V1.1b3 (se abre en una nueva pestaña) (PDF) Modbus Organization, 2012-04-26
  2. Specifications and Implementation Guides (se abre en una nueva pestaña) Modbus Organization, accessed 2026-09-14