Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich arbeite an folgender Aufgabenstellung: In eine bereits bestehende Drehzahl- und Temperaturregelung soll für einen Laboraufbau zur Getriebezustandsüberwachung eine FFT-Analyse integriert werden.
Damit die Drehzahlregelung ausreichend schnell regelt, habe ich bei einer Abtastrate von 32768 Hz eine Sample-Größe von 1024 pro Kanal gewählt. (Um bei 5 auszulesenden Kanälen unter der maximalen Abtastrate von 250kS/s zu bleiben) Die Sample-Größe von 1024 reicht jedoch nicht aus um eine FFT durchzuführen. Hierzu habe ich wie im Programm / Screenshot erkennbar die einzelnen Sample-Packete mit Hilfe eines Schieberegisters zu einem Array mit 32 X 1024-facher Größe verbunden.
Aus diesem Array wird die FFT berechnet.
Dabei habe ich noch folgende Probleme:
1. Befinden sich 32 Datenblöcken in der Qeuer so sollen diese ausgelesen und anschließend gelöscht und daraufhin die FFT durchgeführt werden. Dies geschieht bei Programmstart zügig, mit laufender Programmlaufzeit tritt jedoch eine immer größere Verzögerung auf. Dies scheint nach meinen Beobachtungen nichts mit der steigenden Arbeitsspeicher-Auslastung zu tun zu haben.
2.Nach meiner Überlegung müsste das Gesamt-Array in genau 1 Sekunde ( 32x1024 = 32768 Samples bei einer Abtastfrequenz von 32768 Hz) gefüllt und an die FFT weitergegeben werden. Dies dauert allerdings ca. 3 Sekunden, wofür ich keine Erklärung habe?
3.Ich gehe bei der FFT von folgenden Werten aus:
Drehzahl = 300 U/min => 5 Hz (Bei einer Abtastrate von 32768 Hz erhalte ich so rechnerisch 6553,6 Samples pro Umdrehung, die FFT wird aber mit 2^15 = 32768 Werten durchgeführt)
Könnte dieser nicht ganzzahlige Sample-Wert pro Umdrehung Probleme bei der FFT verursachen?
Ich erhalte kein sinnvolles Frequenzspektrum aus der FFT.
(27.09.2011 16:15 )flthieng schrieb: 1. Befinden sich 32 Datenblöcken in der Qeuer so sollen diese ausgelesen und anschließend gelöscht und daraufhin die FFT durchgeführt werden. Dies geschieht bei Programmstart zügig, mit laufender Programmlaufzeit tritt jedoch eine immer größere Verzögerung auf. Dies scheint nach meinen Beobachtungen nichts mit der steigenden Arbeitsspeicher-Auslastung zu tun zu haben. In deinem Programmcode steht eine 64 an den Schleifen, besteht ein Datenblock aus 2 Werten?
2.Nach meiner Überlegung müsste das Gesamt-Array in genau 1 Sekunde ( 32x1024 = 32768 Samples bei einer Abtastfrequenz von 32768 Hz) gefüllt und an die FFT weitergegeben werden. Dies dauert allerdings ca. 3 Sekunden, wofür ich keine Erklärung habe? Die Schleife wird erst erneut durchlaufen wenn ALLES in ihr abgelaufen ist. Versuch es für die Auswertung mit dem Producer-Consumer Layout. Sprich die Erfassung und Auswertung in separaten Schleifen.