INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Leeres Array beim Parallelen lesen von mehreren Modulen



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!

08.05.2014, 15:39 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2014 15:42 von Dominik_M.)
Beitrag #1

Dominik_M Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2014

2011
2010
EN



Leeres Array beim Parallelen lesen von mehreren Modulen
Hallo Zusammen,

ich habe ein Problem beim lesen der Daten aus einem cDAQ-9178.

Folgende Hardware ist im Messystem verbaut:

NI 9205 (AI)
NI 9227 (3x) (AI)
NI 9426 (DI)
NI 9477 (DO)
NI 9217 (AI)

Die Messdaten frage ich in einem Zyklus von 60 ms ab.Einstellungen bzgl. der Tasks befinden sich im Anhang.

Mein Problem ist, dass ich in Unregelmässigen Abständen als Ergebnis der gemittelten Werte ein NaN erhalte.

Ich verstehe nicht, woher dieser "Fehler" stammt, vermute aber, dass es mit meinen Einstellungen im Timing zusammen hängt.

Hat jmd eine Idee?

LG

Dominik

Entschuldigung ich habe vergessen mich vorzustellen 2hands

Hi ich bin der Dominik und programmiere (eher nebenbei, leider) seit 2011 mit Labview.
Nach dem Labview Core 2 habe ich leider keine Schulungen mehr besuchen können.
Ich benutze Labview hauptsächlich zur Programmierung von Prüfständen.

LG


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  DAQ-Read_MAin.vi (Größe: 27,68 KB / Downloads: 144)

11.0 .vi  FGVSpeicher_Array.vi (Größe: 19,11 KB / Downloads: 159)

11.0 .vi  Mittelwert_Wfm.vi (Größe: 24,82 KB / Downloads: 144)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.05.2014, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2014 16:11 von GerdW.)
Beitrag #2

GerdW Online
______________
LVF-Team

Beiträge: 17.419
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Hallo Dominik,

Zitat:Die Messdaten frage ich in einem Zyklus von 60 ms ab.Einstellungen bzgl. der Tasks befinden sich im Anhang.
Hier dürfte eine (die?) Ursache des Problems liegen:
- Du hast unterschiedliche Datenraten bei den Tasks definiert, fragst aber überall die gleiche Samplezahl ab. Das bedeutet, dass jeder der drei Tasks unterschiedlich schnell seinen Buffer vollschreibt, den du aber nur ungleichmäßig wieder leerst!
- Eine zusätzliche Wartezeit in einer Schleife, deren Iterationszeit durch DAQmxRead-Funktionen bestimmt wird, ist fast immer tödlich. Sowas macht man nicht!

Probiere mal:
- Wartezeit entfernen.
- Alle DAQmxRead gleich schnell machen! Also entweder gleiche Samplerate und gleiche Sampleanzahl oder weiter unterschiedliche Samplerate und dann aber auch unterschiedliche Sampleanzahlen!

P.S.:
Die Mittelwert-Berechnung gibt dir den Mittelwert, aber kein RMS aus!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2014, 22:57 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2014 23:09 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Es gäbe noch eine andere Möglichkeit, das VI zu "retten", d.h. im Wesentlichen so zu lassen wie es ist. Wie von Gerd schon gesagt, passen das Wait und das Lesen einer bestimmten Anzahl von Werten nicht so recht zusammen - schon gar nicht bei unterschiedlichen Raten.
Lösung: Kontinuierlicher Modus, das Wait so lassen, aber die Anzahl der zu Lesenden Sampels bei allen Tasks auf "-1" setzen. Dann werden auf allen Kanälen bei jedem Schleifendurchlauf so viel Samples gelesen, wie im Puffer sind, und es gibt keine Synchronisations- oder Pufferüberlauf-Probleme. Man muß sich dann allerings damit abfinden, dass die Anzahl der gelesenen Samples bei jedem Durchlauf etwas variieren kann. Die Raten der einzelnen Tasks können aber mit dieser Methode ganz unterschiedlich sein.
Edit: Sehe gerade, Du hast ja gar kein Schleife im Programm, es ist offenbar auf endliche Samplezahl konfiguriert. In dem Fall: Wait ist sinnlos, verlängert evtl. unnötig die Ausführung, richtet aber keinen Schaden an. Damit aber alle Samples gelesen werden, sollte ebenfalls die Anzahl auf "-1" gestellt werden - siehe Hilfe zu DAQmxRead.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2014, 07:24
Beitrag #4

Dominik_M Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2014

2011
2010
EN



RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Hallo,

erstmal vielen dank für die antworten. Dazu habe ich aber nochmal eine Frage.

Wenn ich die Samplerate und die Sampleanzahl gleich haben möchte, muss ich dann auf die im Task festgelegte Anzahl der Kanäle (oder auch Messkarten) achten? Oder Definiere ich ich einfach im MAX eine Samplerate und entsprechend im DAQmx die gleiche Sampleanzahl?

LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2014, 07:40
Beitrag #5

GerdW Online
______________
LVF-Team

Beiträge: 17.419
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Hallo Dominik,

Zitat:Wenn ich die Samplerate und die Sampleanzahl gleich haben möchte, muss ich dann auf die im Task festgelegte Anzahl der Kanäle (oder auch Messkarten) achten? Oder Definiere ich ich einfach im MAX eine Samplerate und entsprechend im DAQmx die gleiche Sampleanzahl?
Einfach Samplerate und Sampleanzahl definieren - und fertig…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2014, 07:44
Beitrag #6

Dominik_M Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Apr 2014

2011
2010
EN



RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Hab noch eine Frage 2hands Wie erhalte ich dann ich eine "für den Benutzer schnelle" Frequenz der Messwerte.

Hat vll jmd einen rechnerischen Lösungsansatz. Oder einen Link wo so eine Problematik Beschrieben ist?

LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.05.2014, 08:00
Beitrag #7

GerdW Online
______________
LVF-Team

Beiträge: 17.419
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Leeres Array beim Parallelen lesen von mehreren Modulen
Hallo Dominik,

der üblicher Ratschlag lautet: Sampleanzahl sollte ca. 1/10 der Samplerate betragen. Dann erhält man Messwerte im 100ms-Takt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Automatische Erkennung von cDAQ Modulen zt300 4 4.947 09.01.2018 07:38
Letzter Beitrag: zt300
  Signale von parallelen Schleifen Austauschen xrzr 10 6.162 27.04.2014 09:27
Letzter Beitrag: GerdW
  Fehler -200429 beim schreiben / lesen M@rRy 12 9.521 08.09.2011 09:59
Letzter Beitrag: GerdW
  Bei 2 parallelen Schleifen Daten übergeben newlabviewer1 20 21.207 03.03.2011 10:40
Letzter Beitrag: Lucki
  Synchronisieren von 2 USB-6212 DAQ Modulen Mickey87 1 4.552 02.03.2011 10:42
Letzter Beitrag: Mickey87
  X-Y Werte aus 1D Array von Signalverlauf lesen 4037 2 5.595 30.11.2010 10:40
Letzter Beitrag: 4037

Gehe zu: