Gemelo digital

Gemelo digital de aerogenerador: cargas, producción y mantenimiento con MQTT

Cómo los gemelos digitales de aerogeneradores usan datos SCADA publicados por MQTT para comparar la producción con la curva de potencia, estimar cargas y planificar el mantenimiento, con diseño de topics y código.

Gemelo digital de aerogenerador con un modelo 3D de la turbina y datos en vivo de velocidad del viento, velocidad del rotor, potencia generada y temperatura de la multiplicadora
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Un gemelo digital de aerogenerador es un modelo vivo de una turbina que combina las mediciones SCADA con el conocimiento de cómo debería comportarse la máquina, para que los operadores puedan ver la producción perdida, las cargas acumuladas y los fallos incipientes. Este artículo explica los principales casos de uso del gemelo, cómo llevar los datos SCADA a MQTT y cómo calcular una sencilla desviación respecto a la curva de potencia que puedes ejecutar tú mismo.

Por qué los aerogeneradores son candidatos ideales para un gemelo digital

Los aerogeneradores están en lugares remotos, el acceso es caro y funcionan en condiciones que cambian constantemente. En parques eólicos de Oaxaca, La Guajira o Navarra, una visita técnica puede exigir un largo trayecto por carretera o en barco, además de un tiempo adecuado para subir. Cada decisión que se puede tomar con datos en lugar de con una visita ahorra dinero y riesgos.

Las turbinas también están bien instrumentadas. El controlador de la turbina y el SCADA del parque ya registran la velocidad y la dirección del viento, la velocidad del rotor y del generador, los ángulos de pitch, la posición de yaw, la potencia activa, temperaturas a lo largo de todo el tren de potencia y una larga lista de códigos de estado. La materia prima para un gemelo existe; el reto es hacerla accesible y ponerla en contexto. Para el concepto general, consulta la guía de tecnología de gemelo digital.

Tres casos de uso principales

Producción: rendimiento frente a la curva de potencia

Cada modelo de turbina tiene una curva de potencia de referencia: la producción esperada a cada velocidad del viento. El gemelo compara la producción real con la esperada para la velocidad medida, filtrando las condiciones de operación válidas. Un rendimiento inferior persistente en un rango de velocidades concreto puede indicar desalineación del pitch, error de yaw, suciedad o hielo en las palas, o un ajuste del controlador.

Cargas: seguimiento del consumo de vida a fatiga

Los componentes estructurales como las palas, la torre y el eje principal acumulan fatiga por las cargas cíclicas. Algunas turbinas tienen sensores de carga; en otras, las cargas se estiman a partir de datos de operación mediante modelos. Un gemelo que registra el histórico de cargas estimadas de cada turbina ayuda a los operadores a comparar unidades del mismo parque y a fundamentar decisiones de extensión de vida. Los modelos de estimación de cargas son trabajo especializado, normalmente aportado por el fabricante o por consultoras de ingeniería, pero el gemelo proporciona la ruta de datos que necesitan.

Mantenimiento: salud de los componentes

Las temperaturas del tren de potencia, la vibración de los sistemas de monitorización de condición y el recuento de partículas en el aceite revelan fallos en desarrollo en multiplicadoras, rodamientos y generadores. Un gemelo que compara las temperaturas de cada turbina con las de sus vecinas bajo una carga similar es una alerta temprana sencilla y eficaz. El enfoque general se trata en gemelo digital para mantenimiento predictivo.

Caso de uso Señales clave Frecuencia de actualización típica Usuarios principales
Producción Velocidad del viento, potencia activa, pitch, yaw, estado De 1 s a promedios de 10 min Ingenieros de rendimiento
Cargas Velocidad del rotor, pitch, potencia, sensores de carga si los hay Alta frecuencia en el edge, resumida Gestores de activos, ingeniería
Mantenimiento Temperaturas de multiplicadora, rodamientos y generador, vibración, datos del aceite De segundos a minutos Planificadores de mantenimiento
Operación Códigos de estado, alarmas, disponibilidad Al cambiar Sala de control

Llevar los datos SCADA a MQTT

Los sistemas SCADA de los parques eólicos suelen exponer los datos mediante OPC UA, Modbus, interfaces basadas en IEC 61400-25 o bases de datos del fabricante. El patrón habitual es un gateway de edge en la subestación o en el edificio de control:

  1. El gateway lee los datos de las turbinas del servidor SCADA o directamente de los controladores.
  2. Publica las mediciones en topics MQTT sobre TLS a través de la conexión saliente a internet del emplazamiento.
  3. Los servicios en la nube o centrales se suscriben a los topics, calculan las salidas del gemelo y almacenan el histórico.

MQTT encaja en los emplazamientos energéticos remotos por razones bien conocidas: es ligero en enlaces limitados, la conexión es saliente desde el emplazamiento, por lo que no hace falta abrir puertos entrantes en el firewall, y las sesiones persistentes con QoS 1 ayudan a superar interrupciones breves del enlace. Usar un broker MQTT en la nube permite que parques de distintas regiones publiquen en un único endpoint, sin que el equipo de operaciones tenga que mantener servidores de broker en cada ubicación.

Importante: el gateway solo debe leer del SCADA. Los comandos de control a las turbinas corresponden a los sistemas de control certificados y a sus redes protegidas.

Diseño de topics y payloads

Organiza los topics por parque y turbina, y después por tipo de dato:

connectmq/<farm>/<turbine>/<data-type>

connectmq/northridge/wtg07/operation
connectmq/northridge/wtg07/drivetrain
connectmq/northridge/wtg07/status
connectmq/northridge/met-mast1/weather

Un payload operativo cada diez segundos:

{
  "windSpeedMs": 9.4,
  "windDirDeg": 251,
  "yawDeg": 248,
  "rotorRpm": 13.8,
  "pitchDeg": 0.5,
  "activePowerKw": 1985,
  "ts": "2026-10-16T09:41:20Z"
}

Publica los cambios de estado (en marcha, limitada, en fallo, en mantenimiento) como retained messages para que un visor del gemelo digital 3D conozca siempre el modo actual de cada turbina. Usa la caducidad de mensajes de MQTT 5 en los valores operativos para que una turbina cuyo gateway se desconecta no parezca estar produciendo con datos obsoletos.

Práctica: desviación de la curva de potencia en Python

El ejemplo siguiente se ejecuta contra el servidor MQTT público gratuito broker.connectmq.com con datos de turbina simulados. Incluye una pequeña curva de potencia de referencia, un simulador que rinde ligeramente por debajo a velocidades medias y un servicio del gemelo que publica un ratio de rendimiento móvil. Usa solo valores simulados, porque el servidor público es legible por todos y está pensado para pruebas y prototipos, no para datos de producción.

import json
import random
import time
import uuid
from collections import deque

import paho.mqtt.client as mqtt

RUN = "wtg-91be"  # cámbialo por tu propio id único
BASE = f"connectmq/demo/{RUN}/northridge/wtg07"

# Curva de potencia de referencia ilustrativa: velocidad del viento (m/s) -> potencia (kW)
CURVE = [(3, 0), (4, 80), (5, 200), (6, 380), (7, 620), (8, 950), (9, 1350),
         (10, 1750), (11, 2050), (12, 2200), (25, 2200)]


def expected_kw(ws):
    if ws < CURVE[0][0] or ws > CURVE[-1][0]:
        return 0.0
    for (x0, y0), (x1, y1) in zip(CURVE, CURVE[1:]):
        if x0 <= ws <= x1:
            return y0 + (y1 - y0) * (ws - x0) / (x1 - x0)
    return 0.0


window = deque(maxlen=60)


def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{BASE}/operation", qos=1)


def on_message(client, userdata, msg):
    d = json.loads(msg.payload)
    exp = expected_kw(d["windSpeedMs"])
    if exp > 100:  # ignora el viento muy bajo, donde el ratio es ruidoso
        window.append((d["activePowerKw"], exp))
    if len(window) >= 10:
        actual = sum(a for a, _ in window)
        expected = sum(e for _, e in window)
        ratio = round(actual / expected, 3)
        client.publish(f"{BASE}/twin/performance",
                       json.dumps({"performanceRatio": ratio, "samples": len(window)}),
                       qos=1, retain=True)
        print("performance ratio", ratio)


twin = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"wtg-twin-{uuid.uuid4().hex[:6]}")
twin.on_connect = on_connect
twin.on_message = on_message
twin.connect("broker.connectmq.com", 1883, keepalive=30)
twin.loop_start()

sim = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"wtg-sim-{uuid.uuid4().hex[:6]}")
sim.connect("broker.connectmq.com", 1883, keepalive=30)
sim.loop_start()

try:
    while True:
        ws = max(0.0, random.gauss(9, 2))
        loss = 0.92 if 7 <= ws <= 10 else 1.0  # rendimiento inferior simulado
        power = expected_kw(ws) * loss * random.uniform(0.97, 1.02)
        sim.publish(f"{BASE}/operation",
                    json.dumps({"windSpeedMs": round(ws, 2), "activePowerKw": round(power, 1), "ts": time.time()}),
                    qos=1)
        time.sleep(2)
except KeyboardInterrupt:
    pass

El ratio se estabiliza por debajo de 1,0 y revela la pérdida simulada. Un análisis real añade filtros de limitación de potencia, fallos, corrección por densidad del aire y sector de viento, pero el flujo de datos es idéntico: valores SCADA de entrada y salidas del gemelo publicadas de vuelta en MQTT para visores y alertas.

Lista de comprobación para el despliegue

  1. Acuerda con el fabricante de la turbina y el operador del emplazamiento un acceso de solo lectura a los datos SCADA.
  2. Sitúa el gateway en una red segregada con TLS solo saliente en el puerto 8883.
  3. Usa una credencial y un client ID por gateway de emplazamiento; ConnectMQ vincula los client IDs a las credenciales emitidas.
  4. Activa las sesiones persistentes y QoS 1 en los topics de estado y alarmas para que los cortes breves del enlace no hagan perder eventos.
  5. Publica valores promediados para el análisis a largo plazo y valores de mayor frecuencia solo donde un caso de uso los necesite.
  6. Almacena el histórico con un suscriptor independiente en una base de datos de series temporales.
  7. Añade alertas para condiciones evidentes, como una temperatura de multiplicadora por encima de un límite, con las reglas de umbral del portal o con tu propio servicio.
  8. Valida las salidas del gemelo con los informes existentes del operador antes de confiar en ellas.

Errores habituales

  • Usar sin más los datos del anemómetro de la góndola. El rotor perturba la medición; los operadores suelen aplicar una función de transferencia de góndola. Compara situaciones equivalentes entre turbinas.
  • No filtrar las limitaciones de potencia. Los periodos limitados parecen un rendimiento muy bajo si no se excluyen mediante los códigos de estado.
  • Desajustes de zona horaria y marcas de tiempo entre los servidores SCADA y los gateways.
  • Mezclar control y monitorización. Mantén el gemelo en solo lectura salvo que la arquitectura de control admita explícitamente comandos remotos.

Los mismos patrones se aplican a otros activos industriales en los artículos sobre gemelo digital de fábrica y gemelo digital energético.

Conecta tu parque eólico a ConnectMQ

ConnectMQ es un broker MQTT gestionado con TLS, MQTT 5 y opciones Dedicated o BYOC para los operadores que necesitan aislamiento. Empieza gratis en app.connectmq.com con el plan Serverless, sin tarjeta de crédito, y transmite los datos de tu primera turbina en minutos.

Preguntas frecuentes

¿Qué datos usa un gemelo digital de aerogenerador?

Principalmente datos SCADA: velocidad y dirección del viento, velocidad del rotor, pitch, yaw, potencia activa, temperaturas del tren de potencia y códigos de estado, además de datos de monitorización de condición y de cargas cuando están disponibles.

¿Puede MQTT gestionar datos de parques eólicos remotos?

Sí. MQTT es ligero, funciona con conexiones solo salientes y admite QoS 1 con sesiones persistentes, lo que encaja con emplazamientos remotos con enlaces limitados o inestables.

¿Debe un gemelo digital enviar comandos a las turbinas?

En general, no. La mayoría de los gemelos son herramientas de monitorización y análisis de solo lectura; el control de la turbina permanece en los sistemas de control certificados.

¿Cómo se mide el rendimiento frente a la curva de potencia?

Se compara la producción real con la esperada según una curva de potencia de referencia a la velocidad del viento medida, tras filtrar limitaciones de potencia, fallos y condiciones anómalas.

Artículos relacionados

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.