LabVIEWForum.de
Große TDMS lesen und Signale zählen - 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: Große TDMS lesen und Signale zählen (/Thread-Grosse-TDMS-lesen-und-Signale-zaehlen)



Große TDMS lesen und Signale zählen - PPS - 02.12.2024 10:28

Expertise im Bereich TDMS gefragt...

Ich habe eine ziemlig große TDMS-Datei von ca. 1Gb+(4 Kanäle bei 400Hz Abtasttung über mehrere Stunden).
Diese Datei würde ich gern als ganzes Analysieren und zwar die Anzahl der Signale.

Die erste Herausforderung ist er die Rückmeldung gibt das mein Speicher voll ist, wenn ich alles rein laden möchte. (Siehe LV 2020 im Anhang(, wenn man -1 bei "Anzahl" eingibt)).

Die zweite Herausforderung, mit welcher Funktion zählt man am besten die Signale?
(Im Anhang ein Bild, wo man als Beispiel das Signal sieht. Wie im rot markierten Bereich zu sehen ist, kann es vorkommen dass im unteren Bereich mehrfach Signal ausgelöst werden, diese sollen nur einmal gezählt werden.)


RE: Große TDMS lesen und Signale zählen - GerdW - 02.12.2024 12:39

Hallo pps,

Zitat:Diese Datei würde ich gern als ganzes Analysieren und zwar die Anzahl der Signale.
Die erste Herausforderung ist er die Rückmeldung gibt das mein Speicher voll ist, wenn ich alles rein laden möchte.
Die simple Antwort lautet: man analysiert den/die Channels eben nicht als Ganzes, sondern stückweise…

Zitat:Die zweite Herausforderung, mit welcher Funktion zählt man am besten die Signale?
Indem du eine "Funktion" (aka subVI) erstellst, welches die Messdaten analysiert und anhand deiner Requirements auswertet!

Wenn du weißt, wie ein "Signal" definiert ist, dann kannst du diese Definition auch in einen Algorithmus verpacken…

Zitat:Ich habe eine ziemlig große TDMS-Datei von ca. 1Gb+(4 Kanäle bei 400Hz Abtasttung über mehrere Stunden).
4*400S/s*8B/s*3600s/h ergeben ~44MB/h. Du hast einen kompletten Messtag (24h) in eine Datei gepackt?

P.S.: Bitte deine Signatur anpassen, wenn du nicht mehr (nur) mit LV8.5 arbeitest…


RE: Große TDMS lesen und Signale zählen - PPS - 04.12.2024 12:41

Hi GerdW,
danke für die Rückmeldung.
Selbst wenn es nur ein einzelner Kanal ist, kommt es zu Speicher herausforderungen..., ja, du hast Recht es sind teils mehr als 24h.

Gibt es daher eine bessere Funktion als die im Anhang angegebene um teile der TDMS auszulesen?
Gibt es für das untere Signal evtl. bereits existierende VIs um die Anzahl der "Schwingungen" zu zählen?


RE: Große TDMS lesen und Signale zählen - GerdW - 04.12.2024 12:50

Hallo PPS,

Zitat:Gibt es daher eine bessere Funktion als die im Anhang angegebene um teile der TDMS auszulesen?
Es gibt diese TDMSRead-Funktion, was benötigst du da "besseres"?
Diese Funktion hat Inputs für die Anzahl der zu lesenden Samples...

Zitat:Gibt es für das untere Signal evtl. bereits existierende VIs um die Anzahl der "Schwingungen" zu zählen?
Gibt es, aber eben für "allgemeine" Anwendungen. Du willst aber ein "spezielles" Muster mit deinem Vorwissen ermitteln -> du erstellst dir also einen speziellen Algorithmus...


RE: Große TDMS lesen und Signale zählen - th13 - 04.12.2024 12:54

(04.12.2024 12:41 )PPS schrieb:  Selbst wenn es nur ein einzelner Kanal ist, kommt es zu Speicher herausforderungen..., ja, du hast Recht es sind teils mehr als 24h.
Du musst den Kanal ja nicht als Ganzes einlesen. TDMS Read hat oben zwei Eingänge Count und Offset. Damit kannst du in einer Schleife Teile deiner Daten einlesen und verarbeiten.

Und evtl. nochmal überdenken, ob eine stundenweise Speicherung deiner Messung nicht ratsamer wäre. Vereinfacht das Handhabung sowohl in LabVIEW als auch auf Dateiebene.


RE: Große TDMS lesen und Signale zählen - Woodeye - 04.12.2024 13:11

Hallo PPS,

wir nutzen zur Anzeige von tdms Dateien den kostenfreien "IMC Famos Reader", für weiterführende Auswertungen und Berechnungen ist evtl. eine kostenpflichtige Version nötig.

In einigen meiner Programme entstehen tägliche Logdateien von ca. 20 Gb, diese Datenmengen können problemlos mit dem Reader geöffnet und visualisiert werden ohne auf gespeicherte Messwerte verzichten zu müssen. Ebenfalls stehen diverse Importfunktionen für Excel, .txt usw. zur Verfügung.


RE: Große TDMS lesen und Signale zählen - PPS - 05.12.2024 11:26

Danke für den Hinweis Woodeye, schaue ich mir mal an.


RE: Große TDMS lesen und Signale zählen - Woodeye - 05.12.2024 13:08

Für Studenten gibt es die Vollversion ein Jahr gratis.

IMC Famos


RE: Große TDMS lesen und Signale zählen - cordm - 05.12.2024 16:06

Zu der zweiten Frage: es gibt ein paar VIs um einen Anfang zu bekommen:

Waveform/Analog Waveform/Measurements/Monitoring
-> Basic Level Trigger Detector & Waveform Peak Detection

Signal Processing/Signal Operation
-> Threshold Detector

Waveform Peak Detection merkt sich vorige Aufrufe, so dass man es mit Signalabschnitten füttern kann.


RE: Große TDMS lesen und Signale zählen - Kiesch - Gestern 10:49

(05.12.2024 16:06 )cordm schrieb:  Zu der zweiten Frage: es gibt ein paar VIs um einen Anfang zu bekommen:

Waveform/Analog Waveform/Measurements/Monitoring
-> Basic Level Trigger Detector & Waveform Peak Detection

Signal Processing/Signal Operation
-> Threshold Detector

Waveform Peak Detection merkt sich vorige Aufrufe, so dass man es mit Signalabschnitten füttern kann.

Ah das gibts also scheinbar schon fertig. Wollte auch grade anmerken, dass du zum einen bei Stückweiser Nutzung gerade genau in einem "Signal" ein "Dateiende" haben kannst, was du richtig als Ausnahme behandeln musst (nicht doppelt zählen, nicht garnicht zählen). Bei den Signalen die du hast dürfte eine einfache Threshhold Detection für die "großen" Signale ausreichend sein. So sauber wie die jeweils aussehen könnte es reichen lediglich zu ermitteln das der Threshhold überschritten ist und erst nach erneutem unterschreiten des Threshholds das nächste Signal zu Verarbeiten. Für die Verarbeitung der kleinen Signale dann nur noch prüfen ob du zählen musst oder nicht. Im Prinzip reicht dafür ein Flag zu setzen, dass immer beim erreichen eines Großen Peaks zurückgesetzt wird.
So wie ich das verstehe liefert dir der Peak Detektor alle Peaks sowie die zugehörigen Positionen im Signal sowie die Peakhöhe. Das heißt das würde dir sogar schon für die (Vor-)filterung deiner Daten reichen. Du musst dann bei der Höhe (Amplitude) nur noch festlegen ab welcher Höhe du den Peak als großen Peak zählst. Und wie gesagt an Schnittstellen zwischen Signalabschnitten kann Ausnahmenbehandlung notwendig sein.

Gruß Kiesch

P.S: Achja, aus dem Beispiel habe ich geschlossen, dass die kleinen Peaks immer deutlich kleiner sind als die Großen. Wenn das nicht der Fall ist, musst du tatsächlich die Signalform der Peaks mit auswerten (kleine Peaks deutlich kürzer).