Introducción al Protocolo Modbus

Una guía básica para estudiantes sin conocimientos previos

¿Qué es Modbus?

El protocolo Modbus es uno de los protocolos de comunicación industrial más utilizados en el mundo de la automatización. Desarrollado originalmente por Modicon (ahora Schneider Electric) en 1979, Modbus se ha convertido en un estándar de facto en la industria debido a su simplicidad, robustez y naturaleza abierta.

Visión general del protocolo Modbus

Figura 1: Visión general del protocolo Modbus

Características Principales

Arquitectura Maestro-Esclavo

Modbus opera bajo un principio fundamental: la arquitectura maestro-esclavo (o cliente-servidor en Modbus TCP). Esta arquitectura define cómo se establece la comunicación entre los dispositivos:

  • El maestro (o cliente) es el dispositivo que inicia la comunicación
  • El esclavo (o servidor) responde a las solicitudes del maestro
  • Cada esclavo tiene una dirección única que lo identifica
  • El maestro tiene control total sobre el flujo de información
  • Los esclavos son pasivos y solo responden cuando reciben una solicitud dirigida a su dirección
Arquitectura maestro-esclavo

Figura 2: Arquitectura maestro-esclavo en Modbus

Tipos de Datos y Registros

Modbus organiza la información en diferentes tipos de registros, cada uno con características específicas:

Tipo de Registro Tamaño Acceso Descripción
Discrete Inputs 1 bit Solo lectura Entradas digitales o estados de conmutación
Coils 1 bit Lectura/Escritura Salidas digitales o estados de conmutación
Input Registers 16 bits Solo lectura Valores analógicos o contadores
Holding Registers 16 bits Lectura/Escritura Valores configurables o datos de proceso

Variantes Principales

Existen dos variantes principales del protocolo Modbus que se utilizan ampliamente en la industria:

Modbus RTU

Utiliza comunicación serial (RS-232 o RS-485) y transmite datos en formato binario.

Modbus TCP

Adaptación del protocolo para redes Ethernet, utilizando TCP/IP como medio de transporte.

Modbus RTU

Modbus RTU (Remote Terminal Unit) es una de las variantes más utilizadas del protocolo Modbus en entornos industriales. Se caracteriza por su simplicidad, eficiencia y robustez, lo que lo hace ideal para aplicaciones donde se requiere una comunicación confiable en ambientes industriales.

Modbus RTU

Figura 3: Comunicación Modbus RTU

Características Principales

Modbus RTU presenta varias características que lo distinguen:

  • Comunicación serial: Utiliza interfaces físicas RS-232 o RS-485
  • Formato binario: Transmite datos en formato binario, lo que lo hace más eficiente
  • Comunicación asíncrona: No requiere un reloj de sincronización entre dispositivos
  • Arquitectura maestro-esclavo: Un dispositivo maestro controla la comunicación con múltiples esclavos
  • Verificación de errores: Utiliza CRC (Cyclic Redundancy Check) para garantizar la integridad de los datos

Medio Físico

RS-232

  • Conexión punto a punto entre dos dispositivos
  • Adecuado para distancias cortas (generalmente hasta 15 metros)
  • Utiliza conectores DB9 o DB25
  • Ideal para configuración y diagnóstico de equipos

RS-485

  • Permite conexión de múltiples dispositivos en una misma línea (multidrop)
  • Soporta distancias más largas (hasta varios cientos de metros)
  • Mayor inmunidad al ruido eléctrico
  • Requiere solo dos cables para la transmisión de datos
  • Es la opción más común en entornos industriales

Estructura de la Trama Modbus RTU

La trama de datos en Modbus RTU tiene una estructura compacta y eficiente:

Estructura de trama Modbus RTU

Figura 4: Estructura de trama Modbus RTU

Campo Tamaño Descripción
Dirección del esclavo 1 byte Identifica el dispositivo esclavo (1-247)
Código de función 1 byte Indica la acción a realizar (lectura, escritura, etc.)
Datos Variable Contiene direcciones, valores o información adicional
CRC 2 bytes Verificación de redundancia cíclica para detección de errores

Ventajas de Modbus RTU

Modbus RTU ofrece numerosas ventajas que explican su amplia adopción en la industria:

  • Eficiencia: Formato binario que minimiza el overhead de datos
  • Robustez: Alta resistencia a interferencias electromagnéticas y ruido
  • Simplicidad: Fácil de implementar y configurar
  • Bajo costo: No requiere hardware especializado ni licencias
  • Compatibilidad: Ampliamente soportado por dispositivos de diferentes fabricantes
  • Flexibilidad: Adaptable a diferentes topologías y configuraciones
  • Confiabilidad: Sistema de verificación de errores mediante CRC

Modbus TCP

Modbus TCP es una variante moderna del protocolo Modbus que adapta el protocolo original para funcionar sobre redes Ethernet utilizando TCP/IP. Esta adaptación ha permitido que Modbus se integre perfectamente en la infraestructura de red moderna, ampliando significativamente sus capacidades y aplicaciones.

Modbus TCP

Figura 5: Comunicación Modbus TCP

Características Principales

Modbus TCP presenta características distintivas que lo diferencian de Modbus RTU:

  • Basado en Ethernet: Utiliza redes Ethernet estándar como medio físico
  • Protocolo TCP/IP: Aprovecha la infraestructura y protocolos de Internet
  • Arquitectura cliente-servidor: Equivalente al modelo maestro-esclavo en entornos de red
  • Puerto estándar: Utiliza el puerto TCP 502 por defecto
  • Conexiones múltiples: Permite múltiples conexiones simultáneas
  • Mayor velocidad: Aprovecha las altas velocidades de las redes Ethernet (10/100/1000 Mbps)

Estructura del Protocolo Modbus TCP

La estructura del protocolo Modbus TCP incluye una cabecera MBAP (Modbus Application Protocol) que encapsula la PDU (Protocol Data Unit) de Modbus:

Estructura de trama Modbus TCP

Figura 6: Estructura de trama Modbus TCP

Campo Tamaño Descripción
Transaction ID 2 bytes Identificador de transacción para emparejar solicitudes y respuestas
Protocol ID 2 bytes Siempre 0 para Modbus TCP
Length 2 bytes Número de bytes siguientes
Unit ID 1 byte Identificador de unidad (para compatibilidad con Modbus RTU)
Function Code 1 byte Código de función Modbus (igual que en Modbus RTU)
Data Variable Datos específicos de la función

Principio Cliente-Servidor

Modbus TCP utiliza un modelo cliente-servidor en lugar del modelo maestro-esclavo tradicional:

  • El cliente (equivalente al maestro) inicia la comunicación
  • El servidor (equivalente al esclavo) responde a las solicitudes
  • Se pueden establecer múltiples conexiones simultáneas
  • Cada conexión se mantiene abierta durante la comunicación
  • El direccionamiento se realiza mediante direcciones IP

Ventajas de Modbus TCP

Modbus TCP ofrece numerosas ventajas sobre Modbus RTU:

  • Mayor velocidad: Aprovecha las altas velocidades de Ethernet
  • Mayor distancia: Puede cubrir distancias mucho mayores utilizando infraestructura de red
  • Conectividad mejorada: Permite conectar dispositivos a través de Internet
  • Múltiples maestros: Soporta múltiples clientes comunicándose con los mismos servidores
  • Infraestructura estándar: Utiliza componentes de red comunes y económicos
  • Diagnóstico avanzado: Aprovecha las herramientas de diagnóstico de redes TCP/IP
  • Integración con sistemas IT: Facilita la integración con sistemas de información empresarial

Comparativa entre Modbus RTU y Modbus TCP

Tanto Modbus RTU como Modbus TCP son variantes del protocolo Modbus ampliamente utilizadas en la industria. Cada una tiene características específicas que la hacen más adecuada para determinadas aplicaciones.

Tabla Comparativa

Característica Modbus RTU Modbus TCP
Medio físico RS-232 o RS-485 Ethernet
Protocolo de transporte Serial TCP/IP
Formato de datos Binario Encapsulado en TCP
Velocidad Hasta 115.2 kbps 10/100/1000 Mbps
Distancia Limitada (hasta cientos de metros) Extendida (con infraestructura adecuada)
Verificación de errores CRC (16 bits) Manejada por TCP
Direccionamiento Dirección de esclavo (1-247) Dirección IP + Puerto TCP
Modelo de comunicación Maestro-Esclavo Cliente-Servidor
Conexiones simultáneas Un maestro a la vez Múltiples clientes simultáneos

Criterios para Elegir

Cuándo elegir Modbus RTU

  • Instalaciones pequeñas con pocos dispositivos
  • Aplicaciones que requieren hardware simple y económico
  • Entornos con alta interferencia electromagnética
  • Sistemas que necesitan comunicación determinista
  • Aplicaciones donde la simplicidad es prioritaria
  • Actualización de sistemas existentes basados en comunicación serial
  • Dispositivos con recursos limitados (memoria, procesamiento)

Cuándo elegir Modbus TCP

  • Instalaciones grandes con muchos dispositivos
  • Sistemas que requieren integración con redes corporativas
  • Aplicaciones que necesitan acceso remoto a datos
  • Entornos donde ya existe una infraestructura Ethernet
  • Sistemas que requieren múltiples maestros/clientes
  • Aplicaciones que necesitan alta velocidad de transferencia
  • Integración con sistemas de IoT industrial o Industria 4.0

Detalles Técnicos del Protocolo Modbus

Esta sección proporciona información técnica más detallada sobre el protocolo Modbus, incluyendo los códigos de función y el modelo de datos, elementos fundamentales para comprender cómo funciona este protocolo en aplicaciones reales.

Códigos de Función (Function Codes)

Los códigos de función son una parte esencial del protocolo Modbus. Estos códigos indican al dispositivo esclavo qué tipo de acción debe realizar. La siguiente tabla, extraída directamente de la especificación oficial del protocolo Modbus (MODBUS Application Protocol Specification, sección 5.1 Public Function Code Definition), muestra los principales códigos de función:

Códigos de Función Modbus

Figura 7: Códigos de Función Modbus según la especificación oficial

Categorías de Códigos de Función

Como se puede observar en la tabla, los códigos de función se organizan en diferentes categorías según el tipo de acceso a datos:

  1. Acceso a bits (Bit access):
    • Entradas discretas físicas (Physical Discrete Inputs)
    • Bits internos o bobinas físicas (Internal Bits or Physical coils)
  2. Acceso a datos de 16 bits (16 bits access):
    • Registros de entrada físicos (Physical Input Registers)
    • Registros internos o registros de salida físicos (Internal Registers or Physical Output Registers)
  3. Acceso a registros de archivo (File record access)
  4. Interfaz encapsulada (Encapsulated Interface)

Códigos de Función Más Utilizados

Entre los códigos de función más comúnmente utilizados se encuentran:

  • 01 (0x01): Read Coils - Lectura de bobinas (salidas digitales)
  • 02 (0x02): Read Discrete Inputs - Lectura de entradas discretas
  • 03 (0x03): Read Holding Registers - Lectura de registros de retención
  • 04 (0x04): Read Input Registers - Lectura de registros de entrada
  • 05 (0x05): Write Single Coil - Escritura de una bobina individual
  • 06 (0x06): Write Single Register - Escritura de un registro individual
  • 15 (0x0F): Write Multiple Coils - Escritura de múltiples bobinas
  • 16 (0x10): Write Multiple Registers - Escritura de múltiples registros

Modelo de Datos de Modbus

Una característica importante del protocolo Modbus es que cada dispositivo puede tener su propio mapa de memoria. El siguiente diagrama ilustra cómo el protocolo Modbus accede a diferentes áreas de la memoria de un dispositivo:

Modelo de Datos Modbus

Figura 8: Modelo de Datos Modbus con bloques separados

Explicación del Modelo de Datos

Como se muestra en la imagen, un dispositivo servidor Modbus (esclavo) organiza sus datos en diferentes bloques:

  1. Memoria de aplicación del dispositivo: Es la memoria interna del dispositivo donde se almacenan los datos.
  2. Acceso Modbus: Define cómo el protocolo Modbus accede a diferentes partes de la memoria del dispositivo:
    • Input Discrete: Entradas digitales (solo lectura)
    • Coils: Salidas digitales (lectura/escritura)
    • Input Registers: Registros de entrada (solo lectura)
    • Holding Registers: Registros de retención (lectura/escritura)
  3. Solicitud Modbus: Las solicitudes enviadas por el maestro Modbus (cliente) acceden a estas áreas específicas de memoria.

Importancia del Mapa de Memoria

Es fundamental entender que cada fabricante define su propio mapa de memoria para sus dispositivos. Esto significa que:

  • La dirección de un mismo parámetro puede variar entre dispositivos de diferentes fabricantes
  • Es necesario consultar la documentación específica del dispositivo para conocer su mapa de memoria
  • No existe un estándar universal para la asignación de direcciones de memoria en Modbus

Esta flexibilidad es una de las razones por las que Modbus es tan versátil, pero también requiere una configuración específica para cada tipo de dispositivo en una red Modbus.