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!
Zitat:Ja, wird bereits bei den neuen Daten in Blocken abgespeichert, so dass keine 4Gb Dateien entstehen
Das meinte ich nicht mit "Blöcken"…
Ich rede über den internen Aufbau einer TDMS-Datei.
Du kannst mehrere Channel in einer oder mehreren Channel-Groups abspeichern.
Man könnte weiterhin eine riesige TDMS-Datei erzeugen, die aber z.B. pro Stunde eine Channel-Group enthält…
Zitat:Noch eine Idee, wie man die Anzahl der Datenpunkte pro Kanal aus der TDMS relativ schnell rausbekommt, ohne alle Werte zunächst mal einlesen zu müssen (mittels TDMS Read)?
Wenn du DAQmx-Logging verwendest, dann speichert DAQmx automatisch eine Property mit der Angabe der Sampleanzahl:
Ansonsten bist du als Programmierer selbst dafür verantwortlich, welche Properties du bei deinen Channels ablegst…
(Oder du speicherst eben in mehreren ChannelGroups ab und definierst eine feste Channel-Länge pro Group. Wie zuvor: deine Verantwortung als Programmierer!)
Zitat:Ich rede über den internen Aufbau einer TDMS-Datei.
Du kannst mehrere Channel in einer oder mehreren Channel-Groups abspeichern.
Man könnte weiterhin eine riesige TDMS-Datei erzeugen, die aber z.B. pro Stunde eine Channel-Group enthält…
Das habe ich soweit glaube ich verstanden. Ich glaube hier habe ich mich nur nicht gut genug ausgedrückt...
Zitat:Noch eine Idee, wie man die Anzahl der Datenpunkte pro Kanal aus der TDMS relativ schnell rausbekommt, ohne alle Werte zunächst mal einlesen zu müssen (mittels TDMS Read)?
Wenn du DAQmx-Logging verwendest, dann speichert DAQmx automatisch eine Property mit der Angabe der Sampleanzahl:
[/quote]
Hab nun mal versucht die Property auszulesen, scheint auch zu klappen.
@GerdW war es so gemeint, für die bereits bestehenden Daten?
Kann mir noch jemand helfen beim TDMS-Fehler im Anhang?
Hatte es auch mit Shiftregister probiert aber auch da kommt diese Fehlermeldung.
Beim ersten Durchlauf legt er super die TDMS Datei an, beim zweiten Durchlauf kommt es dann zur Fehlermeldung.
Zitat:Kann mir noch jemand helfen beim TDMS-Fehler im Anhang?
Hatte es auch mit Shiftregister probiert aber auch da kommt diese Fehlermeldung.
Beim ersten Durchlauf legt er super die TDMS Datei an, beim zweiten Durchlauf kommt es dann zur Fehlermeldung.
- Ich würde die FileRef in ein Schieberegister legen und auch den entsprechenden Ausgang dieses TDMSRead verwenden…
- "Daten pro Datei" sollte ein Integer sein. Es gibt auch eine Modulo-Funnktion anstelle der normalen Division…
- Wieviele Daten/Samples stehen in deiner Datei, wie groß ist "Daten pro Datei", wieviele Samples stehen in der ausgelesenen Waveform?
Fehler 4 ist an sich ja eindeutig: du willst mehr lesen, als in der Datei vorhanden ist!
Zitat:- Ich würde die FileRef in ein Schieberegister legen und auch den entsprechenden Ausgang dieses TDMSRead verwenden…
- "Daten pro Datei" sollte ein Integer sein. Es gibt auch eine Modulo-Funnktion anstelle der normalen Division…
Soweit nach besten Wissen und Gewissen geändert, siehe Anhang
(Reduzierungsfaktor wird noch auf Integer abgeändert)
Zitat:- Wieviele Daten/Samples stehen in deiner Datei, wie groß ist "Daten pro Datei", wieviele Samples stehen in der ausgelesenen Waveform?
Habe erstmal mit kleiner Datei versucht, siehe auch Bild im Anhang:
Wieviele Daten/Samples stehen in deiner Date: 9.000.000
Daten pro Datei: 5/9.000.000=1.800.000
Waveform: 1.800.000/2 =900.000
Sonst ist es die ca 4Gb-Datei....
Er legt die erste Datei richtig an und die Größe passt, die nachfollgenden Datein sind definitiv falsch (siehe Bild)
Heute, 14:26 (Dieser Beitrag wurde zuletzt bearbeitet: Heute 14:35 von GerdW.)
Zitat:Soweit nach besten Wissen und Gewissen geändert, siehe Anhang
Der FileRef-Ausgang des TDMSRead wird immer noch nicht verwendet, stattdessen verzweigst du den Ref-Draht vor dem TDMS-Read…
Der Reduzierfaktor könnte auch float bleiben, je nachdem, wie dein Algorithmus im subVI arbeitet…
Zitat:Er legt die erste Datei richtig an und die Größe passt, die nachfollgenden Datein sind definitiv falsch (siehe Bild)
Und wieviele Waveforms mit wievielen Samples liest du nun aus?
Wie sind die Daten im TDMS abgelegt? Die Hilfe sagt:
Zitat:count specifies the maximum number of data elements to read from the .tdms file for each channel. The default is –1, all available elements.
Wenn dein "data element" eine ganze Waveform ist, dann könnte es Probleme beim Auslesen von 1.8M waveforms geben…
Hab's schnell mal selbst geprüft:
Wenn ich einen count vorgebe, dann hat die gelesene Waveform auch die gewünschte Anzahl Samples. Und der nachfolgende Read mit Offset liefert die restlichen Samples (von 5M)…
Zitat:Der FileRef-Ausgang des TDMSRead wird immer noch nicht verwendet, stattdessen verzweigst du den Ref-Draht vor dem TDMS-Read…
Der Reduzierfaktor könnte auch float bleiben, je nachdem, wie dein Algorithmus im subVI arbeitet…
Sorry stehe auf dem Schlauch kannst du es evtl. im Bild markieren wo er hin soll?
Zitat:
Und wieviele Waveforms mit wievielen Samples liest du nun aus?
1 Waveform mit 900.000 Samples
Zitat:Wie sind die Daten im TDMS abgelegt? Die Hilfe sagt:
count specifies the maximum number of data elements to read from the .tdms file for each channel. The default is –1, all available elements. Wenn dein "data element" eine ganze Waveform ist, dann könnte es Probleme beim Auslesen von 1.8M waveforms geben…
Die ursprünglichen Daten war ein simuliertes Signal mit 9.000.000 Daten
Wenn ich die ganze Sache ohne For Loop laufen lasse und sozusagen händisch meinen "Schliefenzähler" hochstellen, funktioniert es einwandfrei, allerdings im For-Loop steckt ein Bug, und ich stehe auf dem Schlauch was es ist....
für Referenzen nutze ich gern Schieberegister:
Wie schon gesagt: FileRef in ein Schieberegister und entsprechende Inputs/Outputs des TDMSRead benutzen…
wenn man es einmal ausführt muss der Gruppen und Kanalname bei TDMS Read nicht angeschlossen sein, dann ließt er einfach alles aus.
Bei den weiteren Durchläufen muss er jedoch angeschlossen sein, sonst gibt er keine Daten bei "TDMS Read" raus, das war das Problem...