Analyse von Daten-Streams
Blockweise FFT-Analyse aus einem Daten-Stream
Die DFT/FFT ist definiert auf einem zyklisch fortgesetzten, periodischen Signal. Dies führt zu einer zunächst überraschenden Folgerung: Wenn eine FFT-Analyse eines langen Signals benötigt wird, kann nicht einfach das Eingangssignal in Abschnitte unterteilt und mit der DFT transformiert werden. Denn sobald der letzte Wert in einem solchen Abschnitt nicht mit dem ersten übereinstimmt, behandelt die FFT dies als Sprung in der zyklischen Fortsetzung, der sich im Spektrum deutlich abbildet (Spectral Leakage). Das Prinzip wird in folgender Abbildung deutlich. Es wird aus dem Gesamtsignal (schwarz) ein Teilsignal (blau) ausgeschnitten. Die FFT impliziert eine zyklische Fortsetzung des Teilsignals (untere Abbildung) und geht von Sprüngen im zu transformierenden Signal aus, was sich im Spektrum deutlich niederschlägt.
Abhilfe schafft hier die Gewichtung der Signalabschnitte vor der Transformation mit einer geeigneten Fensterfunktion (für Details siehe nächster Abschnitt). Ein geeignetes Fenster ist so beschaffen, dass sowohl Zeitwerte ganz am Anfang als auch solche ganz am Ende mit einem Faktor Null bzw. nahezu Null multipliziert werden. Folgende Abbildung zeigt selbiges Szenario wie gerade beschrieben, allerdings nun mit einer Fensterfunktion (rot). Die Sprünge in der zyklischen Fortsetzung verschwinden durch die Fensterung, allerdings ist zu beachten, dass die Eigenschaften des Fensters natürlich im Spektrum des gefensterten Teilsignals zu sehen sind. Die Fenstereigenschaft führt jedoch zu in der Regel deutlich geringeren Einflüssen im Spektrum.
Problematisch bei der Fensterung ist, dass Werte am Rand eines Fensters kaum Berücksichtigung im Spektrum finden. Sollten sich gerade in diesem Bereich Signalmerkmale, die auf mögliche Schädigungen schließen lassen, befinden, könnte es zu einem wesentlichen Informationsverlust kommen. Damit keine Informationen verloren gehen, wird diese Fensterung in der TwinCAT Condition Monitoring Bibliothek mit überlappenden Signalabschnitten vorgenommen. Bei Verwendung des als Standard verwendeten Hann-Fensters wird eine 50% Überlappung empfohlen. Dadurch befinden sich Samples, die sich in einem Fensterabschnitt am Rand befinden, im nächsten Fensterabschnitt in der Mitte.
Folgende Abbildung zeigt schematisch die Vorgehensweise einer FFT-Analyse aus einem Daten-Stream mit 50% Überlappung.
Aus dem Daten-Stream werden zunächst Puffer mit definierter Länge gefüllt, hier 1600 Werte. Bei der Auswertung der Daten aus Puffer n wird der vorangegangene Puffer hinzugezogen und das nun 3200 Werte lange Datenpaket gefenstert. Das Maximum der Fensterfunktion liegt dabei genau zwischen den beiden Puffern und fällt in Richtung Rand der beiden Puffer auf den Wert Null. Durch Zero Padding wird das Datenpaket auf eine Länge von 4096 Werten verlängert, so dass die Länge eine Potenz von 2 ist und somit durch einen FFT-Algorithmus effizient berechnet werden kann. Das Ergebnis der FFT ist dann ein Datenpaket mit 4096 Werten, welches ggf. auf 2049 Werte reduziert werden kann, falls die Eingangsdaten alle reellwertig sind (siehe Spiegelfrequenzen).
Während der Auswertung von Puffer n, wird Puffer n+1 aufgefüllt bei dessen Auswertung dann wiederum Puffer n hinzugezogen wird. Durch dieses Vorgehen entsteht immer ein 50%iger Überlappungsbereich der gefensterten Zeitbereiche.
Analyse eines Daten-Stream in TwinCAT 3 Das in der obigen Abbildung gezeigte Schema der Signalanalyse wird in der Condition Monitoring Bibliothek durch den FB_CMA_MagnitudeSpectrum sowie FB_CMA_PowerSpectrum realisiert. Als Anwender ist nur eine Konfiguration der Parameter (Länge der Puffer, Länge der FFT, Fensterfunktion, Überlappung, …) sowie die Bereitstellung der Daten-Puffer notwendig. Siehe z. B.: ST_CM_PowerSpectrum_InitPars. |
Fensterfunktionen
Die Eigenschaften der verwendeten Fensterfunktionen sind im Ergebnis der Transformation wiederzufinden. Es wird nicht das Signal x[n] Fourier-transformiert, sondern das Signal x[n].w[n], mit w[n] als Zeitwerte der Fensterfunktion. Beachten Sie hierzu die grundlegenden Eigenschaften von Fensterfunktionen.
Wird „keine“ Fensterfunktion verwendet, also ein Signalabschnitt aus einem längeren Gesamtsignal herausgenommen entspricht dies der Verwendung eines Rechteckfensters. Zum Vergleich der Eigenschaften von Fensterfunktionen gegenüber einer Rechteckfensterung ein Beispiel: Ein harmonischer Sinus mit Amplitude 13 und Frequenz 500 Hz wird mit einer Abtastrate von 10 kHz abgetastet, mit einer Fensterfunktion der Länge 3200 Samples gefenstert und anschließend das Magnitudenspektrum (mit der Skalierungsoption eCM_PeakAmplitude
) gebildet. In folgender Darstellung wird das Magnitudenspektrum bei Verwendung der verfügbaren Fensterfunktionen gegenübergestellt.
Ein Beispiel zur Rekonstruktion der nachfolgenden Grafik finden Sie hier: Fensterfunktionen
In der Grafik sind zwei wesentliche Eigenschaften von Fensterfunktionen zu erkennen:
- Die Breite des mainlobe (auch Hauptzipfel), hier die Breite des Zipfels um 500 Hz.
- Die Dämpfung der sidelobes (auch Nebenmaxima) bezogen auf das Maximum des mainlobe.
- Die Amplitudentreue harmonischer Signale, vgl. die Maximalwerte bei Vorgabe einer Schwingung mit Amplitude von 13.
Die verschiedenen Fenstertypen bilden jeweils einen trade-off zwischen diesen 3 wesentlichen Eigenschaften.
Die Breite des mainlobe beeinflusst die erreichbare Frequenzauflösung. Die Höhe der sidelobes zeigt die spektralen Verfälschungen (spektral leakage) auf, da diese nur durch das Fenster entstehen und nicht durch das zu analysierende Signal. Die Krümmung des mainlobes im Bereich -0,5 bins bis +0,5 bins um das Maximum charakterisiert den maximalen Amplitudenfehler, welcher bei harmonischen Signalen auftreten kann (scalloping losses).
Es ist zu erkennen, dass das Rechteckfenster eine sehr gute Frequenzauflösung erlaubt, jedoch starke spektrale Verfälschungen nach sich zieht, was z.B. problematisch wird, wenn nun neben dem Peak bei 500 Hz ebenfalls eine Frequenzkomponente bei 550 Hz mit einer Amplitude von 0,5 auftritt. Außerdem der maximal mögliche Amplitudenfehler mit -36,34% sehr hoch. Das Hann-Fenster verringert die sidelobes erheblich, verringert jedoch auch die erreichbare Frequenzauflösung, was dennoch einen guten Kompromiss darstellt solange keine exakte Bestimmung von Amplituden von sinusförmigen Signalen benötigt wird. Der maximal mögliche Amplitudenfehler liegt hier bei -15,12%. Das Hann-Fenster ist eines der bekanntesten Fensterfunktionen und ist deshalb als Standard in der Condition Monitoring Bibliothek eingestellt. Ist eine Amplitudentreue bei harmonischen Signalen gefordert ist ein Flat-top-Fenster (SFT5M) zu verwenden, welches eine möglichst flache Krümmung im zentralen mainlobe Bereich aufweist (maximaler Amplitudenfehler -0,045%). Allerdings ist der mainlobe hier sehr breit, wodurch sich dieses Fenster nur bei der Analyse rein harmonischer Signale empfiehlt.
Eine wichtige Kenngröße der Frequenzauflösung bei Nutzung einer Fensterfunktion ist die Equivalent Noise Bandwidth (ENBW).
Die Größe Δf ergibt sich, über die FFT-Länge N und die Abtastrate fs (siehe Fourier-Analyse). Der Ausdruck in der Gleichung vor dem Δf wird definiert über die Eigenschaften des Fensters und ist für ein Rechteckfenster 1 und z.B. für das Hann Fenster 1,5 und für das SFT5M 3,885.
Die Wahl des verwendeten Fensters, der zugehörigen Parameter sowie die zu verwendende Überlappung wird für die betreffenden Funktionsbausteine über die jeweilige Baustein-spezifische Struktur mit Initialisierungsparametern realisiert, z.B. ST_CM_MagnitudeSpectrum_InitPars.
Verfügbare Fensterfunktionen
Für ein Fenster der Länge N, stehen in der Condition Monitoring Bibliothek die nachfolgenden Fensterfunktionen zur Verfügung. Hierbei bezeichnet I0 die modifizierte Bessel-Funktion erster Gattung und Ordnung Null. Die Parametrierung des eCM_KaiserWindow
sowie des eCM_FlatTopWindow
erfolgt über T_CM_WindowParameters in den initPars Strukturen. Die letzte Spalte gibt die empfohlene Überlappung in Prozent der Fensterlänge an. Exemplarisch sind für eCM_KaiserWindow
das Fenster Kaiser-4 mit
und für eCM_FlatTopWindow
das Fenster SFT5M mit
gewählt worden.
Bezeichner | PID | Definition | Überlappung |
---|---|---|---|
| 16#05300901 | 50% | |
| 16#05300902 | 0% | |
| 16#05300905 | 50% | |
| 16#05300906 | 50% | |
| 16#05300907 | 67% (Kaiser-4) | |
| 16#05300917 | 76% (SFT5M) |
Berechnung der empfohlenen Überlappung
Die empfohlene Überlappung der gefensterten Signalabschnitte ergibt sich aus der Betrachtung folgender Eigenschaften der Fensterfunktion:
- amplitude flatness: Flachheit der überlappenden Fensterfunktion, d.h. die Gewichtung der einzelnen Samples.
- overlap correlation: Korrelation zwischen den einzelnen Samples der überlappenden Funktionen.
Die empfohlene Überlappung liegt an der Stelle, wo die Differenz beider Eigenschaften maximal wird. D.h. die bestmögliche Flachheit bei möglichst geringer Korrelation erreicht wird. Dies wird in der folgenden Grafik für das SFT5M Fenster (eCM_FlatTopWindow
) gezeigt.
Fensterfunktion (schwarz), amplitude flatness (rot), overlap correlation (grün), empfohlene Überlappung (blau).
Für weitere Informationen siehe:
- G. Heinzel et.al.: Spectrum and spectral density estimation by the Discrete Fourier transform (DFT), including a comprehensive list of window functions and some new flat-top windows. 2002.
- In der Condition Monitoring Bibliothek erfolgt die Berechnung der empfohlenen Überlappung über F_CM_CalculateRecommendedOverlap. Die Funktion kann explizit genutzt werden, die Algorithmen verwenden diese bei entsprechender Konfiguration auch implizit in Abhängigkeit der eingestellten Fensterfunktion. Natürlich kann auch eine frei wählbare Überlappung eingestellt werden. Vgl. z.B. eWindowType, eWindowTypeParameters und nOverlap in ST_CM_PowerSpectrum_InitPars.
Overlap-Add Methode
Einige Funktionsbausteine der Condition Monitoring Bibliothek arbeiten über Manipulation des Spektrums des Eingangssignals, d.h. wie oben beschrieben, wird zunächst das Eingangssignal in überlappende Teilsignale zerlegt und Fourier-transformiert. Dann wird eine Manipulation des Spektrums vorgenommen und eine inverse Fourier-Transformation berechnet. Je nach verwendeter Fensterfunktion ist eine Korrekturfunktion notwendig, um den Einfluss des Fensters zu kompensieren. Die einzelnen ebenfalls überlappenden Ergebnisse werden dann am Ausgang des Bausteins summiert, so dass wieder ein Daten-Stream am Ausgang des Bausteins entsteht. Dieses Vorgehen wird als overlap-add Methode bezeichnet und ist beispielhaft anhand der Berechnung der Signaleinhüllenden (FB_CMA_Envelope) in folgender Grafik gezeigt.
Overlap-Add in TwinCAT 3 Das Verfahren wird innerhalb einiger Funktionsbausteine der Bibliothek genutzt und muss vom Anwender nicht selber implementiert werden. Als Anwender ist nur eine Konfiguration der Parameter (Länge der Puffer, Länge der FFT, …) sowie die Bereitstellung der Daten-Puffer notwendig. |