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!
(29.07.2013 12:10 )GerdW schrieb: ich sage nur "THINK DATAFLOW"!
Schleifen laufen nur parallel, wenn es keine Abhängigkeit (direkt per Draht) zwischen ihnen gibt. Und was machst du mit dem STOP-Draht?
Aja, die Grundlagen... Danke für den Hinweis.
So, habe ich entfernt und die Daten sind da. Leider verhält sich das Ding sehr ähnlich wie das Ursprungs-VI: Wenn ich die Sample Rate klein stelle (100 Hz) klappt es noch mit geringer Verzögerung (15ms). Leider muß ich schneller sein, möglichst über 1000 Hz. Dann wir die Verzögerung riesig, einige Sekunden...???
Leider wissen wir auf Grund deiner Screenshots nicht, was für "typische" Werte du bei "Sample Rate" und "Samples to Read" verwendest.
Poste doch mal dein letztes VI inkl. Standardwerten.
Und vergiss nicht, du hast 2x den USB-Flaschenhals dazwischen, 1x beim Auslesen der Daten, dann beim Setzen. Und dann hängt noch Windows dazwischen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
danke für Eure Antworten. Im Anhang habe ich mal beide VI's drin, mit und ohne diesem queue-ing.
(29.07.2013 13:02 )jg schrieb: Leider wissen wir auf Grund deiner Screenshots nicht, was für "typische" Werte du bei "Sample Rate" und "Samples to Read" verwendest.
Poste doch mal dein letztes VI inkl. Standardwerten.
Und vergiss nicht, du hast 2x den USB-Flaschenhals dazwischen, 1x beim Auslesen der Daten, dann beim Setzen. Und dann hängt noch Windows dazwischen.
Gruß, Jens
Zum Thema Geschwindigkeit: Wenn man nur liest oder nur schreibt, dann rennt das Ding wie die S...
Als Funktiongenerator kann ich Signale mit 20kHz schreiben, einlesen kann ich mit 200kS/s... Da sollte es doch möglich sein, lesen und schreiben bei 1kHz zu ermöglichen... Ein kleiner Zeitversatz ist noch akzeptabel, ich sage mal 5-10ms.
Ist aber nur meine Meinung mit meinem bescheidenen Wissen.
Zitat:Da sollte es soch möglich sein, lesen und schreiben bei 1kHz zu ermöglichen... Ein kleiner Zeitversatz ist noch akzeptabel, ich sage mal 5-10ms.
Du hast 1kS/s und 1000 "Samples to read" eingestellt. Das ergibt eine Lesedauer von 1s für DAQmxRead, erst dann bekommst du deine Samples. Die werden dann zum AO geschoben und dort geschrieben (im Producer-Consumer-VI immer noch ohne Timing). Für 5-10ms darfst du höchstens 10 Samples anfordern bei 1kS/s Samplerate...
Bei der Datei 'Ai in and out 2'.vi' ist das doch so (1k und 10 Samples). Ok, bei der anderen Datei habe ich 10k und 1000 Samples stehen, habe aber andere Werte probiert.
Z.B. 1k und 10 Samples gibt bei mir massive Verzögerungen.
Habt Ihr das mal probiert ?
Gruß GEorg
29.07.2013, 15:42 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2013 07:30 von Lucki.)
Das Schreiben in AO soll doch mit möglichst geringer Verzögerung erfolgen, und das verbietet eigentlich jegliche Pufferung. Es wäre also Einzelerfassung jedes Datenpunktes, anschließende Verarbeitung des Wertes und sofort darauffolgende Einzelausgabe angesagt. Das wird aber hier nicht so gemacht und es kommt auch keiner auf die Idee das vorzuschlagen. Der Grund wird sein, dass das nur für geringe Datenraten funktioniert. Das ist im Prinzip auch richtig, nur ist "gering" immer eine relative Aussage. Ich habe es mit meiner alten AMD-Prozessor-Mumie probiert und komme auf eine stabile Rate von mehr als 20 kHz, also eine Größenordnung mehr als was hier verlangt wird. Was spricht also dageben? Nichts.
Da jetzt allerdings die Pufferung fehlt, könnten bei einem Windows-Interrupt Werte verloren gehen bzw. es kommt zur Fehlermeldung mit Stop des Programms. Es ist deshalb eine Pufferung der Daten über ein Queue-Sruktur anzuraten, oder auf gut deutsch: Erzeuger-Verbrauchsr Struktur verwenden.
Hier Beispiel:
langsam scheint mir, als ob das echt am MyDAQ liegt:
Mit dem MyDAQ kann ich dein Programm nicht mit 1000 Hz laufen lassen, deutliche Verzögerungen. Ich habe mal 2 SChleifenzähler eingebaut und siehe da: die obere (Lese-) Schleife läuft deutlich öfter (>Faktor 5) als die Schreib-Schleife. Erst wenn ich bis auf 100 Hz runter bin, funktioniert es.
Ich habe mal testweise ein NI-6009 angeschlossen, da geht es bis 1000 Hz (das ist aber hier die Grenze).
Post Nr. 8. Dieses VI habe ich leicht modifiziert (AI schreibt auf AO). DieDurchlaufzeit für 1000 Iterationen ist 5700 ms. Der NI-6009 macht das in 950 ms.
Vielleicht muß ich mir doch mal Gedanken um andere Hardware machen...