Diagnose asynchroner Motoren mit Java, FFT und Park-Transformation
Dieses mit Java entwickelte System diagnostiziert asynchrone Elektromotoren, indem es den Stromverbrauch analysiert, um Defekte aufzuspüren. Die Anwendung integriert Signalverarbeitung, Fast Fourier Transformation (FFT) und Clarke-Park-Transformation und bietet Ingenieuren ein leistungsstarkes Werkzeug zur Überwachung des Gerätezustands.
Architektur und Signalverarbeitung
Auf JavaFX für Desktop-Workstations aufgebaut, war die größte Herausforderung die Verarbeitung von Stromsignalen mit 25,6 kHz Abtastrate. Die Rohdaten enthalten hochfrequente Störungen vom Frequenzumrichter, die eine Vorfilterung erfordern.
Wichtige Schritte der Signalverarbeitung:
- Tiefpassfilterung: Butterworth-Digitalfilter mit 1 kHz Grenzfrequenz zur Rauschunterdrückung.
- Hamming-Fensterung: Reduziert spektrale Leckage und verbessert Amplituden-Genauigkeit.
- FFT-Implementierung: Berechnet Amplituden- und Phasenspektren zur Erkennung harmonischer Komponenten.
Beispielcode für Filterung und Fensterung:
public double[] applyHammingWindow(double[] signal) {
int N = signal.length;
int Fs = 25600;
int order = 4;
int cutOff = 1000;
Butterworth flt = new Butterworth(Fs);
double[] result = flt.lowPassFilter(signal, order, cutOff);
double[] windowedSignal = new double[N];
Hamming w1 = new Hamming(N);
double[] out = w1.getWindow();
for (int i = 0; i < N; i++) {
windowedSignal[i] = result[i] * out[i];
}
return windowedSignal;
}
Datenvisualisierung und Analyse
Die Benutzeroberfläche zeigt verschiedene Diagrammtypen für umfassende Diagnosen:
- Strom-Oszilloskop: Zeitbereichs-Wellenformanalyse mit Zoom.
- Park-Vektordiagramm: Strombahn in d-q-Koordinaten nach Clarke-Park-Transformation.
- FFT-Spekrogramm: Erkennt dominante Frequenzen und Harmonische als Fehler-Indikatoren.
Stapelverarbeitung von bis zu 40 CSV-Dateien erleichtert Vergleiche. Einheitliche Filtereinstellungen gelten für alle Datensätze, um Veränderungen im Motorzustand zu verfolgen.
Leistungsoptimierung
Geschwindigkeit entsteht durch optimiertes I/O und Multithreading:
- 70 MB CSV-Dateien werden in unter 2 Sekunden auf einem Intel Core i5 mit 16 GB RAM verarbeitet.
- Diagramme aktualisieren sich in <100 ms durch Trennung von Rechen- und Render-Threads.
- BufferedReader minimiert Speicherbedarf.
Die JDSP-Bibliothek (Java Digital Signal Processing) lieferte fertige Filter und Fensterfunktionen und beschleunigte die Prototypenentwicklung.
Benutzeroberfläche und Funktionen
Interaktive Elemente ermöglichen tiefe Analysen:
- Diagramm-Tooltips: Hover für Punktwerte.
- Anzeigeoptionen: Einheiten (relativ oder dB), Frequenzbereich, Signaltyp.
- Themen: Hell- und Dunkelmodus.
- Steuerungen: Farbcodierte Datensätze, Zoom-Regler, Datei-Buttons.
Beispiel für Tooltip-Setup bei LineChart:
public static void setupTooltip(XYChart.Data<Number, Number> data, String seriesName) {
Circle circle = new Circle(2);
circle.setOpacity(0.5);
circle.setOnMouseEntered(event -> {
Tooltip tooltip = new Tooltip(
"Y: " + data.getYValue() + "\n" +
"X: " + data.getXValue() + "\n" + seriesName
);
tooltip.setShowDelay(Duration.ONE);
Tooltip.install(circle, tooltip);
});
data.setNode(circle);
}
Wichtige Erkenntnisse
- FFT und Park-Transformation erkennen Motorschäden über Stromharmonische.
- Optimierte Verarbeitung meistert 70 MB-Dateien in 2 Sekunden.
- Multithreading hält die UI in <100 ms reaktionsschnell.
- JDSP vereinfacht DSP in Java.
- Stapelmodus vergleicht bis zu 40 Datensätze nahtlos.
— Editorial Team
Noch keine Kommentare.