Wie verbinde ich die Messwerte eines Distanzsensors via MQTT auf einer WAGO?

Du liest den Sensor an einer WAGO-Klemme ein, skalierst den Rohwert im Controller und lässt die WAGO-SPS den Messwert als MQTT-Nachricht an einen Broker senden. Ein Bridge-Dienst auf der Gegenseite abonniert das Topic und schreibt die Werte weg – genau so laufen bei uns die Kunden-IoT-Strecken.
1) Distanzsensor physisch an eine passende WAGO-Klemme anschließen (Analog 4–20 mA / 0–10 V oder IO-Link). 2) Rohwert im Controller-Programm (CODESYS/e!COCKPIT) einlesen und in eine echte Distanz umrechnen. 3) In der SPS den MQTT-Publisher konfigurieren: Broker-Adresse, Port, Topic und Nutzlast (am besten JSON). 4) Auf der Empfängerseite ein Dienst, der das Topic abonniert und die Werte in deine Datenbank schreibt. Die WAGO ist dabei der Publisher, dein Server der Subscriber.

Ein Distanzsensor liefert meist ein analoges Signal (4–20 mA oder 0–10 V) oder kommuniziert über IO-Link. Für 4–20 mA nutzt du eine Analog-Eingangsklemme, für 0–10 V die entsprechende Spannungs-Klemme, für IO-Link eine IO-Link-Master-Klemme. Klemmentyp und Messbereich müssen zum Sensor-Datenblatt passen – sonst stimmt später die Skalierung nicht. Achte auf korrekte Versorgung (24 V) und Zwei-/Drei-Leiter-Anschluss laut Sensor.

Im WAGO-Controller liest du den Rohwert der Analog-Klemme aus (typisch ein Integer-Bereich, z. B. 0–32767 über den Messbereich). Diesen rechnest du linear auf die physikalische Distanz um: Distanz = min + (roh − roh_min) / (roh_max − roh_min) × (max − min). Diesen skalierten Wert legst du als Variable ab, die anschließend per MQTT gesendet wird. Prüfe den Wert mit einer bekannten Referenzstrecke, bevor du live gehst.

WAGO-Controller (z. B. PFC100/PFC200) können über die MQTT-Funktion bzw. eine MQTT-Bibliothek in CODESYS/e!COCKPIT selbst als Publisher senden. Du hinterlegst Broker-IP und Port (unverschlüsselt üblich 1883, mit Authentifizierung/TLS oft 1884), einen Client-Namen sowie Benutzer/Passwort, falls der Broker Auth verlangt. Als Topic wählst du ein eindeutiges, hierarchisches Präfix, etwa standort/geraet/distanz/json, und sendest die Nutzlast als JSON, z. B. {"distanz_mm": 1234, "ts": "..."}. JSON macht das Weiterverarbeiten deutlich einfacher als reine Zahlenwerte.

Auf dem Server läuft ein Dienst, der das Topic abonniert und die Nachrichten wegschreibt. Bei uns übernimmt das z. B. eine MQTT→ClickHouse-Bridge (systemd-Dienst), die Topics wie geraet/*/json abonniert und die Felder direkt in eine Zieltabelle schreibt; alternativ geht der Weg MQTT→InfluxDB. Wichtig: Broker, Topic-Schema und JSON-Feldnamen zwischen SPS und Bridge müssen exakt übereinstimmen, sonst kommen die Werte nicht an.
Falscher Klemmentyp oder Messbereich → Skalierung liefert Unsinn. Broker-Port/Auth vertauscht → Verbindung wird stumm abgelehnt. Topic-Schreibfehler → Subscriber empfängt nichts, ohne Fehlermeldung. Rohzahl statt JSON gesendet → Bridge kann Felder nicht parsen. Prüfe die Strecke mit einem MQTT-Client (mosquitto_sub) auf dem Broker, bevor du die Datenbank-Bridge dranhängst – so siehst du sofort, ob die WAGO überhaupt sendet.