LabVIEWForum.de - String in Array speichern für flexible Gruppenbenennung in TDMS Datei

LabVIEWForum.de

Normale Version: String in Array speichern für flexible Gruppenbenennung in TDMS Datei
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

das angehängte VI soll folgende Funktionalität erfüllen: Es werden Daten für eine vorgegebene Zeit erfasst und in einem TDMS-File gespeichert. Dabei wird für jedes vorgegebene Druckniveau eine Registerkarte (Gruppe) in dem File erstellt und beschrieben. Anschließend wird die Datei geöffnet und in den einzelnen Registerkarten werden die Spalten ausgelesen, der Mittelwert gebildet und eine Standardunsicherheit berechnet. Ich möchte diese Daten dann aber in ein neues TDMS schreiben und für jedes Druckniveau wieder eine eigene Registerkarte haben wo im Endeffekt nur noch zwei Werte pro Kanal (Spalte) drin sind. Leider habe ich hier das Problem, dass in der 4. Sequenz immer ein Fehler für das neue Auswertungs-File auftritt. Die Fehlermeldung sagt nur, dass es sich um eine ungültige TMDS Datei handelt.

Vermutlich liegt der Fehler in der zweiten Sequenz, wo ich versuche die Stringeingabe „Druckniveau“ in einem Array zu speichern und dann dieses Array nutzen möchte um die For-Schleife (4. Sequenz) durch die Anzahl der Arrayelemente zu steuern und gleichzeitig wieder die Registerkarten mit Namen (Gruppennamen) zu erstellen für das neue File.

Kann mir vielleicht jemand helfen, wie ich das Problem lösen könnte?

Vielen Dank im Voraus
Gruß Hansi
[attachment=60598][attachment=60599][attachment=60600]
Hallo Hansi,
in der VI Abstroemrohr.vi wird in der ersten While-Schleife zwei für mich sinnlose Schieberegister eingesetzt.

Der Zähler, der wird zwar fleißig hochgezählt hat aber keine weiter Verwendung.

Ähnlich ist es mit dem String Array Gruppenname. Du änderst ständig den ersten Wert aber es gibt keine Verwendung dafür.

Im hinteren Teil diese VI möchtest Du mit "Gruppenname 2" Daten auslesen, die vorher mit einem Eingabestring (Druckniveau) erstellt wurde.
Woher kennt "Gruppenname 2" die Eintragungen von "Druckniveau"?

Gruß
Freddy
Hallo Freddy,

der Zähler findet keine weitere Verwendung, absolut richtig. Es wäre nur eine alternative gewesen, die Messvorgänge mitzuzählen. In der Case-Struktur werden ja für eine gewünschte
einzustellende Zeit, aus der kontinuierlichen Messwerterfassung die Daten direkt in ein TDMS eingelesen und gespeichert (z.B. 5 Sekunden). Der Zähler definiert dann die Registerkarten (als Gruppenname).

Ich möchte aber als Gruppenname das "Druckniveau" (und nicht den Zähler) welches ich per Hand eingebe. Da ich spontan entscheiden möchte, bei welchem Druckniveau ich Daten aufzeichne. Deswegen
das Schieberegister "Gruppenname". Und wie du schon richtig gesagt hast, wird immer der erste Wert einfach überschrieben. Ich möchte eigentlich erreichen, dass ich bspw. 100 Pa, 150 Pa,
300 Pa usw. eingebe und diese Stringeingaben in dem Schieberegister gespeichert werden. Somit hätte ich in dem Fall drei Registerkarten (Gruppen) mit dem entsprechenden Messdaten für dieses Druckniveau. Leider funktioniert das nicht. Aber in dem gespeicherten Messdaten-TDMS-File werden glücklicherweise die entsprechenden Registerkarten mit dem Namen erstellt.

Im hinteren Teil soll das TMDS ausgelesen werden, und für jede Registerkarte die entsprechende Berechnung durchgeführt werden. Damit die richtige Registerkarte ausgelesen wird, und
gleich wieder die gleiche Registerkarte in einem neuen Auswertungs-TDMS erstellt wird, möchte ich das zuvor aufgenommene Cluster (Gruppennamen) verwenden. Dieses ist als Type-Def. klassifiziert und sollte auch die eingegebenen Gruppennamen enthalten. Leider funktioniert das nicht, da ja im vorderen Teil das Prinzip mit der Registerkarte nicht klappt.

Hättest du einen Tipp wie ich das besser machen könnte?

Beste Grüße und vielen Dank
Hansi
Hallo Hansi,
das Problem ist das Array Gruppennamen.

Das Array Gruppennamen müsste vorbelegt sein um den ersten Satz zu ändern. ein leeres Array bleibt leer.

Die Bezeichnungen der Druckniveau wird in das Schieberegister geschrieben. Wenn Du es weiterverwenden möchtest muss es einem Array zugewiesen werden.
Wird die While Schleife beendet steht weiterhin das Gleich im Array Gruppennamen und die Information des Schieberegisters geht verloren.
Der Zweite Teil ist nicht mit den Daten des ersten Teils verbunden, der Inhalt des "Gruppenname 2" ist immer gleich.
Wenn Du den Ausgang des Schieberegisters direkt an die For Next Schleife an Stelle des "Gruppenname 2" verbindest, bekommst Du vermutlich eher eine Lösung.

THINK DATAFLOW (Lieblings Antwort von GerdW)Big Grin

Gruß
Freddy
Referenz-URLs