LabVIEWForum.de
Cluster in TDMS Datei speichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Cluster in TDMS Datei speichern (/Thread-Cluster-in-TDMS-Datei-speichern)



Cluster in TDMS Datei speichern - Selectah - 25.08.2011 11:50

Hi Leute,

ich bin relativ neu im Umgang mit Labview und zerbreche mir nun schon seit längerer Zeit den Kopf über die Speicherung via TDMS.
Nun zu meinem Problem:

1. Ich möchte das Cluster aufbrechen und die Daten mit neuer Anordnung (Timestamp als erste Spalte, dann die ganzen _0-Werte hintereinander, dann die ganzen _1-Werte hintereinander) in eine TDMS Datei schreiben die ich dann später mit Diadem oder Excel auswerten möchte.
-> Muss ich hierfür erst alle Werte in Strings speichern, um diese dann in einem Stringarray in gewünschter Reihenfolge zu übergeben?

2. Weiterhin soll jeder Kanalname in der TDMS Datei den Namen des einzelnen Elements aus dem Cluster besitzen.

3. Nach Möglichkeit soll der Gruppenname noch das Datum des entsprechenden Tages sein.

Ich wäre euch für Support sehr dankbar. Mir würden schon Hinweise zu den Einzelproblemen sehr weiterhelfen.

Gruß, Selectah


RE: Cluster in TDMS Datei speichern - NWOmason - 25.08.2011 12:29

(25.08.2011 11:50 )Selectah schrieb:  1. Ich möchte das Cluster aufbrechen und die Daten mit neuer Anordnung (Timestamp als erste Spalte, dann die ganzen _0-Werte hintereinander, dann die ganzen _1-Werte hintereinander) in eine TDMS Datei schreiben die ich dann später mit Diadem oder Excel auswerten möchte.
-> Muss ich hierfür erst alle Werte in Strings speichern, um diese dann in einem Stringarray in gewünschter Reihenfolge zu übergeben?

Du kommst mittels 'Unbundle by Name' direkt jedes Element rausholen in der dir gewünschten Reihenfolge.

(25.08.2011 11:50 )Selectah schrieb:  2. Weiterhin soll jeder Kanalname in der TDMS Datei den Namen des einzelnen Elements aus dem Cluster besitzen.

Über eine Referenz des Cluster kommst du an alle Namen der Controls, die der Cluster beinhaltet.

(25.08.2011 11:50 )Selectah schrieb:  3. Nach Möglichkeit soll der Gruppenname noch das Datum des entsprechenden Tages sein.

Einfach ein Datum dem Gruppennamen zuweisen


Hier noch ein kleiner Screen zum Start:

[attachment=35460]


Beste Grüße,
NWO


RE: Cluster in TDMS Datei speichern - Selectah - 25.08.2011 13:47

Tausend Dank für deine Hilfe!!! Das hat mich schon sehr weiter gebracht.
Nur nochmal zu Punkt 1.
Ich kann ja - soweit mir bewusst - nur 1D-Arrays von einem Datentyp verwenden. Dafür muss ich nach dem "Aufschlüsseln nach Name" dann noch alle in einen "String" umwandeln um den gleichen Datentyp zu haben, oder?! Alternativ ist natürlich auch möglich, den Timestamp als DBL zu konvertieren und nachher von Excel wieder umrechnen zu lassen, was ich aber als nicht so komfortabel ansehe.
Oder gibt es eben doch die Möglichkeit, die Datentypen beliebig zu lassen und einfach so in einem Array zu speichern was dann ins TDMS geschrieben werden kann? Steh ich grad irgendwie aufm Schlauch.


RE: Cluster in TDMS Datei speichern - NWOmason - 26.08.2011 12:27

(25.08.2011 13:47 )Selectah schrieb:  Nur nochmal zu Punkt 1.
Ich kann ja - soweit mir bewusst - nur 1D-Arrays von einem Datentyp verwenden.

Gernerell kannst du auch mehrdimensionale Arrays jeden Datentyps - auch von Cluster - verwenden. Inwiefern sollen diese verwendet werden?

(25.08.2011 13:47 )Selectah schrieb:  Dafür muss ich nach dem "Aufschlüsseln nach Name" dann noch alle in einen "String" umwandeln um den gleichen Datentyp zu haben, oder?!

Falls kein Text verwendet wird, kann auch alles in dbl konvertiert werden.

(25.08.2011 13:47 )Selectah schrieb:  Alternativ ist natürlich auch möglich, den Timestamp als DBL zu konvertieren und nachher von Excel wieder umrechnen zu lassen, was ich aber als nicht so komfortabel ansehe.

Müssen die Daten also von LabVIEW gespeichert und dann in Excel ausgewertert werden? Muss es *.tdms sein? Eine weitere Möglichkeit wäre eine *.csv zu erstellen (geht in LV auch ganz einfach).

(25.08.2011 13:47 )Selectah schrieb:  Oder gibt es eben doch die Möglichkeit, die Datentypen beliebig zu lassen und einfach so in einem Array zu speichern was dann ins TDMS geschrieben werden kann? Steh ich grad irgendwie aufm Schlauch.

Dafür gibts auch den Datentyp 'Variant' Smile

Beste Grüße,
NWO


RE: Cluster in TDMS Datei speichern - Selectah - 26.08.2011 13:39

Da ich das mit dem Zitieren noch nicht so ganz raus habe hier meine Antworten:

TDMS ist das gewünschte Format, da die Werte in Diadem und Excel ausgewertet werden sollen.
Beliebig sollen sie sein, damit ich den Timestamp im TDMS bzw. im Excel auch als Zeitformat angezeigt bekomme und nicht in ms vom Zeitpunkt 01.01.1904 an.
Zudem ist das Schreiben in TDMS nach meinem Wissen wesentlich schneller als die Speicherung im csv-Format. Habe mich mit meinem Betreuer zumindest darauf geeinigt.
Habe mein VI mal angehängt. Falls es Probleme beim Öffnen gibt, bitte melden. Nehme an Snip steht für SP1.

Gut möglich, dass es deutlich einfacher geht, meine Ideen umzusetzen. Dafür bin ich aber noch nicht tief genug drin im LabVIEW. Smile

Vielen Dank für deinen Support.


RE: Cluster in TDMS Datei speichern - NWOmason - 27.08.2011 08:37

(26.08.2011 13:39 )Selectah schrieb:  Da ich das mit dem Zitieren noch nicht so ganz raus habe hier meine Antworten:

Einfach bei dem geschrieben Beitrag rechts unten auf 'zitieren' klicken Smile

(26.08.2011 13:39 )Selectah schrieb:  Beliebig sollen sie sein, damit ich den Timestamp im TDMS bzw. im Excel auch als Zeitformat angezeigt bekomme und nicht in ms vom Zeitpunkt 01.01.1904 an.

Ok, dann am besten nach 'String' casten, dann ist der Zeitstempel auch im Zeitformat.


(26.08.2011 13:39 )Selectah schrieb:  Nehme an Snip steht für SP1.

Snip steht für Snippet.



Eine kleine Anmerkung: Die untere For-Schleife lässt sich mittels Autoindexing vereinfachen Smile

[attachment=35495]

Beste Grüße,
NWO






(26.08.2011 13:39 )Selectah schrieb:  TDMS ist das gewünschte Format, da die Werte in Diadem und Excel ausgewertet werden sollen.
Beliebig sollen sie sein, damit ich den Timestamp im TDMS bzw. im Excel auch als Zeitformat angezeigt bekomme und nicht in ms vom Zeitpunkt 01.01.1904 an.
Zudem ist das Schreiben in TDMS nach meinem Wissen wesentlich schneller als die Speicherung im csv-Format. Habe mich mit meinem Betreuer zumindest darauf geeinigt.
Habe mein VI mal angehängt. Falls es Probleme beim Öffnen gibt, bitte melden. Nehme an Snip steht für SP1.

Gut möglich, dass es deutlich einfacher geht, meine Ideen umzusetzen. Dafür bin ich aber noch nicht tief genug drin im LabVIEW. Smile

Vielen Dank für deinen Support.



RE: Cluster in TDMS Datei speichern - rasta - 27.08.2011 09:52

(26.08.2011 13:39 )Selectah schrieb:  Da ich das mit dem Zitieren noch nicht so ganz raus habe hier meine Antworten:

TDMS ist das gewünschte Format, da die Werte in Diadem und Excel ausgewertet werden sollen.
Beliebig sollen sie sein, damit ich den Timestamp im TDMS bzw. im Excel auch als Zeitformat angezeigt bekomme und nicht in ms vom Zeitpunkt 01.01.1904 an.

Vielen Dank für deinen Support.

Ich rate Dir, den Timestamp nicht zu konvertieren. DIAdem rechnet ab dem Jahre 0 somit muss der Double-Wert wieder konvertiert werden und da er dann in der TDMS ebenfalls als Double vorliegt musst Du diesen dann wieder wenn Du die Datei in LV darstellen willst wieder auf 1904 konvertieren.
Abhilfe: Den Timestamp als Timestamp-Array in einen eigenen Zeitkanal zu schreiben.

Im Anhang ein lv10Beispiel wie Du einfach an Deine Kanalnamen, an den Datentyp sowie der Wert kommst, aber
für schnelle Schreibvorgänge nicht gut geeignet, da auf die Cluster-Elemente mittel Property-Nodes zugegriffen wird.

Tip: Mach Dir einen Kanal - Cluster (TypeDef), bestehend aus Kanalname, Datentyp, Wert, Einheit..
Diesen Cluster packst Du in ein Array und hast alles beisammen was Du brauchst.

Gruß
Ralf


RE: Cluster in TDMS Datei speichern - Selectah - 29.08.2011 09:10

@NWO: Besten Dank. Du hast mir sehr geholfen.

@Ralf: Ich verstehe nicht wirklich, was du da gemacht hast. Sad