13.02.2008, 11:44
Beitrag #1
|
stsc
LVF-Gelegenheitsschreiber
Beiträge: 53
Registriert seit: Nov 2007
8.5, 2012, 2016
2002
DE
98693
Deutschland
|
Fehler bei AI mit TimeOut = 0
Hallo,
mein Programm besteht aus einer Mainloop, welche mit ca. 20Hz durchlaufen wird.
Innerhalb dieser werden Analogsignale mit einer kleineren Frequenz eingelesen (5Hz). Um das Signal/Rausch Verhältnis zu verbessern bilde ich den Mittelwert aus 50 Einzelmessungen (Konfiguration: 6 Kanäle single-ended, kontinuierliche Abtastung, rate=50*5=250SpS) und lese entsprechend 50 Werte mit dem DAQ-Lesen aus. Damit das funktioniert und die Hauptschleife nicht durch das DAQ-Lesen ausgebremmst wird, habe ich das TimeOut des DAQ-Lesen auf 0 gesetzt, so dass nur die angegebene Datenmenge gelesen oder ein Fehler ausgegeben wird, falls noch keine 50 Samples durchgeführt wurden. Die Schleife kann sich somit mit einer höheren Frequenz wiederholen. Es werden also bei ca. jedem vierten Schleifendurchlauf analoge Daten ausgelesen, ansonsten gibt die Funktion den Fehler -200284 aus.
Dies funktioniert, jedoch liefert das DAQ-Lesen manchmal nur noch diesen Fehler (-200284) und es können keine Daten mehr gelesen werden. Erst nach einem DAQ-Stop funktioniert dies wieder. Meist tritt der Fehler auf, wenn andere Programme geöffnet wurden, welche zu Beispiel USB-Ressourcen nutzen (ich verwende einen USB-Hub).
Ist dieser Fehler zu beheben oder gibt es eine andere Möglichkeit analoge Daten mit einer festen, aber kleineren Abtastrate innerhalb einer schnellen Schleife auszulesen (evtl. ein DAQ Ereignis oder so)?
Vielen Dank!
s
PS.: ich verwende ein NI-USB6009 mit NI DAQmx8.6 in LabVIEW8.5
|
|
|
13.02.2008, 11:53
Beitrag #2
|
|
|
13.02.2008, 12:23
(Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2008 12:24 von Lucki.)
Beitrag #3
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Fehler bei AI mit TimeOut = 0
Die von Dir verwendete Methode mit timeout=0 im DAQmx read ist mir äußerst suspekt und ich wundere mich sehr, daß es überhaupt teilweise funktioniert.
Du solltest es besser so machen:
Daten in einer eigenen unabhängigen Schleife erfassen und die Daten über Melder (oder queue) an die Haupschleife schicken.
Der Melde-Empfänger in der Hauptschleife kann ja dann timeout=0 haben, so daß dort nicht auf Daten gewartet werden muß.
Fall Du noch nicht mit Meldern gearbeitet hast: Es ist supereinfach!
|
|
|
13.02.2008, 12:29
Beitrag #4
|
stsc
LVF-Gelegenheitsschreiber
Beiträge: 53
Registriert seit: Nov 2007
8.5, 2012, 2016
2002
DE
98693
Deutschland
|
Fehler bei AI mit TimeOut = 0
Hallo Lucki,
gibt es einfache Beispiele für die Methode mit den Meldern?
Vielen Dank!
s
|
|
|
13.02.2008, 12:50
Beitrag #5
|
stsc
LVF-Gelegenheitsschreiber
Beiträge: 53
Registriert seit: Nov 2007
8.5, 2012, 2016
2002
DE
98693
Deutschland
|
Fehler bei AI mit TimeOut = 0
Hallo Roland,
ich habe das 'DAQ Eingangspuffer konfigurieren' versucht mit einer Puffergröße von 5000 und höher. Der Fehler tritt noch immer auf. Vielleicht sollte ich es mit diesen Meldern versuchen.
Dennoch danke für den Tip.
Viele Grüße
s
|
|
|
13.02.2008, 13:05
Beitrag #6
|
stsc
LVF-Gelegenheitsschreiber
Beiträge: 53
Registriert seit: Nov 2007
8.5, 2012, 2016
2002
DE
98693
Deutschland
|
Fehler bei AI mit TimeOut = 0
Hallo Lucki,
die Hauptschleife wird durch ein TimeOut in einem Ereignis Case generiert. Wie kann ich parallel dazu eine langsamere Schleife programmieren? Geht das innerhalb des gleichen Programms?
Vielen Dank und viele Grüße
s
|
|
|
13.02.2008, 14:26
Beitrag #7
|
stsc
LVF-Gelegenheitsschreiber
Beiträge: 53
Registriert seit: Nov 2007
8.5, 2012, 2016
2002
DE
98693
Deutschland
|
Fehler bei AI mit TimeOut = 0
Hallo Lucki,
es funktioniert mit einem Melder und ist tatsächlich gar nicht so schwer. Dass man zwei oder mehr Schleifen parallel laufen lassen kann, wußte ich nicht. Es ist aber sehr hilfreich!
Nochmals vielen Dank!
s
|
|
|
13.02.2008, 16:22
Beitrag #8
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Fehler bei AI mit TimeOut = 0
' schrieb:es funktioniert mit einem Melder und ist tatsächlich gar nicht so schwer.
Freut mich. War jetzt nicht da, konnte Dir nicht eher antworten.
|
|
|
| |