- Diferenciación entre los roles de cliente y servidor y el uso de las cuatro tipologías de datos (Coils, Discrete Inputs, Input y Holding Registers).
- Procedimientos de configuración técnica utilizando TIA Portal para Siemens y ISPSoft/COMMGR para la serie DVP de Delta.
- Integración de hardware diverso como Arduino y LOGO! mediante librerías de red y ajuste de direccionamiento.
- Implementación de arquitecturas IIoT mediante el uso de IoT Gateways y Node-RED para el envío de datos a la nube.
Si te mueves en el mundillo de la automatización industrial, sabrás que hacer que dos máquinas se entiendan puede ser un auténtico quebradero de cabeza. Aquí es donde entra en juego el Modbus TCP, un protocolo que se ha convertido en el estándar dorado gracias a que es abierto, sencillo de montar y permite que equipos de marcas totalmente distintas se hablen sin pelearse.
En este artículo vamos a meternos de lleno en cómo poner a punto la comunicación Modbus TCP en diversos entornos, centrándonos especialmente en PLCs de Siemens y Delta, pero también echando un ojo a integraciones más caseras con Arduino. Prepárate, porque vamos a desgranar desde la teoría básica hasta los pasos concretos para que tus datos fluyan sin errores por la red.
Entendiendo el ecosistema Modbus TCP

Para no perdernos, primero hay que pillar que Modbus TCP es básicamente la evolución del antiguo Modbus RTU. Mientras que el RTU iba por cables serie, el TCP aprovecha las redes Ethernet y el modelo TCP/IP, lo que nos da una velocidad brutal y una facilidad de escalabilidad que antes eran impensables.
En cualquier red de este tipo, siempre habrá dos roles bien definidos. Por un lado, tenemos al cliente, que es el que toma la iniciativa, lanza la petición y dice «oye, dame este dato». Por otro lado, está el servidor, que es el dispositivo que guarda la información y se limita a responder a lo que el cliente le pida o a recibir las órdenes que este le mande.
La anatomía de los datos: Tipologías Modbus
No todos los datos son iguales, y Modbus lo tiene muy claro dividiendo la información en cuatro categorías principales. Elegir la correcta es la clave para que el sistema no dé problemas:
- Coils (Bobinas): Son valores binarios (0 o 1). Imagínatelos como interruptores que sirven para activar una luz o un relé. Lo mejor es que se pueden leer y escribir.
- Discrete Inputs (Entradas Discretas): También son binarias, pero aquí hay un truco: son de solo lectura. Reflejan el estado real de una entrada digital, como si un sensor de presencia estuviera activo o no.
- Input Registers (Registros de Entrada): Aquí guardamos datos de 16 bits, también de solo lectura. Son ideales para valores analógicos, como la temperatura de una caldera o la presión de un tanque.
- Holding Registers (Registros de Retención): Estos son los más versátiles. Tienen 16 bits y permiten lectura y escritura. Se usan para guardar setpoints, configuraciones o cualquier parámetro que el cliente necesite cambiar sobre la marcha.
Configuración en TIA Portal (Siemens)

Cuando trabajamos con Siemens, la herramienta estrella es el bloque MB_SERVER. Este bloque nos permite levantar un servidor Modbus TCP para compartir Holding Registers. Aunque a primera vista parezca que estamos limitados a este tipo de registros, la realidad es que podemos multiplexar los datos para compartir cualquier otra información sin complicaciones.
Para ponerlo en marcha, basta con configurar el bloque en el programa y, si quieres hacer pruebas rápidas, puedes programar un cliente sencillo en Python para leer y escribir en el PLC, lo cual es una forma genial de validar que todo está bien conectado antes de pasar a producción.
Implementación en PLCs Delta Serie DVP
Los PLC Delta, especialmente la serie DVP, son conocidos por ser robustos y no costar un ojo de la cara. Si tienes un modelo como el DVP-12SE o el DVP28SV, ya vienes con soporte nativo para Modbus TCP. Si tienes un modelo más básico, no te preocupes, porque puedes añadirle el módulo DVPEN01-SL para habilitar la comunicación Ethernet.
Para configurar un servidor en Delta, el proceso es muy estructurado. Primero usamos COMMGR para definir la dirección IP del controlador. Después, en ISPSoft, creamos el proyecto y utilizamos la instrucción ETHRS (Ethernet RS). Esta instrucción es el corazón de la comunicación:
- En el operando S1, definimos el puerto local, la IP de destino en hexadecimal y el modo de protocolo (poniendo un 1 para TCP).
- En el operando S2, asignamos el valor 3 para que el PLC actúe estrictamente como servidor.
- En S3 y S4, decidimos desde qué registro empezamos a enviar datos y cuántos mandamos.
- Finalmente, usamos D1 y D2 para gestionar dónde se guardan los datos recibidos y saber cuándo ha terminado la transmisión.
Para comprobar que todo va viento en popa, se recomienda usar herramientas como ModbusClientX, que permiten sondear el PLC y ver en tiempo real si los registros (como el 40001) devuelven los valores correctos.
Casos especiales: Arduino y Logo!

A veces necesitamos soluciones más híbridas. Por ejemplo, conectar un PLC LOGO! con un Arduino. En este caso, el Arduino puede actuar como servidor usando librerías como ModbusIP. Es posible configurar registros de entrada (Ireg) para enviar datos analógicos (como la posición de un potenciómetro) y coils para recibir órdenes del PLC (como encender un LED).
Un error común en estas configuraciones es intentar leer y escribir simultáneamente y notar que el sistema se cuelga o solo procesa una tarea. Esto suele deberse a la gestión de los tiempos de ciclo o a la base de direccionamiento, ya que algunos dispositivos empiezan a contar desde 0 y otros desde 1, provocando que el registro 50 en Arduino sea el 51 en el LOGO!
Llevando la industria a la nube (IIoT)
Ya tenemos los datos en el PLC, pero el siguiente nivel es el Industrial IoT. Para enviar estos datos a la nube (por ejemplo, a Ubidots), necesitamos un IoT Gateway. Estos aparatos actúan como traductores, convirtiendo el Modbus TCP en protocolos más «web» como MQTT o HTTP.
Una combinación ganadora es usar gateways que ya traigan Node-RED instalado. Gracias al nodo node-red-contrib-modbus, podemos extraer la información del PLC Delta o Siemens y mandarla a un dashboard en la nube, permitiéndonos hacer un mantenimiento predictivo y vigilar la planta desde el móvil sin tener que estar físicamente allí.
Configurar la comunicación Modbus TCP implica entender la jerarquía cliente-servidor y dominar la asignación de registros, ya sean bobinas para señales digitales o registros de retención para datos analógicos. Ya sea mediante bloques MB_SERVER en Siemens, la instrucción ETHRS en Delta o librerías específicas en Arduino, la clave reside en una correcta parametrización de la red y el uso de herramientas de diagnóstico para validar la transferencia de datos, pudiendo escalar todo el sistema hacia la nube mediante gateways IoT y Node-RED para una gestión industrial inteligente.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.