Descentralización de entradas/salidas: módulos de bus de campo

En plantas industriales extensas, centralizar todo el cableado de sensores y actuadores en un único armario de control resulta costoso, complejo y difícil de mantener. Los módulos de bus de campo (también llamados módulos de E/S descentralizadas) permiten ubicar la electrónica de adquisición y actuación cerca de los dispositivos de campo, comunicándose con el PLC a través de un bus digital (Profibus, Profinet, CANopen, etc.). Esta arquitectura reduce drásticamente el cableado, facilita ampliaciones y mejora el diagnóstico.

Un módulo de bus de campo típico consta de:

  • Interfaz de comunicación (específica del protocolo: Profibus DP, Profinet IO, CANopen).
  • Electrónica de procesamiento que gestiona el intercambio de datos con el maestro.
  • Bornas o conectores para conectar los dispositivos de campo (entradas/salidas digitales o analógicas).

Actúan como esclavos en la red: envían las lecturas de los sensores al PLC y reciben las órdenes para los actuadores. Además, muchos modelos ofrecen diagnóstico avanzado (rotura de cable, cortocircuito, temperatura, etc.) que se reporta al maestro.

Protocolos de bus de campo: Profibus, Profinet, CANopen

La configuración de los módulos depende del protocolo utilizado:

  • Profibus DP: utiliza comunicación serie RS-485 a velocidades hasta 12 Mbps. Cada módulo necesita una dirección única (0-99) y un archivo GSD (Generic Station Description) que describe sus características (tipos de E/S, tiempos, diagnóstico). El maestro (PLC) importa estos archivos para conocer el dispositivo. Topología lineal con terminadores.
  • Profinet IO: basado en Ethernet industrial, permite velocidades de 100 Mbps o superiores. La configuración se realiza mediante archivos GSDML (GSD Markup Language) en formato XML. Los módulos tienen dirección IP asignable (estática o DHCP) y pueden integrarse en topologías estrella, anillo o línea. Ofrece diagnóstico avanzado vía SNMP o alarms.
  • CANopen: derivado del bus CAN, muy usado en automatización móvil y robótica. Cada nodo tiene un Node ID único (1-127) y un archivo EDS (Electronic Data Sheet) que define sus objetos. La configuración puede realizarse mediante SDO (Service Data Objects) y el intercambio de datos periódico vía PDO (Process Data Objects).

Ejemplo de paso de configuración en Profinet: asignar nombre de estación, importar GSDML, conectar los submódulos de E/S a las variables del PLC y descargar la configuración.

Ventajas de los módulos de bus de campo en grandes instalaciones

  • Reducción drástica del cableado: en lugar de cientos de cables individuales desde cada sensor al armario central, un solo cable de bus (o fibra) recorre la planta, conectando los módulos cercanos a los dispositivos. Ahorro en material, mano de obra y errores de conexión.
  • Flexibilidad y escalabilidad: añadir nuevos módulos o ampliar entradas/salidas es sencillo; solo hay que conectarlos al bus y configurarlos en el software, sin modificar el cableado existente.
  • Diagnóstico avanzado: los módulos pueden detectar y reportar fallos de campo (cortocircuito en un sensor, falta de alimentación, rotura de cable) al PLC y al HMI, reduciendo tiempos de parada.
  • Distribución de la inteligencia: algunos módulos realizan preprocesamiento (filtrado, conteo, totalización) descargando al PLC central.
  • Estandarización e interoperabilidad: al usar protocolos abiertos, pueden mezclarse módulos de diferentes fabricantes (si cumplen la misma especificación).
Sistema de E/S descentralizadas Siemens SIMATIC ET 200S en perfil DIN: módulos de entradas/salidas digitales, bornes de conexión e interfaz de comunicación Profinet/Profibus.
Figura 12a: Sistema SIMATIC ET 200S (familia ET 200SP) en perfil DIN. Fuente: Wikimedia Commons / Autor: Mixabest / Licencia: CC BY-SA 3.0
Acoplador Profinet PN-PN con LEDs de estado: SF (fallo sistema), BF (fallo bus), MT (mantenimiento), ON (alimentación), LINK y RX/TX (actividad de red).
Figura 12b: LEDs de diagnóstico en acoplador Profinet PN-PN – indicadores SF, BF, MT, ON, LINK, RX/TX. Fuente: Wikimedia Commons / Autor: Xqt / Licencia: CC BY-SA 4.0

Criterios para elegir el protocolo y módulo adecuados

  • Distancia y velocidad: Profibus llega hasta 1200 m a bajas velocidades (9,6 kbps) y 200 m a 12 Mbps. Profinet, con fibra óptica, puede cubrir varios kilómetros. CANopen típicamente 40 m a 1 Mbps, hasta 1000 m a baja velocidad.
  • Topología de planta: Profinet permite anillos redundantes (MRP) muy usados en plantas críticas. Profibus es lineal con terminadores.
  • Volumen de datos: Profinet (gigabit) soporta grandes volúmenes, ideal para visión artificial o servodrives. CANopen optimizado para pequeños intercambios cíclicos.
  • Integración con sistemas existentes: si la planta ya tiene Profibus, usar módulos Profibus simplifica la compatibilidad. Si se está modernizando, Profinet ofrece más prestaciones.
  • Funciones de diagnóstico: Profinet proporciona alarmas detalladas y web server integrado en muchos módulos.
🐍 Simulación de un nodo de bus de campo en Python (esclavo Modbus TCP)
# fieldbus_slave.py - Simula un módulo de E/S remoto con Modbus TCP
# (Profinet y Profibus no son triviales en Python, pero Modbus es un buen análogo)
# Se puede ejecutar en una Raspberry Pi para simular un módulo real

from pyModbusTCP.server import ModbusServer
import time
import threading
import random

class FieldbusModule:
    """Simula un módodo de E/S con entradas digitales, analógicas y salidas."""
    def __init__(self, name, ip="0.0.0.0", port=5020):
        self.name = name
        self.server = ModbusServer(host=ip, port=port, no_block=True)
        # Definimos áreas de memoria (registros y coils)
        self.digital_inputs = [False] * 16    # DI (coils de entrada, solo lectura)
        self.digital_outputs = [False] * 16   # DO (coils de salida)
        self.analog_inputs = [0] * 8          # AI (registros de entrada)
        self.analog_outputs = [0] * 8         # AO (registros de salida)

        # Hilos para actualizar entradas (simula sensores)
        self.running = True
        self.update_thread = threading.Thread(target=self._update_inputs)
        self.update_thread.start()

    def _update_inputs(self):
        """Actualiza valores de sensores simulados (se ejecuta en segundo plano)."""
        while self.running:
            # Simular cambios aleatorios en entradas digitales (sensores)
            for i in range(8):
                self.digital_inputs[i] = (random.random() > 0.7)  # 30% de probabilidad TRUE
            # Simular entradas analógicas (temperatura, presión)
            for i in range(4):
                self.analog_inputs[i] = random.randint(0, 1000)   # raw 0-1000
            time.sleep(1)

    def run(self):
        """Arranca el servidor Modbus."""
        print(f"Módulo {self.name} iniciado en puerto {self.server.port}")
        self.server.start()

    def stop(self):
        self.running = False
        self.update_thread.join()
        self.server.stop()

# --- Configurar servidor para simular un módulo remoto ---
if __name__ == "__main__":
    module = FieldbusModule("ET200SP_sim", port=5020)
    try:
        module.run()
        # En un bucle principal podríamos leer las salidas y actuar sobre GPIO
        while True:
            # Mostrar estado cada 5 segundos (solo para depuración)
            time.sleep(5)
            print(f"DI: {module.digital_inputs[:4]} . DO: {module.digital_outputs[:4]}")
    except KeyboardInterrupt:
        module.stop()
        print("Módulo detenido.")

Este script implementa un esclavo Modbus TCP que simula un módulo de bus de campo con entradas digitales/analógicas y salidas. Puede ejecutarse en Raspberry Pi y conectarse a un maestro Modbus (como SCADA o PLC con soporte Modbus). Aunque los buses reales usan Profinet/Profibus, Modbus es un excelente punto de partida para entender el concepto de esclavo de campo.

Tendencias Actuales 2026

Los módulos de bus de campo evolucionan hacia la Industria 4.0, integrando servidores web y OPC UA embebido. La nueva generación de módulos Profinet (PROFINET over TSN) permite comunicación determinista y convergencia con redes IT. Además, los módowsky incorporan funciones de edge computing, realizando preprocesado y enviando solo información relevante al PLC. Los archivos de descripción (GSDML) ahora incluyen también descripciones de ciberseguridad (certificados, roles).

Aplicaciones con Raspberry Pi

Una Raspberry Pi puede actuar como módulo de bus de campo mediante software. Por ejemplo, usando node-red con nodos Profinet (limitado) o, más comúnmente, como esclavo Modbus TCP (como en el ejemplo) o CANopen (con tarjeta CAN). Así, la Pi puede leer sensores locales y comunicarlos al PLC maestro. También se pueden usar librerías como pyprofinet (experimental) o python-can para CANopen.

Aplicaciones con Arduino

Arduino con shields de comunicación (Ethernet, CAN) puede actuar como nodo de bus de campo. Por ejemplo, con la librería Arduino CAN se puede implementar un esclavo CANopen básico. Para Profinet/Profibus es más complejo, pero existen módulos comerciales que integran Arduino con interfaz de bus.

💼 Caso Práctico Industrial: Planta de 500 metros

Contexto: Una planta requiere instalar sensores y actuadores distribuidos a lo largo de 500 metros. Se dispone de un PLC compatible con Profinet y otro con Profibus. Se necesita elegir el protocolo y tipo de módulo de bus de campo más adecuado.

Pregunta: ¿Cuál es la opción más razonable y por qué?

🍓 Raspberry Pi + Simulación

Contexto: En una Raspberry Pi se ha implementado un esclavo Modbus TCP que simula un módulo de E/S. Se conecta a un maestro (SCADA) que escribe en los registros de salida. El módulo debe leer esos registros y activar LEDs en GPIO.

Pregunta: ¿Qué librería Python sería la más adecuada para implementar el servidor Modbus TCP?

🐍 Diagnóstico en módulos

Contexto: Un módulo de bus de campo tiene un registro de diagnóstico que, en el bit 0, indica cortocircuito en la salida 0. En Python, se tiene una variable diagnostic_word = 0b0001.

Pregunta: ¿Cómo se comprueba si hay cortocircuito en la salida 0?

Tabla 1: Comparativa de protocolos de bus de campo
ProtocoloMedio físicoVelocidadTopologíaDistancia típicaArchivo descripción
Profibus DPRS-4859,6 kbps – 12 MbpsLineal con terminadores100-1200 m (según velocidad)GSD
Profinet IOEthernet (cobre/fibra)100 Mbps / 1 GbpsEstrella, anillo, línea100 m (cobre), hasta 40 km (fibra)GSDML
CANopenCAN (diferencial)10 kbps – 1 MbpsLineal con terminadores40-1000 m (según velocidad)EDS

📚 Recursos Técnicos y Normativos 2026

Normativas y Estándares

Recursos Raspberry Pi y Python