DAQmx Fehler -200279, von Puffern und schritthaltenden Erfassungen
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!
23.02.2021, 13:05 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2021 13:06 von stoa.)
DAQmx Fehler -200279, von Puffern und schritthaltenden Erfassungen
Hallo liebes LabVIEWForum,
heute habe ich mir ein wenig Zeit genommen, mich etwas mit den Puffern der DAQmx-Treiber zu beschäftigen. Dazu habe ich mir das Beispiel-VI zur kontinuierlichen Spannungserfassung geschnappt, Puffergrößen manuell geschrieben und gelesen und in der Schleife, in der ausgelesen wird, ein Element zur Verzögerung eingesetzt um den Treiber ein bisschen zu piksen.
Mein Grundverständnis ist aktuell folgendes: Die wichtigste Größe bezüglich des Kanals ist die "Abtastrate", hier im Beispiel-VI "Sample-Rate" genannt.
Dann gibt es auf der Oberfläche des Beispiel-VIs noch "Sample-Anzahl", das "DAQmx - Timing"-VI nennt es "Samples pro Kanal" und das bestimmt, wie viele Datenpunkte die Schleife pro Durchlauf entnimmt. Daraus lassen sich dann auch mit "Abtastrate" / "Samples pro Kanal" = "Auslesungen pro Sekunde" ableiten. Zumindest nach meinem Verständnis.
Wähle ich also 100000 S/s (Samples pro Sekunde) als Abtastrate und 100000 S als Sample-Anzahl ergibt sich für mich eine Auslesung pro Sekunde.
Das funktioniert auch. Soweit so gut; wer hätte damit gerechnet. Der DAQmx Treiber verwendet in diesem Fall automatisch die "Samples pro Kanal" als Puffergröße; macht ja auch Sinn; das Programm wartet, bis der Puffer voll ist und entnimmt dann die Daten.
Wenn ich jetzt den Puffer über die Eigenschaftsknoten auf 110000 S einstelle, funktioniert die Datenerfassung immernoch. Auch soweit so klar. Stelle ich den Puffer auf 10 S ein, gibt es einen -200279 und das ist nachvollziehbar. Stelle ich aber 50000 S, läuft das VI wunderbar... und das ist der Punkt, den ich nicht verstehe. Wenn "DAQmx - Lesen" auf 100000 S wartet... das muss doch sofort einen Fehler geben. Warum funktioniert das?
Bei einem anderen Experiment verzögere ich die Schleife solange, bis der "DAQmx - Lesen" nicht mehr rechtzeitig zum Auslesen aufgerufen wird. Mein Rechner kommt beispielsweise mit einer Verzögerung von 0,998 s noch gut zurecht. Bei 0,999 s halt irgendwann nicht mehr. Erhöht man den Puffer auf 200000 S, läuft das VI mit 0,999 s Verzögerung noch eine muntere Viertelstunde und das ist auch nachvollziehbar.
Nun, warum ich das mache? Meine Programme erfassen Daten teilweise über Tage problemlos. Der Rechner sperrt sich nach einer Weile und dann kommt es vor, dass ich mich anmelde und vor einem -200279 stehe, was sehr frustrierend ist. Im Log stelle ich dann fest, dass tatsächlich das Entsperren des Rechners es zum Fehler hat kommen lassen. Bis dahin lief alles fehlerfrei. Ein solcher Fehler ließe sich vermutlich schon mit dem Erhöhen des Puffers verhältnismäßig gut abfangen. Wie macht ihr das? Ist euch das Verhalten schoneinmal aufgefallen? Und was verstehe ich im Puffer-konzept nicht, dass ich mich wundere, dass die Datenerfassung mit halbem Puffer läuft?