18.06.2021, 10:46
Servus zusammen,
ich versuch aktuell einen besseren Datenlogger für unsere hauseigenen Geräte zu programmieren.
Aktuell werden die geloggten Befehle hintereinander an das Gerät geschickt und wenn alle Ergebnisse da sind, wird das in eine Logdatei geschrieben.
So eine Abfrage dauert zwischen 300 und 600 ms, wenn ich dann 5 Befehle abfrage können das auch mal 3 s sein zwischen den geloggten Werten. An sich bekomme ich nicht mehr aus einem Gerät, der Datenlogger soll aber mehrere Geräte in eine Datei loggen können, mit unterschiedlichen Befehlen. Wenn dann ein Gerät parallel nur 2 Befehle loggt, wird das unnötige Pausen haben, das würde ich beim neuen Logger gerne vermeiden.
Ich habe mich ein wenig in TDMS und Waveform eingelesen und damit rumgespielt. Waveform passt nicht wirklich, weil die dt fest ist (mehr dazu später). TDMS habe ich noch nicht richtig hinbekommen, dazu habe ich mal 3 tdms-Dateien angehängt.
Ich generiere mir ein paar Zufallszahlen mit zufälligen Zeitabständen und speichere diese in verschiedenen Gruppen und Kanälen.
[attachment=61969] - Zusätzlich zum Wert, wurde danach der Kanal 'Time' mit nem Zeitstempel eingetragen.
-> Zeiten sind nicht mit den Werten verknüpft.
[attachment=61970] - Bei jedem Wert wurde mit Build Array ein Kanal und Wert vorher die Zeit mit Stempel eingefügt.
-> Es gibt nur noch den Kanal Zeit, und die Werte stehen ohne ID (Kanalname) untereinander.
[attachment=61971] - Wert wurde als Waveform mit immer neuem t0 gespeichert
-> sieht im TDMS File Viewer super aus, in Excel stehen da aber keine Zeiten bei den Werten.
Habe ich da einen Denkfehler oder etwas falsch verstanden? Ich habe die tdms Dateien einfach danach mal in Excel geöffnet.
Eine Idee habe ich noch, weiß aber nicht wie ich die umsetzen soll:
Ich speichere alles wirklich als richtige Waveform und sammel die Daten für 1s (dt) und schreibe dann die gesammelten Daten in dieser Zeit weg, leere die Daten und sammel wieder für 1s.
Hier hat sich aber mit der Hitze mein Kopf abgeschalten und ich habe keine Idee wie ich diese 1s einhalte/abfrage zum wegschreiben.
Hier bin ich für Tipps dankbar
Das angehängte Programm ist nur zum Testen für mich aus der Producer-Comsumer Vorlage zusammengeklickt und extra ohne SubVIs um es einfach hochladen zu können
MfG Timo
ich versuch aktuell einen besseren Datenlogger für unsere hauseigenen Geräte zu programmieren.
Aktuell werden die geloggten Befehle hintereinander an das Gerät geschickt und wenn alle Ergebnisse da sind, wird das in eine Logdatei geschrieben.
So eine Abfrage dauert zwischen 300 und 600 ms, wenn ich dann 5 Befehle abfrage können das auch mal 3 s sein zwischen den geloggten Werten. An sich bekomme ich nicht mehr aus einem Gerät, der Datenlogger soll aber mehrere Geräte in eine Datei loggen können, mit unterschiedlichen Befehlen. Wenn dann ein Gerät parallel nur 2 Befehle loggt, wird das unnötige Pausen haben, das würde ich beim neuen Logger gerne vermeiden.
Ich habe mich ein wenig in TDMS und Waveform eingelesen und damit rumgespielt. Waveform passt nicht wirklich, weil die dt fest ist (mehr dazu später). TDMS habe ich noch nicht richtig hinbekommen, dazu habe ich mal 3 tdms-Dateien angehängt.
Ich generiere mir ein paar Zufallszahlen mit zufälligen Zeitabständen und speichere diese in verschiedenen Gruppen und Kanälen.
[attachment=61969] - Zusätzlich zum Wert, wurde danach der Kanal 'Time' mit nem Zeitstempel eingetragen.
-> Zeiten sind nicht mit den Werten verknüpft.
[attachment=61970] - Bei jedem Wert wurde mit Build Array ein Kanal und Wert vorher die Zeit mit Stempel eingefügt.
-> Es gibt nur noch den Kanal Zeit, und die Werte stehen ohne ID (Kanalname) untereinander.
[attachment=61971] - Wert wurde als Waveform mit immer neuem t0 gespeichert
-> sieht im TDMS File Viewer super aus, in Excel stehen da aber keine Zeiten bei den Werten.
Habe ich da einen Denkfehler oder etwas falsch verstanden? Ich habe die tdms Dateien einfach danach mal in Excel geöffnet.
Eine Idee habe ich noch, weiß aber nicht wie ich die umsetzen soll:
Ich speichere alles wirklich als richtige Waveform und sammel die Daten für 1s (dt) und schreibe dann die gesammelten Daten in dieser Zeit weg, leere die Daten und sammel wieder für 1s.
Hier hat sich aber mit der Hitze mein Kopf abgeschalten und ich habe keine Idee wie ich diese 1s einhalte/abfrage zum wegschreiben.
Hier bin ich für Tipps dankbar
Das angehängte Programm ist nur zum Testen für mich aus der Producer-Comsumer Vorlage zusammengeklickt und extra ohne SubVIs um es einfach hochladen zu können
MfG Timo