CNC-Maschinendaten einfach visualisieren - ein POC
- Tom Jähnig
- 19. Okt.
- 2 Min. Lesezeit
Ich wollte schon länger ein kleines Vorzeigeprojekt als Proof of Concept bauen, um Maschinendaten aus einem OPC UA-Server in Echtzeit zu visualisieren.
Dabei gab es zwei Möglichkeiten. Die Visualisierung selber zu bauen mit z.B. Angular oder ein bestehendes Tool dafür verwenden. Um schnell ans Ziel zu kommen, habe ich mich dafür entschieden, ein Tool zu verwenden. Die Wahl fiel dabei auf Grafana. Ein gängiges Tool in der Industrie, mit dem man ganz einfach Dashboards erstellen kann.
In Grafana lassen sich Datenquellen verbinden, aus denen Grafana sich automatisch die Daten zieht. Unterstützt werden sämtliche gängige Datenbanken, wie z.B. PostgreSQL, Prometheus, MongoDB oder InfluxDB. Ich habe mich für InfluxDB entschiede, eine time series database, die sich besonders gut für IoT-Projekte eignet.
Die Infrastruktur
Der Aufbau des POC sieht wie folgt aus:

1. CNC-Maschine mit OPC UA Server
Die CNC-Maschine stellt ihre Betriebsdaten (z. B. Temperatur, Drehzahl, Status) über einen integrierten OPC UA Server bereit. Als Simulator habe ich ein Python-Skript geschrieben, das Temperatur, Drehzahl und Maschinenstatus simuliert.
2. InfluxDB
InfluxDB dient als time series database, zur Speicherung der von der CNC-Maschine gelieferten Messwerte und zur Bereitstellung der Werte für Grafana.
3. Connector
Um die Daten aus der Maschine in die InfluxDB zu bekommen, wird ein Connector benötigt. Dafür habe ich ein Python-Skript geschrieben. Das Skript verbindet sich als OPC UA-Client mit dem OPC UA-Server. Es liest die gewünschten Datenpunkte aus und schreibt sie als Client in die InfluxDB
Temperatur, Drehzahl und Maschinenstatus werden je Sekunde ausgelesen und in InfluxDB gespeichert.
4. Grafana
Grafana ist mit der InfluxDB verbunden (InfluxDB als Datenquelle hinzugefügt) und visualisiert die Daten automatisch in Echtzeit in einem erstellten Dashboard.
Trend-Chart: Zeigt z. B. Temperatur- oder Drehzahlverlauf über die Zeit.
Gauge: Visualisiert einen aktuellen Wert (z. B. aktuelle Temperatur oder Auslastung) als Messinstrument.
Pie-Chart: Zeigt die Verteilung von Maschinenstatus in den Farben rot, grün und gelb (rot = Fehler, gelb = Stillstand, grün = Betrieb).
Dashboard für CNC-Daten
Einzelne Widgets lassen sich mit Grafana ganz einfach erstellen und zu einem Dashboard zusammenfügen. Außerdem hat man die Möglichkeit, die Daten auch direkt auszuwerten und beispielweise anzuzeigen, wie lange sich die Maschine anteilig in welchem Status befand.
Ich habe recht schnell folgendes Dashboard erstellt. Den Query-Code, der zum Lesen und Auswerten der Daten aus der InfluxDB verwendet wird, habe ich mithilfe von ChatGPT erstellt.

Fazit zum POC
Mit Python, InfluxDB und Grafana lassen sich schnell Daten aus CNC-Maschinen auslesen, speichern, auswerten und visualisieren. Man kommt sehr schnell rein und mit Docker lässt sich die Umgebung sehr schnell einrichten. Es gibt fertige Docker Images für InfluxDB und Grafana, man muss sich also auch nicht um die Installation und Konfiguration kümmern.
Weitere Möglichkeiten mit den CNC-Daten
Mit Grafana hat man die Möglichkeit, Mail-Alerts zu erstellen. Es wäre also zum Beispiel möglich, bei einem Fehlerfall automatisch eine E-Mail an die zuständige Person im Unternehmen zu schicken, sodass diese gegebenenfalls direkt mit der Reparatur beginnen kann.

Kommentare