INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben



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!

08.06.2021, 15:02
Beitrag #11

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
(08.06.2021 14:56 )BenBaeumker schrieb:  Und für so einen Versuch die Abfrage, wie viele Bytes gerade im Buffer liegen, mit in die While-Schleife reinziehen, nicht 1x davor abfragen. Das dürfte nämlich aktuell eine deiner Ursachen sein, wieso deine Datei nur so wenige Datensätze enthält.

Gruß, Jens

Vielen Dank, dieser Tipp hat mich auf die richtige Spur gebracht. Es lagen immer 4080 Bytes zur Abholung bereit, diese wurden dann komplett eingelesen. Mein String hat aber immer nur eine Länge von 61 Bytes. Ich habe nun die abhzuholenden Bytes auf 61 eingestellt und siehe da: Nun läuft die Schleife in 3 Sekunden ca. 3000x durch.
[/quote]

Schon mal in der ersten Antwort vorgeschlagen:

Zitat:liest du wirklich immer genau 1 Datensatz innerhalb deiner While-Schleife ein? Oder enthält dein String "Lesen aka USB" mglw. jeweils viele Datenblöcke?

Aber schön, dass es jetzt läuft.

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.06.2021, 15:30
Beitrag #12

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Hallo Ben,

Zitat:Die TDMS Datei erwartet ja dynamische Daten.
Ein klares NEIN!
Verwende nach Möglichkeit KEINE "dynamischen Daten" aka DDT-Drähte oder ExpressVIs…

Zitat:Meine Überlegung war es, die einzelnen Werte zu bündeln und über einen indizierten Kanal aus der Schleife nach jedem Durchlauf raus zu geben. Leider passt das Datei-Format dann nicht mehr. Ich möchte das ganze natürlich auch etwas entkoppeln, damit die Schleifendurchläufe nicht so verlangsamt werden.
Du meinst sicherlich einen "autoindizierenden Tunnel"…
Wenn du die einzelnen Werte vorher "bündelst", dann erzeugst du einen Cluster. Und der wird zu einem Array of Cluster am Schleifenrand. Und das wiederum versteht weder das TDMSWrite, noch das zugehörige ExpressVI!

Zitat:Wie würdet ihr hierzu vorgehen?
Ich würde mir mal die BeispielVIs zu TDMS anschauen und damit lernen, wie man (vernünftig) Daten in TDMS-Dateien speichert…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2021, 09:07
Beitrag #13

BenBaeumker Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jun 2021

2013
2017
DE


Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Sooooo ich habe alles hinbekommen und das Programm bereits erweitert. Läuft alles wunderbar soweit. Vielen Dank für eure Unterstützung bis hierhin Smile

Ich habe nun noch ein weiteres Anliegen:

1) Schönheitspunkt: Kann man die aufgenommenen Signale in der TDMS (bzw. im Header) benennen? meine zehn Signale heißen "undefined" bis "undefined_9".
Gibt es da eine Möglichkeit diese mit eigenen Bezeichnungen zu versehen?

Viele Grüße,
Ben
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2021, 09:22
Beitrag #14

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Hallo Ben,

Zitat:Sooooo ich habe alles hinbekommen und das Programm bereits erweitert. Läuft alles wunderbar soweit.
Schön!

Zitat:Schönheitspunkt: Kann man die aufgenommenen Signale in der TDMS (bzw. im Header) benennen? meine zehn Signale heißen "undefined" bis "undefined_9". Gibt es da eine Möglichkeit diese mit eigenen Bezeichnungen zu versehen?
Ja, man kann den Signalen in TDMS auch Namen geben…

Es wäre vielleicht hilfreich, wenn du uns mal zeigen würdest, wie dein VI momentan aussieht - dann würde man vielleicht auch erkennen, wo du noch nachbessern müsstest!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2021, 14:56 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2021 14:59 von BenBaeumker.)
Beitrag #15

BenBaeumker Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jun 2021

2013
2017
DE


Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
   

Hier mal mein derzeitiges Ergebnis. Es funktioniert super, bekomme jede ms ein Wertepaket (10 Messwerte aus String) in meine TDMS Datei


   
So hatte ich dann versucht die Kanalnamen noch einzufügen, hat auch funktioniert - allerdings bekomme ich nun nur noch ein Wertepaket (10 Messwerte) in meine TDMS, egal wie lange ich messe. Quasi nur der "letzte" Wert.


und so sieht es normalerweise dann in der TDMS aus:
   


und das ist meine TDMS mit Namen:
   


Ich schätze das Problem ist die Indizierung am Tunnel der While-Schleife... die brauche ich ja, damit meine Werte nach jedem Schleifendurchlauf in die TDMS geschrieben werden.

Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht mehr Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2021, 15:09 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2021 15:12 von GerdW.)
Beitrag #16

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Hallo Ben,

Zitat:Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht mehr
Genau!
Hau doch mal die ganzen Bäume weg, an denen "DDT" oder "ExpressVI" dransteht! Dann wird der Wald viel heller!!!

Zitat:Hier mal mein derzeitiges Ergebnis. Es funktioniert super, bekomme jede ms ein Wertepaket (10 Messwerte aus String) in meine TDMS Datei
Von "Code aufräumen" hälst du nicht viel?
Übersichtlicher Code ist viel besser lesbar…

Zitat:So hatte ich dann versucht die Kanalnamen noch einzufügen, hat auch funktioniert - allerdings bekomme ich nun nur noch ein Wertepaket (10 Messwerte) in meine TDMS, egal wie lange ich messe. Quasi nur der "letzte" Wert.
Das hat was mit den DDT-Drähten zu tun…

Zitat:Ich schätze das Problem ist die Indizierung am Tunnel der While-Schleife... die brauche ich ja, damit meine Werte nach jedem Schleifendurchlauf in die TDMS geschrieben werden.
Wenn du auf DDT-Drähte verzichten würdest, würde so manches einfacher werden…

Warum musst du Waveforms erstellen, die nur exakt ein Sample enthalten?
Warum musst du Waveform per MergeSignals zusammenführen? Warum kein BuildArray?
Warum in jeder Iteration erneut Waveforms erstellen, nur um Namen vergeben zu können?
Wieso überhaupt den Code 10fach duplizieren statt mit einer FOR-Loop zu arbeiten???
Warum Bilder anhängen, wenn du nach Code gefragt wirst?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.07.2021, 08:16
Beitrag #17

BenBaeumker Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jun 2021

2013
2017
DE


Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Zitat:Wenn du auf DDT-Drähte verzichten würdest, würde so manches einfacher werden…

Warum musst du Waveforms erstellen, die nur exakt ein Sample enthalten?
Warum musst du Waveform per MergeSignals zusammenführen? Warum kein BuildArray?
Warum in jeder Iteration erneut Waveforms erstellen, nur um Namen vergeben zu können?
Wieso überhaupt den Code 10fach duplizieren statt mit einer FOR-Loop zu arbeiten???
Warum Bilder anhängen, wenn du nach Code gefragt wirst?

Wie würde das Verzichten auf DDT Drähte denn aussehen? Ich hab mich da etwas an dem bisherigen Programm orientiert - bei dem über DAQmx ausgelesen wurde, da kamen auch immer Dynamische Daten raus Smile

Waveforms hatte ich aus einem Beispiel von google, das seh für mich am verständlichsten aus...
Signale zusammenführen hab ich bereits beides versucht, sowohl MergeSignals als auch Bündeln.
Wie würde das ganze mit einer For-Loop aussehen? Und wie kann ich den Code sinnvoll verschlanken?


Anbei das Programm Smile


Angehängte Datei(en)
13.0 .vi  SMP_Gesamt_v3_Kanelname.vi (Größe: 120,57 KB / Downloads: 130)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2021, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2021 08:52 von GerdW.)
Beitrag #18

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Hallo Ben,

Zitat:Waveforms hatte ich aus einem Beispiel von google, das seh für mich am verständlichsten aus...
Signale zusammenführen hab ich bereits beides versucht, sowohl MergeSignals als auch Bündeln.
Wie würde das ganze mit einer For-Loop aussehen? Und wie kann ich den Code sinnvoll verschlanken?
So z.B.:
   

Zitat:Wie würde das Verzichten auf DDT Drähte denn aussehen? Ich hab mich da etwas an dem bisherigen Programm orientiert - bei dem über DAQmx ausgelesen wurde, da kamen auch immer Dynamische Daten raus
Wo werden im "bisherigen" Programm denn DDT-Drähte verwendet? Das ist doch nur eine riesige Sequenz, in der mit einem FTDI-Konverter kommuniziert wird!?

Und ich kenne keine einzige DAQmx-Funktion, die mit DDT-Drähten arbeitet! (Der DAQAssistent ist ein "nur" ExpressVI, das wiederum auf DAQmx-Funktionen zurückgreift…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2021, 09:31 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2021 09:58 von BenBaeumker.)
Beitrag #19

BenBaeumker Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jun 2021

2013
2017
DE


Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Vielen Dank @GerdW Smile das hilft mir schon einmal sehr weiter. Ich habe gerade auch das ExpressVI für die TDMS durch TDMS Öffnen/Schreiben/Schließen ersetzt. Das funktioniert bereits, jetzt setze ich den Vorschlag mit der For-loop noch um.


Ich habe noch drei allgemeine Fragen :

1) Ich möchte eine Live-Ansicht meiner Messwerte in Graphen (für jeden Messwert ein Graph) darstellen. Ist es sinnvoll den Graphen in der While-Schleife anzubinden oder eher außerhalb? Stichwort Verarbeitungszeit...

2) Würdest du das Schreiben in die TDMS datei innerhalb der Schleife oder Außerhalb ansetzen?

3) Mein String enthält keinen "Zeitstempel". Ich würde in der TDMS jedoch gerne einen Zeitstempel für jedes Wertepaket einfügen. Aktuell ist quasi meine Anzahl an Schleifendurchläufe meine Zeitskala. Ich habe jedoch bedenken, dass bei hoher Systemauslastung Verzögerungen meine Messung verfälschen, den Schleifendurchlauf verlängern und hätte deshalb gerne einen "richtigen" Zeitwert zum Zuordnen in der TDMS Smile
Wie gehe ich hier am besten und vor allem Resourcen sparend vor? Ich arbeite ja im ms-Bereich, sprich jede ms ein Wertepaket.

Viele Grüße,
Ben
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2021, 10:55
Beitrag #20

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Messwerte aus UM232H (USB) jede ms in TDMS Datei schreiben
Hallo Ben,

Zitat:Ich möchte eine Live-Ansicht meiner Messwerte in Graphen (für jeden Messwert ein Graph) darstellen. Ist es sinnvoll den Graphen in der While-Schleife anzubinden oder eher außerhalb? Stichwort Verarbeitungszeit...
Jeder zusätzliche Indicator benötigt Rechenzeit. Und Anzeigen für größere Datenmengen brauchen noch mehr Zeit…
Du willst sicherlich mit Charts statt Graphen arbeiten, so wie bisher!? (Da ist ein Unterschied: LabVIEW-Basics!)

Zitat:Würdest du das Schreiben in die TDMS datei innerhalb der Schleife oder Außerhalb ansetzen?
Wenn die Schleife zum Lesen der Daten von der seriellen Schnittstelle zeitkritisch ist, würde ich in dieser Schleife keine Dateioperationen vornehmen!
Ich empfehle dir (dringend), einen Blick auf das Producer-Consumer-Schema zu werfen. LabVIEW bringt da Beispiele mit…

Zitat:Mein String enthält keinen "Zeitstempel". Ich würde in der TDMS jedoch gerne einen Zeitstempel für jedes Wertepaket einfügen. Aktuell ist quasi meine Anzahl an Schleifendurchläufe meine Zeitskala. Ich habe jedoch bedenken, dass bei hoher Systemauslastung Verzögerungen meine Messung verfälschen, den Schleifendurchlauf verlängern und hätte deshalb gerne einen "richtigen" Zeitwert zum Zuordnen in der TDMS Wie gehe ich hier am besten und vor allem Resourcen sparend vor? Ich arbeite ja im ms-Bereich, sprich jede ms ein Wertepaket.
Vorschläge:
- Lass dir von deiner Datenquelle einen Zeitstempel mitschicken. (Und wenn du dabei bist, auch gleich den gesendeten String anders formatieren: das hatten wir vor Wochen schon besprochen…)
- Lese den String vom seriellen Port und packe ihn mit einem Timestamp in einen Cluster (Producer-Loop). Den schickst du dann per Queue zu deinem Consumer, der den Cluster ausliest, den String auswertet und und die Daten in einer Datei speichert. (Evtl. noch Daten von dort dann in einen zweiten Consumer weiterleiten, der sich um die Anzeige auf dem UI kümmert…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datencluster als csv-Datei schreiben / Bessere Lösung ? Hachiko 3 3.084 28.08.2024 16:00
Letzter Beitrag: Kiesch
  Aus 2D-Array jede x-te Zeile in weiteres 2D-Array schreiben P.J. 5 6.337 13.11.2020 09:05
Letzter Beitrag: GerdW
  TDMS in .wav Datei Lexaeus 5 3.999 16.07.2020 15:21
Letzter Beitrag: Lexaeus
  TDMS-Datei mit XML header konvertieren Jarrao 6 6.817 23.03.2020 15:12
Letzter Beitrag: Jarrao
  String in Array speichern für flexible Gruppenbenennung in TDMS Datei hansi_1 3 4.065 10.12.2019 09:45
Letzter Beitrag: Freddy
  TDMS Datei Öffnen modes 8 6.844 26.11.2019 10:08
Letzter Beitrag: th13

Gehe zu: