1. Las Cuatro Áreas de Memoria
A diferencia de protocolos modernos como PROFINET, que utilizan estructuras de datos complejas, Modbus es extremadamente simple. Su mapa de memoria se divide en solo cuatro tipos de datos. Para un técnico de UF1794, dominar estas cuatro áreas es esencial para integrar cualquier dispositivo Modbus, desde un sensor de temperatura hasta un variador de frecuencia complejo.
Estas áreas se dividen en dos categorías: datos de un solo bit (digitales) y datos de 16 bits (analógicos o de configuración).
2. Datos de un solo Bit: Coils y Discrete Inputs
- Coils (Bobinas - 0x): Son el equivalente a las salidas digitales de un PLC. Son lectura/escritura. Se utilizan para activar o desactivar relés, contactores, luces, etc. Por ejemplo, escribir un '1' en la Coil 00001 podría arrancar un motor.
- Discrete Inputs (Entradas Discretas - 1x): Son el equivalente a las entradas digitales de un PLC. Son de solo lectura. Se utilizan para leer el estado de sensores, finales de carrera, pulsadores, etc. Por ejemplo, leer la Discrete Input 10001 nos dirá si una puerta de seguridad está abierta o cerrada.
3. Datos de 16 bits (Words): Input y Holding Registers
- Input Registers (Registros de Entrada - 3x): Son registros de 16 bits de solo lectura. Se utilizan para leer valores analógicos que provienen de un proceso físico, como la temperatura de una sonda, la presión de un manómetro o la velocidad actual de un motor.
- Holding Registers (Registros de Retención - 4x): Son los registros más versátiles y potentes. Son registros de 16 bits de lectura/escritura. Se utilizan para almacenar consignas (setpoints), parámetros de configuración, contadores, o cualquier dato que el PLC necesite modificar en el dispositivo esclavo. Por ejemplo, para cambiar la velocidad deseada de un motor, escribiríamos el valor en un Holding Register.
4. La Confusión del Direccionamiento: 40001 vs. Registro 0
El mayor punto de confusión en Modbus es la notación de las direcciones. Históricamente, para diferenciar las cuatro áreas de memoria, se les asignó un prefijo:
- 0xxxx para Coils.
- 1xxxx para Discrete Inputs.
- 3xxxx para Input Registers.
- 4xxxx para Holding Registers.
Así, cuando un manual dice "lea el registro 40001", se refiere al primer Holding Register. Sin embargo, a nivel de protocolo, la dirección que se envía en la trama es la dirección real del registro, que empieza en 0. Por lo tanto, para leer el registro 40001, el cliente Modbus debe solicitar la lectura del Holding Register en la dirección 0.
Esta diferencia entre la "dirección de manual" (base 1) y la "dirección de protocolo" (base 0) es una fuente constante de errores de configuración. Un buen software cliente Modbus suele permitir elegir qué notación usar para evitar confusiones.
Fuente: Elaboración Propia. Licencia: CC BY-SA 4.0.
🎥 Formación Técnica: Mapa de Memoria Modbus en la Práctica
Comprende visualmente para qué sirve cada área de memoria y cómo la notación de direcciones (ej. 40001 vs 0) puede causar errores de comunicación si no se interpreta correctamente.
▶ Ver Mapa de Memoria en YouTube📝 Evaluación Técnica: Direccionamiento Modbus
1. Un cliente SCADA necesita leer el estado de un final de carrera físico (un sensor digital que está abierto o cerrado). ¿En qué área de memoria Modbus debería buscar este dato?
2. Para cambiar la consigna de temperatura (setpoint) de un controlador PID, un PLC debe escribir un valor de 16 bits. ¿Qué área de memoria y función Modbus se utilizaría?
3. El manual de un equipo indica que la velocidad actual del motor se encuentra en la dirección "40100". A nivel de protocolo, ¿qué dirección de registro debe solicitar realmente el cliente Modbus?
🤖 Ejercicio Práctico 5: Servidor y Cliente Modbus Completo
Objetivo: Crear un ecosistema Modbus completo para entender la interacción entre las cuatro áreas de memoria.
Copia el siguiente *prompt* y pégalo en un modelo de IA (como ChatGPT, Gemini o Claude).