Strategiefrage Datenlog mit variabler Länge auf Rasperi pi

Horscht

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich benötige eine Empfehlung was am sinnvollsten ist.
Ich programmiere gerade ein Messgerät auf Basis Pasperi pi 4 mit Codesys 3.5.
Mit dem Messgerät wird ein Datenlog über Druck und Temperatur erstellt.
Das Logfile wird letztlich als .csv abgespeichert.
Jetzt die Herausforderung, die Messpunkte und die Messdauer sind variabel.
Es werden Messpunkte von 1ms - 1Min einstellbar sein.
Der Messzeitraum wird von 0 - 24h liegen.
Das heißt, es ergeben sich Datensätze von unterschiedlichen Größen.
Jetzt zu meiner Frage.
Ich könnte bei langsamen Messungen jeweils den Datensatz direkt raus schreiben,
stehe aber vor dem Problem, dass die lese/schreib Zyklen auf der SD begrenzt sind und ich irgendwann die Karte crashe.
Bei schnellen Messungen könnte ich ein dynamisches Array deklarieren und dann die Daten mit 1x raus schreiben.
Hier habe ich aber die Befürchtung, dass ich bei einen zu großen ARRAY einen Speicherüberlauf erzeuge.

Wie hättet ihr das gelöst?

mfg.

Horscht
 
Zuviel Werbung?
-> Hier kostenlos registrieren
n Anzahl an Datenpunkten festlegen und diese dann je nach den festgelegten Parametern für Zeitraum und Messpunkt füllen, wenn voll dann auf die SD Karte damit, Zeitstempel dran.., Array leeren und weitermessen (hier könnte man dann zB 24h möglich machen), Option ob automatisch weiter aufgezeichnet werden soll oder nicht vorsehen.

Noch einfacher wäre es, den aktuellen Messwert zyklisch an eine Datenbank übers Netz zu schicken (in Betrachtung von Zeitraum und Messpunkt und Aufzeichnungsdauer)
 
Also,
den Meszeitraum bei 1ms werde ich schon auf max 1 Min begrenzen.
Die Funktion benötige ich nur für Referenzkurven, für spätere Berechnungen.
Den Eigentlichen Datenlog, benötige ich dann für die Gesamtprozesszeit. Da reicht auch eine sekündliche Abtastrate.
Dynamische Arrays sind in Codesys möglich (FB > ARRAY [*] OF REAL;).
Das Array zu befüllen und dann rauszuschreiben, habe ich mir auch schon überlegt.
Das Problem ist nur, das Schreiben kostet Zeit.
Ich hatte eine Messaufgabe, da hat es 30sek gedauert.
Hier würde es bedeuten, das beim scheiben kann nicht gemessen werden kann (Blindflug).
Datenbank Anbindung könnte man über OPCUA realisieren, hab aber von beiden keine Ahnung :-(
Allerdings die Idee mit dem ARRAY füllen und dann rausschreiben, ist doch nicht so schlecht.
Ich könnte ja mit 2 arbeiten, Eins befülle ich und das andere schreibt raus...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Allerdings die Idee mit dem ARRAY füllen und dann rausschreiben, ist doch nicht so schlecht.
Ich könnte ja mit 2 arbeiten, Eins befülle ich und das andere schreibt raus...
Hätte ich jetzt auch vorgeschlagen, Arbeitsbereich wird mit den Messpunkten gefüllt, ist dieser voll, schieben in den Sendebereich - Arbeitsbereich abnullen und weitermessen, parallel dazu Sendebereich abschicken.
 
Zurück
Oben