LabVIEWForum.de
Sensordaten mit Queue verarbeiten? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Sensordaten mit Queue verarbeiten? (/Thread-Sensordaten-mit-Queue-verarbeiten)



Sensordaten mit Queue verarbeiten? - Benjamin Fuchs - 10.09.2007 13:43

Hallo,

in den bisherigen Projekten wird hier im Haus zur Verarbeitung der Sensordaten eine bzw mehre Queues verwendet.
Für jeden Sensor existieren jeweils zwei Queues, die eine zum verarbeiten der Sensordaten im Programm (Max. 100) und eine zum Speichern der Sensordaten in einer Datei (Max 10000) diese wird nur im "Speicher" Modus inizialisiert. Die Sensordaten werden alle "10ms (Vielfaches)" in einer Schleife verarbeitet.

Meine Frage ist nun ob das nicht auch anders geht bzw. ob das überhaupt sinnig ist, denn bei 20 Sensoren existieren 40 Queues und diese könnten sich (meines wissensnach) doch bei langen laufzeiten und zeitproblemen vollaufen?

Gibt es bessere Ansätze zum auslesen, verarbeiten und speichern von Sensordaten?


Sensordaten mit Queue verarbeiten? - Lucki - 10.09.2007 14:54

Du schreibst überhaupt nichts über die Art der Datenerfassung, deshalb kann man hier nichts Verbindliches sagen.
Die Datenerfassung erfolgt ja normalerweise [list=1]
[*] gepuffert. Von daher machen Queues nur dann Sinn bzw. sind unverzichtbar, wenn Datenerzeugung und Datenverbrauch in unterschiedlichen VIs stattfinden sollen.<>
[*] mit gleicher Rate für jeden Kanal (Sensor)<>
[st]Am Ausgang des DAQ-Read-VI hat man, wenn man z.B. 20 Sensoren hat und z.B festlegt, immer 100 Werte auszulesen, bei jedem Auslesen einen 2D - Array mit 100*20 Werten. Diesen Datensatz könnte man doch immer mit einer Queue an das Verarbeitungs-VI übertragen.

Aber wieso brauchst Du eine separate Queue für jeden einzelnen Sensorkanal? Das müsstest Du erst mal erklären.


Sensordaten mit Queue verarbeiten? - Benjamin Fuchs - 11.09.2007 07:09

' schrieb:Du schreibst überhaupt nichts über die Art der Datenerfassung, deshalb kann man hier nichts Verbindliches sagen.
Die Datenerfassung erfolgt ja normalerweise [list=1]
[*] gepuffert. Von daher machen Queues nur dann Sinn bzw. sind unverzichtbar, wenn Datenerzeugung und Datenverbrauch in unterschiedlichen VIs stattfinden sollen.<>
[*] mit gleicher Rate für jeden Kanal (Sensor)<>
[st]Am Ausgang des DAQ-Read-VI hat man, wenn man z.B. 20 Sensoren hat und z.B festlegt, immer 100 Werte auszulesen, bei jedem Auslesen einen 2D - Array mit 100*20 Werten. Diesen Datensatz könnte man doch immer mit einer Queue an das Verarbeitungs-VI übertragen.

Aber wieso brauchst Du eine separate Queue für jeden einzelnen Sensorkanal? Das müsstest Du erst mal erklären.

Also die Datenerfassung kommt Hardwareseitig von einer SCXI 1000 mit zwei Modulen (SCXI 1000 und 1004C). In meiner Anwendung habe ich 18 Spannungssignale und 11 Stromsignale (4-20mA).

Die bisherigen Projekte wurde nicht von mir programmiert, deshalb hinterfrage ich das nun auch. meine Idee war es auch die Sensoren alle in enem Cluster zu speichern und nur eine Queue zu erstellen mit allenw erten, da eigentlich immer alle Werte benötigt werden. Die Frage ist nur machen mehere einzelne Queues sinn oder eine Gesamte? Wie sieht es mit der Speicherinizialisierung aus, kann man die berechnen (maximale Elemente zahl).

Außerdem nachdem immer der letzte Wert interesant ist (außer bei der Speicherung und Anzeige) ist für mich sowieso die Frage, was passiert wenn die Queue schneller voll läuft als ausgelesen wird. Bei einer FIFO hätte ich zwar immer die aktuellen werte, allerdings müsste ich alle alten Werte ignorieren und verwerfen (außer beim speichern und Darstellen).

Deswegen meine Frage gibt es andere Lösungsansätze, z.b. Lokale Variable oder Global mit einem Cluster der Sensorinformationen oder was macht man allgemein wenn man Sensordaten verarbeiten will.

ist die Queue der richtige Weg?

Vielen dank für die Hilfe