NOVRAM - Datenspeicher bei Stromausfall

forellengarten

Level-1
Beiträge
217
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Beckhoff CX9010, WinCE.

Ich habe einen Stunden und Zykluszähler, dessen Werte auch nach einem Stromausfall erhalten bleiben sollten.

RETAIN / PERSISTANT -soviel vorweg- ist dazu keine geegnete Lösung (laut Beckhoff Infosys).

Variablendeklaration:
Code:
(************************************ NovRam ****************************************)
 TotalTime, TotalCycles, safeme         AT%Q*: UDINT;
(************************************ Aussen ***************************************** *)

Ich verwende den NovRam und speicher Darin "TotalTime" und "TotalCycles". Ziehe ich nun den Netzstecker, so ist alles wieder auf 0, also so wie es NICHT sein soll.

Mache ich nun folgenden Versuchscode:
Code:
IF totaltime <> 0 THEN
 safeMe:=totaltime;
END_IF;

so bleibt die TotalTime in SafeMe nach Stromausfall gespeichert. Sieht also aus als würde beim Stromausfall aus irgendeinem Grund noch schnell eine "0" in meinen TotalTime/TotalCycles-Novram-Speicher geschrieben werden, anstatt die letzten Werte beizubehalten. Hat wer eine Idee warum das so sein könnte?
 
Das notwendige "Häkchen" im System Manager hast du also gesetzt?

Im ersten Zyklus werden die NovRam-Variablen mit den gesicherten Werte vorinitialiisert.
Pass auf, dass du die Ausgangsvariablen im ersten Zyklus nach Programmstart nicht überschreibst!

Ich nutze das NovRam mittlerweile nur noch mit den Funktionsbausteinen ReadWriteNovRam. Schreibe z.B. alle 10 Sekunden die Werte weg und nach einem Systemneustart im ersten Zyklus werden die Werte wieder gelesen. Erst danach wird der eigentliche Programmablauf gestartet.
 
Ich bin mir jetzt nicht ganz sicher, aber ich denke, dass bei der Variablendeklaration nur "SafeMe" im Ausgangs-Speicherbabbild angelegt wird. Versuche es mal so:
Code:
VAR
   TotalTime AT %Q*:UDINT;
   TotalCycles AT %Q*:UDINT;
   SafeMe AT %Q*:UDINT;
END_VAR
Das automatische Update der NOVRAM-Variablen als Ausgänge hat aber seine Tücken. Bei "Steuerung Stop" oder Ausfall von Feldbussegmenten werden die Ausgänge auf 0 gesetzt, und da rutschen dann auch schon mal Nullen in den NOVRAM. Die Lösung von trinitaucher mit ReadWriteNovRam ist auf jeden Fall besser.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin mir jetzt nicht ganz sicher, aber ich denke, dass bei der Variablendeklaration nur "SafeMe" im Ausgangs-Speicherbabbild angelegt wird. Versuche es mal so:
Code:
VAR
   TotalTime AT %Q*:UDINT;
   TotalCycles AT %Q*:UDINT;
   SafeMe AT %Q*:UDINT;
END_VAR
Das automatische Update der NOVRAM-Variablen als Ausgänge hat aber seine Tücken. Bei "Steuerung Stop" oder Ausfall von Feldbussegmenten werden die Ausgänge auf 0 gesetzt, und da rutschen dann auch schon mal Nullen in den NOVRAM. Die Lösung von trinitaucher mit ReadWriteNovRam ist auf jeden Fall besser.

das mit dem Variablen paßt schon so wie ich das geschrieben hatte. Zumindest deutet nichts darauf hin daß das nicht so wäre. Ich denke mittlerweile auch daß die Lösung von trinitaucher die beste ist (da weiß man wenigstens was passiert).
 
Zurück
Oben