LabVIEWForum.de
DAQ mehrere Signaltypen parallel erfassen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: DAQ mehrere Signaltypen parallel erfassen (/Thread-DAQ-mehrere-Signaltypen-parallel-erfassen)



DAQ mehrere Signaltypen parallel erfassen - serge_franke - 22.01.2018 13:47

Hallo zusammen
Ich kämpfe mal wieder mit der DAQ von verschiedenen Signaltypen. Ich habe ein Projekt mit diversen Sensoren, welche ich permanent auslesen will und dann prozessabhängig speichere und auswerte.
Nun scheitere ich aber bereits an der simultanen Auslesung der Signale.

Zu meiner Hardware:
Verwendetes Chassis: cDAQ-9178
Verwendete Module (siehe auch Anhang)
2 * NI9227 zur Strommessung
1 * NI9213 zur Temperaturmessung mit Thermocouple
2 * NI9361 zur Auswertung von Inkrementalgebern (Counter)
2 * NI9201 zur Messung von Spannungen

Mein Ansatz war nun, dass ich für jeden Messtyp ein eigenes VI erstelle. Ich habe dazu erstmal mit dem DAQmx Assistenen (schande über mich, ich weiss Wink) für jeden Typ eine "Messaufgabe" erstellt.

Ich bekomme dann etwas in der Art +main.vi (siehe Anhang)

Wenn ich nun auf den Startbutton klicke, erhalte ich die Fehlermeldung wie im Anhang gezeigt

Irgendwie habe ich das gefühl, dass ein Konflikt zwischen Temperaturmessung und Counterauwertung besteht. Wenn ich den Counterloop deaktiviere bekomm ich keinen error, ebenso wie wenn ich die Temperaturmessung deaktiviere.

was mache ich falsch oder wie gehe ich vor um verschiedene Messtypen sauber messen zu können?

wäre für eure hilfe sehr dankbar Smile
Gruss
Serge


RE: DAQ mehrere Signaltypen parallel erfassen - GerdW - 22.01.2018 14:06

Hallo Serge,

Zitat:was mache ich falsch
Also auf alle Fälle hast du bei dein Konfig-subVIs, die eine FOR-Loop enthalten, ein Schieberegister für den DAQmx-Task vergessen.
So wie sie momentan aussehen, werden leider mehrere Tasks erzeugt und nur der allerletzte jeweils weiterverwendet…
(THINK DATAFLOW!)

Außerdem könntest du alle Konstanten darin vereinfachen:
- wenn ein Array nur Elemente eines Werts etnhält, kannst du auch eine skalare Konstante verwenden
- wenn du nur Standardwerte vorgibst, kannst du die Konstante auch komplett löschen…

Im MainVI solltest du in den Schleifen auch Wartezeiten vorsehen, entweder durch Vorgabe einer Samplerate oder durch ein explizites Wait().