KI & Digitalisierung

Shopfloor to Cloud: OPC UA + MQTT perfekt kombinieren



Teil 2: MQTT und die perfekte Symbiose

Der agile Brückenbauer zur Cloud und das Zusammenspiel mit OPC UA

MQTT: Der agile Brückenbauer zur Cloud

CLOUD-PROTOKOLL

Was ist MQTT?

MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Publish/Subscribe-Messaging-Protokoll, das ursprünglich 1999 von IBM für die Überwachung von Ölpipelines entwickelt wurde. Das Protokoll wurde 2013 zu einem OASIS-Standard und hat sich als de-facto Standard für IoT- und Cloud-Kommunikation etabliert.

Im Gegensatz zu klassischen Request/Response-Protokollen (wie HTTP) arbeitet MQTT nach dem Publish/Subscribe-Prinzip: Datenquellen (Publisher) senden Nachrichten an Topics, ohne zu wissen, wer diese empfängt. Interessenten (Subscriber) abonnieren Topics und erhalten automatisch alle Nachrichten – ohne direkten Kontakt zum Publisher. Ein zentraler MQTT-Broker verwaltet alle Verbindungen und leitet Nachrichten weiter.

MQTT in Zahlen

  • Protokoll-Overhead: Minimal 2 Bytes pro Nachricht (HTTP: mindestens 200+ Bytes)
  • Verbindungsart: Persistente TCP-Verbindung (kein Connection-Overhead pro Nachricht)
  • Quality of Service: 3 Stufen (QoS 0, 1, 2) für unterschiedliche Zuverlässigkeitsanforderungen
  • Last Will & Testament: Automatische Benachrichtigung bei Verbindungsabbruch

Stärken von MQTT für Cloud-Kommunikation

1. Effizienz und geringer Bandbreitenverbrauch

Der minimale Protokoll-Overhead macht MQTT ideal für Umgebungen mit begrenzter Bandbreite. Ein typisches MQTT-Publish-Paket mit einer Temperaturmessung benötigt etwa 20 Bytes (inkl. TCP/IP-Header), während dieselbe Information per HTTP POST mindestens 250 Bytes erfordern würde. Bei 1000 Sensoren mit 1 Hz Abtastrate spart MQTT täglich über 19 GB Datenverkehr.

2. Zuverlässigkeit in instabilen Netzwerken

MQTT bietet drei Quality-of-Service-Level:

  • QoS 0 (At most once): Nachricht wird einmal gesendet, ohne Empfangsbestätigung. Geeignet für unkritische Telemetriedaten, wo gelegentlicher Verlust akzeptabel ist.
  • QoS 1 (At least once): Nachricht wird mindestens einmal zugestellt, Duplikate möglich. Standard für wichtige Maschinendaten.
  • QoS 2 (Exactly once): Nachricht wird garantiert genau einmal zugestellt. Wichtig für Steuerbefehle oder Transaktionsdaten.

Bei Verbindungsabbruch speichert der Broker Nachrichten für offline Clients (Persistent Sessions) und stellt sie bei Wiederverbindung zu.

3. Hohe Skalierbarkeit für viele Endpunkte

Ein einzelner MQTT-Broker kann problemlos 100.000+ gleichzeitige Verbindungen verwalten. Die entkoppelte Publish/Subscribe-Architektur ermöglicht horizontale Skalierung: Neue Subscriber können hinzugefügt werden, ohne Publisher zu beeinflussen. Cloud-Dienste wie AWS IoT Core oder Azure IoT Hub nutzen MQTT und skalieren auf Millionen Geräte.

4. Optimale Cloud-Integration

Alle großen Cloud-Plattformen bieten native MQTT-Unterstützung:

  • AWS IoT Core: Managed MQTT-Broker mit Regeln-Engine zur Weiterverarbeitung
  • Azure IoT Hub: Gerätemanagement und MQTT-Gateway in einem
  • Google Cloud IoT Core: (eingestellt 2023, aber Alternativen via Cloud Pub/Sub)
  • HiveMQ Cloud, EMQX Cloud: Spezialisierte Managed MQTT-Broker

Typische Anwendungsfälle in der Cloud-Kommunikation

IoT-Daten und Telemetrie

Tausende Sensoren senden kontinuierlich Messwerte an die Cloud. MQTT-Topics strukturieren die Daten hierarchisch, z.B. factory/line-a/machine-05/temperature. Cloud-Anwendungen abonnieren relevante Topics und verarbeiten Daten in Echtzeit.

Remote Monitoring und Alarmierung

Maschinen publizieren Status-Updates und Alarme. Ein Wartungstechniker erhält Push-Benachrichtigungen auf seinem Smartphone, wenn eine kritische Schwelle überschritten wird. Das System kann auch präventiv Warnungen senden, bevor ein Ausfall eintritt.

Bidirektionale Kommunikation für Mobile Apps

Mobile Anwendungen für Maschinenbediener abonnieren Maschinen-Status und können gleichzeitig Steuerbefehle zurücksenden (z.B. Produktionsparameter anpassen). MQTT ermöglicht echte Echtzeit-Interaktion mit minimaler Latenz.

MQTT Publish/Subscribe-Prinzip Publisher (Datenquellen) Gateway 01 Topic: factory/line-a/cnc-05 Gateway 02 Topic: factory/line-b/press-12 IoT Sensor Topic: factory/environment/temp Mobile App Topic: factory/commands/start MQTT Broker (z.B. HiveMQ, Mosquitto) Topics: factory/line-a/cnc-05 factory/line-b/press-12 factory/environment/temp Subscriber (Empfänger) Cloud Analytics Subscribe: factory/# (alle Topics) Dashboard Web-App Subscribe: factory/line-a/# (nur Linie A) Alarm System Subscribe: factory/+/+/alarms (nur Alarme) Datenbank Logger Subscribe: factory/+/+/telemetry (nur Telemetrie) PUBLISH SUBSCRIBE Vorteile: ✓ Publisher kennen Subscriber nicht (Entkopplung) ✓ Beliebig viele Subscriber pro Topic ✓ Dynamisches Hinzufügen ohne Änderungen ✓ Flexible Topic-Filter mit Wildcards (#, +)

MQTT Codebeispiel: Sensor-Daten publizieren (Python)

import paho.mqtt.client as mqtt
import json
import time

# MQTT-Broker-Konfiguration
BROKER = "mqtt.mein-unternehmen.de"
PORT = 8883  # TLS-verschlüsselt
TOPIC = "factory/line-a/machine-05/data"

# Callback bei erfolgreicher Verbindung
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Verbunden mit MQTT-Broker")
    else:
        print(f"Verbindung fehlgeschlagen, Code: {rc}")

# Client initialisieren
client = mqtt.Client(client_id="machine-05-publisher")
client.tls_set(ca_certs="ca-cert.pem")  # TLS-Zertifikat
client.username_pw_set("username", "password")
client.on_connect = on_connect

# Verbindung zum Broker
client.connect(BROKER, PORT, keepalive=60)
client.loop_start()

# Sensordaten publizieren (simuliert)
while True:
    payload = {
        "timestamp": int(time.time()),
        "temperature": 72.3,
        "vibration": 0.15,
        "rpm": 3450
    }
    
    # Als JSON mit QoS 1 (At least once)
    client.publish(TOPIC, json.dumps(payload), qos=1)
    print(f"Gesendet: {payload}")
    
    time.sleep(1)  # 1 Hz Abtastrate

Dieses Beispiel zeigt die Einfachheit von MQTT: Mit wenigen Zeilen Code können Maschinendaten sicher und effizient in die Cloud übertragen werden.

Die perfekte Symbiose: OPC UA und MQTT gemeinsam nutzen

BEST PRACTICE

Das Architekturmuster

Die Kombination von OPC UA und MQTT folgt einem bewährten Prinzip: Nutze jedes Protokoll dort, wo seine Stärken optimal zum Tragen kommen.

Aufgabenteilung in der Hybrid-Architektur

  • OPC UA am Shopfloor: Semantisch reiche Datenbeschreibung, sichere M2M-Kommunikation zwischen Maschinen, SPS und lokalen Systemen (MES, SCADA)
  • MQTT für Cloud-Transport: Effizienter, skalierbarer Transport vorverarbeiteter Daten von Edge Gateways zu Cloud-Plattformen
  • Edge Gateway als Vermittler: Liest OPC UA-Daten, filtert/aggregiert sie, transformiert ins MQTT-Format und publiziert in die Cloud
Kriterium OPC UA MQTT
Primärer Einsatzort Shopfloor / Produktionsnetzwerk Edge-to-Cloud / WAN
Datensemantik Hoch (Informationsmodelle) Niedrig (reine Payload)
Bandbreiteneffizienz Mittel (binäres Protokoll) Sehr hoch
Skalierbarkeit (Anzahl Clients) Mittel (100–1000 Clients) Sehr hoch (100.000+)
Sicherheit Sehr hoch (TLS + X.509) Hoch (TLS, aber weniger granular)
Echtzeit-Fähigkeit Ja (PubSub-Erweiterung) Nein (TCP-basiert, Best-Effort)
Cloud-Integration Komplex (wenige native Integrationen) Einfach (breite Unterstützung)
Standardisierung IEC 62541 OASIS Standard

Die Rolle des Edge Gateways

Das Edge Gateway ist das Herzstück der Hybrid-Architektur. Es übernimmt mehrere kritische Funktionen:

1. Protokollübersetzung

Das Gateway fungiert als OPC UA Client (liest Daten von Maschinen) und MQTT Publisher (sendet Daten in die Cloud). Es extrahiert relevante Informationen aus den OPC UA-Informationsmodellen und verpackt sie in MQTT-Messages.

# Vereinfachtes Beispiel: OPC UA zu MQTT Bridge (Python)
from opcua import Client as OPCClient
import paho.mqtt.client as mqtt
import json
import time

# OPC UA Client initialisieren
opc_client = OPCClient("opc.tcp://10.0.1.50:4840")
opc_client.connect()

# OPC UA Node IDs für Maschinendaten
temp_node = opc_client.get_node("ns=2;s=Machine.Spindle.Temperature")
rpm_node = opc_client.get_node("ns=2;s=Machine.Spindle.RPM")

# MQTT Client initialisieren
mqtt_client = mqtt.Client()
mqtt_client.tls_set(ca_certs="ca-cert.pem")
mqtt_client.username_pw_set("gateway-01", "secure-password")
mqtt_client.connect("mqtt.cloud-provider.com", 8883)
mqtt_client.loop_start()

# Daten-Bridge Loop
while True:
    # OPC UA Daten lesen
    temperature = temp_node.get_value()
    rpm = rpm_node.get_value()
    
    # Payload für MQTT erstellen
    payload = {
        "timestamp": int(time.time()),
        "machine_id": "CNC-05",
        "temperature": temperature,
        "rpm": rpm
    }
    
    # In die Cloud publizieren
    mqtt_client.publish("factory/cnc/machine-05", json.dumps(payload), qos=1)
    
    time.sleep(5)  # Sampling-Rate: 0.2 Hz

# Aufräumen
opc_client.disconnect()
mqtt_client.loop_stop()
mqtt_client.disconnect()

2. Datenvorverarbeitung und Filterung

Nicht alle Shopfloor-Daten müssen in die Cloud. Das Gateway führt Edge Analytics durch:

  • Downsampling: Aus 100 Hz Rohdaten werden 0.1 Hz Mittelwerte für Cloud-Speicherung
  • Schwellwertfilterung: Nur signifikante Änderungen werden übertragen (z.B. Temperatur-Delta > 2°C)
  • Aggregation: Mehrere Sensoren werden zu einem Gesamt-Status verdichtet
  • Anomalieerkennung: Einfache regelbasierte Checks vor Ort, nur Anomalien werden gemeldet

Diese Vorverarbeitung reduziert Cloud-Datenverkehr um 90–95 Prozent bei gleichbleibender Informationsqualität.

3. Lokale Pufferung bei Konnektivitätsausfall

Wenn die Cloud-Verbindung unterbrochen ist, speichert das Gateway Daten lokal (z.B. in SQLite oder InfluxDB) und sendet sie nach, sobald die Verbindung wiederhergestellt ist. Dies verhindert Datenverlust und garantiert lückenlose Zeitreihen.

Vorteile der Kombination

Sicherheit: Defense in Depth

OPC UA sichert die Kommunikation im Produktionsnetzwerk mit TLS, Zertifikaten und Rollenbasierung. Das Gateway fungiert als zusätzliche Sicherheitsschicht (DMZ-Konzept) und trennt Shopfloor vom Internet. MQTT zur Cloud läuft über separate TLS-Verbindungen mit eigenen Credentials. Selbst bei Kompromittierung der Cloud-Verbindung bleibt das Produktionsnetzwerk geschützt.

Effizienz: Pay only for what you need

Cloud-Anbieter berechnen nach Datenvolumen und Rechenzeit. Durch Edge-Filterung werden nur 5–10 Prozent der Rohdaten übertragen. Ein mittelständisches Unternehmen spart so monatlich 500–2000 Euro an Cloud-Kosten, abhängig vom Datenvolumen.

Skalierbarkeit: Vom Prototyp zur Fabrik

Ein Pilotprojekt startet mit einem Edge Gateway und 5 Maschinen. Bei Erfolg können hunderte Maschinen über zusätzliche Gateways angebunden werden, ohne die Cloud-Architektur grundlegend zu ändern. MQTT-Broker skalieren horizontal, OPC UA Server bleiben lokal stabil.

Semantik: Best of both worlds

Das OPC UA-Informationsmodell bleibt erhalten: Das Gateway kann Metadaten (Einheiten, Grenzwerte, Gerätehierarchie) in MQTT-Payload einbetten oder als separate Konfigurations-Topics publizieren. Cloud-Anwendungen können diese Semantik auswerten, ohne direkten OPC UA-Zugriff zu benötigen.

Optionale Erweiterung: OPC UA PubSub

Seit der Spezifikation Part 14 unterstützt OPC UA auch ein Publish/Subscribe-Modell (ähnlich MQTT), das MQTT als Transportprotokoll verwenden kann. Dies ermöglicht, OPC UA-Nachrichten direkt über MQTT zu übertragen und dabei die semantische Information beizubehalten.

Allerdings ist OPC UA PubSub weniger verbreitet als klassisches Client/Server OPC UA und MQTT, daher bleibt die Gateway-basierte Hybridlösung für die meisten KMU praktischer und flexibler.

Gesamtarchitektur: Shopfloor to Cloud 🏭 Shopfloor (OT) CNC Maschine OPC UA Server Presse OPC UA Server Roboter OPC UA Server Legacy + IoT Modbus Gateway OPC UA ⚙️ Edge Layer Edge Gateway ↓ OPC UA Client ⚡ Datenfilterung 📊 Edge Analytics ↑ MQTT Publisher Lokale DB (Offline-Puffer) InfluxDB / SQLite 🔥 FIREWALL MQTT/TLS ☁️ Cloud (IT) MQTT Broker AWS IoT Core / HiveMQ Analytics Zeitreihen-DB ML/AI Pred. Maint. Dashboard Grafana API REST/GraphQL 📱 Endgeräte Web App Mobile ERP Datenfluss: Shopfloor: Maschinendaten mit OPC UA (semantisch, sicher) Edge: Filterung, Aggregation, Protokollübersetzung Cloud: MQTT-Transport, Skalierbare Verarbeitung & Speicherung 🔒 Sicherheit: OPC UA: TLS + X.509 Zertifikate | Edge Gateway: DMZ mit Firewall | MQTT: TLS 1.2+ verschlüsselt | Cloud: IAM + Verschlüsselung at-rest

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert