Jumeau numérique

Jumeau numérique d'éolienne : charges, production et maintenance avec MQTT

Comment les jumeaux numériques d'éoliennes utilisent les données SCADA publiées via MQTT pour comparer la production à la courbe de puissance, estimer les charges et planifier la maintenance, avec conception des topics et code.

Jumeau numérique d'éolienne montrant un modèle 3D de turbine avec vitesse du vent, vitesse du rotor, puissance produite et température du multiplicateur en direct
Essayez-le sur votre propre broker MQTTObtenez un broker MQTT privé et managé avec l’offre Free et partez d’exemples de code prêts à l’emploi.
Essayer gratuitement Exemples de code Aucune carte bancaire requise

Un jumeau numérique d'éolienne est un modèle vivant d'une turbine qui combine les mesures SCADA avec la connaissance du comportement attendu de la machine, afin que les exploitants voient la production perdue, les charges accumulées et les défauts naissants. Cet article présente les principaux cas d'usage du jumeau, la façon d'amener les données SCADA sur MQTT et le calcul d'un écart simple à la courbe de puissance que vous pouvez exécuter vous-même.

Pourquoi les éoliennes se prêtent idéalement aux jumeaux numériques

Les éoliennes sont isolées, coûteuses d'accès et fonctionnent dans des conditions en perpétuel changement. Une visite de technicien peut nécessiter un long trajet ou un navire, ainsi qu'une météo propice à l'ascension. Chaque décision qui peut être prise à partir des données plutôt que d'une visite sur site économise de l'argent et réduit les risques.

Les éoliennes sont aussi bien instrumentées. L'automate de la turbine et le système SCADA du parc enregistrent déjà la vitesse et la direction du vent, la vitesse du rotor et de la génératrice, les angles de pas, la position de lacet, la puissance active, les températures de toute la chaîne cinématique et une longue liste de codes d'état. La matière première d'un jumeau existe ; le défi est de la rendre accessible et de la mettre en contexte. Pour le concept général, voir le guide de la technologie du jumeau numérique.

Trois cas d'usage essentiels

Production : performance par rapport à la courbe de puissance

Chaque modèle de turbine possède une courbe de puissance de référence : la production attendue à chaque vitesse de vent. Le jumeau compare la production réelle à la production attendue pour la vitesse de vent mesurée, en ne retenant que les conditions de fonctionnement valides. Une sous-performance persistante dans une certaine plage de vitesses de vent peut révéler un mauvais calage du pas, une erreur de lacet, l'encrassement ou le givrage des pales, ou un paramètre de l'automate.

Charges : suivre la consommation de fatigue

Les composants structurels comme les pales, la tour et l'arbre principal accumulent de la fatigue sous l'effet des charges cycliques. Certaines turbines disposent de capteurs de charge ; pour d'autres, les charges sont estimées à partir des données de fonctionnement à l'aide de modèles. Un jumeau qui suit l'historique de charge estimé de chaque turbine aide les exploitants à comparer les machines d'un même parc et à éclairer les décisions de prolongation de durée de vie. Les modèles d'estimation de charge relèvent de spécialistes, généralement fournis par le constructeur ou des bureaux d'études, mais le jumeau fournit le chemin de données dont ils ont besoin.

Maintenance : santé des composants

Les températures de la chaîne cinématique, les vibrations issues des systèmes de surveillance d'état et le comptage des particules dans l'huile révèlent les défauts naissants des multiplicateurs, roulements et génératrices. Un jumeau qui compare les températures de chaque turbine à celles de ses voisines à charge similaire constitue une alerte précoce simple et efficace. L'approche générale est décrite dans jumeau numérique et maintenance prédictive.

Cas d'usage Signaux clés Fréquence typique Utilisateurs principaux
Production Vitesse du vent, puissance active, pas, lacet, état Moyennes de 1 s à 10 min Ingénieurs performance
Charges Vitesse du rotor, pas, puissance, capteurs de charge s'il y en a Haute fréquence à l'edge, synthétisée Gestionnaires d'actifs, ingénierie
Maintenance Températures multiplicateur, roulements et génératrice, vibrations, données d'huile Secondes à minutes Planificateurs de maintenance
Exploitation Codes d'état, alarmes, disponibilité Au changement Salle de contrôle

Amener les données SCADA sur MQTT

Les systèmes SCADA des parcs éoliens exposent généralement leurs données via OPC UA, Modbus, des interfaces fondées sur IEC 61400-25 ou des bases de données propriétaires. Le schéma habituel repose sur une passerelle edge dans le poste de livraison ou le bâtiment de contrôle :

  1. La passerelle lit les données des turbines depuis le serveur SCADA ou directement depuis les automates des turbines.
  2. Elle publie les mesures sur des topics MQTT via TLS, par la connexion Internet sortante du site.
  3. Des services cloud ou centraux s'abonnent aux topics, calculent les sorties du jumeau et stockent l'historique.

MQTT convient aux sites énergétiques isolés pour des raisons bien connues : il est léger sur les liaisons contraintes, la connexion est sortante depuis le site et ne nécessite donc aucun port entrant dans le pare-feu, et les sessions persistantes avec QoS 1 aident à absorber les courtes coupures de liaison. Avec un broker MQTT cloud, des parcs situés dans différentes régions publient vers un point d'accès unique, et l'équipe d'exploitation n'a pas à maintenir des serveurs de broker sur chaque site.

Important : la passerelle doit uniquement lire depuis le SCADA. Les commandes de pilotage des turbines relèvent des systèmes de contrôle certifiés et de leurs réseaux protégés.

Conception des topics et des payloads

Organisez les topics par parc et par turbine, puis par type de données :

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

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

Un payload opérationnel toutes les dix secondes :

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

Publiez les changements d'état (en marche, bridée, en défaut, en maintenance) sous forme de retained messages, afin qu'une visionneuse du jumeau connaisse toujours le mode actuel de chaque turbine. Utilisez l'expiration des messages de MQTT 5 sur les valeurs opérationnelles pour qu'une turbine dont la passerelle est hors ligne ne paraisse pas produire sur la base de données périmées.

Pratique : écart à la courbe de puissance en Python

L'exemple ci-dessous fonctionne sur le serveur MQTT public gratuit broker.connectmq.com, réservé aux tests et aux prototypes, avec des données de turbine simulées. Il comprend une petite courbe de puissance de référence, un simulateur légèrement sous-performant aux vitesses de vent moyennes et un service de jumeau qui publie un ratio de performance glissant. Utilisez uniquement des valeurs simulées, car le serveur MQTT public gratuit est lisible par tous.

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

import paho.mqtt.client as mqtt

RUN = "wtg-91be"  # remplacez par votre propre identifiant unique
BASE = f"connectmq/demo/{RUN}/northridge/wtg07"

# Courbe de puissance de référence indicative : vitesse du vent (m/s) -> puissance (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:  # ignorer les vents très faibles où le ratio est bruité
        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  # sous-performance simulée
        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

Le ratio se stabilise sous 1,0, ce qui révèle la perte simulée. Une analyse réelle ajoute des filtres pour le bridage, les défauts, la correction de densité de l'air et le secteur de vent, mais le flux de données reste identique : les valeurs SCADA entrent, les sorties du jumeau sont republiées sur MQTT pour les visionneuses et les alertes.

Checklist de déploiement

  1. Convenez d'un accès en lecture seule aux données SCADA avec le constructeur de la turbine et l'exploitant du site.
  2. Placez la passerelle sur un réseau segmenté, avec uniquement du TLS sortant sur le port 8883.
  3. Utilisez un identifiant et un client ID par passerelle de site ; ConnectMQ lie les client IDs aux identifiants émis.
  4. Activez les sessions persistantes et la QoS 1 pour les topics d'état et d'alarme, afin que les courtes coupures de liaison ne fassent pas perdre d'événements.
  5. Publiez des valeurs moyennées pour l'analyse à long terme, et des valeurs à plus haute fréquence uniquement là où un cas d'usage l'exige.
  6. Stockez l'historique avec un abonné distinct dans une base de séries temporelles.
  7. Ajoutez des alertes pour les situations évidentes, comme une température de multiplicateur au-dessus d'une limite, à l'aide des règles à seuil du portail ou de votre propre service.
  8. Validez les sorties du jumeau par rapport aux rapports existants de l'exploitant avant de vous y fier.

Pièges courants

  • Utiliser naïvement l'anémomètre de nacelle. Le rotor perturbe la mesure ; les exploitants appliquent souvent une fonction de transfert de nacelle. Comparez des situations comparables d'une turbine à l'autre.
  • Ne pas filtrer le bridage. Les périodes de bridage ressemblent à une forte sous-performance si elles ne sont pas exclues grâce aux codes d'état.
  • Décalages de fuseau horaire et d'horodatage entre serveurs SCADA et passerelles.
  • Mélanger contrôle et supervision. Gardez le jumeau en lecture seule, sauf si l'architecture de contrôle prend explicitement en charge les commandes à distance.

Les mêmes principes s'appliquent à d'autres équipements industriels dans les articles jumeau numérique d'usine et jumeau numérique énergétique.

Connectez votre parc éolien à ConnectMQ

ConnectMQ est un broker MQTT managé avec TLS, MQTT 5 et des options Dedicated ou BYOC pour les exploitants qui ont besoin d'isolation. Commencez gratuitement sur app.connectmq.com avec le plan Serverless, sans carte bancaire, et diffusez les données de votre première turbine en quelques minutes.

Questions fréquentes

Quelles données utilise un jumeau numérique d'éolienne ?

Principalement des données SCADA : vitesse et direction du vent, vitesse du rotor, pas, lacet, puissance active, températures de la chaîne cinématique et codes d'état, ainsi que des données de surveillance d'état et de charge lorsqu'elles sont disponibles.

MQTT peut-il gérer les données de parcs éoliens isolés ?

Oui. MQTT est léger, fonctionne avec des connexions uniquement sortantes et prend en charge la QoS 1 avec des sessions persistantes, ce qui convient aux sites isolés aux liaisons limitées ou instables.

Un jumeau numérique doit-il renvoyer des commandes aux turbines ?

En général non. La plupart des jumeaux sont des outils de supervision et d'analyse en lecture seule ; le pilotage des turbines reste du ressort des systèmes de contrôle certifiés.

Comment mesure-t-on la performance par rapport à la courbe de puissance ?

La production réelle est comparée à la production attendue d'après une courbe de puissance de référence à la vitesse de vent mesurée, après exclusion du bridage, des défauts et des conditions anormales.

Articles liés

Tous les articles →

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.