DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Express VI "diadem report" und "Messwerte in Datei schreiben"

Hallo Zusammen!
 
Habe ein Problem mit dem Express VI  "Diadem report"  bzw. "Messwerte in Datei schreiben"
 
Mein Express VI befindet sich innerhalb einer While-Schleife, wo auch meine Messdaten (Regler mit Regelstrecke) generiert
werden. Folglich werden die "einzelnen" Abtastwerte der Regelung ständig in eine neue Datei geschrieben (somit erhält man quasi für jede Messung hunderte von Dateien bzw. einzelne Graphen pro abgetasteten Wert).

Habe auch versucht das Express VI ausserhalb der Schleife zu platzieren, was natürlich auch nicht geht, da so nur ein Punkt gespeichert wird (da es ja nur einmal aufgerufen wird).
Wie kann ich nur einen Report bzw. Datei für eine Messung erstellen...was mache ich falsch??

Brauche dringend eure Hilfe  (LabView v8.2)

Gruß Stonei
 
 

 
0 Kudos
Message 1 of 3
(4,389 Views)
Hallo,
wie sie sich sicher denken können, gibt es mehrere Lösungen für die Aufgabe. Ich würde in diesem Fall empfehlen, die Dateiablage innerhalb der While-Schleife zu machen, und den DIAdem report nachher auf Basis der Datei zu erstellen.
Wenn jedoch das Express VI zur Datenablage innerhalb der Schleife genutzt wird (mit der Option: an Datei anhängen) wird für geden Schleifendurchgang eine neue Kanalgruppe generiert, was natürlich hier nicht gewollt ist. Ich schlage vor, sie nutzen die TDM Streaming Bibliothek, weil hier können Sie explizit vorgeben, in welcher Gruppe kanäle generiert werden sollen - somit werden die bestehenden Kanäle mit jedem Schleifendurchlauf einfach verlängert.

Eine alternative Lösung, die ein bisschen einfacher zu implementieren ist, besteht darin, in der Schleife das Array mit den Messdaten kontinuierlich wachsen zu lassen. Das bekommen Sie mit einem schieberegister und der Express Funktion "Append Signals" hin. Nech beenden der Schleife können Sie dann wie in Ihrem VI die gesamten Daten an einen Report schicken und abspeichern. Diese Methode bietet jedoch 2 Nachteile: Erstens werden die Daten nur im RAM aufbewahrt, sollte während der Messung aus irgendwelchen Gründen der Rechner abstürzen, ist alles verloren. Und zweitens bedeutet das Verlängern des Arrays in der Schleife, dass kontinuierlich neuer Speicher allokiert werden muss. Im Hintergrund muss LabVIEW von Zeit zu Zeit größe Datenblöcke im RAM des Rechners verschieben. Das macht sich dadurch bemerkbar, dass das Programm bei längerer Laufzeit immer langsamer wird. Diesen effekt kann man noch beheben, indem man vor der Schleife ein Array allokiert, was groß genug ist um alle Daten aufnehmen zu können - dafür muss man aber wieder wissen, wie lange die Cshleife maximal laufen wird.

Da sie die Daten ohnehin in eier Datei ablegen möchten, würde ich die erste Variante (kontinuierlich in eine TDMS Datei loggen) wählen.
MfG
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 2 of 3
(4,381 Views)

Hallo!

Vielen Dank für die schnelle Antwort!

Bin inzwischen durch einen Forumteilnehmer auf eine Lösung gestoßen:

Die Daten werden jetzt während der While Schleife in einem Array (über Register) gespeichert und nach beenden der Schleife                  an die Express VI's übergeben. Allerdings würde ich gerne den Datenabschnitt, der aufgezeichnet werden soll, selber über boolsche Werte (Start/Stop) festlegen. Wie kann ich das am besten realiseren?

Das Express VI "Messwerte in Datei schreiben" kann übrigens in einer While-Schleife platziert werden, da hier die Möglichkeit besteht in nur einen Header zu schreiben (im Gegensatz zum VI "Diadem Report").

Gruß Stonei

0 Kudos
Message 3 of 3
(4,367 Views)