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!
Ich hoffe ihr könnt mich bei meinem Problem weiterhelfen :-)
Zur Zeit lese ich pro Kanal in jeder Sekunde 100 Messwerte in 100 ms ein und gebe sie danach an zwei Grafen weiter. Nun wiederholt sich dieser Vorgang bis ich den Stop-Button drücke.
Nun hätte ich gern ein Programm, welches mir jede ms 1 Wert einliest , nach 10 Werten den Mittelwert bildet, diese zwischenspeichert und nach einer Sekunde die letzten 100 Mittelwerte grafisch ausgibt. Zudem hätte ich gern das die enthaltenen Punkte auf der Grafik wie beim Oszi nach links geschoben anstatt gelöscht werden.
Bis jetzt bin ich immer davon ausgegangen, dass dies nicht möglich, da nach der grafischen Ausgabe die While-Schleife neu gestartet werden muss und in der Zeit zwischen Ende der Messwertaufnahme, Bildung der grafischen Ausgabe und Neustart der Einlesung keine Werte eingelesen werden können und diese mir dann fehlen.
Lieg ich da richtig, oder gibt es doch eine Möglichkeit das obere Vorhaben zu realisieren?
Ich taste mit einer Frequenz von 1kHz ab und erfasse 100 Messwerte. Dies bedeutet, dass ich innerhalb von 100ms meine Werte habe. Dieser Vorgang wiederholt sich jede Sekunde.
Hoffe nun ists klarer :-)
Grüße und schönn Abend.
Alex
23.07.2009, 08:09 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2009 08:10 von SayAnything.)
Ich hatte vor, mein Problem durch eine Schleife zu lösen in der jede 10ms 10 Werte mit einer Abtastfrequenz von 1 kHz erfasst werden, anschließend der Mittelwert gebildet wird und in einem Array gespeichert wird. In einer zweiten While-Schleife lese ich dann jede 1 Sekunde die Mittelwerte aus dem Array in eine Grafen ein.
Nun habe ich mal untenstehende Laufzeitmesusng gemacht und geschaut ob sich überhaupt alle 10ms neue Werte einlesen lassen. Leider ohne Erfolg, da bei meiner Messung eine Laufzeit von ca. 130ms rauskommt.
Weiß jemand evtl. ob es eine Möglichkeit die Werte schneller einzulesen?
' schrieb:Ich hoffe ihr könnt mich bei meinem Problem weiterhelfen :-)
Ja, aber bevor sich überhaupt weiter zu reden lohnt: Die 4 Konfigurations-VIs (DAQmx create Task bis DAQmx Timing) gehören vor die Schleife, nicht in diese. Machen, neu probieren, dann melde Dich wieder..
' schrieb:Nun habe ich mal untenstehende Laufzeitmesusng gemacht und geschaut ob sich überhaupt alle 10ms neue Werte einlesen lassen. Leider ohne Erfolg, da bei meiner Messung eine Laufzeit von ca. 130ms rauskommt.
Was du hier misst, ist sicher nicht die Zeit, in der 10 Messwerte auf der DAQ-Karte erfasst wurden.
-Dein 2. TickCount-VI ist parallel zu anderen (Express-)VIs. Wann da wirklich Tick Count ausgeführt wird, wer weiss...
-Auch wird das DAQmx-Read-VI sicher einen kleinen Overhead haben, bis dir die 10 Messwerte wirklich aus dem RAM-Puffer übergeben werden.
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!
Ich hab die 4 VIs jetzt mal vor die Sequenz gepackt, die Zeit ändert sich dennoch nicht.
@Jens: Ist es aber nicht die Zeit die mindestens vergeht bis ich die Werte zur Verfügung habe bzw. wenn ich es in einer While-Schleife packen möchte die Dauer eines Schleifendurchgangs?
Da diese Messung ja kontinuierlich stattfinden soll, würden mir ja bei einem Schleifendurchgang schon ca. 120 Messwerte (120 ms) fehlen.
In deinem Test-Bsp liest du doch gar nicht kontinuierlich ein...
Ich habe mal das Bsp-VI "Cont Acq&Graph Voltage-Int Clk.vi" aus dem NI-Examplefinder modifiziert:
Wenn ich da Samplerate 1kHz und SamplesToRead=10 eingebe, lande ich recht zuverlässlich bei 10ms LoopTime.
Außerdem kann es dir doch relativ egal sein, wann du die Messwerte bei dir im Programm hast, Hauptsache, es läuft stabil auf der Messkarte, und das tut es.
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!