Speichern von Logfiles

MasterOhh

Level-3
Beiträge
1.600
Reaktionspunkte
407
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo allerseits!

Ich habe eine CX9000 von Beckhoff, auf der neben meinem Steuerungsprogramm auch ein selbstgeschriebenes (C#) HMI läuft.
Das HMI dient auch gleichzeitig als Datenlogger und speichert jede Sekunde diverse Prozess- und Anlagenzustände in ein Logfile.
(ca. 86000 Datensätze pro Tag und Datei, die Daten sind bitcodiert und damit recht sparsam im Speicherplatz (ca. 900kB pro Datei))

Derzeit ist es so, dass ich die Daten direkt sekündlich in die aktuelle Logdatei auf einen USB-Stick schreibe, der in der CX9000 steckt. Da mir vor einiger Zeit dieser Stick verreckt ist, habe ich mir so meine Gedanken über dieses Problem gemacht (Stichwort: begrenzte Schreibzyklen auf Flashspeicher).

Ich habe einige Lösungsansätze zwischen denen ich mich nicht so recht entscheiden kann. Vieleicht hat jemand von euch eine Idee welche Lösung die beste ist, oder einen anderen Vorschlag....

1. Statt auf einen USB-Stick kann ich die Daten auch einem Server im Netzwerk schieben.

2. a) Daten sofort schreiben <--> b) Daten im RAM sammeln und nur ein oder zweimal am Tag speichern.
a) hat den Vorteil das die Daten gleich sicher sind, auch wenn die Steuerung mal ausfällt (hab keine USV), aber den Nachteil der vielen Schreibzugriffe.
b) hier schreibe ich große Blöcke am Stück (wenig schreibzugriffe), dafür sind die letzten Daten weg, wenn die SPS mal abschmiert.

Macht es eigentlich einen Unterschied auf für die Alterung von Flashspeicher ob man die Daten in vielen kleinen Blöcken oder in wenigen großen Blöcken speichert?

Wenn ich weiterhin die Daten sofort schreibe, was ist da besser: Datei öffnen -> Schreiben -> Datei schließen -> Datei öffnen -> Schreiben ......
oder Datei öffnen -> schreiben -> schreiben -> schreiben -> Datei schließen

Momentan überlege ich einfach alles sofort auf den Stick zu schreiben (wie gehabt) und dann ein mal am Tag ein Backup auf den Server zu kopieren.


Für Anregungen/Vorschläge/Meinungen wäre ich sehr dankbar!
 
Ich würde Variante 2 b) nehmen, die Daten jedoch im NOVRAM speichern, um einen Verlust bei "SPS off" zu vermeiden. Der CX9000 ist da mit 128 kB doch recht grosszügig bestückt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich aus meinem C# Programm auf den NOVRAM zugreifen um da beliebige Daten zwischen zu speichern? Die Betonung liegt hier auf beliebig, denn der Datenlogger ist über das HMI frei konfigurierbar, ich weiss somit nicht im Vorfeld welche Daten geloggt werden.
Soweit ich das mitbekommen habe müssen die Variablen aus dem SPS Programm im Systemmanager mit dem NOVRAM verknüpft werden....

Wenn ich natürlich direkt von Außen auf diesen Speicherbereich zugreifen könnte um da meine Bitstreams rein zu schreiben wäre eine Möglichkeit die Dateioperationen zu begrenzen, wenn auch etwas umständlich.

Ich schau mir das mal an!
 
Wie genau funktioniert das loggen?

schreibst du immer in der gleichen Datei rum? oder liegen später zig hundert Dateien auf dem USB-Stick?

Grüße

Marcel
 
Der Logger erzeugt jeden Tag stich 0:00 eine neue Datei. Theoretisch würde ich also 365 Logfiles pro Jahr bekommen. Ich kann dem Datenlogger aber auch vorgeben das er alte Dateien automatisch löschen soll. Dann habe ich quasi ein Schieberegister. Diese Funktion ist aber derzeit noch nicht aktiv, da ich immernoch hin und wieder an der Anlage herumoptimiere und dann gerne die alten Daten mit den Neuen abgleiche um zu ermitteln was sich verschlimmbessert hat.
Später sollen dann nur noch die Daten der letzten 30 Tage, oder so, vorgehalten werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich aus meinem C# Programm auf den NOVRAM zugreifen um da beliebige Daten zwischen zu speichern? Die Betonung liegt hier auf beliebig, denn der Datenlogger ist über das HMI frei konfigurierbar, ich weiss somit nicht im Vorfeld welche Daten geloggt werden.
Soweit ich das mitbekommen habe müssen die Variablen aus dem SPS Programm im Systemmanager mit dem NOVRAM verknüpft werden....

Wenn ich natürlich direkt von Außen auf diesen Speicherbereich zugreifen könnte um da meine Bitstreams rein zu schreiben wäre eine Möglichkeit die Dateioperationen zu begrenzen, wenn auch etwas umständlich.

Ich schau mir das mal an!
Ich war davon ausgegangen, dass die zu loggenden Daten aus der PLC kommen, aber das scheint ja nicht der Fall zu sein. Man kann aus der PLC heraus per ADS auf den NOVRAM zugreifen. Ob das dann auch von einem externen Programm aus möglich ist, weiss ich nicht, dazu kenne ich mich in dem Bereich nicht gut genug aus.
 
Also das du nicht immer das gleiche File nutzt ist schonmal gut.
D.H. dein Stick wird nicht so verheizt, da ja nicht immer auf die gleichen Speicherzellen geschrieben wird (Außer das File wird immer ganz neu erzeugt, dann gibt es halt an dem Tag auf alle Speicherzellen jede Sekunde nen Schreibzugriff)...

Wie lang hat der denn jetzt durchgehalten?

Grüße

Marcel
 
Der erste Stick hat 2 Monate durchgehalten. Wobei ich natürlich nicht mit Gewissheit sagen kann, dass mein Datenlogger Schuld an seinem frühen Ableben ist. Vieleicht war er einfach nur ein Montagsprodukt. Der aktuelle Stick ist jetzt schon über 3 Monate im Einsatz.....

Ich werd mich mal mit Wireshark ransetzen und schauen was das für Traffic verursacht, wenn ich direkt über das Netzwerk auf den Server schreibe. Sollten ja eigentlich nur ein paar Byte jede Sekunde sein, da gibt es viel schlimmere Dienste, die mehr Daten im Ethernet herumposaunen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ohne die Beckhoff-Kiste genauer zu kennen: Novram ist meist nichts anderes als ein Flash-Speicher (es sei denn das Ding puffert per Gold-Cap und speichert erst bei Stromausfall in den Flash oder aber speichert generell per Batterie). Will sagen: Vorsicht: nicht dass hinterher der interne (nicht selbst auswechselbare) Speicher kaputtgeht statt dem billigen Stick.
Würde eher nur selten (1 mal pro Tag) auf den Stick schreiben, alternativ direkt auf's Netzwerk, hängt aber davon ab was wahrscheinlicher ist: CPU-Stop der Netzwerkausfall. Die Netzwerkvariante hat zudem den Vorteil dass der Weg zur Steuerung eingespart werden kann um an die Daten zu kommen.
 
Ram

Würde eher nur selten (1 mal pro Tag) auf den Stick schreiben, alternativ direkt auf's Netzwerk, hängt aber davon ab was wahrscheinlicher ist: CPU-Stop der Netzwerkausfall. Die Netzwerkvariante hat zudem den Vorteil dass der Weg zur Steuerung eingespart werden kann um an die Daten zu kommen.

Sehe ich auch so, Daten über den Tag im Ram halten wenn es nicht zu kritisch ist und dann einmal am Stück alles schreiben.

Wenn allerdings Datenverlust eine Katastrophe bedeutet über das Netzwerk kontinuierlich abspeichern. Dazu einmal am Tag öffen, immer wieder Schreiben und irgendwann am Ende erst schliessen.
 
Zuletzt bearbeitet:
Zurück
Oben