LabVIEWForum.de - Problem mit Frequenzmessung

LabVIEWForum.de

Normale Version: Problem mit Frequenzmessung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo LabVIEWer,
ich komme so langsam weiter mit meinem Projekt, aber es gibt doch noch ein paar kleine Probleme.
Zur Zeit hänge ich an der Bestimmung einer Fahrgeschwindigkeit. Ich nehme mit meinem NI Usb-6210 über die Analogeingänge ein Spannungssignal auf und möchte davon die Frequenz und das Tastverhältnis bestimmen.
Da es im Komplettprogramm nicht funktioniert hat, hab ich das ganze mal in ein einzelnes VI gepackt und mir die Fehler angeschaut. Gleich nach dem Start kommt der Fehler im angehängten Bild. Das Signal ist allerdings auch mächtig komisch, siehe dem anderen anderen Bild.

Um es noch zu erwähnen, die Counter der Messkarte kann ich nicht dazu verwenden. Diese werden anderweitig benutzt.
Achso, in der Highlight-Funktion kommt dann noch ein weiterer Fehler, nämlich dass die Werte im Buffer wieder überschrieben wurden und somit nicht mehr verfügbar. Liegt das an der Highlight-Funktion oder ist das generell?
Über ein paar Anregungen zum Thema freue ich mich tierisch.

gruß und danke im Vorraus
Steffen
Lv86_img
Hi,

hab leider kein LV 8.6.

Der Fehler im Highlightmodus entsteht, wenn durch die langsame Ausführung des Vi das Programm zu selten die angefallenen AI Werte ausliest. Zwischen zwei Aufrufen des DAQmx Read vergeht also so viel Zeit, dass der Puffer der Karte voll wird.
Das ist leider ein Problem um das du im Highlightmodus nicht herumkommen wirst, es sei denn du redzierst die Abtastrate drastisch.

Wo genau tritt denn der erste Fehler auf? Ich vermute mal im Vi "Impuslmessung". Schau dir einmal mittels einer Sonde an, wie lang das Signal ist, das pro Schleife aufgenommen wird. Eventuell ist es zu kurz, sodass die Funktion nicht richtig arbeitet.

Grüße
[attachment=45779:Blockdia...smessung.GIF]Ok,das mit dem Zeitfehler hab ich mir fast gedacht weil es auch im Hauptprogramm nur im Highlight-Modus passiert.

Das andere, naja kann schon sein das es zu kurz ist. Aber wie umgehe ich das?
Hab unten mal ein Bild angehängt um nen Überblick zu geben.

Danke schonmal!

Steffen
Hab jetzt schnell das Beispiel von Ni "Pulse and Transition Measurement" ausprobiert. Habe dort beim Sinusgenerator ein Control für die Abtastinfo angehängt und die Sample Anzahl (pro Schleife) auf 10 herabgesetzt. Bekomme dann genau den gleichen Fehler wie du in deinem Vi. Dürfte also tatsächlich an der Länge liegen.

Eine zu schnelle Schleifenabarbeitung kannst du z.B. mit einem Wait umgehen. Ich würde dir empfehlen eine timedloop zu verwenden. Damit kannst du dir dann genau festlegen welche Frequenz deine Schleife hat und wieviele Samples pro Iteration du auslesen willst.

Bsp.: Samplerate 20kHz , Schleifendauer 100ms => 2000 Samples pro Durchlauf
Tja, wenn das so einfach wäre.
Das gezeigte VI ist ja nur ein Auszug aus meinem ganzen Programm.
Mein Hauptprogramm besteht sozusagen aus zweimal Spannung messen. Eine Spannung gibt nen Abstand aus, die zweite ist für das Geschwindigkeitssignal. Die Geschwindigkeit und den Abstand wandle ich in eine Impulsausgabe (PWM für Modellbauservos) und dafür brauch ich halt ne gewisse Frequenz. Sonderlich langsam soll das Programm dann ja auch nicht sein.
Die Schleifenzeit kann ich nicht künstlich verlängern, sonst komm ich mit meiner Impulserzeugung nicht hinterher bzw. die Reaktionszeiten werden zu groß.

Ich lade das ja in nen Array. Kann man nicht irgendwie festlegen das die Frequenzmessung erst ab einer bestimmten Anzahl an Werten im Array losgeht. Sozusagen das ganze in ne for-Schleife packen und ab ner bestimmten Anzahl von Schleifendurchläufen erst starten? Und für den Fall das es noch nicht gestartet ist, den Wert für die Geschwindigkeit auf 1 setzen, oder so?
Klingt für mich jetzt erstmal irgendwie logisch, aber kann man das so umsetzen?

gruß
Steffen
Du könntest dir z.B. einen Ringspeicher (Array + Schieberegister) basteln und die Daten dort immer hineinschreiben. Damit hättest du immer genug Daten und musst die Schleife nicht bremsen.

Allerdings denke ich du solltest noch einmal überlegen, ob die Impulsmessung so das richtige ist. So ganz habe ich noch nicht durchschaut, wie genau dein Signal aussehen soll? (So wie am Screenshot? Welche Frequenz willst du dann messen? Die Träger- , oder Modulationsfrequenz?)

Ansonsten:
- Schon mal überlegt per FFT die Frequenz zu bestimmen?
- Eventuell zwei parallele Schleifen zur Messung verwenden und per Queue/Melder Daten an die Regelung weitergeben? Daduruch hast du unabhängige Schleifenzeiten.
Den Ringspeicher mittels array und Schieberegister hab ich ja schon, nur ist halt wahrscheinlich in den ersten Schleifendurchläufen noch nix weiter im array drin.
Ich brauche die Frequenz der jeweils ersten abfallenden Pegel (weiß ja nicht ob man das im Bild oben erkennen kann), evtl. wird das Signal auch etwas besser wenn ich es vllt. noch filtere oder alle Massen an einen Punkt/Potenzial lege.
Ansonsten werd ich mir das mit den parallelen Schleifen/Messungen nochmal überlegen, wobei da ja auch immer das Problem am Programmstart liegt wenn ein Wert halt aufgrund langsamerer Schleifenzeit fehlt.

gruß
Steffen
So, das Anfangsproblem mit dem leeren Speicher hab ich mal vllt. etwas unkonventionell gelöst, siehe VI unten.

Nun ist es aber so, dass mein Signal des Sensors doch recht bescheiden ist. Es kommt dann immer wieder eine Fehlermeldung die besagt, dass der Pegel nicht oft genug durchschritten wird.
Kann man so ein Signal noch künstlich verstärken und das "Zucken" (siehe erster Post) wegbekommen?

Danke im Vorraus und schonmal ein schönes Wochenende.

Steffen


Achso, das Frequenzmess.VI das zusätzlich drin ist war zum Testen ob es damit vllt. besser geht.
Lv86_img
Hallo hotwheelz,

Dein Problem ist die Zeit zwischen Deinen Pulsen dort kann das VI "Immulsmessungen" nichts messen. Du musst Dein Signal erst aufbereiten.

Grüße

kpa
Hallo,
wie muss ich das verstehen? Ich hab doch einen Signalverlauf der jeweils letzten zwei Sekunden und die sollen dann ausgewertet werden. Oder denk ich falsch?

Gruß
Steffen
Seiten: 1 2
Referenz-URLs