MENU
Contact Us




Projekt

Anomalieerkennung für Stanzmaschinen

Maschinelles Lernen zur Erkennung von anomalem Maschinenverhalten



CPU

ARM/x86

Hersteller

OS

Linux

Kompetenzen

Python
InfluxDB
OPC UA
ML
Docker

Projektgröße:

Schwierigkeit:




Anfrage/Problem:

Der Kunde wollte die Funktionalität seiner Maschinen um ein automatisches System erweitern, das anomales Verhalten während des Betriebs erkennt. Die Maschinen werden selten von Bedienern beaufsichtigt und die Anomalieerkennung sollte signalisieren, wenn das Maschinenverhalten vom Normalbetrieb abweicht. Das System musste ohne Kenntnis der möglichen Fehlfunktionen arbeiten, und die Inferenz sollte auf kostengünstiger Hardware durchgeführt werden. In einem Proof-of-Concept wurde der Hauptantrieb als die zu überwachende Komponente gewählt. Der Motor lieferte insgesamt sechs Variablen, die für die Klassifizierung des Verhaltens zur Verfügung standen.

Lösungsansatz:

In einem ersten Schritt mussten die Daten aus dem Antrieb zugänglich gemacht werden. Hierfür wurde OPC UA für die Kommunikation gewählt. Der OPC-UA-Server wird von der SPS bereitgestellt, die den Antrieb steuert, und wurde so konfiguriert, dass er sechs Steuerungsvariablen offenlegt. Für die Persistenz und das Training des ML-Systems wurden diese Werte in eine Zeitseriendatenbank geschrieben. InfluxDB wurde für die Datenspeicherung gewählt, da es Open-Source ist, speziell für Zeitreihen entwickelt wurde und vergleichsweise schnell eingesetzt werden kann. Ein Python-Client verbindet sich mit dem OPC-UA-Server und schreibt die Werte jede Sekunde in die DB. Der Normalbetrieb wurde zwei Stunden lang aufgezeichnet und zum Training mehrerer unüberwachter ML-Modelle verwendet. Für die spätere Evaluierung der Modelle wurde anomales Verhalten simuliert, indem die Bewegung der Maschine mechanisch behindert wurde. Aus der anfänglichen Auswahl der Modelle erwies sich das Modell, das den lokalen Ausreißerfaktor berechnet, als am besten geeignet. Das trainierte Modell wurde serialisiert und in einem zweiten Python-Programm verwendet, das den Local Outlier Factor für jeden neuen Datenpunkt berechnet und diese Metrik ebenfalls in die DB schreibt. Die Leistung im Live-Betrieb wurde getestet, indem normale und abnormale Betriebszyklen ausgeführt wurden, während der Anomalie-Score und die entsprechenden Motorvariablen in einem Dashboard visualisiert wurden. Die Softwarekomponenten wurden als einzelne Docker-Container implementiert, die über Portainer verwaltet wurden. Die Anwendung wurde auf einem Raspberry Pi 4B 4GB implementiert, da dieser die für den PoC benötigten Hardware-Anforderungen erfüllte.)

Architektur:

Ergebnisse:

Die anfängliche Leistung mit den Rohdaten des Antriebs reichte nicht aus, um alle anomalen Betriebsarten zuverlässig zu erkennen. Daher war ein umfangreiches Feature-Engineering erforderlich, um Merkmale zu finden, die eine genauere Erkennung von Anomalien ermöglichen. Die Berechnung von statistischen Metriken von Schiebefenstern erwies sich in diesem Fall als effizient. Nach Einbeziehung dieser Merkmale in das Modell wurden alle simulierten Anomalien mit hohen Anomalie-Scores erkannt, während das normale Betriebsverhalten mit Anomalie-Scores nahe Null verbunden war.

Screenshots: