La automatización industrial ha experimentado una transformación radical en las últimas décadas, impulsada por la necesidad de una comunicación eficiente y fiable entre dispositivos. En este panorama, el protocolo Modbus se erige como una piedra angular, reconocido por su simplicidad y su amplia adopción. Los controladores lógicos programables (PLC), como el Siemens SIMATIC S7-1200, son el cerebro de muchas operaciones industriales, y su capacidad para comunicarse a través de Modbus es crucial para la integración de sistemas. Esta guía explora en profundidad cómo configurar un Siemens S7-1200 como servidor Modbus TCP/IP, permitiendo la transmisión de datos a otros dispositivos y sistemas, e incluso su envío a la nube para monitorización remota.

Introducción a Modbus y su Rol en la Automatización
Modbus es uno de los protocolos de comunicación más utilizados en entornos industriales. Su diseño, originado por Modicon (ahora Schneider Electric) como un bus de campo serial, ha demostrado ser extraordinariamente adaptable. La mayoría de los PLC industriales, incluido el Siemens SIMATIC S7-1200, admiten múltiples protocolos de comunicación, como Profinet y Modbus. Esta versatilidad permite a los ingenieros seleccionar el protocolo más adecuado para cada aplicación específica.
Modbus se presenta en dos variantes comunes que responden a diferentes arquitecturas de red:
- Modbus RTU: Opera en una arquitectura maestro-esclavo mediante comunicación serie (RS-232 o RS-485). Los mensajes Modbus se envían directamente sobre el medio físico, de forma secuencial y sencilla. Esta es una opción robusta para aplicaciones punto a punto o redes locales donde la infraestructura Ethernet no es una prioridad.
- Modbus TCP/IP: Utiliza un modelo servidor-cliente a través de redes Ethernet. Los mismos mensajes Modbus se encapsulan dentro de paquetes TCP, que luego se transmiten por la red Ethernet. Esta variante aprovecha la infraestructura de red existente, ofreciendo mayor velocidad y alcance.
En este tutorial, nos centraremos en la configuración de Modbus TCP/IP, demostrando cómo establecer el S7-1200 como servidor y cómo comunicarse con dispositivos a través de una red industrial. Utilizaremos un simulador Modbus para probar la configuración, garantizando una comprensión práctica del proceso.
Requisitos para la Configuración
Antes de sumergirnos en la configuración, es esencial contar con el hardware y software adecuados.
Requisitos de Hardware
- PLC Siemens S7: Se recomienda el modelo S7-1212C DC/DC/DC, pero cualquier serie S7 con funcionalidad Modbus será compatible.
- Cable Profinet/Ethernet: Necesario para la conexión entre el PLC y su PC o switch de red.
- Fuente de alimentación para el PLC: Para asegurar el correcto funcionamiento del controlador.
Requisitos de Software
- TIA Portal V16 (o superior): Este es el entorno de desarrollo integrado de Siemens para la programación y configuración de sus PLC.
- MODBUS ClientX (o similar): Un cliente Modbus TCP gratuito para simular la comunicación con el PLC, permitiendo verificar la configuración.
Configuración del Hardware
El primer paso es establecer la conexión física. Conecte la fuente de alimentación al PLC Siemens SIMATIC S7-1200. Utilice un cable Profinet o Ethernet para conectar el puerto Ethernet del PLC a su PC o a un conmutador de red. Esta conexión es fundamental para habilitar la comunicación TCP/IP entre el PLC y su cliente Modbus.
Configuración del PLC S7-1200 en TIA Portal
Una vez que el hardware está conectado, procedemos a la configuración del software.
Creación de un Nuevo Proyecto: Inicie TIA Portal y cree un nuevo proyecto en la vista de proyecto.
Agregar un Nuevo Dispositivo: Seleccione "Configurar un dispositivo" y luego "Agregar nuevo dispositivo". Elija su modelo específico de Siemens S7-1200 y la versión de firmware correcta antes de hacer clic en "Agregar".

Navegación en el Árbol del Proyecto: En el árbol del proyecto, podrá navegar y administrar todos los componentes de su proyecto, incluyendo el acceso a propiedades y configuraciones del PLC.
Nota Importante: Si el PLC ya contiene un programa, asegúrese de utilizar el mismo firmware y la misma versión de TIA Portal. De lo contrario, es recomendable actualizar a la última versión disponible para asegurar la compatibilidad y aprovechar las últimas funcionalidades.
Configuración del PLC S7-1200 como Servidor Modbus TCP
La configuración del PLC como servidor Modbus TCP es un proceso clave para permitir la comunicación externa.
Acceso al Bloque Principal: Navegue hasta el bloque “Principal (OB1)” en la “Vista del proyecto” para comenzar a crear la lógica de escalera.
Instrucción MB_SERVER: En la ventana “Instrucción” de la derecha, diríjase a Comunicación -> Otros -> Modbus TCP. Arrastre la instrucción
MB_SERVERa su diagrama de lógica de escalera.
Creación de un Bloque de Datos (DB): Para almacenar los datos Modbus y configurar los parámetros del servidor, se necesita un bloque de datos. Haga clic en el nuevo bloque de datos y agregue las siguientes variables:
- Data: Una matriz de tipo “Word” (Palabra) para almacenar los datos Modbus. Puede inicializarla con valores como “21”, “4” y “35” para pruebas iniciales. Esta matriz representa los registros de retención (Holding Registers) del servidor Modbus.
- Connect: De tipo "TCONIPv4". Esta variable se utiliza para configurar los ajustes del servidor Modbus TCP. Al seleccionarla, aparecerá una lista de variables de configuración justo debajo.
Configuración de la Variable
Connect: Configure los parámetros deTCON_IP_v4de la siguiente manera:- Local Port: Debe configurarse en “502”, que es el puerto estándar para las comunicaciones Modbus TCP.
- Interface ID: Es el ID de hardware del puerto Ethernet de su PLC. En la comunicación TCP/IP, utilizamos el puerto Ethernet, por lo que el ID sería "64". Puede encontrar este valor en la página de configuración del dispositivo -> Constantes del sistema.
- ID (Unit ID): Este es el ID del esclavo (o servidor en este caso); escribimos "1". Este ID se utilizará posteriormente en el simulador de esclavos.
- Connection Type: Debe ser “11” para TCP.
- Remote Address: Establezca la dirección IP de su PC. Puede encontrarla ejecutando
ipconfigen Windows oifconfigen Linux/Mac.
El bloque de datos debería verse similar a esto:

Vinculación de Variables: Por último, apunte la variable "Data" del DB al
MB_HOLD_REGdel bloqueMB_SERVER, y la variable "Connect" alCONNECTdel bloqueMB_SERVER. Esto asegura que el bloqueMB_SERVERutilice los datos y la configuración que hemos definido.
Descarga de la Configuración: Descargue la configuración al PLC Siemens haciendo clic derecho en el PLC en la vista del proyecto y seleccionando "Descargar hardware y software". Si la descarga es correcta, el PLC actuará como servidor Modbus TCP, listo para recibir solicitudes de comunicación.
Lectura de Datos Modbus mediante ModbusClientX
Para verificar que el PLC está funcionando correctamente como servidor Modbus TCP, utilizaremos la herramienta ModbusClientX.
Conexión al Servidor: Abra ModbusClientX y seleccione "Modbus TCP". Ingrese la dirección IP de su PLC y haga clic en “Conectar”.

Lectura de Registros: Haga clic en “Leer de 0 a 9” para recuperar los primeros 10 valores de datos almacenados en la matriz
Datadentro del PLC.
Verificación de Datos: Si los valores que aparecen (por ejemplo, “21”, “4”, “35”) coinciden con los configurados en la matriz
Datadel PLC, esto confirma que la comunicación Modbus TCP está funcionando como se esperaba.
Escritura de Datos Modbus mediante ModbusClientX
ModbusClientX también permite escribir datos en el PLC, simulando la entrada de datos desde sensores o la activación de actuadores.
Modificación de Valores: Haga doble clic en cualquier valor en la columna "Registro de retención" para abrir una pantalla donde puede introducir nuevos valores de datos. Los registros de retención son cruciales en la comunicación Modbus, ya que permiten una manipulación flexible de datos en los PLC Siemens, garantizando la alineación de las estructuras de datos y los parámetros para una comunicación eficaz.
Escritura en el Dispositivo: Ingrese su nuevo valor y haga clic en “Escribir en el dispositivo”.
Verificación en TIA Portal: Vuelva a TIA Portal y abra el bloque de datos en "Modo Monitor" (haciendo clic en el icono de las gafas). El nuevo valor aparecerá en la variable correspondiente, confirmando que la escritura de datos en el PLC se ha realizado correctamente.

Uso de una Gateway IoT como Cliente Modbus
Una vez configurado el Siemens S7-1200 como servidor Modbus, el siguiente paso lógico es integrarlo con una gateway IoT configurada como cliente Modbus. Dispositivos como un Teltonika TRB-140 o un Advantech ADAM 6717 pueden actuar como esta gateway. De esta forma, la gateway IoT puede sondear continuamente el PLC para obtener datos de los sensores y transmitirlos a una plataforma IoT en la nube (como Ubidots) para monitorización y análisis en tiempo real.
Paso 1: Identificar los Registros Modbus
Es fundamental asegurarse de que todos los datos relevantes de los sensores estén asignados a registros Modbus específicos dentro del PLC. En el ejemplo anterior, utilizamos la matriz Data como "Holding Registers" (MB_HOLD_REG).
- Asegúrese de que los datos de cada sensor estén asignados correctamente a un registro de retención individual.
- Mapee estos registros para saber qué registro corresponde a cada sensor Modbus o punto de datos (por ejemplo, temperatura, presión, caudal).
Paso 2: Configurar la Gateway IoT
Configure la gateway IoT como cliente Modbus. En la interfaz de configuración de la gateway:
- Establezca la dirección IP del servidor Modbus (el PLC Siemens).
- Asegúrese de que se seleccione Modbus TCP.
- Introduzca el número de puerto (normalmente 502 para Modbus TCP) para conectarse al PLC.
- Defina el rango de registros que la gateway IoT necesita sondear. Esto debe coincidir con los registros de retención que configuró en el PLC para los datos de sus sensores.
- Establezca el intervalo de sondeo según sus necesidades (por ejemplo, cada 5 minutos).
Paso 3: Enviar Datos a la Nube u Otro Sistema
Una vez que la gateway IoT sonde los datos Modbus correctamente, puede configurarla para que los reenvíe a una plataforma IoT industrial o a un destino interno (por ejemplo, un servidor local) para su posterior procesamiento, almacenamiento o análisis. La mayoría de las gateways IoT ofrecen opciones para enviar datos mediante MQTT, HTTP u otros protocolos.
Al integrar una gateway IoT como cliente Modbus, habilita un monitoreo robusto, escalable y centralizado de toda su red de sensores, aprovechando todo el potencial de la comunicación Modbus TCP y IoT, como la creación de sistemas SCADA basados en la nube.
Control y Monitoreo de Variador de Frecuencia con Cloud Scada || Modbus Iot
Un ejemplo práctico podría ser un sistema SCADA basado en la nube impulsado por Ubidots para el mantenimiento predictivo en la industria del petróleo y gas.
Mejores Prácticas para la Configuración de Modbus TCP/IP
Siguiendo estas directrices, podrá evitar problemas de comunicación comunes y optimizar la configuración y el mantenimiento de su Siemens SIMATIC S7-1200:
- Utilice siempre convenciones de nomenclatura coherentes para sus bloques de datos, registros y variables.
- Pruebe su configuración Modbus TCP utilizando un simulador de servidor Modbus antes de implementarlo en un entorno de producción.
- Asegúrese de que las versiones del firmware de su PLC Siemens y del software TIA Portal sean compatibles.
- Utilice la asignación de dirección IP y el reenvío de puertos adecuados si integra el PLC en una red más grande.
- Documente todas las configuraciones y ajustes para facilitar la resolución de problemas y el mantenimiento.
Profundizando en la Estructura de Mensajes Modbus TCP/IP
Para una comprensión más completa, es útil examinar la estructura de los mensajes Modbus TCP/IP. El protocolo Modbus define una serie de campos dentro de sus mensajes para garantizar una comunicación estructurada.
Campos Clave de un Mensaje Modbus TCP/IP
Transaction ID (ID de Transacción): El maestro (cliente) asigna un ID de transacción único a cada solicitud, incrementándolo con cada nueva solicitud. El esclavo (servidor) responde con el mismo Transaction ID para que el cliente pueda correlacionar la respuesta con la solicitud original. Los códigos de transacción local no admitidos especificados en el valor de la etiqueta
TransTypese almacenan en el parámetroRef_Transactionpor separado para cada transacción, por ejemplo,-12indica que el tipo de transacción local no es compatible. De igual manera, el código-13se almacena enRef_Transactionsi el intervalo de direcciones locales no es válido, especificado en las etiquetasLocalAddressyCount. Una excepción se indica cuando el 8º bit se envía en el tipo de transacción de retorno; por ejemplo, el tipo de transacción de 3 se devolvería como 16#83 (hexadecimal) o 131 (decimal). El siguiente byte contendrá el código de excepción Modbus.Protocol ID (ID de Protocolo): En Modbus TCP, este campo siempre es 0, indicando que se trata de un mensaje Modbus.
Length (Longitud): Indica la longitud de los datos Modbus en bytes, incluyendo el campo
Function Codey el campoModbus Data. Se mide en bytes más dos.Unit ID (ID de Unidad): En el protocolo serial Modbus (RTU), este campo era la dirección del esclavo. En Modbus TCP, este campo se mantiene por razones de compatibilidad, pero el direccionamiento unívoco se realiza a través de la dirección IP del esclavo.
Function Code (Código de Función): Este campo indica la acción que se desea realizar: leer, escribir, diagnosticar, etc. El protocolo Modbus define a través de los
Function Codesnumerados la función que debe activar la solicitud enviada por el maestro. Algunos códigos de función comunes incluyen:01 (0x01): Leer Bobinas (Read Coils)02 (0x02): Leer Estados de Entrada Discreta (Read Discrete Inputs)03 (0x03): Leer Registros de Retención (Read Holding Registers)04 (0x04): Leer Registros de Entrada (Read Input Registers)05 (0x05): Escribir Bobina Única (Write Single Coil)06 (0x06): Escribir Registro de Retención Único (Write Single Holding Register)15 (0x0F): Escribir Múltiples Bobinas (Write Multiple Coils)16 (0x10): Escribir Múltiples Registros de Retención (Write Multiple Holding Registers)
Existen códigos de excepción que se devuelven en respuesta a una solicitud inválida. Algunos códigos de excepción comunes son:
01: Función ilegal.02: Dirección de datos ilegal.03: Solicitud de datos o longitud ilegal.
Modbus Data: El contenido de esta sección depende del
Function Codeutilizado y, por lo tanto, su tamaño puede variar. La dirección de los datos también juega un papel en la estructura de esta sección.- Cuando los datos se dirigen del maestro al esclavo: Los dos primeros bytes suelen contener la dirección de la memoria a consultar o modificar. Por ejemplo, el siguiente ejemplo muestra el aspecto de un paquete Modbus TCP para abrir dos registros con
Function Code 3a partir de la dirección de memoria0x1020. - Cuando los datos se dirigen del esclavo al maestro (respuesta): El paquete de respuesta tiene una estructura distinta. Aquí, en los primeros bytes del
Modbus Datase codifica la cantidad de bytes de los registros transmitidos. En los siguientes bytes se encuentran los contenidos de los registros solicitados.
- Cuando los datos se dirigen del maestro al esclavo: Los dos primeros bytes suelen contener la dirección de la memoria a consultar o modificar. Por ejemplo, el siguiente ejemplo muestra el aspecto de un paquete Modbus TCP para abrir dos registros con

Direcciones de Memoria (Registros)
Dentro del protocolo Modbus, los datos se organizan en direcciones de memoria, comúnmente referidas como registros. Se dispone de un máximo de 65536 direcciones. Las funciones asignadas a estas direcciones no están unificadas; no es algo predeterminado. Por regla general, la memoria está ordenada por funciones en secciones.
Es importante comprobar si el fabricante del equipo ha expresado la descripción de las direcciones de memoria en decimales o hexadecimales, ya que esto puede causar confusiones si no se maneja correctamente.
Ventajas y Flexibilidad de Modbus TCP/IP
Una de sus principales ventajas es su versatilidad. En redes serie (RS-232 o RS-485), los mensajes Modbus se envían directamente sobre el medio físico. En redes Ethernet (Modbus TCP/IP), los mismos mensajes se encapsulan dentro de paquetes TCP, transmitidos por la red.
Modbus TCP trabaja según el principio de cliente/servidor. El maestro asume la función de cliente y los esclavos la de servidores. Por lo tanto, el maestro de Modbus tiene que establecer una conexión TCP explícita para cada esclavo de Modbus. Esta conexión se mantiene el tiempo que dure la comunicación; no se establece una nueva conexión para cada solicitud. El puerto servidor de TCP estándar para Modbus TCP es el 502.
A pesar de su estructura relativamente simple, Modbus TCP ofrece una gran flexibilidad para la comunicación industrial, permitiendo la integración de una amplia gama de dispositivos y la construcción de sistemas de automatización robustos y escalables.
Preguntas Frecuentes
¿El S7-1200 admite Modbus TCP?Sí, el Siemens S7-1200 es totalmente compatible con Modbus TCP, lo que le permite actuar como servidor o cliente Modbus dentro de un marco de comunicación TCP/IP.
¿El S7-1500 admite Modbus TCP?Sí, el Siemens S7-1500 también admite Modbus TCP, proporcionando capacidades de comunicación avanzadas en entornos industriales.
¿Cuál es la dirección IP predeterminada del PLC S7-1200?La dirección IP predeterminada del PLC Siemens S7-1200 normalmente es 192.168.0.1, pero se puede cambiar durante la configuración del dispositivo.
¿Cuál es el protocolo de comunicación utilizado en el PLC S7-1200?El PLC Siemens S7-1200 admite varios protocolos de comunicación, incluidos Profinet, Modbus TCP y Modbus RTU.
¿Qué es Modbus TCP?Modbus TCP es un protocolo utilizado para la comunicación a través de redes TCP/IP. Originalmente Modbus fue desarrollado por la empresa Modicon (hoy Schneider Electric) como bus de campo serial para la comunicación entre sus unidades de control. La clara y sencilla estructura del protocolo Modbus ha llevado a que también otros fabricantes hayan integrado Modbus en sus equipos. Modbus trabaja según el principio de maestro/esclavo. Los esclavos en Modbus son, por ejemplo, los controles por PLC, Web-IO u otros módulos IO descentralizados para señales digitales y analógicas. El maestro (o master) es siempre el interlocutor que toma la iniciativa, es decir que envía a un esclavo una solicitud o la activación de la función deseada. Cada esclavo tiene una dirección unívoca. Normalmente el esclavo es pasivo y solo responde cuando recibe una solicitud en su dirección. Con la creciente importancia del Ethernet TCP/IP como opción de transmisión se ha adaptado el protocolo Modbus prácticamente 1:1 de la transmisión serial de datos a TCP. Modbus TCP trabaja según el principio de cliente/servidor, donde el maestro asume la función de cliente y los esclavos la de servidores. Por lo tanto, el maestro de Modbus tiene que establecer una conexión TCP explícita para cada esclavo de Modbus. Esa conexión se mantiene el tiempo que dure la comunicación. No se establece una nueva conexión para cada solicitud. El puerto servidor de TCP estándar para Modbus TCP es el 502.