01.12.2010, 17:29
Beitrag #1
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
DAQ error 200279 (wieder Mal)
Ich versuche (zur Zeit nur simuliert) über ein USB-9234 3 Spannungen auszulesen. Was ich eigentlich brauche, ist, nur 2 Mal pro Sekunde den aktuellen Spannungswert zu lesen. Ich habe dazu in MAX einen Task erstellt, mit den Einstellungen "kontinuierlich", "1 Sample", "2 Hz". Im Programm lese ich (ebenfalls alle 0,5 Sek.) mit "DAQmX Read" "Analog 2D DBL NChan NSamp" aus. Von diesem 2D-Array nehme ich die letzte Spalte, da ich nur die neusten Werte brauche den Rest nicht (da die beiden Raten aber zumindest theoretisch synchron sind, sollte da sowieso nie mehr als ein Wert drin stehen).
Nach meinem Verständnis sollte bei dieser Leseart der Puffer immer automatisch geleert werden (ich habe den Sample-Eingang der Read-Funktion offen gelassen). Trotzdem bekomme ich nach unterschiedlichen Zeiten den Fehler 200279.
Was muss ich da anders einstellen? Wie gesagt, ich brauche eigentlich nur einen möglichst aktuellen Wert, zu dem Zeitpunkt wo ich Abfrage. Was davor war ist egal. Am liebsten wäre mir einfach mit der Rate zu samplen, was die Hardware hergibt, wobei die aber nur den letzten Wert zu speichern braucht.
|
|
|
01.12.2010, 22:17
Beitrag #2
|
Matze
LVF-Team
Beiträge: 1.027
Registriert seit: Apr 2010
20xx
2010
DE_EN
7xxxx
Deutschland
|
DAQ error 200279 (wieder Mal)
Hallo,
ganz kann ich nicht nachvollziehen, was du da zusammengebaut hast. Ein Screenshot wäre viel sinnvoller.
Normalerweise sollte es reichen, wenn du "Analog 2D DBL NChan 1Samp" wählst, da du ja immer nur einen Messwert auslesen möchtest (bei 2 Hz geht das auch problemlos). Denke daran, dass du in deiner Erfassungsschleife keine manuelle Zeitverzögerung wie "Warten (ms)" einbaust. Das übernimmt der DAQmx-Treiber für dich.
Sonst führt es mit großer Wahrscheinlichkeit dazu, dass du die Messwerte zu langsam ausliest.
Ein anderes Problem könnte sein, dass du z.B. eine ungebremste parallele Schleife laufen hast, die die CPU so sehr auslastet, dass keine Ressourcen mehr für die Erfassung zur Verfügung stehen.
Ich glaube nicht, dass es an deinen DAQmx-Einstellungen liegt, sondern am Code drum herum, da die Erfassung zu langsam abläuft.
Ohne weitere Infos ist das eine Raterei.
|
|
|
03.12.2010, 14:47
Beitrag #3
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
DAQ error 200279 (wieder Mal)
Ob's Sinn hat das ganze hier reinzustellen weiß ich nicht, da ein einziges Bild längst nicht ausreicht und das ganze Projekt schon über 60 Datein hat. Da wird sich keiner einlesen wollen.
Zur Zeit ist es so, dass ich in einer Schleife Events behandle und dann entsprechende "Kommandos" per Queue an eine andere Schleife sende, die sie verarbeitet. Neben den normalen UI-Events wird auch 2 mal pro Sekunde ein "lies Daten" an die andere Schleife gesendet, was dann die Hardware ausliest. Ungebremst ist nichts. Die eine Schleife wartet an der Queue, die andere auf Events (unter anderem ein 5ms-Timeout, um zu prüfen, ob mehr als 0,5 Sekunden seit der letzten HW-Abfrage vergangen sind). Groß gerechnet wird nirgends. Prozessorlast ist, wenn überhaupt, im unteren einstelligen %-Bereich.
Gibt's keine Möglichkeit, die Hardware einfach messen zu lassen, sodass der Puffer laufend überschrieben wird ohne eine Fehlermeldung zu erzeugen? Das wäre das einfachste.
Die beste Möglichkeit wäre also eine dritte Schleife zu machen, die einfach die Abfrage macht (und rein mit der Abtastfrequenz des Tasks arbeitet)? Das Problem ist, dass das jetzt gar nicht in mein Design passt, da die Initialisierung der Tasks usw. in einer State-Machine in der Consumer-Schleife passiert.
|
|
|
03.12.2010, 14:58
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
DAQ error 200279 (wieder Mal)
Wie wäre es, da genauer Takt/Zeitpunkt sowieso nicht wichtig ist, einfach ohne Hardware-Takt mit 1 Sample on Demand auszulesen?
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
30.12.2010, 19:06
Beitrag #5
|
Lupin
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2010
2012
2008
EN
1234
Oesterreich
|
DAQ error 200279 (wieder Mal)
So, nachdem ich jetzt einige Zeit keine Zeit hatte, daran weiter zu arbeiten, setzte ich mich über die Feiertage wieder dran. Ich werde wohl tatsächlich versuchen das Programm umzubauen und die Abfragen in einer frei laufenden Schleife zu machen. Muss mir überlegen wie ich die Tasks initialisiere (passiert an anderer Stelle) und erst dann die Schleife starten lasse.
Aber was ganz anderes: es kommen jetzt noch 2 USB-9213 (Temperatur-Messung) dazu. In MAX habe ich alle auf kontinuierlich, 2 Hz gestellt. Aber wie bringe ich nun die 3 Tasks dazu, zur gleichen Zeit zu sampeln?
|
|
|
| |