Schreiben von TDMS-Dateien für die Datenverwaltung

Überblick

TDMS (Technical Data Management Streaming) ist das gängigste Dateiformat, mit dem in Software von National Instruments erfasste Datenkanäle gespeichert werden. Das Format ist auch mit Drittanbieterwerkzeugen einsetzbar. Folgendes Dokument bietet eine Übersicht über die Vorteile des TDMS-Dateiformats sowie über die vielen Programme und APIs, welche solche Dateien lesen können:

Tutorium in der NI Developer Zone: NI-TDMS-Dateiformat

Folgendes Dokument erläutert die Binärstruktur einer TDMS-Datei:

Tutorium in der NI Developer Zone: Interne Struktur des TDMS-Dateiformats

Oftmals reicht es nicht aus, einfach nur eine gültige TDMS-Datei zu schreiben. Dieses Dokument beschreibt, wie Sie eine TDMS-Datei so erstellen, dass Sie die erfassten Datenkanäle später möglichst schnell finden, analysieren, vergleichen und dokumentieren können. Wenn Sie diesen Empfehlungen für TDMS-Dateien folgen, stehen Ihnen bei der Datenverwaltung zusätzliche Funktionen zur Verfügung. Die Zeitkanäle sind eindeutig zugeordnet und die Ladegeschwindigkeit wird maximiert.

Inhalt

Schreiben von Eigenschaften für die Datenverwaltung

TDMS-Datendateien enthalten meist zwei verschiedene Typen von Informationen: die erfassten Datenarrays, auch Massendaten genannt, sowie die Setup-Bedingungen und/oder Skalarergebnisse, auch Metadaten genannt. Die Massendaten werden von TDMS-Dateien immer in individuellen 1D-Arrays, genannt Kanäle, gespeichert. TDMS-Dateien können Metadaten als skalare Name/Wert-Paare, genannt Eigenschaften, speichern. Diese können jeder der drei Hierarchieebenen, der Dateiebene, der Kanalgruppenebene und der Kanalebene, zugeordnet werden. Welche Informationen als Eigenschaften gespeichert werden, welcher Ebene die Eigenschaften zugeordnet werden und wie jede Eigenschaft benannt wird, hat wesentliche Auswirkungen auf die Nützlichkeit der Metadaten für die Datenverwaltung.

Schreiben von Metadaten als Eigenschaften anstatt in Kanäle

Metadaten sollten immer als Eigenschaften gespeichert werden, da diese im Gegensatz zu Datenkanälen durchsucht werden können. TDMS-Datenkanäle sind zur Ablage von Datenarrays für Grafiken und Analysen gedacht. Das Speichern von skalaren Setup-Informationen und Skalarergebnissen auf Datenkanäle mit nur einem Wert verwirrt beim Lesen, da hier „reale“ mit „falschen“ Datenkanälen gemischt werden. Werden benannte Skalarinformationen stattdessen als Eigenschaften gespeichert, ist eine erheblich verbesserte Suchfunktionalität in vielen TDMS-Leseanwendungen wie NI LabVIEW und NI DIAdem möglich. Hier sehen Sie beispielsweise die inutitive, simultane Anzeige von Datenkanalwerten (Graph) und Kanaleigenschaften (Tabelle):

Abb. 1: Kanaldaten und Eigenschaften in NI DIAdem

 

Schreiben von Eigenschaften mit gültigen Namen

Eine TDMS-Eigenschaft besteht aus drei Komponenten: Eigenschaftswert, Eigenschaftsname und Eigenschaftsebene. Im TDMS-Dateiformat kann jedes beliebige Zeichen im Eigenschaftswert verwendet werden, allerdings gelten für viele der Schreib- und Leseanwendungen für TDMS-Dateien Einschränkungen bezüglich der Eigenschaftsnamen. Folgende Empfehlungen für Eigenschaftsnamen stellen sicher, dass die Eigenschaftsnamen nicht geändert werden, gleichgültig welche TDMS-Leseanwendung zum Einsatz kommt.

  • Eigenschaftsnamen sollten nur Buchstaben, Zahlen und Unterstriche enthalten.
  • Das erste Zeichen eines Eigenschaftsnamens sollte entweder ein Buchstabe oder ein Unterstrich sein.

Es gibt zwei spezielle Eigenschaftsnamen, die in allen TDMS-Dateien verwendet werden sollten. Folgende Tabelle führt diese auf.

 

Tabelle 1: Spezielle Eigenschaftsnamen

Ebene Name Beschreibung
File (Datei) DateTime (Speicherzeitpunkt) Start-Datum und -Zeit der ganzen TDMS-Datei
Channel (Kanal) Unit_String (Einheit) String-Darstellung der Kanaleinheit

 

Schreiben von Eigenschaften auf die passende TDMS-Ebene

Eine TDMS-Eigenschaft setzt sich aus drei Komponenten zusammen: Eigenschaftswert, Eigenschaftsname und Eigenschaftsebene. Das TDMS-Dateiformat erlaubt die Zuordnung einer Eigenschaft zu der Datei, zu einer beliebigen Kanalgruppe in der Datei oder zu einem beliebigen Kanal in einer der Kanalgruppen. Der Speicherort der Eigenschaft hat einen großen Einfluss auf ihre Nützlichkeit. Folgende Empfehlungen maximieren die Möglichkeit, auf Basis einer oder mehrerer Eigenschaftsbedingungen gewünschte Teile einer TDMS-Datei zu finden.

  • Speichern Sie eine Eigenschaft nur dann auf die Dateiebene, wenn diese sich auf jede Kanalgruppe und jeden Kanal der TDMS-Datei bezieht.
  • Speichern Sie eine Eigenschaft nur dann auf eine bestimmte Kanalgruppe, wenn sie sich auf alle Kanäle in dieser Kanalgruppe bezieht.
  • Speichern Sie eine Eigenschaft auf einen bestimmten Kanal, wenn sie nur zu diesem Kanal gehört.

Umgekehrt gilt genauso:

  • Bezieht sich die Eigenschaft auf alle Kanäle einer bestimmten Kanalgruppe, speichern Sie die Eigenschaft auf die Kanalgruppe und nicht auf jeden der Kanäle in dieser Kanalgruppe.
  • Bezieht sich die Eigenschaft auf jede der Kanalgruppen in der TDMS-Datei, speichern Sie die Eigenschaft auf die Datei und nicht auch jede Kanalgruppe in der TDMS-Datei.

Häufig wird der Fehler gemacht, eine Reihe von Setup-Eigenschaften auf eine Kanalgruppe namens Setup Info zu schreiben, die keine Kanäle enthält. Damit wird es unmöglich, nach ausgewählten Kanalgruppen oder Kanälen zu suchen, welche die Bedingungen der Setup-Eigenschaften erfüllen.

 

 

Verknüpfen von Zeitinformationen mit Datenkanälen

Erfasste Datenkanäle verfügen über zugehörige Zeitangaben, entweder implizit (konstante Sample-Rate) oder explizit (Kanal mit Zeitwerten). Um solche Zeitinformationen richtig analysieren zu können, müssen sie beim Lesen der TDMS-Datei zuverlässig gefunden werden. Bitte beachten Sie, dass die Begriffe Timing und Zeit hier eine größere Kategorie verknüpfter Informationen der x-Achse umfassen.

Zumeist werden erfasste Daten gegen die Zeit auf der x-Achse dargestellt. Angaben auf der x-Achse können aber auch Winkel, Frequenz und Verschiebung sein. Die folgenden Empfehlungen gelten für alle Größen der x-Achse gleichermaßen, auch wenn hier zur Vereinfachung der Begriff Zeit verwendet wird. Zwei häufig verwendete Methoden zur Aufzeichnung der zugehörigen Zeitangaben sind implizite Eigenschaften des Signalverlaufskanals und explizite Datums-/Zeitkanäle. Für jede Methode sind mehrere zusätzliche Kanaleigenschaften zur vollständigen Dokumentation nötig.

Verknüpfen von Zeitkanälen und Datenkanälen

Wenn die zur TDMS-Datei gehörenden Zeitwerte für erfasste Datenkanäle in einem oder mehreren Zeitkanälen gespeichert werden, dann ist eine Konvention nötig, um anzuzeigen, welche erfassten Datenkanäle zu welchen expliziten Zeitkanälen gehören. Die Konvention ist notwendig, weil das TDMS-Dateiformat keine integrierte Methode für diese Zuordnung bietet.

Der einfachste Ansatz besteht darin, in jeder Kanalgruppe jeweils nur einen expliziten Zeitkanal zu haben und diesen stets als ersten Kanal in der Kanalgruppe zu positionieren. Das führt zu zwei gängigen Szenarien: Entweder befindet sich ein expliziter Zeitkanal plus ein erfasster Datenkanal (XY) oder ein expliziter Datenkanal plus mehrere erfasste Datenkanäle (XYYY) in jeder Kanalgruppe, wie in folgender Abbildung dargestellt:

Abb. 2: XY-Kanalgruppen

Abb. 3: XYYY-Kanalgruppen

 

Schreiben vollständiger Datums-/Zeitwerte in Kanäle und Eigenschaften

TDMS-Dateien bieten einen nativen Datentyp für Datums-/Zeitwerte, der sowohl für Eigenschaften als auch für Datenkanäle verwendet werden kann. Zum Speichern von Zeitinformationen sollte immer diese integrierte Option gewählt werden. Das Schreiben eines numerischen Werts der abgelaufenen Sekunden reicht nicht aus, um eine Zeit aufzuzeichnen, da verschiedene Anwendungen, die TDMS-Dateien schreiben und lesen, unterschiedliche Konventionen für Startzeitpunkte und sogar die Schrittweite (Sekunden statt Tage) haben. Bei Programmen, die in NI LabVIEW geschrieben wurden, sollte immer ein Zeitstempel direkt an den Eigenschaftswert- oder den Dateneingang der VIs angeschlossen werden, wie in folgender Abbildung gezeigt:

Abb. 4: Speicherzeitpunkt-Eigenschaft und Zeitkanal in NI LabVIEW schreiben

 

Des Weiteren sollte bei Datums-/Zeitwerten das Aufzeichnen und Lesen des geografischen Standorts (Zeitzone) berücksichtigt werden. Manche Anwendungen für das Schreiben und Lesen von TDMS-Dateien setzen dieselbe Zeitzone voraus, andere wiederum ziehen die Greenwich-Zeit heran (GMT/UTC). Stimmen die Schreib- und Leseanwendungen der TDMS-Datei bei den geografischen Erwartungswerten nicht überein, können sich die Datums-/Zeitwerte beim Lesen von denen beim Schreiben unterscheiden. Zur Sicherheit sollte daher bei den Metadaten eine zusätzliche UTC_Offset-Eigenschaft (als reale Zahl) gespeichert werden, die die Anzahl der Stunden (oder Bruchteile davon) zwischen der Anwendung zum Schreiben der TDMS-Datei und GMT speichert.

Schreiben vollständiger Signalverlaufskanäle

Wenn Datenkanäle in unregelmäßigen Zeitabständen erfasst werden, dann ist ein expliziter Zeitkanal für die genaue Dokumentation der Zeit erforderlich. Üblicher ist jedoch, dass alle Datenkanäle mit einer konstanten Sample-Rate erfasst werden, in der Regel hardwaregetaktet. In diesem Fall ist das Speichern der Angaben als ein Satz von Kanaleigenschaften ein eleganter und gänzlich ausreichender Ansatz, um die Zeit präzise zu dokumentieren, ohne dass explizite Zeitkanäle notwendig sind. Die empfohlenen Namen für Signalverlaufseigenschaften von TDMS-Dateien sind in folgender Tabelle aufgeführt.

 

Tabelle 2: Standardnamen von Signalverlaufseigenschaften

Name Beispiel Erforderlich? Beschreibung
wf_xname (Waveform x-Name) Zeit Erforderlich Name der Quantität auf der x-Achse
wf_xunit_string (Waveform x-Einheit) s Erforderlich Einheit der Quantität auf der x-Achse
wf_start_offset (Waveform x-Offset) 0 Erforderlich Start-Offset-Wert der x-Achse
wf_increment (Waveform x-Schrittweite) 0,001 Erforderlich Schrittweite der x-Achse
wf_start_time (Waveform x-Startzeit)   Optional Start-Datums-/Zeitwert der Zeitachse
wf_samples (Waveform x-Werte)   Erforderlich Anzahl der Werte auf der X-Achse

Bitte beachten Sie, dass Eigenschaftsnamen in Kleinbuchstaben geschrieben werden. Die Eigenschaften wf_xname und wf_xunit_string sind in LabVIEW nicht standardmäßig eingestellt. Sie müssen diese deshalb zu jedem Signalverlaufskanal in der TDMS-Datei hinzufügen.

 

 

Schreiben von schnell ladenden TDMS-Dateien

Das TDMS-Dateiformat wurde dafür konzipiert, Daten so schnell wie möglich zu übertragen und gleichzeitig genug Flexibilität zu bieten, um während der Erfassung Änderungen an der Kanalanzahl und ihrer Abtastrate zuzulassen. Jedoch werden Dateien, die schnell übertragen werden, nicht unbedingt auch schnell geladen. Die TDMS-Datei ist vollständig binär und besteht aus mehreren Abschnitten, die beim Schreiben in die Datei aufeinander gestapelt werden. Diese Abschnitte enthalten Puffer von Datenwerten, die einem oder mehreren Kanälen und/oder Metadateneigenschaften zugewiesen sind, welche wiederum zu einer oder mehreren Ebenen gehören. Generell gilt: Je weniger Abschnitte eine TDMS-Datei besitzt, desto schneller lädt sie.

Jedes Mal, wenn eine TDMS-Datei geschrieben oder gelesen wird, wird eine TDMS_Index-Datei erstellt, die ein Verzeichnis der Binärabschnitte enthält. Bei anschließenden Lesevorgängen derselben TDMS-Datei wird die TDMS_Index-Datei konsultiert, um die korrekte Byte-Position für das Lesen jeder Kanal- und Eigenschaftensammlung aus der TMDS-Datei zu bestimmen. Grob gesagt ist eine TDMS-Datei „fragmentiert“, wenn die TDMS_Index-Datei ähnlich groß ist wie ihre TMDS-Datei. Das bedeutet, dass sie mehr Abschnitte besitzt als nötig sind und deshalb langsamer lädt. Sowohl während und nach der Erfassung stehen mehrere Ansätze zur Verfügung, mit deren Hilfe die Anzahl unnötiger Abschnitte minimiert und die Lesegeschwindigkeit der resultierenden TDMS-Datei maximiert werden kann.

Schreiben von TDMS-Dateien mit minimaler Fragmentierung

Zunächst sollte bei der Datenerfassung mit NI-Hardware in Betracht gezogen werden, TDMS-Dateien mit dem NI-DAQmx zu schreiben, da hierbei automatisch unfragmentierte Dateien entstehen. Werden Datenkanäle mit LabVIEW erfasst, kann über die Palette TDMS (erweitert) eine minimal fragmentierte TDMS-Datei geschrieben werden. Nutzen Sie die Standardfunktionen zum Schreiben von TDMS, helfen Ihnen folgende Tipps dabei, die Fragmentierung von TDMS-Dateien auf ein Minimum zu begrenzen.

  • Schreiben Sie alle TDMS-Eigenschaften entweder vor oder nach der Datenerfassung.
  • Schreiben Sie Datenpunkte von mehreren Kanälen in ein 2D-Array und nutzen Sie nur eine TDMS-Schreibfunktion.
  • Schreiben Sie mindestens 1000 Datenpunkte auf einmal auf jeden erfassten Kanal in der TDMS-Datei.
  • Wenn Sie einen Datenpunkt auf einmal schreiben müssen, stellen Sie die Kanaleigenschaft NI_MinimumBufferSize auf 1000.

Defragmentieren von TDMS-Dateien nach der Erfassung

Wenn Einschränkungen bei der Datenerfassung Sie dazu zwingen, fragmentierte TDMS-Dateien zu erstellen, können diese auch noch nach der Erfassung optimiert werden. Verwenden Sie LabVIEW, können Sie durch Ausführen der Funktion TDMS: Defragmentieren die TDMS-Datei mit minimaler Fragmentierung umschreiben. Alternativ können Sie die TDMS-Datendatei in DIAdem laden und erneut speichern. Die resultierende Datei ist nur minimal fragmentiert.

Schreiben von Kanaleigenschaften zum Erhöhen der Ladegeschwindigkeit

Falls NI DIAdem die Zielanwendung zum Lesen Ihrer TDMS-Dateien ist, können Sie die Ladegeschwindigkeit in NI DIAdem erheblich steigern, indem Sie die folgenden vier Eigenschaften erstellen und mit jedem Datenkanal in der TDMS-Datei verknüpfen. Sind nicht alle vier dieser Eigenschaften vorhanden und mit einem gültigen Wert bestückt, wenn ein TDMS-Datenkanal geladen wird, berechnet NI DIAdem automatisch alle vier Eigenschaften, um die automatische Achsenskalierung von Graphen zu beschleunigen. Sind diese Eigenschaften bereits vorhanden, mit gültigen Werten bestückt und mit jedem Datenkanal in der TDMS-Datei verbunden, lädt diese TDMS-Datei viel schneller in DIAdem.

 

Tabelle 3: Eigenschaften zum Erhöhen der Ladegeschwindigkeit in NI DIAdem

Name Beispiel Beschreibung
Minimum -3,14 Minimalwert des Kanals
Maximum 3,14 Maximalwert des Kanals
Monotonie Nicht monoton Ob der Kanal monoton steigt oder fällt
NoValues Nein Ob sich NAN-Werte im Kanal befinden


 

Sie interessieren sich für weitere Anleitungen?

Das Sammeln von Messdaten dient der Entscheidungsfindung. Sind die Rohdaten jedoch nicht effizient organisiert, kann das zu Problemen bei der Datenanalyse führen. Anwender sollten deshalb beim Organisieren von Rohdaten in ihre Anwendung die aktuellen Anforderungen eines Systems sowie die Anpassbarkeit einer Datei an zukünftige Anwendungsanforderungen berücksichtigen.


» Zum Leitfaden