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!
25.10.2013, 11:06 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2013 11:45 von jg.)
vorab: ich bin ein absoluter Neuling auf dem LabVIEW-Gebiet, seid also nicht so streng zu mir!
Jetzt zu meiner Frage: Ich habe eine .tdms Datei, die Messwerte aus einem Fahrzeug enthält. Sie besitzt folgende Struktur:
Jeder Kanal (x,y,z,Tempsensor1,..) besitzt 3600 Messwerte. Mein Ziel ist es jetzt, diese .tdms-Datei einzulesen und die Messwerte
der einzelnen Kanäle in Arrays abzulegen (um damit Rechnungen durchzuführen).
Ich hab jetzt also angefangen ein VI zu basteln und erreiche damit, dass ich mir zwar die Gruppen und Kanalnamen anzeigen lassen kann, aber wenn es um die konkreten Messdaten geht, bekomm ich nur den Bereich "Datum" aus meiner .tdms Datei.
Hier das .vi:
Wie komme ich denn am besten an die Messdaten der einzelnen Kanäle?
Beste Dank und viele Grüße
bregas
Anzeige
25.10.2013, 13:23 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2013 13:25 von Kasi.)
auch wenn ich nicht zu streng sein soll, kann ich mir ein nicht verkneifen. Denn in der Hilfe steht alles, was du schon immer über TDMS Read wissen wolltest, aber bisher nie zu fragen gewagt hast.
Ich zitiere aus dem Buch Labview Help, Vers TDMS Read Function:
"group name in [...] If you do not wire this input, LabVIEW reads data from the first group when you run this function for the first time."
Was will uns der Autor damit sagen? Und welche Schlüsse ergeben sich hier heraus?
Diese Fragen bitte ich in Heimarbeit bis zum nächsten Post zu bearbeiten.
Grüße & viel Erfolg,
Kasi
Achja, und willkommen im Forum
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
26.10.2013, 16:34 (Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2013 17:27 von jg.)
vorab schon einmal vielen vielen Dank für deine Antwort und Hilfe. Und tatsächlich hat das wachrütteln mit der LabVIEW Hilfe etwas gebracht.
Ich komme jetzt nämlich an meine einzelnen Datenkanäle und kann mir diese sowohl graphisch ausgeben, als auch in ein Array schreiben!
Soweit so gut, allerdings wirft mir LabVIEW beim kompilieren des Block Diagrams einen Fehler, den ich nicht deuten kann und wo ich auch mit der Hilfe nicht weiterkomm. s1.directupload.net/images/131026/p99omhix.png
Der Fehler wird beim Ausführen der Funktion "TDMS: Schließen" erzeugt.
Das für mich unverständliche ist, dass wenn ich nur einen Kanal auslese, das Schließen der .tdms-Datei kein Problem darstellt, aber jetzt, wo ich quasi
vier Kanäle parallel auslese schon.
Wenn ich jetzt den Programmaublauf highlighte, sieht man ganz deutlich, dass die Funktionsblöcke "TDMS: Schließen" erst dann ausgeführt werden, wenn alle Daten-Kanalabfragen durchgeführt werden. Warum bringt er also diese Fehlermeldung?
Wo ist mein Denkfehler?
Gruß
bregas
26.10.2013, 17:27 (Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2013 17:33 von jg.)
Anhänge bitte hier im Forum hochladen, nicht bei externen Hostern (vgl. LVF-Regeln).
Danke, Jens
(26.10.2013 16:34 )bregas schrieb: Der Fehler wird beim Ausführen der Funktion "TDMS: Schließen" erzeugt.
Das für mich unverständliche ist, dass wenn ich nur einen Kanal auslese, das Schließen der .tdms-Datei kein Problem darstellt, aber jetzt, wo ich quasi
vier Kanäle parallel auslese schon.
Genau hier liegt dein Denkfehler. Sobald du etwas "parallel" im Blockdiagramm programmierst, dann zerstörst du das Datenflusskonzept von LabVIEW. Was dann wann ausgeführt wird, weißt du vorab nicht. Und du darfst dich NICHT darauf verlassen, dass die Abarbeitungsreihenfolge im Highlight-Modus identisch zu der im Normalmodus ist.
Lösung: Häng die 4 Reads hintereinander und schließe die Datei nur 1x NACH allen Reads.
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!
In meinem Blockprogramm sagt mir LabVIEW, dass der Datentyp der aus meinem TDMS: Lesen kommt ein Signalverlauf (DBL) ist. Desweitern hab ich in der Hilfe gelesen, dass ich der Funktion TDMS:Lesen einen Datentyp mit auf den Weg geben kann. Die Daten die dann mein TDMS:Lesen verlassen, haben dann den Datentyp der vorher festgelegt wurde.
Aber wie sage ich der TDMS:Lesen, wie der Datentyp aussieht? Muss ich einen String übergeben? Dazu hab ich nirgend eine Information gefunden.
Es steht immer nur da, dass man den Datentyp übergibt und fertig..
das VI TDMS Read hat einen Eingang "Data Type" - hier kannst du einfach eine leere Labview Konstante mit dem Datentyp anschließen, den du gerne als Ausgangstyp hättest. Nach Hilfe sind folgende Datentypen erlaubt:
Digital waveform
Digital table
Dynamic data
1D or 2D array of:
-Signed or unsigned integers
-Floating-point numbers
-Timestamps
-Booleans
-Alphanumeric strings that do not contain null characters
Wenn du jetzt also beispielsweise als Datentyp lieber ein Boolsches Array haben willst, erstellst du dir eine leere Array-Konstante auf dem Blockdiagram, füllst die mit einer Boolean Konstante und schließt diese an den Datentyp-Eingang an - dann wird auch der Datenausgang auf boolsches Array geschaltet (ob das dann Sinn macht, hängt natürlich davon ab, was überhaupt im jeweiligen TDMS Kanal gespeichert wurde).
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
In vier Wochen schaust du dir dein Programm an und sagst dir - Gott ist das hässlich....besser, ich fange nochmal von vorne an
Spaß beiseite, da du relativ am Anfang steht, würde ich dir auf jeden Fall empfehlen, alles direkt am Anfang gut zu dokumentieren (am einfachsten mit einem Doppelklick ins Blockdiagramm, das ein Textfeld einfügt), damit du in ein paar Wochen noch weißt, was genau du bezwecken willst. Außerdem hilft es auch, eine Ahnung davon zu haben, was klassische Anfängerfehler bei der Programmierung sind und was eine gute Nutzerschnittstelle ausmacht.
Viel Erfolg bei deinen Projekten!
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)