In einer zunehmend vernetzten Produktion spielt das MQTT-Protokoll eine zentrale Rolle für die Kommunikation zwischen Maschinen und Systemen. Um optimale Ergebnisse zu erzielen, sollten sich Anwender daher mit MQTT-Topics und der richtigen Verwendung von Wildcards vertraut machen. Dieser Artikel gibt einen Überblick über MQTT-Topics und Wildcards im Kontext der Fertigungsindustrie und zeigt, wie diese in ISA-95-konforme Architekturen integriert werden können.
Was sind MQTT Topics?
MQTT-Topics dienen im MQTT-Protokoll als Kommunikationskanäle und ermöglichen Geräten, spezifische Datenströme (Payloads) zu veröffentlichen oder zu abonnieren. Ein Topic ist wie eine Adresse, die bestimmt, welche Nachrichten an welche Clients weitergeleitet werden. Sie bestehen aus einfachen Zeichenketten und folgen einer hierarchischen Struktur, vergleichbar mit einem Dateisystem eines Computer. Dabei dient der Schrägstrich (/) als Trennzeichen zwischen den Ebenen, ähnlich wie bei einem Dateipfad wie „C:/Benutzer/…“. Diese Struktur ermöglicht eine hierarchische Organisation von Informationen innerhalb des MQTT-Brokers. So könnte ein Temperatursensor zum Beispiel das folgende Topic verwenden, um die Prozesstemperatur eines bestimmten Work Centers zu übermitteln:
Diese Struktur erhöht die Flexibilität und Granularität des Datenaustauschs, da MQTT Clients nur relevante Informationen innerhalb der angegebenen Topic-Hierarchie abonnieren und empfangen können.
Wichtige Regeln für die Benennung von MQTT-Topics
Die Benennung von MQTT-Topics folgt einigen wichtigen Richtlinien:
- Groß-/Kleinschreibung: Topics unterscheiden zwischen Groß- und Kleinschreibung. Beispielsweise sind werk01/linie01/Maschine01 und werk01/linie01/maschine01 zwei verschiedene Topics.
- UTF-8 Zeichen: MQTT-Topics müssen aus gültigen UTF-8-Zeichen bestehen. Dabei dürfen bestimmte Zeichen, wie „+“ und „#“ (für Wildcards) und „$“ (für MQTT System-Topics), nicht wahllos verwendet werden, da sie spezielle Funktionen haben.
- Konsistenz: Eine konsistente Benennung der Topics ist unerlässlich, um Verwirrung und Kommunikationsfehler zu vermeiden. Abhilfe kann hierbei die Anlehnung an Standards wie ISA-95 schaffen (Beispiel: enterprise/werk01/assemblyline01/linie01/Maschine01).
- Eindeutigkeit: Die Vermeidung von Duplikaten in der Topic Benennung erleichtert den nahtlosen Datenaustausch, insbesondere aus der Unternehmensperspektive. Dies wird besonders deutlich, wenn der Datenaustausch zwischen Brokern über standardisierte MQTT-Bridges erfolgt. Eindeutige Topic-Namen verhindern dabei Topic Konflikte.
- Versionierung: Um die Weiterentwicklung des MQTT Namespaces und der Topic Hierarchien zu optimieren, sollte Versionierung in die Hierarchie integriert werden. Dies ermöglicht eine einfache Verwaltung von Änderungen und erhält die Rückwärtskompatibilität (Beispiel: mySpec_v1/…/areaID/lineID/cellID).
MQTT Topic Benennung nach ISA-95
In einer Fertigungsumgebung sorgt ISA-95 für eine konsistente Benennung von MQTT-Topics. Hierdurch wird in der Regel eine klare und strukturierte Kommunikation zwischen allen Ebenen des Produktionsprozesses ermöglicht. Dabei teilt der ISA-95-Standard industrielle Systeme in fünf Ebenen auf, von der Unternehmens- bis in die Produktionsebenen. MQTT-Topics können diese Hierarchie direkt abbilden und eine klare Trennung zwischen Werksebenen, Produktionslinien, Maschinen und Prozessdaten schaffen. Dies erleichtert die gezielte Datenübertragung und das Abonnieren relevanter Informationen, auch über Fabrikgrenzen hinweg.
MQTT-Wildcards und ihre Anwendung in ISA-95-Umgebungen
Wildcards sind Platzhalter, die es ermöglichen, eine Vielzahl von Topics zu abonnieren, ohne jedes einzelne manuell zu definieren. Im Fertigungsumfeld können so zum Beispiel Events aller Maschinen einer bestimmten Linie über eine Wildcard abonniert werden, ohne diese einzeln zu adressieren. Dabei gilt: Wildcards nur beim Abonnieren und nicht bei der Veröffentlichung von Nachrichten nutzen! In MQTT gibt es zwei wichtige Wildcard Typen:
- Plus-Zeichen (+): Das „+“ fungiert als Platzhalter für genau eine Ebene in der Topic-Hierarchie. Es ersetzt einen beliebigen Namen auf dieser Ebene. Ein Beispiel: fertigung/werk01/+/maschine01/status. Dieses Topic würde den Status von Maschine01 aus jeder Fertigungslinie innerhalb von Werk01 erfassen, unabhängig der Fertigungslinie.
- Hash-Zeichen (#): Das „#“ ist eine Multi-Level-Wildcard, die alles abdeckt, was nach der angegebenen Position folgt. Daher muss es immer am Ende eines Topics stehen. Beispiel: fertigung/werk01/#. Hiermit würden alle Nachrichten für Werk01 abonniert, egal ob sie von einer spezifischen Linie oder Maschine stammen.
Fazit
In der modernen, vernetzten Fertigungsindustrie spielt das MQTT-Protokoll eine zentrale Rolle. Die korrekte Nutzung von MQTT-Topics und Wildcards ermöglicht eine effiziente und strukturierte Kommunikation zwischen Maschinen und Systemen. Durch die hierarchische Organisation der Topics nach ISA-95 und den Einsatz von Wildcards lassen sich große Datenmengen gezielt und flexibel verwalten, was zu einer verbesserten Performance und Übersichtlichkeit führt.