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!
Also. Ich würde gerne über LabVIEW ein bestimmtes Spannungssignal ausgeben und die resultierende Antwort meines Schwingkreises als Eingang zurückbekommen.
Als Datenerfassungskarte besitze ich eine PCI-6052E mit BNC-2090 verbunden.
Das mit der Ausgabe klappt soweit. Ich erzeuge dabei in einer Schleife eine Rechteckspannungsrampe die ich dann in meine Task schreibe.
Nun will ich synchron mit der Ausgabe drei Eingänge auslesen. Dafür habe ich die Timebase der analogen Ausgabe für die Eingänge gewählt.
Das Problem ist, wenn ich zum beispiel 10 Spannungsrampen mit je 15 Datenpunkte ausgebe, also insgesamt 150 Datenpunkte ausgebe ich aber nur zwischen 130 und 148 zurückbekomme.
Ich brauche aber alle, da ich die Datenpunkte eines Spannungsplateaus mitteln will und dann auch noch die Rampen selbst.
Ein weiters Problem ist, dass ich über den dritten analogen Eingang ein Rechtecksignal erhalte, welches ich mit einem Counter gleich in eine Frequenz umrechnen möchte. Jedoch wenn ich diesen Kanal extra aufrufe, bekomme ich die Fehlermeldung, dass die Ressource besetzt ist. Die kommt wahrscheinlich daher, dass ich gleichzeitig mehrere AI-Tasks aufrufe.
Hier ist also die Frage ob sich das trotzdem synchron bewerkstelligen lässt oder ich die Frequenz nachträglich aus dem Datenarray berechnen muss. Meine Frequenz wäre so um die 10 MHz, sollte mit dieser Karte also noch funktionieren.
(08.05.2013 15:40 )danieljackson schrieb: Das Problem ist, wenn ich zum beispiel 10 Spannungsrampen mit je 15 Datenpunkte ausgebe, also insgesamt 150 Datenpunkte ausgebe ich aber nur zwischen 130 und 148 zurückbekomme.
Du darfst den Ausgabetask erst starten wenn der Erfassungstask gestartet ist. Aktuell ist der Startzeitpunkt zueinander unbestimmt. Häng im einfachsten Fall den Error Out vom Start Task.vi des Erfassungstask an den Error In des Start Task.vi des Ausgabetasks.
(08.05.2013 15:40 )danieljackson schrieb: Ein weiters Problem ist, dass ich über den dritten analogen Eingang ein Rechtecksignal erhalte, welches ich mit einem Counter gleich in eine Frequenz umrechnen möchte. Jedoch wenn ich diesen Kanal extra aufrufe, bekomme ich die Fehlermeldung, dass die Ressource besetzt ist. Die kommt wahrscheinlich daher, dass ich gleichzeitig mehrere AI-Tasks aufrufe.
Hier ist also die Frage ob sich das trotzdem synchron bewerkstelligen lässt oder ich die Frequenz nachträglich aus dem Datenarray berechnen muss. Meine Frequenz wäre so um die 10 MHz, sollte mit dieser Karte also noch funktionieren.
Ein Counter musst du auch als Counter Task starten. Dann erwartet deine Karte aber auch TTL Pegel auf den entsprechend Eingängen des Counters. Über einen analogen Eingang kannst du die Counter-Funktionalität nicht nutzen.
Ich habe jetzt noch eine Frage bezüglich der Frequenzmessung. Die Datenerfassungskarte hat ja eine TimeBase von 20 MHz und ich will Frequenzen messen um die 10 MHz. Das sollte doch dann eigentlich möglich sein.
Ich habe zwei Ausgänge mit einer Frequenz von ungefähr 10 MHz. Bei einem Ausgang liegt ein sinusförmiges Signal an und beim anderen ein Rechtecksignal. Über das Rechtecksignal würd ich dann gerne meine Frequenz messen. Leider wird das Signal mit Datenerfassungskarte falsch dargestellt, mit dem Oszilloskop aber einwandfrei (siehe png). Meine Frage ist nun, ob es mit dieser Karte überhaupt möglich ist so hohe Frequenzen zu messen.
05.08.2013, 10:16 (Dieser Beitrag wurde zuletzt bearbeitet: 05.08.2013 10:23 von Achim.)
Bei deinem Testpanel tastet du ja scheinbar nur mit 1kHz ab...was kann die Karte maximal? Das würde ich mal versuchen...
Ah, hab mal geschaut...deine karte kann ja nur maximal 333kHz SUMMEN-Abtastrate, d.h. über alle 16 Kanäle. D.h. selbst bei nur einem Kanal ist dein zu messendes Signal 30x mal schneller...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
da kann man nur mal wieder auf das Manual verweisen, das alles nötige an Informationen bereithält: S.3, AI, "max sampling rate"...
Zitat:Die Datenerfassungskarte hat ja eine TimeBase von 20 MHz und ich will Frequenzen messen um die 10 MHz.
1. Der Herr Nyquist wird im Grab rotieren, wenn du mit 20MHz Samplerate Frequenzen "um" 10MHz bestimmen willst...
2. TimeBase heißt nicht Samplerate - siehe Manual...
Zitat:Leider wird das Signal mit Datenerfassungskarte falsch dargestellt, mit dem Oszilloskop aber einwandfrei (siehe png).
Das Oszi arbeitet mit 50ns/div, dein AI-Kanal mit gerade einmal 1000Hz Samplerate. Siehe Manual oben...
Zitat:Meine Frage ist nun, ob es mit dieser Karte überhaupt möglich ist so hohe Frequenzen zu messen.
In solchen Fällen sollte man immer das Manual lesen - siehe oben...
Danke für die schnellen Antworten. Hab gehofft, dass das Problem nicht bei der Karte liegt.
Da ich die Frequenzmessung eigentlich nur zur Bestimmung der Minimal- bzw. Maximalfrequenz in einem Messzyklus benötige, habe ich mich
jetzt um einen Counter/Timer umgesehen. Wenn ich das richtig verstanden habe, sollte dafür die PCI-6601 ausreichend sein, mit bis zu 20 MHz Referenzfrequenz?
Oder wäre es vielleicht geschickter ein bisschen mehr zu investieren und eine Karte für meine Signalerfassung-/ausgabe und die Frequenzmessung zu kaufen.
05.08.2013, 18:23 (Dieser Beitrag wurde zuletzt bearbeitet: 05.08.2013 18:55 von Lucki.)
Mit der Karte PCI-6052E lassen sich zwar keine Frequenzen "um" 10Mhz messen, wohl aber bis etwas unter 10 Mhz. Erstelle doch einfach mal einen entsprechenden virtuellen Task mit dem MAX. Du wirst da schön am Händchen geführt und es wird sogar ein Schaltbild präsentiert.
Manche Messkarten von NI haben eine zweite Timebase von 80 MHz. Das wäre die Alternative, mit der sich auch Frequenzen "um" 10 Mhz messen lassen müssten.
Wenn es keine neue Karte sein soll, wäre auch zu überlegen, das Messsignal mit einem einfachen JK-Flip-Flop in der Frequenz 1:2 (oder mit einem Doppel-JK-FF 1:4) zu untersetzen. (Kostet dann nur 1 IC zu 50 Cent statt neue Karte)
Hallo nochmal. Die Lösung des Problems war schlussendlich doch einfacher. Da ich ja ein schönes Rechtecksignal habe und zwei Counter mit je 20 MHz timebase, habe ich dieses Signal direkt an den Counter-Eingang angelegt, also ohne Umweg über die analoge Erfassung. Bei entsprechender Messzeit kann ich nun Frequenzen bis auf Hz genau messen.
Hab jetzt wieder ein wenig weiter gemacht bei meinem kleinen VI.
Eine kleine Zusammenfassung:
-Ich gebe bei AO0 eine Spannungsrampe aus.
-Bei AI0 und AI1 lese ich die Antwort meines Schwingkreises aus.
-Zeitgleich messe ich jetzt noch die Frequenz über die beiden Counter, die ich über PfI8 abgreife.
Das mit der analogen Ausgabe und Erfassung funktioniert "eigentlich". Was mich daran stört ist, dass der letzte Wert bei der Ausgabe immer stehen bleibt. Gebe ich zum Beispiel eine Rampe aus, von 0 bis 10 Volt, 10 Volt als letzten Wert, dann liegen nach dem Messungvorgang auch 10 Volt an und nicht wieder 0 Volt.
Der zweite Punkt ist, dass die Frequenz zwar gemessen wird, aber der Startpunkt ziemlich willkürlich wirkt. Bei der analogen Erfassung beziehe ich mich ja auf die TimeBase vom analogen Ausgang. Jedoch steht mir diese Funktion bei "Implizit" nicht offen. Kann man hier vielleicht trotzdem über einen Eigenschaftsknoten sich auf eine Referenz beziehen?
Bei den analogen Eingängen bilde ich den Mittelwert über die Plateaus bzw. Rampen. Ich hab das jetzt bei der Frequenz gleich gemacht, jedoch bin ich hier stark zeitlich limitiert. Je länger ich messe, desto genau wird meine Frequenz. Bei einer Sekunde Messzeit messe ich in den Hertz-Bereich.Bei vielen Datenpunkten dauert die Messung natürlich aber sehr lange wenn ich nicht gleich eine Fehlermeldung bekomme, dass noch nicht alle Messwerte eingegangen sind.
Ich freue mich schon auf konstruktive Vorschläge.
Lg, Daniel