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!
24.10.2011, 08:40 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2011 08:42 von beginner85.)
ich erzeuge 2 Signalverläufe (jeweils ein Sinus) mit unterschiedlichen Frequenze und unterschiedliche Signallänge. Diese möchte ich analog und zeitgleich auf meiner DAQ-USB-6363 ausgeben.
Da dies leider nicht möglich ist, weil mein Gerät nur eine Clock hat, muss die Samplerate und Anzahl der Samples identisch sein.
Um beide Signalverläufe auf eine identische Länge zu bekommen, messe ich die Dauer beider Signale und bilde die Differenz und erzeuge und hänge eine Signalform (bestehend nur aus Nullen) an das Signal der kürzeren Dauer.
Im Anschluss taste ich beide Signale erneut ab. Ich nehme kleinere das Abtastintervall der Signalverläufe.
Um die Signal auszugeben, verwende ich die Standard DAQmx Visa's. Beim Timing muss ich verschiedene Parameter angeben, wie Samples/Kanal und Sample-rate.
Die Anzahl der Samples berechne ich mir wie folgt. Dauer des Signals/Abtastintervall.
Die Samplerate berechne ich Sollfrequenz mal Anzahl der Samples.
Leider ist die Ausgabefrequenz um ein vielfaches zu Hoch. Ich vermute das es an der Samplesrate liegt, bzw. das ich sie falsch berechne.
Ich hab die Ausgabe erst mal zur Vereinfachung nur auf 1 Signal beschränkt.
Könntest Du der Einfachheit halber, damit das VI läuft, mal die von Dir verwendeten Parameter-Werte für Wave1 und Wave2 posten? Noch besser wäre natürlich, wenn Du das VI editierst und diese Parameter als Standardwerte im VI selbst drin hättest.
Habe mirs kurz angesehen.
Bei den Waveforms ist dt=0.002; die Rate 1/dt wäre dann 500. Du gibst aber aus unerfindlichen Gründen auf das DAQmx Timing ein Rate von 2000. Nimm doch für das Timing-VI einfach den Typ "Signalverlauf verwenden" und schließe dort die Waveform an.
Hi,
hab das Problem jetzt mehr oder weniger gelöst. Eine Sache ist mir noch aufgefallen.
Es gibt die Funktion "Signalverlaufsdauer". Diese scheint allerdings nicht richtig zu rechnen. Habe ich 5 Perioden einer Sinusschwingung mit einer Frequenz von 50 Herz, so ist die gesamte Signaldauer t=0,1 Sekunden. Nutze ich diese Funktion, so wird mir allerdings ein Wert von 0,098 angezeigt.
Gibt es eine Einstellung die mir den korrekten Wert ausgibt?
Zitat:so ist die gesamte Signaldauer t=0,1 Sekunden. Nutze ich diese Funktion, so wird mir allerdings ein Wert von 0,098 angezeigt.
Um auf eine Zeitdauer von 0,1s zu kommen, müsstest du schon den ersten Wert der 6. Schwingung mit ausgeben...
Erläuterung:
Eine volle Schwingung dauert (bei 50Hz) 20ms. Durch die Quantisierung sowohl in Zeit als auch Amplitude hat dein Signalverlauf für eine volle Schwingung seinen ersten Wert bei t=0 ms und den letzten bei t=19,x ms! Der Wert bei 20ms gehört dann schon zur nächsten Schwingung...
mittlerweile habe ich mein Programm erweitert. Ich gebe auf 3 verschiedenen Kanälen unterschiedliche Signalverläufe aus.
Je nachdem welche Parameter ich verwende entsteht ein Fehler.
Schaue ich mir die Anzahl der Elemente die in dem Signalverläufe enthalten sind, so fehlt exakt ein Element in dem Signalverlauf, dem nix angehangen wird.
Ändere ich die Anzahl der Schwingungen von 70 auf 65 bei Wave 1 so funktioniert wieder alles und die Anzahl der Element stimmen überein. Ich hab schon überlegt, ob es an der Anzahl der For-Schleifendurchläufe liegt ob ich da auf und ab Runden muss. Komischerweise stimmen die Anzahl der Elemente nicht überein und es hängt von der Anzahl der Perioden ab, mal geht es und mal nicht. Bin bisher leider noch auf keine Lösung gekommen.
Der Fehler scheint bei einer erneuten Abtastung zu liegen. Taste ich das selbe Signal erneut mit gleichem dt ab, so erhalte ich einen Stützpunkt mehr und damit ist die ausgabe nicht mehr möglich.