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!
Ich möchte meine Daten in eine .tdms-Datei schreiben. Zusätzlich zu den Daten brauche ich aber noch den Zeitverlauf. Das angehängte VI zeigt meine bisherige Vorgehensweise. Nun habe ich ein Problem festgestellt:
Angenommen ich möchte in diesem VI die Zeit in 0,001s Schritten hochzählen. Also habe ich Warten auf Vielfaches von ms auf 1 gesetzt. Prinzipiell funktioniert das auch, das Problem ist allerdings, dass in der 7./8. Nachkommastelle eine von Null verschiedene Ziffer auftaucht, die ebenfalls langsam nach oben zählt (ohne erkennbares Muster). Dieser Fehler wird über die Laufzeit immer größer und kommt irgendwann in den Bereich, der mich eigentlich interessiert.
Ja, dass mit der Darstellung von Gleitkommazahlen war mir bekannt. Da es in den Daten allerdings so aussah, als ob sich das summiert/aufschaukelt, wollte ich mal nachfragen.
Wenn ich den Zeitstempel direkt abspeichere bekomme ich aber die blöde Darstellung mit Datum. Ich will ja nur die Messzeit in Sekunden.
OK, verstehe das mit der Messzeit. Da musst du mit den Ungenauigkeiten der Gleitkommazahl leben.
Schau dir die Ergebnisse nochmal genau an, IMHO darf sich da nichts aufsummieren, allerhöchstens unregelmäßig schwanken.
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!
Zitat:Also habe ich Warten auf Vielfaches von ms auf 1 gesetzt. Prinzipiell funktioniert das auch, das Problem ist allerdings, dass in der 7./8. Nachkommastelle eine von Null verschiedene Ziffer auftaucht, die ebenfalls langsam nach oben zählt
Wenn du eine Schleife programmierst mit einem Timing von 1ms und dein Code in dieser Schleife braucht länger (wie es bei Dateioperationen durchaus üblich ist), dann könnte es passieren, dass du mal die eine oder andere Millisekunde überspringst… Die Differenz deiner beiden Timestamps wird sich deshalb wohl nicht gleichmäßig in 1ms-Schritten erhöhen. Dazu kommt dann noch die schon angesprochene begrenzte Genauigkeit von Floatzahlen.
Mögliche Lösung (für das erste Problem): Producer-Consumer-Schema verwenden!
Ich habe die Wartezeit erhöht. Zur Visualisierung habe ich von der, in die Datei geschrieben, Zeit die "Sollzeit" (z.B. 0,005; 0,01; 0,015; etc.) abgezogen. Die Abweichung zeichnet ein sich wiederholendes Sägezahlmuster. Es kann sein, dass bei den Zeitschritten von 0,001 zu wenige Daten vorlagen und ich daher nur eine aufsteigende Flanke gesehen habe. Allerdings ist es tatsächlich so, dass einzelne Werte zu fehlen scheinen... also werde ich mal mit der Producer-Consumer-Methodik beschäftigen....
Allerdings frage ich mich dann, wie das Express-VI "Werte schreiben", das mit den dynamischen Daten hinbekommt? Liegt das daran, dass es die Samplerate für die Zeitachse zu Grunde legt?
Zitat:Allerdings frage ich mich dann, wie das Express-VI "Werte schreiben", das mit den dynamischen Daten hinbekommt? Liegt das daran, dass es die Samplerate für die Zeitachse zu Grunde legt?
Gut erkannt. Dort wird (meist) mit Waveforms gearbeitet, die "nur" t0 und dt enthalten…