Predictive Maintenance mit dem digitalen Zwilling bedeutet, ein lebendiges Modell einer Maschine zu nutzen, um vorherzusagen, wann sie ausfallen wird, statt auf den Ausfall zu warten oder Teile nach einem festen Kalender zu tauschen. In diesem Artikel erfahren Sie, wie Zustandsdaten, Modell und MQTT-Datenpfad zusammenspielen, und Sie bauen ein kleines, lauffähiges Beispiel, das Drift in einem simulierten Motor erkennt.
Von reaktiv zu vorausschauend: Wo Zwillinge ins Spiel kommen
Instandhaltungsstrategien entwickeln sich meist in Stufen:
| Strategie | Auslöser | Stärke | Schwäche |
|---|---|---|---|
| Reaktiv | Maschine fällt aus | Keine Überwachungskosten | Ungeplante Stillstände, Folgeschäden |
| Präventiv | Kalender oder Betriebsstunden | Einfach zu planen | Tauscht intakte Teile, übersieht trotzdem Frühausfälle |
| Zustandsbasiert | Messwert überschreitet einen Grenzwert | Reagiert auf den tatsächlichen Zustand | Grenzwerte sind statisch und lösen oft spät aus |
| Vorausschauend | Modell prognostiziert Verschleiß | Plant Arbeiten vor dem Ausfall | Braucht Datenhistorie und Modellierungsaufwand |
Ein digitaler Zwilling ist das natürliche Zuhause für Predictive Maintenance, weil er bereits den Live-Zustand der Maschine, ihre Konfiguration und ihren Kontext (Last, Drehzahl, Produkt, Umgebungsbedingungen) enthält. Ein roher Schwingungswert sagt für sich allein wenig aus. Ein Schwingungswert, der bei konstanter Last steigt, während die Lagertemperatur zunimmt, erzählt eine Geschichte. Der Zwilling liefert den Kontext, das Modell liest die Geschichte. Hintergründe zu Zwillingskonzepten finden Sie im Leitfaden zur Digital-Twin-Technologie.
Die drei Zutaten für Predictive Maintenance mit dem digitalen Zwilling
1. Zustandsdaten
Die Signale hängen von den Ausfallarten ab, die Sie interessieren:
- Rotierende Anlagen (Motoren, Pumpen, Ventilatoren, Spindeln): Schwingung (RMS, Spitzenwert, Frequenzbänder), Lagertemperatur, Motorstrom
- Hydraulik und Pneumatik: Druck, Durchfluss, Leckrate, Zykluszeiten
- Thermische Prozesse (Öfen, Wärmetauscher): Temperaturen, Heizleistung, Zeit bis zum Erreichen des Sollwerts
- Zerspanungswerkzeuge: Spindellast, Zyklenzahl, Schallemission
Beginnen Sie mit einer Fehlermöglichkeits- und Einflussanalyse (FMEA) des Assets. Wenn sich eine Ausfallart in keinem messbaren Signal zeigt, kann kein Modell sie vorhersagen.
2. Betriebskontext
Derselbe Schwingungspegel kann bei voller Drehzahl normal und im Leerlauf alarmierend sein. Der Zwilling muss Betriebszustand, Drehzahl, Last und Produkttyp kennen, damit Modelle Gleiches mit Gleichem vergleichen. Deshalb gehören Zustandsdaten und Produktionszustand auf dasselbe Daten-Backbone.
3. Das Modell
Modelle reichen von einfach bis anspruchsvoll:
- Statistische Baselines: gleitender Mittelwert und Standardabweichung je Betriebszustand, Alarm bei anhaltender Abweichung
- Trendextrapolation: Anpassen eines Trends an einen Verschleißindikator und Abschätzen, wann er eine Ausfallschwelle überschreitet (eine einfache Schätzung der Restlebensdauer)
- Physikbasierte Modelle: Lagerschadensfrequenzen, thermische Modelle, Verschleißgleichungen
- Machine Learning: Anomalieerkennung oder Fehlerklassifikation, trainiert auf historischen Daten, ausführlicher behandelt in KI-gestützte digitale Zwillinge
Die meisten Teams erzielen mit den ersten beiden echten Nutzen, lange bevor sie Machine Learning brauchen.
Architektur: Zustandsdaten per MQTT streamen
Eine praxistaugliche Architektur hält Edge, Transport und Analytik lose gekoppelt:
- Edge: Sensoren oder Gateways berechnen Merkmale lokal (Schwingungs-RMS über eine Sekunde statt roher 10-kHz-Wellenformen) und veröffentlichen sie per MQTT. Rohe Wellenformen können bei Bedarf erfasst und an der Edge gespeichert werden.
- Broker: Ein zentraler MQTT-Broker verteilt den Merkmalsstrom. Ein verwalteter MQTT-Broker hält dieses Backbone verfügbar, ohne dass Ihr Team Server betreiben muss.
- Zwillings- und Modelldienste: Subscriber, die den Asset-Zustand pflegen, die Modelle ausführen und Ergebnisse (Health Score, Anomalie-Flag, geschätzte Restlebensdauer) auf separaten Topics zurück an MQTT veröffentlichen.
- Historie: Ein Subscriber schreibt Merkmale und Modellausgaben für Training und Audits in eine Zeitreihendatenbank.
- Aktion: Dashboards, der Zwillings-Viewer und Ihr CMMS (computergestütztes Instandhaltungsmanagementsystem) konsumieren die Health-Topics. Die Anbindung an das CMMS ist ein kleiner Subscriber, der über dessen API Arbeitsaufträge anlegt.
Ein Topic-Layout entlang der Anlagenhierarchie hält das übersichtlich:
connectmq/plant1/machining/line2/spindle3/condition features from the edge
connectmq/plant1/machining/line2/spindle3/state running, idle, speed, load
connectmq/plant1/machining/line2/spindle3/health model output
Diese Struktur ist ein Ausschnitt eines Unified Namespace (UNS): Die ISA-95-Ausrüstungshierarchie (Enterprise → Site → Area → Line → Cell) wird zur Topic-Struktur auf dem MQTT-Broker, etwa acme/werk-stuttgart/zerspanung/linie-2/spindel-3/zustand. Zustandsdaten, Betriebszustand und Health-Ausgaben liegen damit an derselben Stelle wie die Daten, die MES und SCADA nutzen. Mehr dazu unter Sparkplug B und Unified Namespace.
Wenn Sie Modellausgaben per MQTT veröffentlichen, statt sie nur in eine Datenbank zu schreiben, sieht jeder Konsument (Zwillings-Viewer, Alarmdienst, CMMS-Bridge) Zustandsänderungen in Echtzeit. Nutzen Sie QoS 1 für Health- und Alarm-Topics, damit sie nicht unbemerkt verloren gehen; der Artikel zu den MQTT-QoS-Stufen erklärt die Abwägungen.
Praxis: Drift in einem simulierten Motor erkennen
Das folgende Python-Beispiel läuft gegen den öffentlichen MQTT-Broker unter broker.connectmq.com. Ein Skript simuliert einen Motor, dessen Schwingung langsam schlechter wird; das zweite fungiert als Health-Modell des Zwillings, berechnet eine gleitende Baseline und eine einfache Schätzung der Zeit bis zum Grenzwert. Der öffentliche MQTT-Broker ist für Tests und Prototypen gedacht: Verwenden Sie nur simulierte Daten, da er für alle lesbar ist.
Der Simulator:
import json
import random
import time
import uuid
import paho.mqtt.client as mqtt
RUN_ID = "pdm-7f3a" # change to your own unique id
TOPIC = f"connectmq/demo/{RUN_ID}/plant1/line2/motor1/condition"
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"motor-sim-{uuid.uuid4().hex[:6]}")
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_start()
wear = 0.0
while True:
wear += random.uniform(0.0005, 0.002) # slow degradation
rms = 1.2 + wear + random.gauss(0, 0.05)
temp = 45 + wear * 8 + random.gauss(0, 0.3)
client.publish(TOPIC, json.dumps({"vibRmsMmS": round(rms, 3), "bearingTempC": round(temp, 2), "ts": time.time()}))
time.sleep(1)
Das Health-Modell:
import json
import time
import uuid
from collections import deque
import paho.mqtt.client as mqtt
RUN_ID = "pdm-7f3a"
BASE = f"connectmq/demo/{RUN_ID}/plant1/line2/motor1"
ALARM_RMS = 2.8 # mm/s, illustrative limit for this example
WINDOW = 120 # samples used for the trend
history = deque(maxlen=WINDOW)
def slope(points):
n = len(points)
xs = [p[0] for p in points]
ys = [p[1] for p in points]
mx, my = sum(xs) / n, sum(ys) / n
den = sum((x - mx) ** 2 for x in xs)
return 0.0 if den == 0 else sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / den
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{BASE}/condition", qos=1)
print("Health model subscribed:", reason_code)
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
history.append((data["ts"], data["vibRmsMmS"]))
if len(history) < 30:
return
current = sum(v for _, v in list(history)[-10:]) / 10
rate = slope(history) # mm/s per second
hours_left = None
if rate > 0 and current < ALARM_RMS:
hours_left = round((ALARM_RMS - current) / rate / 3600, 2)
status = "alarm" if current >= ALARM_RMS else "warning" if hours_left is not None and hours_left < 0.5 else "ok"
health = {"status": status, "vibRmsAvg": round(current, 3), "hoursToLimit": hours_left, "ts": time.time()}
client.publish(f"{BASE}/health", json.dumps(health), qos=1, retain=True)
print(health)
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"health-model-{uuid.uuid4().hex[:6]}")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()
Da der Simulator schnell verschleißt, sehen Sie, wie die geschätzte Zeit bis zum Grenzwert innerhalb weniger Minuten sinkt. In einem echten Werk läuft dieselbe Logik über Tage oder Wochen, mit Grenzwerten aus Normen, Herstellerangaben oder Ihrer eigenen Ausfallhistorie. Dank der Retained-Health-Nachricht zeigt ein später geöffneter Zwillings-Viewer sofort die aktuelle Bewertung.
Checkliste für die Einführung
- Wählen Sie eine kleine Zahl kritischer Assets, bei denen ungeplante Stillstände teuer sind.
- Listen Sie ihre Ausfallarten und die Signale auf, die jede davon erkennbar machen.
- Berechnen Sie Merkmale an der Edge; veröffentlichen Sie Merkmale, keine rohen Wellenformen, per MQTT.
- Veröffentlichen Sie den Betriebszustand zusammen mit den Zustandsdaten, damit Modelle nach Zustand segmentieren können.
- Beginnen Sie mit Baselines und Trendschätzungen; dokumentieren Sie jedes Instandhaltungsereignis für späteres Modelltraining.
- Veröffentlichen Sie Modellausgaben auf eigenen Health-Topics mit QoS 1 und Retained-Zustand.
- Verbinden Sie die Health-Topics mit den Menschen, die handeln: Zwillings-Viewer, Alarmierung und CMMS.
- Prüfen Sie Fehlalarme monatlich und justieren Sie Grenzwerte, bevor Sie Komplexität hinzufügen.
Als schnelle erste Schutzschicht können die Schwellenwert-Alarmregeln und das Alarmprotokoll im ConnectMQ-Portal einen Wert markieren, der einen festen Grenzwert überschreitet, während Ihre Modelle reifen. Die Prognose selbst läuft in Ihren eigenen Diensten, die sich als gewöhnliche MQTT-Clients mit ConnectMQ verbinden.
Häufige Stolpersteine
- Keine Ausfallhistorie. Machine Learning braucht Beispiele für Ausfälle. Beginnen Sie mit Physik und Trends und protokollieren Sie jede Reparatur sorgfältig.
- Betriebszustand ignorieren. Wer Schwingungen im Leerlauf und unter Volllast vergleicht, erzeugt ständig Fehlalarme.
- Rohe Hochfrequenzdaten in die Cloud streamen. Das ist teuer und für die meisten Modelle unnötig. Extrahieren Sie Merkmale an der Edge.
- Alarme ohne Verantwortlichen. Eine Vorhersage ohne Prozess für Arbeitsaufträge ändert nichts.
Predictive Maintenance passt hervorragend zum digitalen Zwilling der Fabrik, in dessen Linienansicht der Health-Status an jeder Maschine angezeigt werden kann.
Streamen Sie Maschinenzustandsdaten mit ConnectMQ
Wechseln Sie vom öffentlichen zu einem privaten Broker, sobald echte Anlagen beteiligt sind. ConnectMQ bietet ein sicheres MQTT-Backbone über TLS mit MQTT-5-Funktionen wie Message Expiry und Shared Subscriptions in den kostenpflichtigen Serverless-Tarifen. Erstellen Sie Ihren kostenlosen Serverless-Broker unter app.connectmq.com, ohne Kreditkarte, und binden Sie Ihr erstes Gateway zur Zustandsüberwachung an.
Häufig gestellte Fragen
Was ist Predictive Maintenance mit dem digitalen Zwilling?
Es ist der Einsatz eines lebendigen digitalen Modells eines Assets, gespeist mit Zustands- und Betriebsdaten, um Verschleiß vorherzusagen und Instandhaltung einzuplanen, bevor ein Ausfall eintritt.
Brauche ich Machine Learning für Predictive Maintenance?
Anfangs nicht. Statistische Baselines und Trendextrapolation erfassen oft die häufigsten Verschleißmuster. Machine Learning wird nützlich, sobald Sie genug gelabelte Historie haben.
Sollte ich rohe Schwingungs-Wellenformen per MQTT senden?
In der Regel nicht kontinuierlich. Berechnen Sie Merkmale wie RMS und Bandenergien an der Edge und veröffentlichen Sie diese; erfassen Sie rohe Wellenformen nur bei Bedarf zur Diagnose.
Wo laufen die Vorhersagemodelle?
In Ihren eigenen Diensten, an der Edge oder in der Cloud, die Zustands-Topics auf dem Broker abonnieren und ihre Ergebnisse als Health-Topics zurück veröffentlichen.



