Glosario de Automatización • Borrar una excepcion Modbus de direccion de datos ilegal

Cómo borrar una excepción Modbus de dirección de datos ilegal

Ingeniería Merobix • • 9 min de lectura

A diferencia de un timeout, una excepción Modbus código 02 significa que el dispositivo está vivo, hablando y rechazando su petición a propósito porque el registro que usted pidió no existe según él. Dirección de datos ilegal es la manera en que el dispositivo dice que la dirección, o el rango que pidió leer, cae fuera de su mapa. Eso es buena noticia para diagnosticar, porque convierte un enigma de direccionamiento en una reconciliación resoluble entre lo que su driver solicitó y lo que el dispositivo realmente mapea. Esta guía recorre la solución en orden: alinee el mapa de registros del fabricante contra el driver, elimine el desfase común de 40001, confirme que el código de función coincide con el tipo de registro y maneje las lecturas que se salen del final de un bloque válido.

Volver al glosario

Borrar una excepcion Modbus de direccion de datos ilegal en una línea: Una excepción Modbus de dirección de datos ilegal, código 02, significa que el dispositivo recibió su petición limpiamente pero la dirección del registro, o el tramo que pidió leer, no forma parte de su mapa, así que la rechaza en vez de devolver datos. Bórrela reconciliando el mapa de registros del fabricante contra lo que solicita el driver, corrigiendo el desfase de un registro entre 40001 y el direccionamiento base cero, confirmando que el código de función coincide con el tipo de registro que direcciona y asegurando que una lectura de varios registros no se pase del último registro válido de un bloque. La excepción es el dispositivo diciéndole exactamente dónde buscar.

Qué significa el código 02 frente al 01 y el 03

Los códigos de excepción Modbus son la manera estructurada en que el dispositivo rechaza una petición que entendió pero no puede cumplir, y distinguir los tres más comunes lo apunta directo a la solución. El código 01, función ilegal, significa que el dispositivo no soporta en absoluto el código de función que usted envió. El código 02, dirección de datos ilegal, significa que la función está bien pero la dirección o el rango específico de registro no existe en el mapa del dispositivo. El código 03, valor de datos ilegal, significa que la dirección es válida pero el valor o la cantidad que suministró está fuera del rango permitido, como pedir leer más registros en una sola petición de los que el dispositivo admite. Por lo tanto, un código 02 acota el problema al direccionamiento, no a la función ni a los datos en sí.

Conviene imaginar lo que hace el dispositivo. Cuando recibe una petición de lectura comprueba la dirección de inicio y la cantidad solicitadas contra el bloque de registros que realmente implementa, y si alguna parte de ese rango queda fuera del bloque implementado devuelve 02 en vez de datos. Así que la excepción no es aleatoria: es una declaración precisa de que su dirección, su cantidad, o la combinación de ambas, llegó más allá de lo que el dispositivo mapea. Como el dispositivo está respondiendo, usted descartó el cableado, el ID de unidad y la accesibilidad, y puede concentrarse por completo en los números de la petición.

Aquí es donde las páginas de concepto de códigos de excepción y de mapa de registros rinden como trasfondo, porque definen el vocabulario que usa la solución. La conclusión práctica para un código 02 es que el dispositivo le entrega un regalo diagnóstico: confirmó que es accesible y que habla la función correcta, y le dijo que lo único mal es la dirección que nombró. El resto del procedimiento consiste en encontrar sistemáticamente dónde discrepan su dirección solicitada y el mapa real del dispositivo.

Reconcilie el mapa y elimine el desfase de un registro

Comience poniendo el mapa de registros del fabricante junto a lo que su driver realmente solicita. La documentación del fabricante lista qué registros existen, qué contiene cada uno y con frecuencia el tipo de registro. Compare la dirección de inicio exacta que envía su driver contra ese mapa, y confirme que el registro que quiere está genuinamente implementado; un número sorprendente de fallas código 02 vienen de leer un registro que el dispositivo simplemente no tiene, como un registro de una función opcional o una dirección que pertenece a otro modelo del mismo manual. Fije el registro deseado a partir del mapa antes de ajustar nada, porque el resto de la solución trata de representar ese mismo registro correctamente en el bus.

El código 02 más frecuente en la práctica es el desfase de un registro de 40001. La documentación y las herramientas de configuración muchas veces se refieren a los registros de retención como 40001, 40002 y así, pero la dirección que se coloca en el bus es de base cero, así que 40001 corresponde a la dirección 0, 40002 a la dirección 1, y todo el mapa queda corrido en uno. Si su driver espera la dirección base cero pero usted escribió el número al estilo 40001, o el driver espera el número base uno y le dio el desplazamiento crudo, cada petición cae un registro fuera, y una petición por el registro justo después del final del mapa devuelve 02. La página de concepto del desfase de 40001 cubre este mapeo en detalle; la solución en campo es establecer qué convención espera el campo de dirección de su driver e ingresar la dirección en esa convención de forma consistente.

Confirme la solución probando un registro que usted pueda predecir. Lea un valor que el dispositivo documente con un contenido conocido, como un identificador de dispositivo fijo o una medición de movimiento lento, y verifique si el número devuelto y su posición coinciden. Si el valor que esperaba aparece un registro más allá de donde pidió, ha probado un desfase de uno y puede correr todo el mapa. Si aparece exactamente donde el mapa del fabricante dice que debe una vez que usa la convención esperada del driver, el direccionamiento está reconciliado y el código 02 se borrará para cada tag que siga la misma regla.

Código de función, lecturas por tramos y la vista del SCADA

El direccionamiento es solo la mitad de una petición válida; el código de función tiene que coincidir con el tipo de registro, o puede toparse con un error de dirección aun con el número correcto. Los registros de retención se leen con el código de función 03 y los registros de entrada con el 04, las bobinas con 01 y las entradas discretas con 02, y estos son espacios de direcciones separados. Leer un registro de retención con la función de registro de entrada, o al revés, direcciona una tabla donde ese número puede no existir, produciendo un código 02. Confirme desde el mapa del fabricante en qué tabla vive su valor y que su driver está configurado para leerla con la función coincidente; un valor que se lee bien bajo una función y arroja código 02 bajo otra es un clásico desajuste de tipo de registro y no un número equivocado.

Las lecturas que cruzan tramos son la última trampa común. Una sola petición Modbus lee un bloque contiguo desde su dirección por una cantidad dada, y si ese bloque se pasa del último registro válido dentro del rango implementado del dispositivo, el dispositivo rechaza toda la petición con código 02 aunque los primeros registros sean perfectamente válidos. Esto muerde cuando un driver agrupa muchos tags en una sola lectura en bloque eficiente y el grupo alcanza más allá del final de un bloque, o cruza un hueco entre dos bloques separados que el dispositivo implementa. La solución es recortar o dividir la lectura para que cada petición se quede dentro de un rango contiguo e implementado, leyendo los dos bloques por separado en vez de un tramo que cruza el hueco.

En un contexto SCADA estas fallas código 02 se atrapan mejor en la puesta en marcha, porque son deterministas: un tag mal direccionado falla en cada sondeo, así que se muestra como calidad mala permanente en vez de intermitente. Una plataforma SCADA en la nube como Merobix reporta la excepción por tag, y la disciplina es resolver cada código 02 antes de que un sitio entre en operación en vez de dejar un puñado de tags malos que los operadores aprenden a ignorar. Como la excepción señala la dirección con precisión, y como solo aparece una vez que las comunicaciones están por lo demás sanas, borrarla suele ser una reconciliación única de la configuración del driver contra el mapa del fabricante, tras la cual esos tags se quedan buenos.

Preguntas frecuentes

¿Qué significa la excepción Modbus código 02?

El código 02 es dirección de datos ilegal. Significa que el dispositivo recibió y entendió su petición pero la dirección de registro específica, o el rango que pidió leer, no forma parte de su mapa implementado, así que rechaza en vez de devolver datos. Como el dispositivo responde, el cableado y el ID de unidad quedan descartados, y la solución trata por completo de hacer coincidir su dirección solicitada con el mapa de registros real del dispositivo.

¿Cómo corrijo un desfase de 40001 que causa una dirección de datos ilegal?

La documentación suele numerar los registros de retención como 40001, 40002 y así, mientras que la dirección en el bus es de base cero, de modo que 40001 mapea a la dirección 0. Establezca qué convención espera el campo de dirección de su driver, ingrese la dirección en esa convención de forma consistente y luego verifique leyendo un registro con contenido conocido y comprobando que el valor aparece exactamente donde el mapa del fabricante dice que debe.

¿Por qué una lectura Modbus grande arroja código 02 cuando las lecturas sueltas funcionan?

Una sola petición lee un bloque contiguo desde su dirección de inicio por una cantidad dada, y si ese bloque se pasa del último registro válido o cruza un hueco entre dos bloques implementados, el dispositivo rechaza toda la petición con código 02 aunque los primeros registros sean válidos. Recorte o divida la lectura para que cada petición se quede dentro de un rango contiguo e implementado, leyendo bloques separados con peticiones separadas.

Más en Protocolos industriales
Excepción de dirección de datos ilegal Modbus  •  Excepcion Modbus de valor de datos ilegal (codigo 03)  •  Excepcion Modbus de funcion ilegal (codigo 01)  •  Código de excepción Modbus  •  Unit ID / dirección de esclavo Modbus  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →