WAGO über MQTT an ein SCADA-System anbinden

Du willst Prozessdaten einer WAGO-Steuerung (PFC100/PFC200) in dein SCADA holen? Der saubere Weg ist: Die WAGO publiziert per MQTT auf einen Broker, dein SCADA abonniert dieselben Topics. So funktioniert es Schritt für Schritt.
WAGO-PLC (Publisher) → MQTT-Broker (z. B. Mosquitto) → SCADA (Subscriber). Die WAGO schreibt Messwerte als kleine JSON- oder Wert-Nachrichten auf ein Topic wie anlage/wago1/leistung, der Broker verteilt sie, und jedes SCADA/Dashboard, das dieses Topic abonniert, bekommt die Werte in Echtzeit. Kein direktes Polling der PLC nötig – der Broker entkoppelt Sender und Empfänger.

1) In WAGO WBM (Web-Based Management) den Zugriff bzw. die CODESYS-Laufzeit/Docker vorbereiten. 2) MQTT-Client auf der PLC konfigurieren: in CODESYS mit der MQTT-Bibliothek publizieren, oder auf der Linux-Ebene der PFC200 per Node-RED/Skript. 3) Broker-Adresse, Port (1883 offen, 8883 mit TLS), User/Passwort und Topic-Präfix eintragen. 4) Variablen auf Topics mappen. 5) Im SCADA denselben Broker als Datenquelle anlegen und die Topics abonnieren.

WAGO PFC100/PFC200 laufen auf einem echten Linux. Dadurch hast du drei Wege: (a) CODESYS mit MQTT-Client-Bibliothek direkt aus dem SPS-Programm publizieren, (b) Node-RED als Docker-Container auf der PLC, das interne oder Modbus-Werte liest und per MQTT-Node sendet, (c) ein eigenes Python-/Shell-Skript mit einer MQTT-Bibliothek. Welcher Weg passt, hängt davon ab, ob du im SPS-Programm bleiben willst oder die Linux-Ebene nutzt.

Halte Topics hierarchisch und sprechend: standort/gerät/messgröße, z. B. hof1/wago-bhkw/wirkleistung_kw. Als Payload eignet sich schlankes JSON – das kann jedes SCADA und jede Datenbank weiterverarbeiten. Konsistente Namen sparen später viel Arbeit beim Mapping. Nutze retain für langsame Zustandswerte und QoS 1, wenn keine Nachricht verloren gehen darf.

Achte auf Zeitstempel: Sende die PLC-Zeit im Payload mit und klär, ob lokal oder UTC – naive Lokalzeit als UTC zu interpretieren ist ein klassischer Fehler. Ports/Firewall: 1883 unverschlüsselt, für Fernzugriff besser 8883 mit TLS und eigenem MQTT-User pro Anlage. Und teste die Kette erst mit einem MQTT-Tool (z. B. mosquitto_sub), bevor du das SCADA anhängst – so siehst du sofort, ob die WAGO überhaupt publiziert.
Nein. Weil MQTT herstellerneutral ist, kannst du statt eines klassischen SCADA auch eine Kette Broker → Datenbank → Dashboard bauen: eine Bridge schreibt die MQTT-Nachrichten in eine Zeitreihen-Datenbank (z. B. InfluxDB oder ClickHouse), ein Dashboard (z. B. Grafana) visualisiert. Für reines Monitoring, Trends und Alarme reicht das oft und ist flexibler. Volle Prozess-Bedienung mit Stellbefehlen spricht dagegen weiter für ein echtes SCADA.
→ Vertiefung: WAGO SPS programmieren: So starten Sie mit e!COCKPIT