MQTT in der Industrie

Lesedauer: 5min Veröffentlicht am: August 10, 2023. Der Autor des Beitrages ist Maximilian Backenstos.
Unser Blogpost beleuchtet die Welt von MQTT in der Fertigungsindustrie. Wir beleuchten den Aufbau, die Struktur und erklären relevante Begriffe wie QoS und Sicherheit. Erfahren Sie Vor- und Nachteile, entdecken Sie Integrationen mit Datenbanken und IO-Link, und erleben Sie eine praxisnahe Case Study zur automatisierten Motorüberwachung in einem Logistikzentrum. Unsere FAQs bieten Antworten auf gängige Fragen und zeigen die vielseitigen Einsatzmöglichkeiten von MQTT in der Industrie.
Inhalte auf dieser Seite
Primary Item (H2)Sub Item 1 (H3)

Einführung in Aufbau & Struktur von MQTT

MQTT (Abkürzung für Message Queuing Telemetry Transport)  ist ein Datenaustauschprotokoll. Dabei tauschen zwei Geräte (dem "Client") über einen sogenannten Broker Daten miteinander aus. Ein Client kann dabei Daten an einen Broker senden („publish“ – wir übersetzen dies mit veröffentlichen) und ebenfalls Daten von einem Broker erhalten („subscribe“ – wir übersetzen dies mit abonnieren). Beim Veröffentlichen gibt der Sender-Client neben der Nachricht (dem "Payload") ein "Topic" (wir übersetzen dies mit Kanal) an, auf welches er es veröffentlichen möchte. Der Empfänger-Client abonniert diesen Kanal und bekommt die Nachricht aus diesem Kanal vom Broker weitergereicht.

Zu besseren Verständlichkeit haben wir das anhand eines Paketversands illustriert. Zwei Paketboten veröffentlichen auf den Topics „Grün“ bzw. „Rot“ ihre Pakete. Diese werden alle über den zentralen Broker versandt. Dieser sortiert die Pakete und verteilt diese. Zwei weitere Clients – zwei Warenhäuser – haben jeweils das rote bzw. grüne Topic abonniert. Also verteilt der Broker nur die jeweiligen Pakete an die Warenhäuser. Obwohl also beim Broker die Pakete bunt gemischt waren, kommen diese farbengetrennt bei den Clients an. Das Paket steht dabei für eine Nachricht. Der Paketinhalt steht für das sogenannte Payload, also die zu übermittelnden Nutzdaten.

Relevante Begriffe einfach erklärt

In MQTT werden verschiedene Begrifflichkeiten verwendet. In der folgenden Liste haben wir die wichtigsten erklärt:

  • Broker: Ein Server, der MQTT-Nachrichten von Publishern empfängt und an die entsprechenden Abonnenten weiterleitet.
  • Client: Ein Gerät oder eine Anwendung, die MQTT verwendet, um Nachrichten zu veröffentlichen oder zu abonnieren.
  • Pusblish (Veröffentlichen): Beim Veröffentlichen sendet ein MQTT-Client (Publisher) eine Nachricht in einem bestimmten Kanal an den MQTT-Broker. Die Payload der Nachricht enthält die eigentlichen Daten, die übertragen werden sollen, z.B. Sensormesswerte, Statusinformationen oder Befehle.
  • Subscribe (Abonnieren): Beim Abonnieren teilt ein MQTT-Client (Subscriber) dem Broker mit, dass er Nachrichten zu einem bestimmten Thema erhalten möchte. Der Client kann mehrere Themen gleichzeitig abonnieren. Sobald der Broker eine Nachricht mit einem abonnierten Thema erhält, leitet er diese an den entsprechenden Abonnenten weiter. Die Verwendung von Abonnements ermöglicht es, nur relevanten Informationen zu erhalten, anstatt alle veröffentlichten Nachrichten zu erhalten.
  • Payload: Die Payload ist der eigentliche Nutzdatenteil einer MQTT-Nachricht. Die Payload kann verschiedene Formate haben, abhängig von der Art der zu übertragenden Daten. Beispielsweise kann es sich um Temperaturwerte, Textnachrichten, Steuerbefehle oder andere relevante Informationen handeln.
  • Overhead: Der Overhead umfasst die zusätzlichen Daten, die durch das Protokoll selbst während der Nachrichtenübertragung eingeführt werden, einschließlich Header, Steuerungsinformationen und alle zusätzlichen Bytes neben den eigentlichen Nutzdaten.
  • Topic (Kanal): Das Veröffentlichen und Abonnieren von Nachrichten wird mit Hilfe von Topics organisiert. Topics ermöglichen es, Nachrichten nach ihrem Inhalt oder ihrer Bedeutung zu gruppieren. Beispiele für Topics könnten sein: "sensoren/temperatur" oder "halle1/spritzguss/zustand".
  • QoS (Quality of Service): Die Stufe der Nachrichtenübertragungsgarantie, die angibt, wie zuverlässig die Zustellung von Nachrichten sein soll (QoS 0, QoS 1, QoS 2). Mehr zum Thema QoS in den nachfolgenden Abschnitten.

Wildcard

Wildcards sind spezielle Zeichen, die verwendet werden, um mehrere Topics zu abonnieren oder zu filtern. Es gibt zwei Arten von Wildcards in MQTT:

  • Single-Level Wildcard (+): Das Pluszeichen wird in einem Abonnement verwendet, um ein einzelnes Level des Topics zu ersetzen. Zum Beispiel, wenn ein Subscriber "halle1/+/licht" abonniert, empfängt er Nachrichten von Themen wie "halle1/decke/licht" und "halle1/buero/licht".
  • Multi-Level Wildcard (#): Das Rautenzeichen wird verwendet, um mehrere Ebenen eines Topics zu ersetzen. Wenn ein Subscriber "halle1/#" abonniert, empfängt er Nachrichten von allen Themen, die mit "halle1/" beginnen, unabhängig von den nachfolgenden Ebenen. Das bedeutet, er erhält Nachrichten, wie "halle1/decke/licht" oder "halle1/spritzguss/temperatur".

Quality of Service (QoS): Gewährleistung der Nachrichtenqualität und Zuverlässigkeit

QoS ist eine Vereinbarung zwischen dem Sender und Empfänger einer Nachricht in Bezug auf das Garantieren der Nachrichtenübermittlung. Es existieren drei verschiedene Level in MQTT:

  • QoS 0 – höchstens einmal eine Nachricht versenden
  • QoS 1 – mindestens einmal eine Nachricht versenden
  • QoS 2 – genau einmal eine Nachricht versenden

Beide Kommunikationsarten (Publish/Subscribe) zum und vom Broker müssen berücksichtigt und getrennt voneinander betrachtet werden. Das QoS-Level, welches ein Client beim Publishen einer Nachricht verwendet, wird vom jeweiligen Client gesetzt. Wenn der Broker nun die Nachricht an einen Client weiterleitet, der entsprechend das Topic abonniert hat, wird das QoS-Level vom Subscriber verwendet, welches beim Herstellen des Abonnement angegeben wurde. Dies bedeutet, dass ein QoS-Level, welches vom Publisher vielleicht mit 2 angegeben wurde, vom Subscriber mit 0 „überschrieben“ werden kann.

Entscheidungshilfe: QoS-Stufen

  • QoS 0, wenn: Stabile Verbindung zwischen Sender und Empfänger bspw. bei einer verkabelten Verbindung, Manche Nachrichten dürfen verloren gehen, Es müssen keine Daten in einer Warteschlange bei fehlender Verbindung aufgestaut werden auf Sender-Seite
  • QoS 1, wenn: Jede Nachricht muss empfangen werden und die Anwendung kann mit Duplikaten umgehen
  • QoS 2, wenn: Jede Nachricht muss genau einmal empfangen werden und der zusätzliche Overhead im Vergleich zu QOS1 ist handhabbar.

Sicherheit in MQTT: Schutz und Absicherung der Datenübertragung

Im Protokoll können verschiedene Sicherheitsmechanismen implementiert werden. Je nach Implementierung ist der Umfang der Sicherheitseinstellungen eingeschränkt oder vollständig implementiert. Die verschiedenen Möglichkeiten können auf die Protokollteilnehmer (Broker, Client sowie Netzwerk) verteilt werden.

Sicherheitsmöglichkeiten auf Client-Ebene

  • Benutzername und Passwort: MQTT ermöglicht die Authentifizierung von Clients durch die Verwendung von Benutzernamen und Passwörtern. Diese Informationen werden bei der Verbindungsherstellung verwendet.
  • TLS/SSL-Verschlüsselung: MQTT unterstützt die Verschlüsselung des Datenverkehrs über das Transport Layer Security (TLS) oder das Secure Sockets Layer (SSL) Protokoll. Dies schützt die Daten während der Übertragung.
  • Client-Zertifikate: Statt nur Benutzername und Passwort können auch Client-Zertifikate verwendet werden, um die Authentizität von MQTT-Clients sicherzustellen.
  • Quality of Service (QoS): Wie oben beschrieben, beeinflusst die QoS-Stufe (0, 1, 2) die Nachrichtenübermittlung und -bestätigung. Höhere QoS Levels bieten mehr Sicherheit bei der Nachrichtenzustellung, erfordern aber auch mehr Overhead.
  • Keep Alive und Timeout: MQTT verwendet Keep Alive Mechanismen, um die Verbindung zwischen Client und Broker aufrecht zu erhalten. Timeout-Einstellungen können unautorisierten Zugriff oder persistente Verbindungen einschränken.

Sicherheitsmöglichkeiten auf Broker-Ebene

  • Verbindungssicherheit: Broker können so konfiguriert werden, dass unbenutzte oder nicht authentifizierte Verbindungen automatisch getrennt werden, um Sicherheitslücken zu minimieren.
  • Access Control Lists (ACL): MQTT-Broker können Zugriffskontrolllisten verwenden, um festzulegen, welche Clients auf welche Themen (Topics) zugreifen dürfen. Dadurch ist eine feingranulare Zugriffskontrolle gegeben.

Auf Netzwerkebene kann der Zugriff auf MQTT-Broker auf autorisierte Clients beschränkt werden, indem Netzwerksegmente und Firewalls entsprechend konfiguriert werden.

Hinweis: Die Sicherheitsmöglichkeiten und Bedrohungen ändern sich mit der Zeit. Eine periodische Überprüfung der verwendeten Protokolle bietet sich an.

Vor- und Nachteile des Protokolls

Folgende Argumente sprechen für die Verwendung des Protokolls

  • Leichtgewichtig und effizient: MQTT ist auf Effizienz ausgelegt und hat einen geringen Overhead. Dies ermöglicht eine effiziente Nutzung von Netzwerkbandbreite und Ressourcen, was besonders in ressourcenbeschränkten Umgebungen wie IoT-Geräten wichtig ist.
  • Flexibles Publish-Subscribe-Modell: Das Publish-Subscribe-Modell ermöglicht eine flexible und lose gekoppelte Kommunikation zwischen verschiedenen Clients, was die Skalierbarkeit und Erweiterbarkeit erleichtert.
  • Topics und Wildcards: Die Verwendung von Topics und Wildcards ermöglicht eine einfache Organisation und Filterung von Nachrichten, was die Effizienz und Flexibilität der Kommunikation erhöht.
  • Offline-Nachrichten: MQTT-Broker können Nachrichten für Clients speichern, die offline sind. Sobald ein Client wieder online ist, erhält er die zwischengespeicherten Nachrichten.
  • Einfache Integration: MQTT ist in eine Vielzahl von Plattformen und Anwendungen integrierbar. Es gibt zahlreiche MQTT-Bibliotheken und Implementierungen für verschiedene Programmiersprachen und Betriebssysteme. Insbesondere Implementierungen mit niedrigen QoS Levels sind sehr einfach zu implementieren.

Es gibt jedoch auch Nachteile, die mit diesem Protokoll verbunden sind:

  • Komplexere Implementierung bei hohem QoS-Level: Die Implementierung von QoS 2 (Exactly Once) erfordert einen komplexeren Nachrichtenaustausch, der zusätzlichen Overhead verursachen kann.
  • Abhängigkeit vom Broker: In einem Publish-Subscribe-Modell sind die Clients von einem Broker abhängig, was bedeutet, dass der Broker ein Single Point of Failure sein kann.
  • Echtzeitimplementation nicht empfehlenswert: MQTT bietet eine effiziente Kommunikation, ist aber nicht immer die beste Wahl für Anwendungen, die extrem niedrige Latenzzeiten erfordern, wie z.B. Echtzeitsysteme.
  • Datentyp und Formatierung: Das Format der Nutzlast muss sowohl dem Sender als auch dem Empfänger bekannt und durch beide implementiert sein, damit der Austausch korrekt stattfindet.

MQTT to X – Schnittstelle zu Datenbanken und weiteren Anwendungen

Python Skript

Um Daten von einem MQTT-Broker zu abonnieren, existieren diverse Python-Skripte. Das folgende Skript verbindet sich mit einem Broker und gibt die Daten auf der Kommandozeile aus. Dazu verbindet sich das Skript mit einem definierten Broker auf Port 1883. Dort abonniert das Skript das Topic „sensoren/temperatur“ und gibt diese bei Nachrichtenempfang aus. Als Beispiel Bibliothek findet die MQTT Bibliothek von Paho Anwendung.

import paho.mqtt.client as mqtt
# Callback-Funktion, die aufgerufen wird, wenn eine Nachricht empfangen wird
def on_message(client, userdata, message):
    print(f"Empfangene Nachricht: {message.payload.decode()}")
# MQTT-Client erstellen
client = mqtt.Client()
# Callback-Funktion für Nachrichtenregistrierung festlegen
client.on_message = on_message
# Verbindung zum Broker herstellen (Broker-IP-Adresse oder Hostname angeben)
broker_address = "broker.example.com"
client.connect(broker_address, port=1883)
# Thema, das abonniert werden soll
topic = "sensoren/temperatur"
# Thema abonnieren
client.subscribe(topic)
# Auf eingehende Nachrichten warten
client.loop_forever()

MQTT mit DatenBerg smartPLAZA

Das DatenBerg Gateway hat MQTT-Funktionalitäten standardmäßig integriert. Zur Weiterverarbeitung kann direkt ein Python-Skript eingebunden werden. So kann die z.B. die Umrechnung von Rohsignalen vom Binär- ins Dezimalsystem direkt auf dem Gateway stattfinden. Das Gateway sendet die Daten dann verschlüsselt an die smartPLAZA. Falls keine Verbindung zum Server möglich ist, speichert das Gateway die Daten lokal ab und puffert diese. Somit ist ein Sicherheitspuffer vorhanden. In der smartPLAZA werden die Daten dann in einer Datenbank gespeichert und können visualisiert, auf Grenzwerte überwacht oder für weitere Berechnungen verwendet werden.

Integration von MQTT und IO-Link

IO-Link als standardisiertes Kommunikationsprotokoll setzt sich in der Industrie immer mehr durch. Damit können Sensoren und Aktoren nach dem Plug & Play-Prinzip an eine Steuerung, den sogenannten IO-Link-Master, angeschlossen werden. Die Konfigurationsdateien der einzelnen Geräte stehen als sogenannte IODD-Dateien online zur Verfügung. Hersteller wie IFM mit der DataLine oder Pepperl & Fuchs mit den IEC-Geräten bieten auf ihren IO-Link-Mastern direkt die Funktionalität zur MQTT-Kommunikation an. Damit kann der Master bidirektional Daten an einen Broker senden und von diesem empfangen. Durch den modularen IO-Link Ansatz entsteht auf einfache Weise ein kabelbasiertes Netzwerk. Die Kommunikation vom Sensor zum Master erfolgt über das IO-Link-Protokoll und die Kommunikation der Sensordaten findet über MQTT statt. Dies kann ohne Programmierung, sondern nur mit Webapplikationen erfolgen.

Verbindung zwischen MQTT und SPS

Neben der dezentralen Sensorik können auch Steuerungen von MQTT profitieren. Für folgende Hersteller haben wir die MQTT-Funktionalitäten exemplarisch recherchiert:

  • Siemens
  • Beckhoff
  • Bachmann Electronic

Bei Siemens gibt es den Funktionsbaustein „LMQTT“. Dieser ist für die Steuerungen S7-1500 und S7-1200 konzipiert und im TIA-Portal verfügbar. Sowohl Veröffentlichungs- als auch Abonnierfunktionien sind umgesetzt. Als Sicherheitsfeature wird TLS-Verschlüsselung angeboten. Mehr dazu hier in der offiziellen Siemensanleitung. In der Beckhoff-Welt gibt es auch einen vordefinierten Funktionsbaustein namens „FB_IotMqttClient“ für die MQTT-Kommunikation. Der Baustein ist in der Bibliothek „Tc3_IotBase“ enthalten. Außerdem gibt es ein Modul für den „Last Will“ des Clients und ein weiteres Modul für die TLS-Konfiguration. Hier gibt es eine Anleitung von Beckhoff zur Konfiguration. Auch von Bachmann Electronic gibt es eine vorgefertigte Software für die MQTT-Kommunikation in der M1-Steuerungswelt. Die Einbindung erfolgt hier über die SPS-Bausteinbibliothek oder als C/C++ Headerdatei. Für IEC 61331-3 API mit Headerdatei für C/C++. Weitere Informationen finden Sie hier.

Case Study: Automatisierte Überwachung von Motoren in einem Logistikzentrum mittels MQTT-Technologie

Problem: Manuelle Überwachung und fehlende Datenerfassung von dezentralen Motoren

In einem großen Logistikzentrum, das eine große Anzahl dezentraler Motoren für verschiedene Betriebsaufgaben betreibt, stand das Problem der manuellen Überwachung im Vordergrund. Die vorhandene Steuerungstechnik ermöglichte keine Überwachung der Vibrationen und Laufzeiten der Motoren, was zu ineffizienten Wartungsprozessen, unerwarteten Ausfällen und hohen Wartungskosten führte. Die fehlende Möglichkeit, den Zustand der Motoren frühzeitig zu erkennen, beeinträchtigte die Betriebskontinuität und erhöhte die Ausfallzeiten.

Lösung: Implementierung von kabellosen Sensor Gateways mit MQTT-Integration

Um dieses Problem zu lösen, entschied sich das Logistikzentrum für eine innovative Lösung: die Implementierung von drahtlosen Sensor Gateways mit integrierten Vibrationssensoren. Diese Sensoren sind an den Motoren angebracht und sammeln kontinuierlich Daten über die Vibrationen an den Motoren. Die gesammelten Daten werden über ein WLAN-Netzwerk an einen zentralen MQTT-Broker übertragen. Die MQTT-Technologie ermöglichte eine effiziente, zuverlässige und echtzeitfähige Kommunikation zwischen den Sensoren und dem Broker.

Die erfassten Daten sind mit Hilfe einer optimierten Topic-Struktur intelligent kategorisiert und organisiert. Diese Topic-Struktur ermöglichte es, die Sensorsignale den entsprechenden Motoren zuzuordnen und einen klaren Überblick über den Zustand jedes Motors zu erhalten. Das Logistikzentrum nutzte MQTT, um die Daten an die DatenBerg smartPLAZA zu senden, die als zentrale Plattform für die Verwaltung und Analyse von IoT-Daten dient. Hier findet die automatisierte Analyse der Sensordaten statt.

Outcome: Effiziente Automatisierung, Vorhersage und optimierte Instandhaltung

Durch die erfolgreiche Implementierung dieser Lösung konnte das Logistikzentrum mehrere positive Ergebnisse erzielen:

  • Automatisierte Überwachung: Die Einführung von drahtlosen Sensor-Gateways und MQTT ermöglicht eine automatisierte Überwachung der Motoren in Echtzeit. Die manuelle Datenerfassung entfällt und das Logistikzentrum kann den Zustand der Motoren jederzeit überwachen.
  • Vorausschauende Wartung: Die gesammelten Daten ermöglichen die Analyse von Vibrationen und Laufzeiten, was eine vorausschauende Prognose des Verschleißzustands der Motoren ermöglicht. Die Wartungsabteilung kann potenzielle Probleme frühzeitig erkennen und proaktive Maßnahmen ergreifen.
  • Automatisierte Ticket-Erstellung: Bei Anzeichen von Verschleiß oder ungewöhnlichen Vibrationen wird automatisch ein Wartungsticket generiert. Dies beschleunigt die Reaktionszeit und optimiert den Instandhaltungsprozess.

Die erfolgreiche Implementierung von MQTT zur Überwachung und Analyse von Motoren führte zu einer deutlichen Verbesserung der Betriebseffizienz, der Wartung und der Betriebskontinuität im Logistikzentrum. Durch die intelligente Kombination von drahtlosen Sensor-Gateways, MQTT-Kommunikation und prädiktiver Analyse konnte das Logistikzentrum Ausfälle minimieren, Ressourcen optimieren und letztendlich die Gesamtbetriebskosten senken.

Häufig gestellte Fragen

Für was ist MQTT die Abkürzung?

MQTT steht für Message Queuing Telemetry Transport und ist ein Protokoll zu Datenübertragung.

Welche MQTT-Broker gibt es?

Es existieren verschiedene MQTT-Broker, die sich hinsichtlich Stabilität, Skalierbarkeit und Funktionsumfang unterscheiden. Mosquitto ist eine verbreitete Open-Source Implementation. Weitere Broker sind unter anderem: Hive MQ, Eclipse Mosquitto, VerneMQ, ActiveMQ oder EMQ X.

Was ist die maximale Nachrichtengröße bei MQTT?

Maximal 64kB können mit einer Nachricht übertragen werden.

Wer hat MQTT erfunden?

MQTT wurde erstmals in den späten 1990er Jahren von Andy Stanford Clark und Arlen Nipper entwickelt.  2010 wurde der Standard von IBM als Open-Source-Projekt veröffentlicht und der Quellcode der Eclipse Foundation übergeben. Die aktuelle Version MQTT 5.0 wurde 2019 veröffentlicht.

Für was steht QoS bei MQTT?

QoS steht für Quality of Service. Die QoS-Stufen (0, 1, 2) beeinflussen die Nachrichtenübermittlung und -bestätigung. Höhere QoS-Stufen bieten mehr Sicherheit in Bezug auf die Nachrichtenzustellung, erfordern jedoch auch mehr Overhead.

Sie möchten mehr zum Thema MQTT in der Industrie erfahren?
Der Autor Maximilian ist Geschäftsführer bei DatenBerg. Er begleitet Kunden von der Datenerfassung bis hin zur automatisierten Auswertung. Ist er nicht bei Kunden im Einsatz, hält er Vorträge zu den Themen Daten nutzen in der Produktion, Anwendungsfälle von Industrie 4.0 und automatisierte Auswertung von Produktionsdaten. Gerne besprechen wir mit Ihnen, wie das Thema MQTT in der Industrie in Ihrer Produktion umgesetzt werden kann. Kontaktieren Sie uns hier.

Ähnliche Beiträge