Opracowanie systemu diagnostyki silników asynchronicznych w Java z wykorzystaniem FFT i transformacji Parka
System diagnostyki silników elektrycznych asynchronicznych, opracowany w Java, wykorzystuje analizę pobieranego prądu do wykrywania defektów. Aplikacja integruje przetwarzanie sygnałów, szybką transformację Fouriera (FFT) i transformację Clarka-Parka, dostarczając inżynierom narzędzie do monitorowania stanu urządzeń.
Architektura i przetwarzanie sygnałów
Rozwój prowadzono w JavaFX do stworzenia desktopowego zautomatyzowanego stanowiska roboczego (ARM). Kluczowym zadaniem stało się przetwarzanie sygnałów prądu, zapisanych z częstotliwością próbkowania 25,6 kHz. Dane źródłowe zawierają wysokoczęstotliwościowe szumy z falownika, co wymaga wstępnej filtracji.
Główne etapy przetwarzania sygnału:
- Filtracja niskich częstotliwości: zastosowanie cyfrowego filtra Butterwortha z częstotliwością odcięcia 1 kHz do usuwania zakłóceń.
- Ważenie oknem Hamminga: minimalizacja wycieku widmowego i zwiększenie dokładności analizy amplitud.
- Realizacja FFT: obliczenie widma amplitudowego i fazowego dla identyfikacji składowych harmonicznych.
Przykład kodu filtracji i ważenia:
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;
}
Wizualizacja i analiza danych
Interfejs aplikacji wyświetla kilka typów wykresów dla kompleksowej diagnostyki:
- Oscylogram prądu: analiza kształtu sygnału w dziedzinie czasu z możliwością skalowania.
- Diagram wektorowy Parka: wizualizacja trajektorii prądu w współrzędnych d-q po transformacji Clarka-Parka.
- Spektrogram FFT: identyfikacja dominujących częstotliwości i harmonicznych, wskazujących na defekty.
Dla ułatwienia porównania zaimplementowano przetwarzanie pakietowe do 40 plików CSV. System automatycznie stosuje ujednolicone ustawienia filtracji do wszystkich zestawów danych, umożliwiając śledzenie zmian stanu silnika.
Optymalizacja wydajności
Efektywność przetwarzania osiągnięto dzięki optymalizacji operacji wejścia-wyjścia i architekturze wielowątkowej:
- Przetwarzanie pliku CSV o objętości 70 MB zajmuje mniej niż 2 sekundy w konfiguracji z procesorem Intel Core i5 i 16 GB RAM.
- Wykresy aktualizują się z opóźnieniem poniżej 100 ms dzięki rozdzieleniu wątków obliczeń i wizualizacji.
- Użycie BufferedReader do odczytu danych zmniejszyło obciążenie pamięci.
Biblioteka JDSP (Java Digital Signal Processing) zapewniła gotowe implementacje filtrów cyfrowych i funkcji okienkowych, przyspieszając rozwój prototypu.
Interfejs użytkownika i funkcjonalność
Interfejs zawiera elementy interaktywne dla szczegółowej analizy:
- Podpowiedzi na wykresach: wyświetlanie wartości punktów po najechaniu kursorem.
- Ustawienia wyświetlania: wybór jednostek miary (jednostki względne lub dB), zakresu częstotliwości, typu sygnału.
- Motywy wyglądu: jasny i ciemny motyw dla komfortowej pracy.
- Legenda i sterowanie: kolorowe rozróżnianie zestawów danych, suwaki skalowania, przyciski zarządzania plikami.
Przykład implementacji podpowiedzi dla 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);
}
Co jest ważne
- Zastosowanie FFT i transformacji Parka pozwala wykrywać defekty silnika na podstawie harmonicznych prądu.
- Optymalizacja przetwarzania danych zapewnia analizę plików o objętości 70 MB w 2 sekundy.
- Architektura wielowątkowa gwarantuje odpowiedź interfejsu poniżej 100 ms.
- Biblioteka JDSP upraszcza realizację cyfrowego przetwarzania sygnałów w Java.
- Przetwarzanie pakietowe wspiera porównanie do 40 zestawów danych w jednolitym interfejsie.
— Editorial Team
Brak komentarzy.