AWS Germany – Amazon Web Services in Deutschland

OT zu IT – industrielle Datenerfassung mit AWS Serverless

Die industrielle Datenerfassung aus dem OT-Bereich (Operational Technology) während der Produktfertigung lässt sich mit AWS Serverless-Technologien effizient in IT-Systeme überführen. Dies ermöglicht sowohl die Analyse als auch die dauerhafte Archivierung der Daten – besonders wichtig, wenn die Produktbeschaffenheit zu einem späteren Zeitpunkt nachgewiesen werden muss. So müssen z.B. erreichte Drehmomente oder die Leitfähigkeit von Lötstellen unmittelbar nach dem zugehörigen Fertigungsschritt dokumentiert werden.
Dieser Blogpost demonstriert, wie Sie mit AWS-Technologien solche Prozesse effizient implementieren und gleichzeitig Kosten senken und den Wartungsaufwand minimieren können.
Cloud-seitig nutzt die vorgestellte Architektur nur verwaltete, serverless-Dienste, was zu einer deutlichen Entlastung im operativen Betrieb beiträgt, da Wartungs- und Skalierungsaufgaben weitgehend entfallen. Auch verzichtet sie auf Datenbanken, einen häufigen Kostentreiber derartiger Szenarien. Die Schnittstelle hin zur Maschine wird ebenfalls von einer leistungsfähigen, kostenlosen Technologie namens Shop Floor Connectivity (SFC) [EN, Extern] bereitgestellt, was Lizenzkosten vermeidet.

Anwendungsfall

Im folgenden Tutorial zeige ich, wie ich Maschinendaten über den OPC Unified Architecture (OPC UA) [extern, EN] Standard auslese und archiviere.
Ich werde auf Änderungen eines Daten-Tags reagieren, welches die Datenerfassung auslöst. In einer realen Situation kann dies ein Daten-Tag sein, welches das Ende des Fertigungsschritts signalisiert. Ändert sich das Tag, so werden die Werte weiterer Daten-Tags ausgelesen und gemeinsam als Datensatz nach AWS gesendet.

Ein Diagramm was verdetulciht, dass die Datenerfassung nur stattfindet wenn der Trigger-Tag den Wert 2 annimmt.

Datenerfassung nur wenn Trigger-Tag den Wert 2 annimmt. Sonst keine Datenübertragung.

Daten für derartige Anwendungsfälle müssen oft über Jahre hinweg aufbewahrt werden, es ist daher sinnvoll die Daten mit weiteren Informationen, z.B. dem Kontext aus einem Fertigungssteuerungssystem (engl: Manufacturing Execution System, kurz MES), anzureichern, um das langfristige Datenverständnis zu sichern und Analysen zu vereinfachen. Außerdem ist eine Anreicherung auch im Kontext der künstlichen Intelligenz sehr wichtig. Die folgende Architektur zeigt zwei Möglichkeiten, die dafür genutzt werden können. Die Daten werden dann in Amazon Simple Storage Service (Amazon S3) abgelegt, von wo sie mit Amazon Athena mittels SQL abgefragt werden können. Neben OPC UA können die gezeigten Technologien auch mit weiteren Steuerungstechnologien wie Rockwell, Modbus oder Siemens S7 genutzt werden, mehr dazu im Blogpost Industrieprotokoll an AWS-Cloud: Maschinendatenerfassung für AWS Dienste.

Die Architektur

SFC sendet Daten an IOT core. Die Autorisierung wird über ein Zertifikat hergestellt. IoT core sendet Daten über eine Regel an Firehose. Firehose transformiert die Daten mit einer Lambda Funktion und legt sie in S3 ab. Ein Glue Crawler liest das Schema der Daten und legt eine Tabelle im Data Catalog an. Athena kann nun die Daten analysieren.

Das von AWS als Open Source Projekt gehostete Shop Floor Connectivity (SFC) [EN, Extern] stellt die Technologie bereit, um uns mit der Steuerung zu verbinden und die Daten nach AWS zu senden. Die Grundlagen von SFC werden im bereits erwähnten Blogpost Industrieprotokoll an AWS-Cloud: Maschinendatenerfassung für AWS Dienste näher erläutert.

Die Daten werden in semistrukturierter Form auf Amazon S3 abgelegt. Dies erhöht die Flexibilität gegenüber Schemaänderungen. S3 ersetzt dabei die Datenbank, die in solchen Szenarien oft zu finden ist auf kostengünstige Art. Um eine effiziente Auswertung zu ermöglichen, ist es von Vorteil, die eingehenden Datensätze nicht einzeln abzuspeichern sondern mehrere Datensätze in einer Datei abzulegen.

Diese Aufgabe wird von Amazon Data Firehose übernommen. Firehose speichert die Daten zwischen und schreibt sie als Sammel-Datei nach S3. Außerdem bietet der Dienst die Möglichkeit, die eingehenden Daten über eine AWS Lambda-Funktion zu modifizieren. Der Quellcode der Lambda-Funktion kann z.B. mit einem MES-System kommunizieren und den Datensatz mit Daten aus dem Fertigungsauftrag anreichern. In unserem Beispiel werden wir jeden eingehenden Datensatz durch die Lambda-Funktion um einen statischen Wert ergänzen. Ein weiteres wertvolles Feature von Firehose, welches wir in dieser Demo nicht nutzen, ist die Daten komprimiert an S3 zu senden.

Statt SFC direkt mit Firehose oder S3 zu verbinden nutzen wir eine weitere Komponente, AWS IoT Core. So können weitere Konsumenten den Datenstrom abbonieren oder über eine Regel die Daten erhalten. Außerdem is es eine weitere Möglichkeit, um Daten zu modifizieren.
Das SFC AWS IoT Core Target sendet die Daten via MQTT (Message Queuing Telemetry Transport)-Protokoll [extern, EN] an den AWS IoT Core Broker. SFC sendet die Daten direkt an die AWS IoT Data Plane, wozu eine AWS Identity and Access Management (IAM) Rolle genutzt wird.

Die von Firehose in S3 abgelegten Daten werden nun im Data Catalog von AWS Glue verfügbar gemacht. Ein Glue Crawler ermittelt das Schema der Daten und legt damit eine Tabelle im Datenkatalog an. Damit ermöglichen wir die SQL-basierte Abfrage der Daten mit Amazon Athena. So kann auch Drittanbietersoftware, wie z.B. Tools zur Business Intelligence, auf die Daten zugreifen.

Tutorial

Die folgende Anleitung ist für die Betriebssysteme MacOS und Linux, das Setup auf Windows-Computern erfolgt analog. Voraussetzungen für dieses Tutorial sind ein AWS-Konto und ein Computer, auf dem die AWS CLI installiert und mit ausreichenden IAM-Berechtigungen zur Erstellung der Ressourcen konfiguriert ist.

Die im Tutorial erzeugten Ressourcen verursachen Kosten. Bitte denken Sie daran, diese nach dem Tutorial wieder zu löschen, sofern Sie sie nicht weiter nutzen möchten.
Die AWS-seitigen Komponenten für dieses Tutorial werden über eine AWS CloudFormation-Vorlage provisioniert. CloudFormation kann ebenfalls genutzt werden, um die so bereitgestellten Ressourcen wieder zu löschen.
Die benötigte Zeit für das Tutorial sind ca. 30 Minuten.

Für das Tutorial verbinden wir SFC (Shopfloor Connectivity) mit einem öffentlichen OPC UA Server und lesen zwei Tags aus:

Daten-Tag (NodeId „ns=3;i=1002“):

  • Liefert Zufallszahlen im Bereich von -2 bis 2.
  • Wird doppelt übertragen: einmal im Original und einmal auf zwei Dezimalstellen gerundet.
    Die resultierenden beiden Channels sind über einen ConditionFilter mit dem Trigger-Tag verbunden.

Trigger-Tag (NodeId „ns=3;i=1005″):

  • Liefert die Werte -2, -2, 2, 2 im Abstand von einer Sekunde.
  • Datenübertragung erfolgt nur, wenn sich der Wert von -2 auf 2 ändert.

Datenverarbeitung:
Die an AWS gesendeten Daten werden in SFC über ein Apache Velocity Template [extern, EN] in eine flache Struktur transformiert. Die Originaldaten können durch das DebugTarget im Terminal eingesehen werden.

Datenanreicherung erfolgt an drei Stellen:

  1. SFC: Hinzufügen von Metadaten.
  2. IoT-Regel: Ergänzung um Zeitstempel und AWS-Kontonummer durch AWS IoT SQL Funktionen. An dieser Stelle könnten auch Lambda-Funktionen oder Verweise aus Amazon DynamoDB Tabellen zum Einsatz kommen.
  3. Lambda-Funktion: Anreicherung um die Eigenschaft ‚mes_data‘, welche eine Integration mit einem Fertigungssteuerungssystem andeuten soll
  1. Vorbereitung

    1. Klonen Sie das Repository und wechseln Sie im Terminal in den Projektordner
      git clone https://github.com/aws-samples/sfc-ingestion-pipeline
    2. Laden Sie die benötigten SFC Binaries herunter (OPC UA Adapter, SFC Core, Debug Target und AWS IoT Core Target):
      git_top_level="$(git rev-parse --show-toplevel)"
      cd ${git_top_level}/sfc-binaries
      wget https://github.com/aws-samples/shopfloor-connectivity/releases/download/v1.7.3/{debug-target,aws-iot-core-target,opcua,sfc-main}.tar.gz
      for file in *.tar.gz; do
      tar -xf "$file"
      rm "$file"
      done
      cd -
  2. CloudFormation Stack erstellen

    1. Melden Sie sich in Ihrem AWS-Account an und öffnen Sie die CloudFormation-Konsole (https://console.aws.amazon.com/cloudformation/home?region=eu-central-1).
      Stellen Sie sicher, dass Sie sich in der Region ‚eu-central-1‘ (Frankfurt) befinden.
    2. Klicken Sie auf „Stack erstellen“
    3. Wählen Sie „Eine Vorlage hochladen“ und laden Sie die CloudFormation-Vorlage ‚cloudformation/sfc-ingestion-demo-resources.yaml‘ hoch und folgen Sie den Menüanweisungen
    4. Im nächsten Schritt vergeben Sie einen Namen für den Stack. Lassen Sie alle anderen Einstellungen unverändert und folgen Sie den Menüanweisungen.
      Bestätigen Sie die Checkbox „Ich bestätige, dass AWS CloudFormation IAM-Ressourcen erstellen kann.“
      Klicken Sie am Ende des Prozesses auf die Schaltfläche „Absenden“, um die Bereitstellung des Stacks zu starten.
  1. SFC Konfiguration

    1. Wechseln Sie in der CloudFormation Konsole in den Tab „Ausgabe“ Ihres Stacks. Die Ausgaben werden sichtbar, sobald der Stack erstellt wurde und sich im Status ‚CREATE_COMPLETE‘ befindet.
    2. Öffnen Sie den Link im Wert des Schlüssels „CertificatesAndKeysBucket“ sowie den Link im Wert des Schlüssels „S3DataBucketLink“. Der erste Link zeigt zu einem S3 Bucket, der das Zertifikat und den privaten Schlüssel zur Authentifizierung enthält. Der zweite Link zeigt auf den S3 Bucket, welcher später die Daten enthalten wird.
      Laden Sie das Zertifikat und den privaten Schlüssel aus dem S3 Bucket herunter und speichern Sie beide Dateien im Ordner ‚auth‘ des lokalen Projekts.
    3. Laden Sie das Amazon Root CA von der öffentlichen URL herunter und speichern Sie es ebenfalls als Datei im ‚auth‘ Ordner.
      wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O ${git_top_level}/sfc-artefacts/auth/root-CA.pem
    4. Ermitteln Sie den IoT Credentials Provider Endpunkt mit folgendem AWS CLI-Befehl und tragen Sie diesen anstelle des Platzhalters in der Datei ’sfc-artefacts/sfc-config.json‘ ein:
      aws iot describe-endpoint --endpoint-type iot:CredentialProvider --output text

      Speichern Sie die Datei nach der Änderung.

  2. SFC starten und validieren

    1. Starten Sie SFC mit dem Befehl
      cd $git_top_level
      sfc-binaries/sfc-main/bin/sfc-main -config sfc-artefacts/sfc-config.json
    2. Öffnen Sie die AWS IoT Core Konsole, navigieren Sie zum MQTT-Test-Client, abonnieren Sie das Thema ‚opcua/device/my_opcua_gateway_1‘ und beobachten Sie den Dateneingang im Test-Client.
      Die Daten werden nun von der IoT Core Regel an den Firehose Data Stream weitergeleitet und im S3 Bucket gespeichert, dort sollten innerhalb weniger Minuten die ersten Daten zu sehen sein.
  1. Datenanalyse mit AWS Glue und Athena

    1. Öffnen Sie die AWS Glue Konsole und starten Sie den Crawler, um das Datenschema auszulesen und eine Tabelle anzulegen.
      Warten Sie, bis der Crawler die Tabelle im Data Catalog angelegt hat.
    2. Öffnen Sie die Amazon Athena Konsole und wählen Sie die neue Datenbank (1), um den Namen der erstellten Tabelle (2) zu erhalten. Nun können Sie eine SQL-Anfrage, z.B. wie im folgenden Screenshot, eingeben (4) und die Abfrage ausführen.
      Haben Sie Amazon Athena noch nie genutzt, so werden Sie aufgefordert, einen S3 Bucket als Speicherort für die Abfrageausgabe in derselben Region anzugeben. Wenn Sie keinen Bucket verfügbar haben, dann können Sie einen neuen Bucket erstellen und dann den Anweisungen folgen. Sollten Sie Hilfe benötigen, finden Sie diese im Abschnitt Voraussetzungen der Amazon Athena Dokumentation.
      Nun können Sie das Ergebnis sehen (5).
  2. Ressourcen löschen

    • Um weitere Kosten zu vermeiden, sollten Sie die Demoressourcen löschen, sobald sie nicht mehr benötigt werden.
    • Dies CloudFormation-Vorlage ist so konzipiert, dass beim Löschen des Stacks sämtliche Daten und Ressourcen in AWS wieder gelöscht werden. Um den Stack zu löschen, wählen Sie den Stack in der CloudFormation Stack-Übersicht und klicken Sie auf die Schaltfläche ‚Löschen‘.
    • Haben Sie für die Athena-Ausgabe einen neuen S3 Bucket erstellt, so müssen Sie diesen manuell löschen, sofern Sie die Einstellung nicht für die künftige Athena-Nutzung beibehalten wollen.

Fazit

Dieser Blogpost demonstrierte eine effiziente, kostengünstige und wartungsarme Lösung zur Archivierung von Maschinendaten in der Fertigungsindustrie. Die vorgestellte Lösung bietet mehrere Vorteile:

  • Kosteneffizienz durch den Verzicht auf teure Datenbanksysteme
  • Minimaler Wartungsaufwand dank einer serverless Architektur
  • Flexibilität bei Schemaänderungen durch semistrukturierte Datenspeicherung
  • Einfache Datenanalyse mittels SQL-Abfragen über Amazon Athena
  • Möglichkeiten zur Datenanreicherung und -verteilung über AWS Lambda und IoT Core Regeln

Es soll als Einstieg für Unternehmen dienen, welche eine einfache, skalierbare Lösung für die Speicherung und Analyse von Maschinendaten suchen, ohne dabei hohe Kosten oder komplexe Infrastrukturen in Kauf nehmen zu müssen.

Wenn Sie Fragen oder Anregungen haben, kontaktieren Sie uns jederzeit.

Über den Autor

Marco Strauß ist Senior Solutions Architect bei Amazon Web Services (AWS) und spezialisiert sich auf Fertigungslösungen. Er begleitet Unternehmenskunden bei vollständigen Implementierungen – von Sensoren in der Werkshalle bis hin zu skalierbaren Cloud-Architekturen. Sein vielseitiger technischer Hintergrund ermöglicht es ihm, umfassende Lösungen zu entwickeln, die Betriebstechnologie (OT) mit IT-Systemen verbinden und dabei modernste KI-Technologien einbinden. Marco arbeitet mit Organisationen zusammen, um deren digitale Transformationsinitiativen zu beschleunigen, wobei er das umfangreiche Angebot an AWS-Diensten nutzt, um Fertigungsprozesse zu modernisieren.