Daten auf der SD-Karte nach 30 Tagen löschen

ukemnitz

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich will ein Programm schreiben, welches jeden Tag eine neue Datei erstellt und nach 90 Tagen die alten Dateien wieder löscht. Das Erstellen der Dateien stellt kein Problem dar und eine Bibliotheksfunktion zum löschen habe ich gefunden. Ich suche nach einer Inspiration/Idee wie ich raus finde welche Daten auf der SD-Karte sind bzw. wie alt diese sind, ohne das ich selber ein Logfile erstellen muss, in welchem ich mir die Dateien merke welche ich erstellt habe.

Eventuell ein Hinweiß auf eine bestehende Bibliothek.(Suchfunktion oder fertiger Logger oder ähnliches)

MfG

Uwe
 
Hallo Uwe,

willkommen im SPS- Forum. Prima dass du bereits selbst einen Ansatz erarbeitet hast. Bedauerlicherweise ist das nicht mehr selbstverständlich.

Mit welcher Steuerung arbeitest du?
Welche Bibliothek hast du bereits gefunden?

Unabhängig davon würde ich dir davon abraten, die Logfiles wieder mit der SPS zu löschen.
Angenommen jemand verstellt das Datum der Steuerung – schwups – weg sind die Daten. Davon abgesehen kann es noch 100 andere Eventualitäten geben auf die du keinen Einfluss hast.

Sofern es sich um kleine tägliche Dateien geht, bin ich dazu übergegangen, das Datum in die Dateinamen zu übernehmen. Bei einem 2GB Stick kannst du bei 100kB täglich ~50 Jahre protokollieren, ohne je mal was zu löschen! Wenn du bei Jahreswechsel je einen neuen Ordner vorsiehst, bleibt das auch recht übersichtlich...

Wenn es doch mit löschen umgesetzt werden muss (Stures Pflichtenheft, Betriebsdauer > 50 Jahre, ;)…) ist ein Ringpuffer ideal.

Beispiel:

  • Die ersten 3 Ziffern vom Dateinamen stehen für die Nummer vom Ringzähler.
    '001_Log_2012-04-10.csv'
  • Die Steuerung merkt sich nur remanent den aktuellen Ringzähler.[FONT=Arial, sans-serif][/FONT]
  • [FONT=Arial, sans-serif]Diesen Ringzähler zählst du bei jedem Datumswechsel um eine Stelle hoch, sofern der Puffer nicht überläuft. Bei Überlauf wird der Zähler zurückgesetzt.[/FONT]
  • Am besten sperrst du das hochzählen anschließend für eine Stunde, falls jemand manuell das Datum verstellt...
  • Bei der Flanke vom Datumswechsel prüfst du, ob eine Datei mit der Nummer vom Ringzähler bereits existiert. Wenn ja, wird sie gelöscht.
  • Anschließend werden die aktuellen Daten mit selber Nummer am Anfang geschrieben...

Gruß
Chräshe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal danke für die Hilfe und das Kompliment selbstständig denken zu können,

als System ist eine Wago 750-880 vorgesehen aber der Baustein soll universell einsetzbar sein, wobei ich nicht davon ausgehe das wir das Wagosystem verlassen. Als Bibliothek nutze ich dafür bereits die "SysLibFile.lib". Ich erstelle jeden Tag eine neue Datei mit Datumstempel im Namen, wobei das mit den Ordnern eine Gute Idee ist.
ftp://ftp.moeller.net/AUTOMATION/DOWNLOAD/MANUALS/DEUTSCH/SOFTWARE/XSOFT_PROFESSIONAL/XSoftSysLibs/Ordner%20Pdf-Dateien/syslibfile.pdf

M
it der Aufzeichnungszeit hast zu recht, bei ca. 100byte/Min sind mit der Karte über 20 Jahre drinn. Das ist aber Vorgabe nur die letzten 90 Tage zu behalten. Ich bin am Überlegen, ob ich eine Extra Datei mit einer Dateiliste anlege da ein Stringarray[90] über ein Kbyte im Speicher wegnehmen würde und nach einem Neustart wieder weg währe.

Für die Idee mit dem Ringzähler müsste ich ja irgendwie auf das Dateisystem zugreifen um den Vollständigen Dateinamen zu erfahren und den Zähler irgendwie Remanaent/Retain Speichern, wie das geht steht ja im Handbuch.

Ich denke ich muss bei dem bisherigen Programm noch einiges ändern, damit das so gehen kann. Im Moment erstelle ich jede Minute den Dateinamen neu und Öffne mit Append. wenn der Name dann anders ist erstellt er automatisch eine neue Datei. So einfach habe ich mir das bis jetzt gemacht aber das muss ich wohl sowieso ändern.

Naja ersteinmal Danke ich muss erstmal drüber nachdenken.

MfG

Uwe
 
  • Am besten sperrst du das hochzählen anschließend für eine Stunde, falls jemand manuell das Datum verstellt...
Gibt es da was fertiges zum Sperren? Wobei ich den Fehler denke ich ignorieren werde das sind es halt pro Datum Verstellen eine Datei weniger.

  • Bei der Flanke vom Datumswechsel prüfst du, ob eine Datei mit der Nummer vom Ringzähler bereits existiert. Wenn ja, wird sie gelöscht.
Bei den prüfen hänge ich jetzt fest ansonsten denke ich müsste ich weiterkommen.

Gruß Uwe
 
Hallo Uwe,

wie heißt denn der Baustein, der dem FB_EnumFindFileEntry entspricht?
Es ist immer schön, wenn man am Ende eines Themas eine Lösung findet, oder wenigstens den Hinweis, dass der Themenstarter sein Vorhaben verworfen hat.

Rückmeldungen wie „Hat sich erledigt“, oder „Jetzt geht es“ sind nicht so hilfreich... ;)

Gruß
Chräshe
 
Das ist der Baustein SysLibDir.lib zum durchsuchen von Ordnern. Zum löschen gibt es eine Funktion im SysLibFile aber soweit diese Funktion zu testen bin ich im Moment noch nicht. Das mit dem Ordner auslesen funktioniert aber schon. Wie weit er aber dem FB_EnumFindFileEntry entspricht kann ich nicht sagen, ich weiß nur dass er für meine Zwecke optimal ist und ich jetzt zumindest schonmal einen Stringarray mit Dateinamen im Speicher habe.

Gruß Uwe
 
Zurück
Oben