Hallo zusammen,
Ich habe ein VI erstellt mit dem ich verschiedene Arten von Signalen über eine Messwerterfassungskarte + NI-DAQmx auf ein Oszilloskop darstellen möchte. Leider wurde mir sehr häufig die Fehlermeldung angezeigt, dass die Buffer Size zu niedrig ist und deswegen habe ich das Configure Output Buffer VI hinzugefügt. Nun habe ich in einem Video gesehen, dass man auch einfach die Einstellung der Samples pro Channel mit dem Timing VI verbinden kann und einen Puffer dort einstellen kann. Kann mir einer den Zusammenhang der Buffer Size und Samples per Channel erklären?
Und gibt es eine Formel wie man den Buffer am besten einstellt. Wenn ich z.B. für mein DAQmx Write VI 116900 Samples generiere, welche Einstellung muss ich dann für den Buffer machen?
Vielen Dank.
Hallo mriworld,
für Analog Input ist das sehr ausführlich beschrieben. Für Analog Output nicht so sehr, aber da ist es auch ziemlich einfach. Wenn du exakt n Samples ausgeben willst und nur einen Schreibvorgang hast, dann ist eine Puffergröße von n Samples ausreichend. Wisst du kontinuierlich ausgeben oder deine feste Sample Anzahl in mehreren kleineren Teilen der größe m schreiben, dann muss der Puffer so groß sein, dass es beim schreiben der Puffer immer groß genug ist um die nächsten m Samples aufzunehmen. Wie viel das ist hängt von deinem Programm ab. Du könntest beispielsweise warten, bis etwa 1/3 des Puffers frei ist und dann die nächsten m Samples schreiben. Dann muss dein Puffer mind. 3 mal m groß sein. wenn du nur eine mehr oder weniger konstante Zeit wartest bis du die nächsten m Samples schreibst, dann muss der Puffer so groß sein, dass da immer die nächsten m Samples rein passen.
Hallo Martin,
danke für deine Antwort. Wenn ich jetzt 6.000000 Samples pro Kanal schreibe und den Buffer 3*m groß machen will, muss ich meine Buffer Size dann auf 18.000000 festlegen? oder auf 72.000000, da ich ja 4 Kanäle habe mit jeweils 6.000000 Samples?
Und was hat die Sample Rate dann für einen Einfluss? Diese kann ich nicht höher als 1 MS/s setzen, da das die maximale Ausgaberate für mein Messwerkarte (DAQ Device) ist.
Vielen Dank im Voraus.
LG
Lea
Um die Anzahl der Kanäle musst du dich für die Einstellung der Puffergröße nicht kümmern.
Was willst du denn machen? Willst du 6 Mio. Samples mit 1MS/s ausgeben und dann ist nach 6 Sekunden Schluss oder willst du kontinuierlich Daten ausgeben und dabei spätestens nach 6 Sekunden die jeweils nächsten 6 Mio Samples an den Treiber übertragen? Ich würde ja kleinere Blöcke wählen als diese 6 Mio und 6 Sekunden, dann das erfordert einen ziemlich großen Pufferspeicher.
Wenn du nur 6 Mio Samples ausgeben willst und dann Schluss ist (Finite Samples) wird es auch noch in einem Block gehen. Dann musst du gar nichts einstellen. Schön ist es allerdings nicht einen so großen Pufferspeicher zu verwenden. Ich würde da kleinere Blöcke bevorzugen und sagen wir mal die Daten für maximal eine Sekunde in einem Block übertragen. Bei 1MS/s lieber bereits früher den nächsten Block schreiben (z.B. dann, wenn nur noch Daten für eine halbe Sekunde vorhanden sind). Dann brauchst du einen Puffer für 1.5Mio. Samples (0,5 Mio für die restliche halbe Sekunde und 1 Mio Samples für den nächsten Datenblock).