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 

Problem bei Langzeitmessung



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!

26.04.2012, 09:06
Beitrag #1

Tintin Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Mar 2012

6.1
2012
DE



Problem bei Langzeitmessung
Hallo Forum,

mein VI zur Datenerfassung via serieller Schnittstelle macht Probleme:
Die Datenerfassung an sich klappt. Erfasst werden gleichzeitig mehrere Kanäle mit einem Messintervall von 2 s. Für jeden Messkanal werden Arrays u.a. eines für die Messdauer und eines für den Messwert angelegt und in einer Schleife mit Schieberegister fortlaufend gefüllt. Die Arrays werden also fortlaufend größer. Gleichzeitig erfolgt für jeden Kanal die Darstellung der beiden Arrays in einem xy-Graphen. Nach ca. 9 Stunden Messdauer (d.h. pro Kanal ca. 16.000 Messwerte) passiert folgendes: Für Kanal Nr. 1 (immer Kanal 1, unabhängig davon, für welchen Kanal die Messung als erstes gestartet wurde) startet die Messung im Minutentakt neu ohne dass ich den entsprechenden Knopf gedrückt hätte, während die übrigen Kanäle normal weiterlaufen. Zu diesem Zeitpunkt sind noch 1 GB physikalischer Speicher verfügbar. Die CPU-Auslastung nimmt mit steigender Messdauer kontinuierlich zu (ich vermute aufgrund der immer größer werdenden Arrays, die bei jedem Schleifendurchlauf durchgereicht werden?) und erreicht zu diesem Zeitpunkt ca. 66 %.

Was passiert hier? Warum startet ein Kanal ab einer gewissen Messdauer ständig neu? Läuft Labview-intern evtl. irgendwas über? Gibt es da irgendwelche Begrenzungen bzgl. Speicher o.ä.? Wie kann man Abhilfe schaffen?

Das VI ist für die langfristige Datenerfassung gedacht, d.h. die Messung soll u.U. über Wochen laufen. Insofern ist Abhilfe dringend notwendig.

Danke und viele Grüße
Tim
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.04.2012, 09:28 (Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2012 09:30 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem bei Langzeitmessung
Hallo Tim,

erstens: VI anhängen.
zweitens: "Die Arrays werden also fortlaufend größer." klingt nach grob falscher Programmierweise für den geplanten Einsatzzweck "u.U. über Wochen laufen"...
drittens: Es gibt bei NI Tutorials zum Umgang mit großen Datenmengen. Die sind sehr lehrreich...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.04.2012, 15:13
Beitrag #3

Tintin Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Mar 2012

6.1
2012
DE



RE: Problem bei Langzeitmessung
Hallo Gerd,

ich hab das VI jetzt mal auf das wesentliche und nur einen Kanal reduziert (s. Anhang). Ich bin mir sicher, dass man das VI für die vorgesehene Aufgabe wesentlich eleganter gestalten kann - das ist halt jetzt meine bisherige Lösung als LV-Anfänger im Rahmen meiner Möglichkeiten (ist mein erstes LV-Projekt).

Wie lassen sich die erhobenen Messdaten (Masse in Abhängigkeit der Messdauer, Darstellung seit Beginn der Messung) denn ressourcenschonender als über Arrays und einen xy-Graphen darstellen? Insbesondere vor dem Hintergrund, dass die Zeitspanne zwischen zwei Messpunkten leicht variiert (d.h. ein Kurvendiagramm mit festem Deltat wäre wohl - insbesondere bei Langzeitmessungen - nicht empfehlenswert). Ich möchte einfach nur die Daten, die auch fortlaufend in die Datei geschrieben werden, graphisch darstellen. Arrays und ein xy-Graph scheint für eine Langzeitmessung ja nicht die richtige Wahl zu sein.

Ich habe bei NI mal nach Informationen bzgl. großer Datenmengen gesucht, bin bislang aber nicht fündig geworden...

Danke und viele Grüße
Tim


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.04.2012, 11:01
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Problem bei Langzeitmessung
Prinzipiell hast du die korrekte Problemstelle erkannt (Zitat: Diese Arrays werden immer größer ...).
Genau hier musst du ansetzen.
Es ist bei einer Langzeitmessung je nach Messrate einfach nicht machbar, alle Messwerte in einem Graphen anzuzeigen. Irgendwann ist der Speicher des Rechners voll.
Außerdem verbraucht die Anzeige von sehr vielen Messwerten in einem XY-Graphen viel Rechenzeit, das kann schon mal dazu führen, dass der UI-Thread mehr als 1 Sekunde ausgelastet ist, und entsprechend lange steht dann das gesamte Programm.

Die Standard-Lösung lautet "Ringpuffer" oder auch "Ringspeicher". Konkret: Du setzt dir eine Maximalanzahl an Messpunkten, die du im XY-Graphen anzeigen willst, und wenn du an dieser Maximalanzahl angekommen bist, werden zu alte Messwerte verworfen und die Neuesten hinzugenommen.

Alternativ, wenn du wirklich alles anzeigen willst, dann musst du von Anfang an die Anzahl der Messwerte im Speicher reduzieren, indem du z.B. nur jeden 10. oder 100. Messwert anzeigst.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.05.2012, 12:41
Beitrag #5

Tintin Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Mar 2012

6.1
2012
DE



RE: Problem bei Langzeitmessung
Hallo Jens,

vielen Dank für die Hinweise. Da stets der Verlauf der Messwerte seit Messbeginn von Interesse ist, hab ich's jetzt folgendermaßen gelöst:
In Schleife 2 habe ich die besagten Arrays, welche im Fortgang der Messung immer größer wurden, völlig weggelassen, d.h. diese Arrays und die zugehörigen Schieberegister entfernt. Sie dienten ja ohnehin nur der graphischen Anzeige der Messwerte. Stattdessen lade ich nun die Messwerte, welche ja kontinuierlich in eine .txt-Datei geschrieben werden, auf Knopfdruck in Arrays, um sie im xy-Graphen anzuzeigen. Außerdem habe ich eine Funktion integriert, die diese Arrays und damit den xy-Graphen auf Knopfdruck leert. Auf diese Weise kann ich den beanspruchten Speicherbedarf gering halten. Außerdem waren noch einige Queues vorhanden (s. Schleife 1 und 2), die ich nicht sauber konfiguriert bzw. geleert hatte und die deshalb immer größer wurden. Das hab ich jetzt auch noch geändert. Was darüber hinaus noch zu Peaks in der CPU-Auslastung geführt hat, war Microsoft Security Essentials. Nachdem ich LabView und die entsprechenden Dateien von der Prüfung ausgenommen habe, bleibt die CPU-Auslastung konstant gering.

Nochmal danke und viele Grüße
Tim
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
  Langzeitmessung mit Eventstruktur Kotti 1 3.141 17.06.2009 22:00
Letzter Beitrag: jg
  Langzeitmessung LaB_Viewer 1 3.432 05.12.2006 17:10
Letzter Beitrag: Lanos

Gehe zu: