LabVIEWForum.de
Einlesen von Daten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Einlesen von Daten (/Thread-Einlesen-von-Daten)



Einlesen von Daten - baal - 10.08.2007 17:57

Hallo ich habe folgende Frage,


ich lese einige Signale von einem DAQ aus. Die Signale werden mit einer While Schleife ausgelesen, also praktisch eine Dauermessung....

Konfiguration:[list]
[*]Rate:10.000<>
[*]Samples: 1000<>
[st]Anschließend lese ich die Daten aus:

Number of samples:[list]
[*]12000<>
[st]Der Rechner braucht also ca. 1,2 sec. um ein zyklus durchzuführen.

Anschließend werden ja die Signale verarbeitet - die Verzögerungszeit ist also zu lange.

Wie kann ich den Algorithmus also so optimieren, dass die Daten für das Hauptprogramm bereitstehen und die Verzögerungszeit minimiert wird?

Danke!!!


Einlesen von Daten - Lucki - 11.08.2007 08:47

Sende doch mal das VI, aus Deinem Text werde ich nicht schlau: "..ich lese einige Signale von einem DAQ aus....praktisch eine Dauermessung..". Ist es nur eine Dauermessung oder keine?

Allgemein kann man man nur sagen: die Messwerterfassung erfolgt autark in der Messkarte, die Werte werden in einen Buffer geschrieben. Die Datenerfassung selbst nimmt praktisch überhaupt kein CPU-Zeit in Anspruch, diese steht Dir voll für die Verarbeitung der Daten zu Verfügung. Das Dilemma, das man sowohl Zeit für die Datenerfassung als auch für die Datenverarbeitung haben muß, existiert gar nicht. Beides geschieht parallel.

Damit der Buffer nicht überläuft, ist natürlich Bedingung, daß die Verarbeitung etwas schneller sein muß als die Erfassung. Die Synchronisation in der Schleife erfolgt dadurch, daß DAQmx Read bei jedem Zyklus wartet, bis sich die eingestellte Anzahl von Werten im Buffer angesammelt hat.

Die Formulierung "Der Rechner braucht also ca. 1,2 sec. um ein zyklus durchzuführen" ist falsch. Ja, es muß 1.2 s auf neue Daten im Buffer gewartet werden, aber in dieser Zeit kann sich die CPU voll mit der Verarbeitung der vorangegangenen Daten beschäftigen.


Einlesen von Daten - baal - 12.08.2007 13:24

' schrieb:Sende doch mal das VI, aus Deinem Text werde ich nicht schlau: "..ich lese einige Signale von einem DAQ aus....praktisch eine Dauermessung..". Ist es nur eine Dauermessung oder keine?

Allgemein kann man man nur sagen: die Messwerterfassung erfolgt autark in der Messkarte, die Werte werden in einen Buffer geschrieben. Die Datenerfassung selbst nimmt praktisch überhaupt kein CPU-Zeit in Anspruch, diese steht Dir voll für die Verarbeitung der Daten zu Verfügung. Das Dilemma, das man sowohl Zeit für die Datenerfassung als auch für die Datenverarbeitung haben muß, existiert gar nicht. Beides geschieht parallel.

Damit der Buffer nicht überläuft, ist natürlich Bedingung, daß die Verarbeitung etwas schneller sein muß als die Erfassung. Die Synchronisation in der Schleife erfolgt dadurch, daß DAQmx Read bei jedem Zyklus wartet, bis sich die eingestellte Anzahl von Werten im Buffer angesammelt hat.

Die Formulierung "Der Rechner braucht also ca. 1,2 sec. um ein zyklus durchzuführen" ist falsch. Ja, es muß 1.2 s auf neue Daten im Buffer gewartet werden, aber in dieser Zeit kann sich die CPU voll mit der Verarbeitung der vorangegangenen Daten beschäftigen.


Danke für die Antwort, ich bin jetzt nicht in der Fa., kann deswegen das VI nicht hochladen. Werde es dann morgen tun.
Bezüglich der Zeit, es ist so: im Programm werde die Schritte sequentiell abgearbeitet -

Konfiguration--> Einlesen von 12000 Werten (dauert am längsten (ca. 1,2 sec)) --> Verarbeiten der Daten.
und dann vom Anfang an...

Da ich immer die aktuellen Messergebnisse brauche, kann ich die Werte nicht irgendwo (z.B. Buffer) speichern...
Die Verarbeitung erfolgt sehr schell (msec Bereich) und dann muss man darauf warten bis die 12000 Werte wieder eingelesen werden.

Ich hoffe, cih konnte das Problem einigermaßen verständlich darstellen, danke!