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 

Dieses Thema hat akzeptierte Lösungen:

mDAQ Task als 1D Array?



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!

28.08.2012, 15:10 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2012 15:12 von FelixH.)
Beitrag #1

FelixH Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2012

2012
2012
EN


Deutschland
mDAQ Task als 1D Array?
Hallo liebe LabVIEW Commnity,

ich möchte über ein cDAQ-System (cDAQ 1988 mit NI9214 Modul) mehrere Temperaturen zyklisch Messen. Während der Messung soll zeitgleich ein zeitkritischer Task ablaufen, so dass für die Messung der Temperaturen nur eine begrenzte Zeit zur Verfügung steht (ca. 100ms).
Wenn ich alle Schritte der Datenerfassung über die mDAQ Bausteine ( Create Virtual Channel, Start Task, Read Clear Task) in die Hauptschleife stecke wird die zeit deutlich überschritten, so dass ich mir überlegt habe die Erstellung des Kanals in eine Initialisierungsphase vor der eigentlichen Meßschleife zu stecken. Da ich zyklisch den jeweiligen Meßkanal wechseln will, war mein Plan den zum Meßkanal zugehörigen task in ein Array zu schreiben und mir dann in der Hauptschleife den jeweiligen Task aus dem Array hole. Leider funktioniert das nicht, da der Task scheinbar nicht aus dem Array gelesen wird. Ein Minimalbeispiel habe ich hier angehängt. Hat jemand eine Idee woran das liegen könnte, bzw. geht es überhaupt auf diesem Wege?


Angehängte Datei(en)
9.0 .vi  DAQmx_task_array.vi (Größe: 12 KB / Downloads: 194)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.08.2012, 20:10
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mDAQ Task als 1D Array?
Hallo Felix,

Zitat:Wenn ich alle Schritte der Datenerfassung über die mDAQ Bausteine ( Create Virtual Channel, Start Task, Read Clear Task) in die Hauptschleife stecke wird die zeit deutlich überschritten, so dass ich mir überlegt habe die Erstellung des Kanals in eine Initialisierungsphase vor der eigentlichen Meßschleife zu stecken.
Den ersten Fehler hast du schon selbst erkannt: die Initialisierung gehört nicht in die Messschleife hinein...
PS.: das heißt "DAQmx"...

Zitat:Da ich zyklisch den jeweiligen Meßkanal wechseln will, war mein Plan den zum Meßkanal zugehörigen task in ein Array zu schreiben und mir dann in der Hauptschleife den jeweiligen Task aus dem Array hole.
Hier bist du auf dem Holzweg. Packe lieber alle zu messenden Kanäle in einen Task! Dann bekommst du mit jedem DAQmxRead ein Array mit Werten für alle gemessenen Kanäle...

Schon mal im ExampleFinder nach passenden DAQmx-Beispielen geschaut?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2012, 16:11 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2012 16:12 von FelixH.)
Beitrag #3

FelixH Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2012

2012
2012
EN


Deutschland
RE: mDAQ Task als 1D Array?
Hallo,
erst einmal Vielen Dank für die Antwort! Ich messe zyklisch eine Spannung (über einen einzigen AI-Kanal, welcher über externe Hardware auf den jeweiligen Prüfling umgeschaltet wird) und möchte dazu die jeweilige Temperatur über das jeweilige Thermocouple messen. Das Ganze kann nur in der lastfreien Phase geschehen, so dass die Messung möglichst schnell ablaufen muss. Ich kann mir vorstellen, dass ein Meßtask, der alle Thermocouples abfragt länger dauert als die Abfrage eines einzelnen TCs. Passende Beispiele habe ich dazu nicht gefunden (zu deinem Vorschlag gibt es wahrscheinlich einige aber ich will es aus Lautzeitgründen doch eher mit Einzelmessungen machen). Ich habe das Ganze jetzt so gelöst, dass ich die Tasks direkt im MAX erstelle und dann über ein Task Namen Array mit dem entsprechenden Index auswähle. Zumidest mit simulierter Hardware funktioniert das Einwandfrei, von daher gehe ich davon aus, dass das dann auch mit der echten Hardware funktioniert.

P.S.: mit dem mDAQ war ein Tippfehler, natürlich meine ich DAQmx Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2012, 16:16 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2012 16:19 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mDAQ Task als 1D Array?

Akzeptierte Lösung

Hallo Felix,

- die NI9214 bietet 16 Kanäle bei 1088S/s. 4 Kanäle zu messen sollte also max. ~4ms dauern...

Zitat:ich will es aus Lautzeitgründen doch eher mit Einzelmessungen machen
- gerade aus Laufzeitgründen sind Einzelmessungen der ungünstigste Fall...

Zitat:Ich kann mir vorstellen, dass ein Meßtask, der alle Thermocouples abfragt länger dauert als die Abfrage eines einzelnen TCs.
- man kann parallele Schleifen verwenden für verschiedene Tasks.
- man kann fortlaufend neue Werte (in einer parallelen Schleife) aufnehmen und in der eigentlichen Auswerteroutine immer nur die gerade aktuellen Werte weiterreichen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2012, 16:27
Beitrag #5

FelixH Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2012

2012
2012
EN


Deutschland
RE: mDAQ Task als 1D Array?
(29.08.2012 16:16 )GerdW schrieb:  Hallo Felix,

- die NI9214 bietet 16 Kanäle bei 1088S/s. 4 Kanäle zu messen sollte also max. ~4ms dauern...

Zitat:ich will es aus Lautzeitgründen doch eher mit Einzelmessungen machen
- gerade aus Laufzeitgründen sind Einzelmessungen der ungünstigste Fall...

Ich kann mir vorstellen, dass ein Meßtask, der alle Thermocouples abfragt länger dauert als die Abfrage eines einzelnen TCs.

Hallo,

also wenn ich dich richtig verstehe ist es weniger zeitintensiv in einer separaten Schleife kontinuierlich Meßwerte aufzuzeichnen und bei Bedarf dann den aktuellsten Wert den jeweiligen Kanals in die Hauptschleife zu laden? Ich teste das auf jeden Fall mal, diese Variante ist mir so noch gar nicht in den Sinn gekommen, Vielen Dank dafür. Ist es eigentlich sinnvoll Tasks über den MAX zu erstellen, oder ist es besser das direkt im Programm über die entsprechenden DAQmx Vis zu machen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2012, 19:37
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: mDAQ Task als 1D Array?
Hallo Felix,

Zitat:Ist es eigentlich sinnvoll Tasks über den MAX zu erstellen, oder ist es besser das direkt im Programm über die entsprechenden DAQmx Vis zu machen?
Kommt darauf an...
Ich bevorzuge es, dieses im VI zu erledigen: dort hat man dann programmatisch alle Freiheiten und auch gleich alle Einstellungen "dokumentiert".
Das Einstellen über MAX hat für andere den Vorteil einer KlickiBunti-Oberfläche. Ich sehe hier den Nachteil der separat gehaltenen Einstellungen, die man nicht vergessen darf, wenn man ein Programm auf einen anderen Rechner portiert...

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Create 2 Task, Fehler nach Start Task Martin Heller 1 4.904 09.09.2011 14:26
Letzter Beitrag: illuminus
  Task in ein Array Malte 4 4.215 22.01.2009 14:20
Letzter Beitrag: Malte

Gehe zu: