HomeBlog

S7-1200 per Modbus an MQTT einbinden – so geht's

Stromfee Redaktion · 5. Juli 2026
S7-1200 per Modbus an MQTT einbinden – so geht's
Energie — Stromfee (KI-Bild)

Die S7-1200 kann Modbus (TCP oder RTU), aber MQTT beherrscht sie nicht direkt. Du brauchst deshalb eine Brücke, die die Register der SPS liest und als MQTT-Nachricht an deinen Broker schickt.

Direkte Antwort: geht die S7-1200 nativ auf MQTT?

Nein, nicht out-of-the-box. Die S7-1200 stellt über die Bausteine MB_SERVER/MB_CLIENT (Modbus TCP) bzw. MB_MASTER/MB_SLAVE (Modbus RTU, RS485-Modul) ihre Daten bereit. MQTT ist kein Standard-Protokoll der CPU. Praktikabelster Weg: ein kleines Gateway (Raspberry Pi, Industrie-PC oder Node-RED) liest die Modbus-Register und published sie an einen MQTT-Broker wie Mosquitto. Optional bietet Siemens für neuere Firmware (ab V4.4) eine MQTT-Anwenderbibliothek über Open User Communication – das ist aber aufwendiger als die Gateway-Variante.

S7-1200 per Modbus an MQTT einbinden – so geht's
Energie — Stromfee (KI-Bild)
Die 5 Schritte im Überblick

1) In TIA Portal die S7-1200 als Modbus-Server konfigurieren (MB_SERVER, Port 502, Holding-Register-Bereich festlegen). 2) Broker aufsetzen (z. B. Mosquitto auf dem Gateway-Rechner). 3) Auf dem Gateway die Register per Modbus TCP lesen. 4) Werte in eine JSON-Nutzlast packen und an ein Topic publishen (z. B. anlage/s7-1200/leistung). 5) Mit einem MQTT-Client (MQTT Explorer) prüfen, ob die Werte ankommen.

S7-1200 per Modbus an MQTT einbinden – so geht's
Energie — Stromfee (KI-Bild)
Variante A – Node-RED (ohne viel Code)

Schnellster Einstieg: In Node-RED die Nodes node-red-contrib-modbus installieren. Einen 'Modbus Read'-Node auf die IP der S7-1200, Port 502, Funktionscode FC03 (Holding Register) bzw. FC04 (Input Register) legen, Startadresse und Anzahl setzen. Ausgang über einen Function-Node in JSON umwandeln und an einen 'MQTT out'-Node hängen, der auf deinen Broker zeigt. Damit läuft die Brücke ohne eigene Programmierung.

S7-1200 per Modbus an MQTT einbinden – so geht's
Energie — Stromfee (KI-Bild)
Variante B – Python (pymodbus + paho-mqtt)

Für volle Kontrolle: pymodbus liest die Register, paho-mqtt published. Grundgerüst: ModbusTcpClient('<SPS-IP>', port=502).connect(), dann read_holding_registers(startadresse, anzahl, slave=1). Die Register-Werte skalieren (Faktor beachten, ggf. zwei Register zu einem 32-Bit-Wert kombinieren), als JSON serialisieren und mit client.publish('anlage/s7-1200/...', payload) senden. Das Ganze in einer Schleife mit festem Intervall (z. B. alle 5 s) laufen lassen und als systemd-Dienst absichern.

S7-1200 per Modbus an MQTT einbinden – so geht's
Energie — Stromfee (KI-Bild)
Register richtig lesen: worauf du achten musst

Adress-Offset: Manche Tools zählen ab 0, die Modbus-Doku oft ab 1 – wenn Werte fehlen, liegt es meist hier. Funktionscode passend wählen (FC03 Holding, FC04 Input, FC01/FC02 für Bits). Datentyp und Byte-Reihenfolge klären: Ein REAL/32-Bit-Wert belegt zwei Register; falsche Word-/Byte-Order (Big/Little Endian) liefert Unsinn. In TIA Portal exakt festhalten, welcher Merker/DB-Wert auf welcher Modbus-Adresse liegt.

Absicherung & sauberer Betrieb

Modbus TCP kennt keine Authentifizierung – Gateway und SPS gehören ins gleiche, abgeschottete Anlagen-Subnetz, nicht offen ins Internet. Den MQTT-Broker mit Benutzer/Passwort und möglichst TLS betreiben. Ein konsistentes Topic-Schema wählen (z. B. standort/anlage/messgroesse) und die Brücke als Dienst starten, damit sie nach Neustart automatisch wieder läuft.

🎬 Der Energie-Zähler
Dazu von Stromfee
Charge DirectorArbitrage & WirtschaftlichkeitBESS EngineerAuslegung

Was bringt dir ein Batteriespeicher?

BESS-System ansehen →
🌐 Stromfee in your language: English · Deutsch · Español · Français · Português · العربية · 日本語 · 中文 · 한국어 · हिन्दी · Bahasa