INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"



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!

09.02.2017, 11:14
Beitrag #1

BodenseeBike Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2012

2016
2016
EN


Deutschland
Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo zusammen,

ich habe eine Verständisfrage, wie im angehängten VI die Schleifendauer zustande kommt.

Zur Funktion des VI: Eine Wertetabelle enthält eine Periode eines Testsignals. Dieses soll in einer Endlosschleife auf einen Analogausgang gegeben werden, wobei bei jedem Schleifendurchgang die "Ausgangsfrequenz Testsignal" und die Amplitude geändert werden kann. Das "Arbitrary wave.vi" staucht oder streckt dabei diese Wertetabelle und gibt ein Array mit entsprechender Länge aus. Die Ausgangssignal soll mit 50 kS/s getaktet sein.

Beispiel: Bei gewünschter Ausgangsfrequenz von 60 Hz des Testsignals und 50000 kS/s quetscht das "Arbitrary wave.vi" ja das Testsignal auf 833 samples und schickt sie an DAQmx(Write). Da ja mit "Do not allow regeneration" gearbeitet wird, werden nach meinem Verständnis diese 833 samples abgearbeitet und im nächsten Schleifendurchgang die nächsten 833 abgeholt (Sofern man nicht eine andere gewünschte Ausgangsfrequenz einstellt).
Nun müsste doch die Schleife exakt mit 60 Hz, also 16,6 ms laufen oder? Tut sie aber nicht, wie im angehängten Bild "Log_Schleifendauer.jpg" zu sehen ist. Das schwankt zwischen etwa 16 und 18.

Wie kann das sein? Bei 18 ms müsste doch im Ausgangssignal eine "Lücke" sein oder?
Kann man irgendwie sicherstellen dass die Schleife diese Zeit einhält?
Hintergrund ist, dass ich der Schleife später noch eine Messung hinzufügen möchte. Und diese Messung soll quasi die Reaktion eines Systems auf genau eine Periode des Ausgangssignals aufzeichnen. Wenn nun diese Schleifendauer schwankt habe ich die Befürchtung dass mal zu kurz und mal zu lang messe...

Vielen Dank schon im Voraus für Antworten!

   


Angehängte Datei(en) Thumbnail(s)
   

0.0 .txt  Testsignal_1000_Punkte.txt (Größe: 9,18 KB / Downloads: 237)

14.0 .vi  Arbiträrgenerator.vi (Größe: 50,93 KB / Downloads: 202)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.02.2017, 19:44 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2017 19:45 von BodenseeBike.)
Beitrag #2

BodenseeBike Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2012

2016
2016
EN


Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Schade dass bei der oben genannten Frage noch niemand weiter wusste, ich hoffe es war verständlich erklärt?

Vielleicht kann man es auch so formulieren: Wie kann man eine Schleife aufbauen, die Ihre Durchlaufzeit nach der Länge eines Arrays richtet (Welches als Analogausgang "abgearbeitet" wird) und in diesem Zeitraum mit der gleichen Sample-Rate eine Analogspannung misst?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.02.2017, 07:59 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017 08:00 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo Bike,

Zitat:Wie kann man eine Schleife aufbauen, die Ihre Durchlaufzeit nach der Länge eines Arrays richtet (Welches als Analogausgang "abgearbeitet" wird) und in diesem Zeitraum mit der gleichen Sample-Rate eine Analogspannung misst?
Muss es denn unbedingt nur eine Schleife sein? Warum nicht zwei parallele Schleifen?
Die Samplerate steht doch schon vor der Schleife fest und ändert sich nie!?

P.S.: Bei deinem "Schleifendauer Gauge" kannst du per Rechtsklick einen zusätzlichen numerischen Indicator anzeigen lassen: dann bräuchtest du nicht noch den zweiten Indicator "Schleifendauer Wert"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2017, 15:51
Beitrag #4

BodenseeBike Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2012

2016
2016
EN


Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo GerdW,

(22.02.2017 07:59 )GerdW schrieb:  Muss es denn unbedingt nur eine Schleife sein? Warum nicht zwei parallele Schleifen?
Die Samplerate steht doch schon vor der Schleife fest und ändert sich nie!?

Nein das muss natürlich nicht eine Schleife sein, da bin ich für Vorschläge offen Smile. Ja, die Samplerate soll gleich bleiben.
Inzwischen hoffe ich auch dass ich herausgefunden habe, warum die Schleifendauer variiert. Wenn es nich stimmt bitte korrigieren... Also: Durch das "Do not allow regeneration" holt sich der der DAQmx-Write task immer 1 neues Array mit einer Anzahl XY Samples ab und schreibt diese in den FIFO-Puffer. Dieser arbeitet diese dann nach dem vorgegebenen sample-rate ab. Sprich am hardwaremäßigen Ausgang passt alles. Hier werden die abgeholten Arrays schön aneinandergesetzt (Hat auch das Oszilloskop bestätigt). Lediglich die Schleifendauer, in der der der DAQmx-Write-Task läuft macht Labview etwas unregelmäßig, .

Dadurch ergibt sich nun aber die nächste Frage, wenn ich eine zweite Schleife wie vorgeschlagen programmiere.
In der zweiten Schleife würde dann ein Analogsignal gemessen, das quasi die Antwort auf den Analogausgang darstellt. (Vereinfacht mal angenommen man würde ein Spannungsteiler anschließen wie im Bild)
Nun möchte ich ja diese Anwort analysieren und weiterverarbeiten. Sprich ich möchte im gleichen Zeitraum, in dem eine Periode ausgegeben will auch wieder messen. Nur wie kann man das synchronisieren? Die Schleife zur Messung kann ja dann nicht einfach mit dem Start der ersten Schleife für die Analogausgabe synchronisiert werden, da ihre Dauer und der Startzeitpunkt ja undefiniert sind?

Wie könnte man das lösen?

Viele Grüße

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2017, 16:00
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo Bike,

- wenn AO und AI mit der selben Samplerate arbeiten, solltest du einen festen Versatz zwischen beiden Kanälen haben. Diesen Versatz kannst du durch einen Starttrigger für beide Kanäle minimieren bzw. auf Null setzen.
- jetzt nur noch mitloggen, wieviele Samples du pro Waveform ausgibst und schon kannst du deine AI-Daten entsprechend auswerten…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.02.2017, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2017 10:06 von BodenseeBike.)
Beitrag #6

BodenseeBike Offline
LVF-Grünschnabel
*


Beiträge: 17
Registriert seit: Mar 2012

2016
2016
EN


Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo GerdW

(23.02.2017 16:00 )GerdW schrieb:  - wenn AO und AI mit der selben Samplerate arbeiten, solltest du einen festen Versatz zwischen beiden Kanälen haben. Diesen Versatz kannst du durch einen Starttrigger für beide Kanäle minimieren bzw. auf Null setzen.
- jetzt nur noch mitloggen, wieviele Samples du pro Waveform ausgibst und schon kannst du deine AI-Daten entsprechend auswerten…

vielen Dank für die Tips, das Ganze habe ich nun mal versucht umzusetzen:
-Starttrigger startet beide AI und AO -Task, die beide mit der gleichen Sample-Rate arbeiten
-Erfassungsschleife liest immer genauso viele Samples aus, die der aktuellen Samples pro Waveform des Analogausgangs entspricht
Driften die Schleifen dann nicht doch irgendwann auseinander, da sie ja nur gemeinsam gestartet werden und dann nie mehr synchronisiert werden?

Im angehängten Screeenshot habe ich mal den Ausgang direkt auf den Eingang gelegt. Im Idealfall müsste man ja dann auf dem Signalverlaufsdiagramm, das bei jedem Schleifendurchgang aktualisiert wird exakt das gleiche Signal ohne Phasenversatz sehen.
Dass das nicht geht ist mir klar, da ja der FIFO-Puffer von AO und AI auch noch dazwischen liegt. Im Beispiel ist das ganze einmal bei 45 Hz und 46 Hz Signalfrequenz dargestellt, und die Phasenverschiebung ist völlig unterschiedlich.

Aber wie kann man diese Verzögerung erkennen/messen/eliminieren?
Eventuell ist der Aufbau des Programms doch nicht für diesen Zweck geeignet. Wäre eine andere Möglichkeit, das Ausgabe-Array in einer For-Schleife Sample für Sample abzuarbeiten, dann könnte man diese for-Schleife mit der Messschleife synchronisieren?

Zur Info: Das ganze läuft auf einem PXI8840 mit Real-Time Modul und PXIe6363-Karte.

Viele Grüße


Angehängte Datei(en) Thumbnail(s)
       

14.0 .vi  arbitrary_2_loops.vi (Größe: 54,13 KB / Downloads: 189)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.02.2017, 10:13
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Verständnisfrage zu Schleifendauer bei Modus "Do not allow regeneration"
Hallo Bike,

ich weiß nicht, wie schnell SharedVariablen arbeiten, aber ich würde auf Netzwerkkommunikation zwischen parallelen Schleifen verzichten…

Was passiert, wenn du einfach mit festen Blockgrößen beim AI arbeitest und den Datenstrom hinterher selbst auf den benötigten Bereich zurechtschneidest?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  kontinuierliches Schreiben mit Regeneration Ch.Mueller 2 3.249 21.10.2021 07:07
Letzter Beitrag: Ch.Mueller
  Sample-Modus und Interface Christoph1993 1 3.039 13.11.2019 11:01
Letzter Beitrag: jg
  configure digital output regeneration with 6533 rcatxi2 1 3.660 21.11.2014 15:59
Letzter Beitrag: jg
  A/D Wandler Timing Modus 4037 2 5.015 29.11.2010 16:50
Letzter Beitrag: 4037
  Wie Buffer erhöhen bei DAQ-Ausgabe im Non-Regeneration-Modus? horatius 6 8.123 11.05.2009 02:49
Letzter Beitrag: horatius
  Datenerfassung im FIFO Modus PeterPuter1 1 3.302 08.01.2009 15:17
Letzter Beitrag: Lucki

Gehe zu: