LabVIEWForum.de - DAQmx - Analog Output - Dynamische Anpassung des Signals

LabVIEWForum.de

Normale Version: DAQmx - Analog Output - Dynamische Anpassung des Signals
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hej,

ich muss mit dem Analogausgangsmodul NI 9263 (+-10V) ein Signal (Sägezahn) erzeugen. Das Signal erzeuge ich in einem SubVI und schreibe es mit dem "DAQmx write.vi". Über ein extern angeschlossenes Oszilloskop überprüfe ich das ausgegebene Signal. Dies funktioniert auch soweit. Das Signal soll aber veränderlich sein. Und hier liegt das Problem. Ich habe schon einige in Foren darüber gelesen und mein VI dementsprechend angepasst, leider ohne Erfolg. Das VI hat sich schon einige Male geändert. Zwischendurch hat es sogar mal funktioniert, die Änderungen kamen aber auch dann erst mit einer Verzögerung von guten 15 Sekunden an. Durch Erhöhung der Samplerate des Timing.vi konnte die Verzögerung etwas reduziert werden, die Signalform änderte sich dadurch aber.
Ich brauche ein VI, welches den veränderten Signalverlauf möglichst ohne Verzögerung ausgeben kann. Im Diagramm im VI ist die Änderung am Signal sofort erkennbar, das Spannungsmodul gibt diesen neuen Verlauf jedoch nicht aus. Wo ist das Problem? Ich hoffe ihr könnt mir ein paar entscheidende Tipps geben. Danke schonmal.

Schöne Grüße
Phil
Hallo Philbo,

Zitat:Ich brauche ein VI, welches den veränderten Signalverlauf möglichst ohne Verzögerung ausgeben kann. Im Diagramm im VI ist die Änderung am Signal sofort erkennbar, das Spannungsmodul gibt diesen neuen Verlauf jedoch nicht aus. Wo ist das Problem? Ich hoffe ihr könnt mir ein paar entscheidende Tipps geben.
Leider sieht man nicht, was in deiner Waveform so drin steht…
Du gibst eine Samplerate beim AO vor und dann soll er eine Waveform ausgeben, die wahrscheinlich für eine ganz andere Samplerate ausgelegt ist (d.h. das dt der Waveform ist anders). Dass dann die Zeiten nicht mehr übereinstimmen, sollte klar sein!
Danke für deine Rückmeldung.
Die Waveform ist doch im Diagramm zu sehen. Sie besteht aus 450 Samples mit einer Samplerate von 3000. Im DAQmx -Timing.vi gebe ich die Daten ebenfalls mit einer Samplerate von 3000 aus. Das kommt auch hin. Auf dem Oszilloskop hat das Signal (der Zahn ohne die Null-Linie) eine Dauer von 20 ms. So soll es sein.
Hallo Philbo,

Zitat:Die Waveform ist doch im Diagramm zu sehen. Sie besteht aus 450 Samples mit einer Samplerate von 3000. Im DAQmx -Timing.vi gebe ich die Daten ebenfalls mit einer Samplerate von 3000 aus. Das kommt auch hin.
Du erzeugst also eine Waveform für einen Zeitraum von 450/3000= 150ms.

Zitat:Auf dem Oszilloskop hat das Signal (der Zahn ohne die Null-Linie) eine Dauer von 20 ms. So soll es sein.
Ausgegeben wird deine Waveform aber in 20ms!? Und das soll so sein?

Kannst du deine VIs mal in LV2011 anhängen?
Hallo GerdW,

Nur der Sägezahn hat 20ms. Die gesamte Waveform (Sägezahn + die Nulllinien --> die Nullinien dienen als Pause zwischen den Schocks) hat 150ms, richtig. Ich bin grad nicht mehr auf Arbeit und kann das deshalb nicht als 2011er Version speichern. Geht erst Montag wieder. Ärgerlich.
Hallo GerdW,

ich hoffe du hattest ein angenehmes Wochenende. Hier nochmal wie gewünscht das Programm in der 2011er Version. Ich hoffe du kannst mir hierbei weiterhelfen.
Hallo Philbo,

nur, weil du ein "_2011" an den Dateinamen anhängst, wird das VI nocht zu LV2011 konvertiert. Das Forum sagt ganz deutlich: deine VIs sind immer noch in LV2013 gespeichert…
Oh Sorry. Hatte mich schon gewundert. Habe jetzt das Gleiche nochmal gemacht und nun hat er es richtig gespeichert.
Ich hatte auch bereits in Foren nach Programmen gesucht, die den Signalverlauf eines Analog Output während der Ausführung ändern können (halt ein normaler Funktionsgenerator).

Bin dabei auf folgendes Programm gestoßen, welches sich anmaßt dies zu können.
(https://decibel.ni.com/content/docs/DOC-10821)

Leider auch hiermit keinen Erfolg. Ändere ich bspw. das Signal von Sinus auf Sägezahn, dann passiert nichts. Erst nach über 3 Min. erscheint die Änderung auf dem Oszilloskop. Ich brauche aber eine sofortige Reaktion auf die Änderung.
Hallo Philbo,

das Problem liegt darin, wie du die Waveform im subVI erstellst: du gibst ihr zwar die Y-Werte mit, stellst dann aber kein passendes dt ein! Damit erstellst du eine Waveform mit einem dt=1s, was nun überhaupt nichts mehr mit deiner Samplerate von 3000Hz zu tun hat…

Ich habe mal dein subVI "aufgeräumt": ohne lokale Variablen, mehr Polymorphismus, BuildArray statt InsertIntoArray, Funktionen wie "+1"/"-1"/"-x", ohne unnötige InitArray. Man könnte natürlich auch Funktionen aus der Signalerzeugungspalette (wie z.B. Ramp) verwenden statt selbst FOR-Loops zu erstellen…
Hallo GerdW,

danke für das Optimieren meines SubVIs. Leider ist das nicht die Lösung des Problems. Es arbeitet genauso wie vorher. Ändere ich den Signalverlauf (während das Programm läuft!) so wird die Änderung nicht von dem Modul ausgegeben. Es behält wohl immer noch die Werte im Puffer und gibt diese permanent aus, obwohl ich den Puffer überschreibe. Mit dem Property Node "RelativZu" auf "Erstes Sample" und den "Offset" auf "0" gesetzt...
Ich verstehe das nicht.
Seiten: 1 2
Referenz-URLs