Auftrag zu vergeben: Frequenz aus gesampelten Daten berechnen



  • @SeppJ
    Mit der Methode bekommst du einen Wert der irgendwo in der Nähe der wirklichen Frequenz liegen wird.

    Wenn der Input z.B. aus 1000 Samples besteht, dann bekommt man über die FFT nur 500 verschiedene Frequenzen. Das ist von "Genauigkeit +/- 1PPM" weit entfernt, ziemlich egal wie man "Genauigkeit +/- 1PPM" auslegt.

    @weicher
    Ich finde die Beschreibung etwas karg. Wenn man davon ausgeht, dass man alles was nicht explizit dasteht beliebig annehmen kann, dann ist praktisch garantiert dass du nicht das bekommst was du willst.
    Und wenn man davon ausgeht dass du nicht zahlst wenn du nicht das bekommst was du willst, dann ist praktisch garantiert dass man kein Geld bekommt.

    Und die Dinge die du nicht spezifiziert hast beeinflussen u.U. massiv den Aufwand. D.h. es wird schwer einzuschätzen ob es sich auszahlt eine für dich akzeptable Lösung für das von dir genannte Geld zu entwickeln.

    Also...
    * Ist das Messsignal immer ein perfekter Sinus?
    * Ist das Messsignal verrauscht? DC Offset? Muss gefiltert werden?
    * Was für Anforderungen gibt es an die Geschwindigkeit?
    * Was darf man für numSamples mindestens annehmen?
    * Mit wie vielen kompletten Schwingungen pro numSamples darf man mindestens rechnen?
    * Wird numSamples von Aufruf zu Aufruf wechseln, oder kann man es sich leisten aufwendigere Berechnungen/Initialisierungen zu machen jedes mal wenn numSamples sich ändert?
    EDIT: uswusf. /EDIT


  • Mod

    hustbaer schrieb:

    Wenn der Input z.B. aus 1000 Samples besteht, dann bekommt man über die FFT nur 500 verschiedene Frequenzen. Das ist von "Genauigkeit +/- 1PPM" weit entfernt, ziemlich egal wie man "Genauigkeit +/- 1PPM" auslegt.

    Da kommst du aber auch mit keiner anderen Methode an ein genaueres Ergebnis, weil die Datenlage einfach nicht ausreicht, außer man macht eine Reihe Zusatzannahmen (z.B. Signal ist ein mathematisch perfekter Sinus in einem gewissen Frequenzbereich, dann kann man es fitten), von denen ich überrascht wäre, wenn sie gelten würden. Das Signal stammt ja anscheinend von einer analogen Aufnahme.



  • Ich bin überzeugt davon dass man in vielen (realen) Fällen deutlich genauere Ergebnisse bekommen kann. Ein Kumpel von mir hat sowas ähnliches sogar mal umgesetzt.
    (OK, ich bin nicht 100% sicher. Ich weiss nur noch dass es grausig verrauschte Daten waren, wo aber einiges über die Natur des Rauschens und des "Nutzsignals" bekannt war. Könnte aber sein dass er nicht die Frequenz, sondern die Phasendrehung zwischen zwei Signalen berechnet hat. Wobei ich davon ausgehen dass, wenn man das eine lösen kann, man das andere vermutlich auch lösen wird können.)

    Wenn die Frequenz niedrig genug ist (wenige Schwingungen bei grosser Fensterbreite) und das Signal halbwegs sauber, würde man schon mit dem durchschnittlichen Abstand zwischen den Nulldurchgängen zu einem genaueren Ergebnis als mittels FT kommen.

    Bzw. wenn man immer ein ausreichend breites Fenster hat, und den möglichen Frequenzbereich halbwegs gut kennt, kann man auch einfach ne gefensterte Convolution mit beliebigen Frequenzen drüberjagen. Also auch welche wo die Wellenlänge kein Teiler der Fensterbreite ist. Damit müsste das Signal dann schon kein Sinus mehr sein. Man müsste lediglich wissen ob und um wie viel die Oberwellen stärker sein dürfen als die Grundschwingung.

    Kann man aber eben alles nicht einschätzen, weil zu viele Informationen fehlen. Worauf ich ja auch hingewiesen habe.

    Auf jeden Fall halte ich es nicht für sinnvoll eine Lösung anzubieten, die so-gut-wie sicher nicht die geforderte Genauigkeit bringen kann. Also nicht ohne entsprechenden Hinweis.

    ps: Und ist ja auch nicht so dass die FT keine "Zusatzannahmen" über das Signal trifft...



  • Hallo zusammen,

    unser Prozess Ing. hat die Messung mit einem Versuchsaufbau gemacht:
    - LabView
    - National Instruments NI USB-6210

    - Sampling Time 10mSec
    - Frequenz 0Hz..60kHz Berechnung mit FFT
    - Toleranz von +-1PPM basierte auf der Annahme, dass es um die Endmessung geht.
    - Es geht aber um die erste Messung und da genügt +- 1Hz
    - Sinus kann als perfekt angenommen werden
    - Signal to noise vernachlässigbar

    Resultate und Geschwindigkeit gleich oder besser als der Versuchsaufbau.

    Auch wenn das ein 3 Zeiler ist, ich habe keine Ahnung von FFT und allgemein nur rudimentäre Kenntnisse in Mathe. Habe ich bis jetzt in den 35 Jahren als Programmierer von Maschinensteuerungen auch noch nie grossartig vermisst;-)
    Ich bin also nicht in der Lage das selber zu bauen. Ich weiss aber, dass man manchmal selbst für einen 3 Zeiler einen Tag braucht und 1 Tag entspricht dem angebotenen Betrag.

    Gruss
    Walter



  • Hallo zusammen,

    ich musste kurz unterbrechen... Chef machte Panik wegen PC Lieferfristen 😉

    * Ist das Messsignal immer ein perfekter Sinus?
    Davon kann man ausgehen

    * Ist das Messsignal verrauscht? DC Offset? Muss gefiltert werden?
    Nein, Nein, Nein

    * Was für Anforderungen gibt es an die Geschwindigkeit?
    kleiner gleich 200mSec

    * Was darf man für numSamples mindestens annehmen?
    1000 bei sampling time = 10mSec und 100Ks/sec

    * Mit wie vielen kompletten Schwingungen pro numSamples darf man mindestens rechnen?
    Standard Frequenz ist 32768 also bei 10mSec Sampling time 327.68

    * Wird numSamples von Aufruf zu Aufruf wechseln, oder kann man es sich leisten aufwendigere Berechnungen/Initialisierungen zu machen jedes mal wenn numSamples sich ändert?
    numSamples ändert nur wenn die Messparameter geändert werden. Dabei wird die Funktion "StatusChanged" des Messmodels aufgerufen. Da könnte die Messung vorbereitet werden. Geschwindigkeit unerheblich da Reaktion auf Benutzereingabe.

    Prinzipiell geht es darum die guten Quarze korrekt zu messen und die Quarze mit Kurzschluss sicher zu detektieren und das Funktioniert sehr gut mit LabView und dem National Instruments NI USB-6210.

    Unser Standard Messprogramm "UniMeasure" welches auf allen Messmaschinen und Handmessplätzen läuft ist von mir entwickelt und wurde ursprünglich mit VisualStuido 6 geschrieben und dann auf VisualStuido 2008 portiert. Aktuell bin ich daran das ganze auf VisualStudio 2013 zu portieren.

    UniMeasure hat für die Mess-Systeme ein PlugIn System welches aktuell die Auswahl zwischen den Mess-Systemen "Oscillator", "HP-NetworkAnalyzer" und "Saunders NetworkAnalyzer" zulässt.

    Ich möchte jetzt ein weiters PlugIn schreiben welches die komplette Messung mit der PCI Karte DAQBOARD 3005 macht.

    Damit wäre diese neueste Messart in das "UniMeasure" eingebunden und unser Produktionspersonal müsste nicht neu geschult werden.

    Gruss
    Walter


  • Mod

    Noch eine Frage: Soll dein vorletzter Beitrag bedeuten, dass die Rechnung mit FFT gemacht werden muss? Wie du aus hustbaers und meiner Fachsimpelei im Laufe dieses Threads schließen kannst, gibt es nämlich durchaus noch andere Verfahren. Anhand der Infos, die du nachgeliefert hast ( 👍 ), kann man auch sagen, dass diese Verfahren eine wesentlich bessere Auflösung bieten würden.



  • Hallo SeppJ,

    aktuell wird die Berechnung mit FFT gemacht, aber mir ist eigentlich die Methode vollkommen Egal. Wenn das Resultat stimmt ist alles okay.

    Ich weiss aber nicht ob der Fall für den Kurzschluss mit Eurem Verfahren auch funktioniert. Mit der FFT erhalten wir bei einem Kurzschluss und 2 mal Sampeln und berechnen 2 unterschiedliche Frequenzen.

    Als ich dasselbe mit einem Zähler versucht habe ich bei 2 mal Messen immer die gleiche Frequenz erhalten und konnte somit einen Kurzschluss nicht von einem Quarz ausserhalb der Limiten unterscheiden.

    Ich vermute, dass bei einem Kurzschluss die Nulldurchgänge konstant sind aber die Wellenform alles andere als ein Sinus ist. Dadurch errechnet die FFT je nach Wellenform eine andere Frequenz.

    Unser Prozess Ing. wird auf jeden Fall die gesampelten Daten für gute Quarze und Kurzgeschlossene Quarze speichern und zur Verfügung stellen.

    Gruss
    Walter


  • Mod

    weicher schrieb:

    Als ich dasselbe mit einem Zähler versucht habe ich bei 2 mal Messen immer die gleiche Frequenz erhalten und konnte somit einen Kurzschluss nicht von einem Quarz ausserhalb der Limiten unterscheiden.

    Ich vermute, dass bei einem Kurzschluss die Nulldurchgänge konstant sind aber die Wellenform alles andere als ein Sinus ist. Dadurch errechnet die FFT je nach Wellenform eine andere Frequenz.

    Das hier erscheint mir noch sehr wichtig, um zu wissen, was für ein Resultat du möchtest. Denn wie ich mit hustbaer oben diskutiert habe, ist die FFT nicht unbedingt das beste Mittel, um die Fundamentalfrequenz eines Signals zu bestimmen. Wenn euer Testverfahren aber nur anschlägt, weil die Ergebnisse von zwei FFT-Messungen sich unterscheiden (oder verstehe ich dich gerade falsch?), dann ist doch die Anforderung an den Code ausdrücklich nicht die Messung der Grundfrequenz, sondern dass er eine FFT durchführen soll und dann die Frequenz mit dem größten Ausschlag zurück geben soll. Beide Verfahren sind kein Problem, aber man muss genau wissen, was wirklich gewünscht ist. Du musst zum Beispiel auch wissen, ob wirklich der höchste Ausschlag im FFT-Spektrum gesucht ist, oder ob vielleicht das gesamte Spektrum zweier Messungen verglichen werden soll. Letzteres passt nämlich nicht zur Signatur der Funktion. Ich will an dieser Stelle aber nicht ausschließen, dass diese Signatur eventuell falsch vorgegeben ist.



  • SeppJ schrieb:

    weicher schrieb:

    Als ich dasselbe mit einem Zähler versucht habe ich bei 2 mal Messen immer die gleiche Frequenz erhalten und konnte somit einen Kurzschluss nicht von einem Quarz ausserhalb der Limiten unterscheiden.

    Ich vermute, dass bei einem Kurzschluss die Nulldurchgänge konstant sind aber die Wellenform alles andere als ein Sinus ist. Dadurch errechnet die FFT je nach Wellenform eine andere Frequenz.

    Das hier erscheint mir noch sehr wichtig, um zu wissen, was für ein Resultat du möchtest. Denn wie ich mit hustbaer oben diskutiert habe, ist die FFT nicht unbedingt das beste Mittel, um die Fundamentalfrequenz eines Signals zu bestimmen. Wenn euer Testverfahren aber nur anschlägt, weil die Ergebnisse von zwei FFT-Messungen sich unterscheiden (oder verstehe ich dich gerade falsch?), dann ist doch die Anforderung an den Code ausdrücklich nicht die Messung der Grundfrequenz, sondern dass er eine FFT durchführen soll und dann die Frequenz mit dem größten Ausschlag zurück geben soll. Beide Verfahren sind kein Problem, aber man muss genau wissen, was wirklich gewünscht ist. Du musst zum Beispiel auch wissen, ob wirklich der höchste Ausschlag im FFT-Spektrum gesucht ist, oder ob vielleicht das gesamte Spektrum zweier Messungen verglichen werden soll. Letzteres passt nämlich nicht zur Signatur der Funktion. Ich will an dieser Stelle aber nicht ausschließen, dass diese Signatur eventuell falsch vorgegeben ist.

    ???
    Ich denke, daß 32768Hz das Maß ist. Genau 32768Hz. Halt Quarzuhren, die schwingen so. Ist technisch keine schlechte Größe für Schwingquarze und elektronisch muss man nur mehrmals halbieren, um auf die Sekunde zu kommen, was sauwenig Stom verbraucht.

    Alter Witz: Was macht die Uhr? Tick-Tack! Nee, hab ne Digitaluhr. Die macht auch Tick-Tack, aber 32768 mal in der Sekunde und nicht siebenmal wie deine bekloppte Rolex.

    Wie wir uns erinnern, ist das nicht die erste Anfrage dieser Uhrenschmiede, sie sind immer konkret und fundiert. 👍

    Die FFT lehnte ich im Gedanken zuerst ab, weil ihr Ergebnis quantisiert ist.

    Ich dächte daran, vorab mal die schlicht Phasenwechsel zu zählen, dann ein paar berechnete Sinusschwingungen als Vergleich anzulegen (vielleicht mittlere Fehlerquadrate) und sobald man zwei hat, die den Tatverlauf einkesseln, das Opfer einzuschachteln. Die regula falsi dürfte hier rocken, wenn man das Ergebnis zehnmal so schnell haben will.

    Mittlere Quadrate? Ja!!! Die sind immer richtig. Kein Witz, damit entdeckt man Planeten. Aber scheißdrauf, wenn ich in der Uhrenschmiede arbeiten würde, dann würde ich Kuben und Logarithmen und jeden Kack probieren in jeder Kombination.

    Das wäre eine Aufgabe, in die ich mich gerne vertiefen würde.



  • Auftrag ist vergeben.

    Besten Dank für die Beteiligung.

    Gruss
    Walter


Anmelden zum Antworten