Siemens S7-1200 und MQTT: So bindest du die SPS an

Die S7-1200 hat keinen fertigen MQTT-Baustein wie ein IoT-Modul, kann aber trotzdem MQTT sprechen. Du hast zwei praxiserprobte Wege: eine MQTT-Client-Bibliothek direkt in der SPS oder ein vorgeschaltetes Edge-Gateway.
Die S7-1200 bringt von Haus aus keinen eingebauten MQTT-Befehl mit. Sie kann MQTT über die 'Open User Communication' (TCON, TSEND, TRCV) abwickeln – dafür lädst du eine MQTT-Client-Funktionsbausteinbibliothek ins TIA Portal. Voraussetzung ist eine aktuelle Firmware (V4.x) und eine freie PROFINET-/Ethernet-Schnittstelle. Alternativ übernimmt ein kleines Gateway (z. B. Raspberry Pi) das Publizieren – das ist oft der schnellere und stabilere Weg.

Im TIA Portal legst du eine TCP-Verbindung zum MQTT-Broker an (Standardport 1883, verschlüsselt 8883). Der MQTT-Client-Baustein baut die CONNECT-Verbindung auf, sendet PUBLISH mit deinem Topic und Payload und hält per PINGREQ die Verbindung. Deine Prozesswerte gibst du meist als JSON-String aus. Beachte: TLS-Verschlüsselung ist auf der S7-1200 nur eingeschränkt möglich – prüfe, ob dein Broker unverschlüsselt (Port 1883) im internen Netz erreichbar ist oder ob du TLS wirklich brauchst.

Statt die SPS selbst publizieren zu lassen, liest ein Gateway (Raspberry Pi, Siemens IOT2040) die Daten über das S7-Protokoll aus (z. B. mit der Bibliothek snap7) und veröffentlicht sie per MQTT. So läuft es auch in unseren Edge-Templates: der Pi ist gleichzeitig Publisher und Subscriber und schickt alle Werte im 5-Sekunden-Takt als JSON an den Broker. Vorteil: TLS, Puffern bei Netzausfall und Formatierung erledigst du komfortabel in Python – nicht im SPS-Programm.

Definiere vorab drei Dinge: den Broker (IP/Hostname + Port, z. B. 1883 offen oder 1884 mit Authentifizierung), eine saubere Topic-Struktur (z. B. anlage/s7-1200/messwerte/json) und das Payload-Format. Bewährt hat sich eine flache JSON-Struktur pro Publish. Nutze einen MQTT-User mit Passwort statt anonymem Zugriff – gerade wenn der Broker über das Internet erreichbar ist.

Bevor du die SPS produktiv anbindest, teste den Broker mit Bordmitteln: 'mosquitto_sub -t #' zeigt dir alle eingehenden Nachrichten, mit dem MQTT Explorer siehst du Topics grafisch. So merkst du sofort, ob CONNECT klappt, ob dein Topic ankommt und ob das JSON valide ist – das spart dir stundenlanges Suchen im SPS-Baustein.
Häufige Fehler: falscher oder blockierter Port (Firewall!), fehlende Authentifizierung am Broker, zu kurze Keep-Alive-Zeit (Verbindung bricht ab), oder ein Payload, das kein gültiges JSON ist. Prüfe außerdem, ob deine S7-1200-Firmware die Open-User-Communication-Bausteine unterstützt. Bei TLS-Anforderungen ist das Gateway fast immer der robustere Weg.