LabVIEWForum.de
Speicherung von Daten via TDMS - 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: Speicherung von Daten via TDMS (/Thread-Speicherung-von-Daten-via-TDMS)



Speicherung von Daten via TDMS - DM_94 - 23.08.2018 09:08

Hallo liebes Forum,

ich bin vernetze gerade einen Prüfstand und hänge gerade an der Speicheurng der Rohdaten meiner Versuche.

Ich habe etwa 12 Channels und diese will ich alle Spaltenweise im TDMS-Format abspeichern. Jedoch werden die Daten während meiner DAQ-Aufnahme nicht Channelweise in ein 2D-Array geschrieben sondern alles in ein 1D-Array.

Nun meine Fragen:

Wie kann ich das oben genannte Problem lösen? (Jeder Kanal eine Spalte)

Wie kann ich die Versuchszeit in das TDMS aufnehmen?

Grüße
DM


RE: Speicherung von Daten via TDMS - GerdW - 23.08.2018 09:16

Hallo DM,

Zitat:Wie kann ich das oben genannte Problem lösen? (Jeder Kanal eine Spalte)
Indem du dich an die Beispiel-VIs im Beispielfinder hälst.
Oder eben deine Kanäle als Spalten (bzw. Zeilen) in einem 2D-Array bereitstellst.

Zitat:Wie kann ich die Versuchszeit in das TDMS aufnehmen?
Indem man mit Waveforms arbeitet.

Du hast einen Fehler in deinem VI. Wir sollen ihn für dich lösen - aber das VI mit dem Fehler zeigst du nicht!?


RE: Speicherung von Daten via TDMS - DM_94 - 29.08.2018 12:53

Hi Leute,

sorry für die späte Beantwortung GerdW.

Ich habe euch mal meine Sub-Vi´s angehängt. Ich hoffe sie können euch mein Problem ein bischen zeigen.

Problem:
Ich lese Daten aus meinem Ni-Chassi ab und bekomme von 46 Channels Daten über eine gewisse Messseit (diese kann wenige Sekunden bis 30 Sekunden gehen) ausgelesen. Jedoch ist das Array ein Array mit mehreren Daten und nur einer Zeile. Nun werden die Daten nicht wie erhofft den Channels richtig zugeordnet.

Bsp.: Also bei 2 Sek Messseit werden 16000 einzelene Daten gelesen und gespeichert, nur dabei ist jeder Wert ein Channel.

Wie kann ich die Zuordnung richtig machen?

Würde mich sehr über konstruktive Tipps freuen.

Grüße DM


RE: Speicherung von Daten via TDMS - GerdW - 29.08.2018 17:04

Hallo DM,

Zitat:Würde mich sehr über konstruktive Tipps freuen.
Ok, hier mal dein Haupt-VI:
[attachment=59419]
So könnte es aussehen…
(Außerdem gibt es eine File-Funktion, die prüft, ob ein Pfad existiert und ob es sich dabei um eine Datei oder einen Ordner handelt. Könnte man auch benutzen…)

Noch ein Tipp: Wenn du VIs anhängst, ist es hilfreich, diese vor dem Anhängen nicht noch umzubenennen. Zumindest passte dein zweites VI sehr gut als Ersatz für das fehlende subVI des ersten…

Zitat:Jedoch ist das Array ein Array mit mehreren Daten und nur einer Zeile. Nun werden die Daten nicht wie erhofft den Channels richtig zugeordnet.
Du liest also ein 1D-Array mit 46 Samples (eines pro Kanal). Das wandelst du dann in ein 2D-Array um, wobei alle Samples in einer Zeile landen - die bei LabVIEW üblicherweise als ein Kanal betrachtet wird. (2D heißt: jede Zeile ein Kanal, jede Spalte ein Zeitschritt. Dadurch kann man prima autoindizierende Schleifen verwenden, die die Daten kanalweise abarbeiten!)

Zitat:Bsp.: Also bei 2 Sek Messseit werden 16000 einzelene Daten gelesen und gespeichert, nur dabei ist jeder Wert ein Channel.
??? 16k "einzelne Daten", jeder Wert ein Channel ???
Hmm


RE: Speicherung von Daten via TDMS - DM_94 - 30.08.2018 06:29

Zitat: Zitat:
Bsp.: Also bei 2 Sek Messseit werden 16000 einzelene Daten gelesen und gespeichert, nur dabei ist jeder Wert ein Channel.

??? 16k "einzelne Daten", jeder Wert ein Channel ???
Hmm

Ja ich meine damit, dass bei 2 Sekunden ein Array mit einer Zeile und 16000 Spalten erstellt wird.

Also das Problem kann ich mit einer autoindizierende Schleife lösen?

Wie kann solch eine Schleife aussehen?


Grüße DM


RE: Speicherung von Daten via TDMS - GerdW - 30.08.2018 07:10

Hallo DM,

Zitat:Ja ich meine damit, dass bei 2 Sekunden ein Array mit einer Zeile und 16000 Spalten erstellt wird.
Die Frage ist hier: Warum?

Wenn du mehrere Kanäle mit jeweils mehreren Samples einliest, dann erwartet LabVIEW ein 2D-Array mit sovielen Zeilen wie du Kanäle hast und sovielen Spalten, wie du Samples eingelesen hast.

Also nochmal die Frage: wieso liefert deine DAQ-Schleife (die du bisher nicht gezeigt hast) ein 1D-Array, bei der ALLE Kanäle und ALLE Samples in nur einer Zeile stehen?


RE: Speicherung von Daten via TDMS - DM_94 - 30.08.2018 07:33

Hallo Gerd,

anbei habe ich dir den Teil der Messung meines Prüfstandes. Ich hoffe es hilft dir bei der Verständnis meines Problemes.

Die Anzeigeelemente dienen hier nur als "Überwachungsanzeigen" (also einfach nur eine Anzeige der Werte). Ich habe die Messung als for-Schleife programmiert um eine Live-Darstellung zu erzeugen. Haben wir auch mal in einem Kommentar geklärt.

Grüße DM


RE: Speicherung von Daten via TDMS - GerdW - 30.08.2018 11:43

Hallo DM,

Zitat:dass bei 2 Sekunden ein Array mit einer Zeile und 16000 Spalten erstellt wird.
Weil DU das GENAU SO programmiert hast!

Warum machst du das?
[attachment=59425]

Stelle den Tunnel auf Autoindizierung um und du bekommst ein schönes 2D-Array. Im Bedarfsfall dann einfach transponieren…