Condition Monitoring of a CNC Machine Using Vibration Sensors
Studium · eigenständige AbschlussarbeitNur intakte MaschineNicht an Fehlern validiertSchematisch
Ein Schwingungssensor an der Spindel eines Bearbeitungszentrums, ausgelesen über OPC UA mit Python. Das Rohsignal aus der Hardware herauszubekommen war der schwierige Teil. Ein passives Abonnement lieferte nichts, deshalb habe ich einen zustandsbehafteten Command-and-Retrieve-Ablauf zur Datenerfassung gebaut.
Maschine
Vertikales Bearbeitungszentrum Spinner VC850 mit Steuerung Heidenhain TNC 640 (Hochschullabor)
Python 3.9, NumPy, Pandas, SciPy, Matplotlib, Streamlit; ein Python-OPC-UA-Client; UaExpert
Zeitraum
2025 (abgegeben im September 2025)
Art
Eigenständige Masterarbeit
Bereich C · ZustandsüberwachungRev 1.0 · 03.10.2026
Umfang
Eigenständige Masterarbeit an einer Maschine, nur im intakten Zustand.
Echte Maschinenfehler wurden nicht getestet, und es wird keine Fehlererkennung behauptet.
Beobachtet
Beobachtet
In einem Test an der intakten Maschine führte ein künstlicher Stoß auf den Sensor zu einem Kurtosis-Ausschlag von etwa −0,1 auf über 230, und die Alarmlogik hat reagiert.
Nicht gezeigt
Nicht gezeigt
Erkennung eines echten Maschinenfehlers.
Genauigkeit der Diagnoseregeln.
Lastunabhängige Überwachung.
Grenzen
Was diese Arbeit nicht abdeckt
Nur intakte Maschine.
Keine Datensammlung mit echten Fehlern.
Genauigkeit der Diagnoseregeln nicht quantitativ überprüft.
Keine Prognose: keine Schätzung der Restnutzungsdauer.
Ein einzelner Sensor.
Diskrete Spindeldrehzahlen.
Interaktiver Signalweg
Von der Spindel bis zum Alarm, in sieben Stufen
Die Kette oben bleibt fest. Die Zeichnung darunter ändert sich mit jeder Stufe. Alle Zeichnungen sind eigene Schemata, keine Messdaten.
Die Zeichnung seitlich scrollen. Der Text darunter sagt dasselbe.
Stufe 1 / 7
Stufe 1 / 7
Eine Spindel, ein Sensor, eine IFM-Kette
Untersuchungsgegenstand ist ein vertikales Bearbeitungszentrum Spinner VC850 mit Heidenhain-TNC-640-Steuerung in einem Hochschullabor.
Ein Piezo-Beschleunigungssensor IFM VSA004 ist mit einer Stiftschraube am Spindelgehäuse befestigt. Er speist ein Modul IFM VSE100, das ein OPC-UA-Server IFM VOS050 (mit Gerätelizenz VOD001) einem Python-Client zur Verfügung stellt. Die Lizenzen hat IFM bereitgestellt.
Foto · WeitwinkelansichtSpindelgehäuse mit montiertem Schwingungssensor.
Stufe 2 / 7
Das Problem bei der Datenerfassung
Der erste Ansatz war ein passives OPC-UA-Abonnement der Sensordaten. Das Abonnement lieferte keine Rohdaten.
Ohne Rohdaten gab es nichts zu verarbeiten, deshalb wurde dies der schwierige Teil des Projekts.
Stufe 3 / 7
Ein zustandsbehafteter Command-and-Retrieve-Ablauf
Mit UaExpert, einem OPC-UA-Client eines Drittanbieters, habe ich den Server durchsucht und seine Methoden (StartRecording, Open, Read und Close) samt Argumenten untersucht. Daraus habe ich in Python einen zustandsbehafteten Command-and-Retrieve-Ablauf gebaut: eine Aufnahme anstoßen, warten bis sie fertig ist, sie öffnen, lesen und schließen, dann die Daten dekodieren und in die Warteschlange legen. Der Ablauf entsprach dem Handbuch des Herstellers.
Die Erfassung läuft in einem Producer-Thread. Eine FIFO-Warteschlange gibt jeden Puffer an den Consumer weiter, der die Analyse durchführt und das Dashboard speist. Das Ergebnis ist ein Near-real-time-Erfassungszyklus.
SchematischZeitverhalten nicht angegeben
Stufe 4 / 7
Signalverarbeitung
Jeder Puffer wird von seinem Trend befreit, mit einem Butterworth-Filter 4. Ordnung bandpassgefiltert und per Z-Score normiert. Die Z-Score-Normierung skaliert ein Signal mit seinem eigenen Mittelwert und seiner Standardabweichung.
Stufe 5 / 7
Berechnung der Kennwerte
Aus dem verarbeiteten Signal berechnet das System im Zeitbereich RMS, Spitzenwert, Crest-Faktor und Kurtosis sowie im Frequenzbereich eine FFT.
Stufe 6 / 7
Referenzwert und Alarmlogik
Die Referenzwerte wurden an der intakten Maschine aufgenommen, thermisch stabilisiert und im Leerlauf ohne Werkzeug, bei diskreten Spindeldrehzahlen.
Die Schwellen für Alert und Alarm wurden in der Arbeit aus der Statistik der Referenzwerte mit μ+2σ und μ+3σ festgelegt. Auf die Kennwerte wird eine regelbasierte Diagnoselogik angewendet. Die Kennwerte werden zur Verlaufsbeobachtung an dauerhafte CSV-Dateien angehängt.
Illustrative BänderKeine Schwellenwerte gezeigt
Stufe 7 / 7
Was die Tests gezeigt haben und was nicht
Aufgezeichnetes Ergebnis
Stoßtest. In einem Test an der intakten Maschine führte ein künstlicher Stoß auf den Sensor zu einem Kurtosis-Ausschlag von etwa −0,1 auf über 230, und die Alarmlogik hat reagiert.
Nicht gezeigt
Erkennung eines echten Maschinenfehlers.
Genauigkeit der Diagnoseregeln.
Lastvergleich. Eine Maschine, ein leichter Planschnitt in Aluminium 6061, eine Spindeldrehzahl (2000 U/min).
Zustand
RMS roh
Normierte Kurtosis
Ohne Last
0,03 g
26,29
Leichter Schnitt (Planfräsen, Aluminium 6061)
0,03 g
26,13
Die Kurtosis-Werte waren in beiden Zuständen ähnlich und werden hier nicht gedeutet; eine Maschine, ein leichter Schnitt, eine Spindeldrehzahl. Dies ist keine Validierung einer lastunabhängigen Überwachung.
Grenzen
Nur intakte Maschine.
Keine Datensammlung mit echten Fehlern.
Genauigkeit der Diagnoseregeln nicht quantitativ überprüft.
Keine Prognose: keine Schätzung der Restnutzungsdauer.
Ein einzelner Sensor.
Diskrete Spindeldrehzahlen.
Umfangsangabe
Was ich gemacht habe und was nicht
Ein Ort, um genau nachzuprüfen, was diese Arbeit ist und was nicht.
Mein Beitrag
Eigenständige Masterarbeit. Ich habe in Python den Erfassungsablauf, die Signalverarbeitung, die Referenzwerte, die regelbasierte Alarmlogik und ein Streamlit-Dashboard gebaut, an der Maschine des Labors und der IFM-Sensorkette.
Durchgeführt
Referenzaufnahmen und Tests an einer intakten Maschine, darunter ein künstlicher Stoß auf den Sensor und ein Lastvergleich.
Nicht durchgeführt
Keine echten Fehler, keine Datensammlung mit Fehlern, keine Prognose, kein zweiter Sensor, keine andere Maschine.
Gemessen
Schwingung am Spindelgehäuse mit einem Sensor, an einer intakten Maschine, bei diskreten Spindeldrehzahlen.
Nicht validiert
Genauigkeit der Diagnoseregeln, Erkennung echter Fehler und lastunabhängige Überwachung. Es werden keine Genauigkeitszahl, keine Rate falscher Alarme und kein betrieblicher Nutzen angegeben.
Früherer Stand des Prototyps · August 2025
Repository des Prototyps
Ein öffentlicher Stand des Codes vom August 2025. Er enthält das Streamlit-Dashboard, die Command-and-Retrieve-Erfassung, Signalverarbeitung, Referenzwerte und Diagnose sowie die Verlaufsbeobachtung. Er stammt aus der Zeit vor der Abgabe der Arbeit und unterscheidet sich in einigen Details von der Umsetzung in der Arbeit. Er ist nicht die endgültige Umsetzung der Arbeit.