Merker Remanent Speichern Beckhoff

Rifel

Level-1
Beiträge
43
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Folks,

Ich bin gerade dabei einen CX1030 zu programmieren und stoße auf ein kleines Problem:

Ich würde gerne einige Merker eines Projekts remanent speichern. Ich habe die Merker in den Globalen Variablen Deklaration zugewiesen und rufe sie in meiner ZenOn Visualisierung dann wieder auf und bearbeite Sie dort auch. Da sie aber Merker sind und keine festen I/O kann ich Sie ja nicht im System Manager ins NOV/DP Ram schreiben daher müsste es ja dann ne andere Lösung geben.
Sind Sie denn gespeichert/gesichert, wenn ich bei der Variablendeklaration nen Unterpunkt VAR_PRESISTENT einrichten würde und die zu speichernden Merker dort reinsetze?
Danke für die Hilfe hab grad nen Hänger-

Tom
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sind Sie denn gespeichert/gesichert, wenn ich bei der Variablendeklaration nen Unterpunkt VAR_PRESISTENT einrichten würde und die zu speichernden Merker dort reinsetze?
Ja, das geht. Aber nur, wenn der CX (vielmehr das Windows) auch "sauber" runterfahren kann. Nimmt man einfach Spannung weg sind auch die Daten der PERSISTENTen VARs weg.
Dann brauchst du ne USV.

Entweder du sicherst deine Werte indem du sie auf I/O-Variablen schreibst, die dann ins NOV-Ram verlinkt werden, oder du nimmst den entsprechenden Funktionsbaustein und schreibst damit deine Werte zyklisch (z.B. jede Sekunde) ins NOV-Ram.
 
Hi Nels, Trinitaucher,

vielen Dank erstmal für die Antworten, das mit dem Ordentlichen Runterfahren ist so ne Sache, es wird eigentlich mit Hauptschalter aus ausgeschaltet somit wären die presistenten dann weg.

wie heisst denn der Baustein mit dem ich Zyklisch ins Nov schreiben kann?

THX Rifel
 
Lösung

Hi,
also ich habe jetzt das Problem gelöst und möchte das hier noch kurz posten.
Ich habe jetzt die remanent zu speichernden Merker über die Variablendeklaration konkret als Ausgänge deklariert also zum Beispiel den Merker "Rifel" durch Rifel AT%Q*:BOOL; dann bin ich im Systemmanager auf mein NOV-RAM gegeangen und habe eine Variable hinzugefügt. Diese habe ich der Durchgängigkeit halber auch mit Rifel bezeichnet müsste ich aber nicht.
Diese erscheint dann unter Ausgänge im NOV-RAM. Jetzt habe ich über verknüpfen mit die variable Rifel aus dem PLC hinzugefügt. Das wars sie ist jetzt remanent-
Natürlich wäre auch eine Deklaration als Eingang möglich aber das ist bei Merkern ja eigentlich egal ob sie ein Eingang oder ein Ausgang sind...
 
Also dass mit den Remanenzen klappt ja jetzt wunderbar nur hab ich ein anderes Problem-
Ich versuche nen Zählwert (den Zählerstand einer Wasseruhr) zu speichern habe dazu den CV meines Couters ausgewählt und speichere diesen Remanet dass funktioniert solange, bis er von dem ersten Zählimpuls des Couters wieder auf 1 gesetzt wird.
Ich habe auch schon mit dem Support telefoniert die gaben mir den typ das mithilfe des firstcycles zu machen also im Main ne anweisung zu schreiben die mir den Wert der Remanent gespeichert wird in den Lesewert zu schreiben wenn die SPS hochfährt ich glaube aber nicht das dies den gewünschten erfolg bringt und weiß auch nicht genau wie die anweisung aussehen soll.
Gibt es da noch ne andere Lösung den Zählwert so zu speichern, dass nach dem Neustart von diesem Wert aus weitergezählt wird?
 
Mit den IEC-bausteinen geht das glaube ich nicht.

Du kannst dir ja selbst so etwas basteln:
Mit einer positiven Flanke zählst du einen Wert hoch. Den Wert selbst speicherst du remanent ab

Code:
VAR
   trig: R_TRIG;
   bTrigger: BOOL;  (* dein trigger *)
END_VAR
VAR PERSISTENT
   Counter: INT;
END_VAR
(************************)

trig(CLK := bTrigger);
IF trig.Q THEN
   Counter := Counter +1;
END_IF

Pack dir das ganze noch in einen schicken FB und fertig isses.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Ich versuche nen Zählwert (den Zählerstand einer Wasseruhr) zu speichern habe dazu den CV meines Couters ausgewählt und speichere diesen Remanet dass funktioniert solange, bis er von dem ersten Zählimpuls des Couters wieder auf 1 gesetzt wird.
...

Leg doch die Instanz des FBs in den remanenten Bereich:

Code:
VAR RETAIN PERSISTENT
    myCounter : CTU;
END_VAR
 
Zurück
Oben