Industrie 4.0 kostet viel Geld und Zeit oder? In diesem Artikel widme ich mich einer Challenge: Ist es möglich in 48 Stunden mit 0€ Budget und so wenig programmieren wie nur möglich eine IIoT Architektur aufzubauen? Challenge accepted!

 Die Details: Ich starte die Challenge Freitagabend und nehme mir bis Sonntagabend Zeit eine IIoT Architektur zu erstellen. Dabei betrachte ich ausschließlich OpenSource Projekte und Communities. Als Infrastruktur nutze ich die Services von Amazon Webservices (AWS); ohne diese Services wäre die Challenge für mich sehr viel aufwändiger und zeitintensiver, die Services sind kostenpflichtig.

Was ist eine IIoT Architektur?

Um die Frage was ist eigentlich eine IIoT Architektur zu beantworten muss die Frage beantwortet werden was ist das Industrial Internet of Things (IIoT). Hier halte ich mich am liebsten an die 2018 formulierte Definition von Hugh Boyes, Bil Hallaq, Joe Cunningham und Tim Watson.

Industrial Internet of Things: A system comprising networked smart objects, cyber-physical assets, associated generic information technologies and optional cloud or edge computing platforms, which enable real-time, intelligent, and autonomous access, collection, analysis, communications, and exchange of process, product and/or service information, within the industrial environment, so as to optimise overall production value. This value may include; improving product or service delivery, boosting productivity, reducing labour costs, reducing energy consumption, and reducing the build-to-order cycle.

Diese Definition ist die Grundlage für unsere IIoT Architektur. Es geht also darum die Grundlage für ein umfassend vernetztes System aufzusetzen, das in Echtzeit einen intelligenten und autonomen Zugriff, die Sammlung, Analyse, Kommunikation und den Austausch von Prozess-, Produkt- und/oder Serviceinformationen ermöglicht. Betrachten wir die heute gängige Automatisierungspyramide (Siehe Abbildung – Von user:UlrichAAB – Eigenes Werk, CC BY 3.0), so zeigt diese eine Vielzahl relevanter Systeme für die Fertigung wie z.B. MES, ERP und PLCs.

Die Automatisierungspyramide beschreibt aber auch das grundlegende Problem heutiger Architekturen: Eins zu Eins Verbindungen zwischen den Leveln. Klassische Folgen sind der Informationsverlust zwischen den einzelnen Ebenenen sowie hohe Kosten für die Integration neuer oder überarbeiteter Komponenten. So ist es für viele fertigende Unternehmen heute undenkbar ihr ERP System zu wechseln oder zu updaten. Projekte verschlingen riesige Budgets um am Ende des Projekts wieder viele kleine Eins zu Eins Verbindungen verwalten zu müssen.

Automatisierungspyramide

Meine Architektur nach 48 Stunden

IIoT Architektur

Die Kernkomponente der Architektur stellt ein Apache Kafka Cluster dar. Kafka dient dazu, Datenströme zu speichern und zu verarbeiten, und stellt Schnittstellen zum Importieren und Exportieren von Datenströmen zu Drittsystemen bereit. Somit eignet sich Kafka optimal als Hauptbestandteil unserer Architektur, denn alle Systeme können ihre Nachrichten zum Cluster senden und von anderen Komponenten konsumiert werden. Eins zu Eins Verbindungen sind so nicht mehr notwendig; es muss sich ausschließlich gegen Kakfa integriert werden. Ursprünglich wurde Kafka von der Firma LinkedIn entwickelt und ist seit 2012 Teil der Apache Software Foundation. Kafka Connect bietet hierbei eine Schnittstelle zum Verbinden mit Drittsystemen. Es gibt bereits viele OpenSource sowie kommerzielle Konnektoren, die genutzt werden können (z.B. fertige Integratoren für S/4HANA). PLC4X ist eine Sammlung von Bibliotheken für die Kommunikation mit Maschinen Steuerungen (PLCs), diese können unter anderem in Kafka Connect eingebunden werden. Zusätzlich zur direkten Anbindung von PLCs via PLC4X habe ich mich für einen separaten MQTT Broker entschieden, der über Kafka Connect mit der Architektur verbunden ist. Ein MQTT Broker alleine ist nicht auf hohe Skalierbarkeit, längere Speicherung oder einfache Integration in Altsysteme ausgelegt, so wie es bei Apache Kafka der Fall ist.

Keine IIoT Architektur ohne Verwaltungsschale, wenn es nach der aktuellen Literatur zu dem Thema geht. Es geht darum, dass jeder Gegenstand in der Fertigung („Asset“) eine Verwaltungsschale besitzen soll, in der sämtliche Informationen und Funktionalitäten in Teilmodellen beschrieben sind. Erstaunlicherweise habe ich während meiner Recherche wenige reale Implementierungen oder frei verfügbaren Code hierzu gefunden. Ich war sogar erschrocken als ich auf einigen scheinbar hoch notierten Projekten auf Webseiten ohne HTTPS Protokoll landete. Das geht im Jahr 2020 gar nicht! Ein sehr positives Beispiel aus der Welt des IoT ist das Projekt „Ditto“, welches in meinem Projekt als Verwaltungsschale der Assets dient. Leider gibt es noch keine vollständige Kafka Integration, ausschließlich die Ausgangssignale können aktuell direkt an Kafka gesendet werden, so muss der Umweg über unseren MQTT Broker gemacht werden.

Im Artikel „4 klassische Fehler bei Industrie 4.0 Projekten“ schrieb ich: „Payloads sind der Schlüssel“ und deshalb ist die Shema Registry als Bestandteil von Apache Kafka so wichtig. Das Fehlen einer streng definierten Payload Definition hat einen bedeutenden Nachteil: Datenkonsumenten verstehen möglicherweise die Datenproduzenten nicht. Was fehlt, ist ein „Vertrag“ (bzw. Schema) für Daten zwischen den Produzenten und den Konsumenten, ähnlich dem Vertrag einer API. Das Projekt UNIDE gibt ein solches Format für Messwerte, Prozesse und Messages vor, welche ich in meiner Architektur nutze. Zusätzlich ist natürlich die Payload Definition für die Verwaltungsschale hinterlegt.

Alles in allem war es in 48 Stunden mit der Hilfe einiger Services auf AWS möglich eine IIoT Architektur aufzubauen, die in der Realität nun Stück für Stück in die Fertigung integriert werden müsste. Bis zum eingangs in der Definition genannten Ziel, wäre es noch ein weiter Weg. Dennoch ist der Start dorthin oft viel einfacher als man denkt.

Weiterführende Links

MQTT + Kafka – Demohttps://github.com/kaiwaehner/kafka-connect-iot-mqtt-connector-example

PLC4X als Adapter für Kafkahttps://plc4x.apache.org/users/plc4j/general-concepts.html

Simple Example of how to use Apache PLC4X together with Eclipse Dittohttps://github.com/eclipse/ditto-examples/tree/master/plc4x

Ditto meine Verwaltungsschalehttps://www.eclipse.org/ditto/

Kafka Streams Exampleshttps://github.com/confluentinc/kafka-streams-examples

Apache Kafka Series – Learn Apache Kafka for Beginners: https://www.udemy.com/course/apache-kafka/

 Schema Management: https://docs.confluent.io/current/schema-registry/index.html

 KURA – Gateway: https://www.eclipse.org/kura/

 UNIDE – Payload Spezifikation: https://www.eclipse.org/unide/specification