Remanente Variablen - PERSISTENT, RETAIN
Remanente Variablen können ihren Wert über die übliche Programmlaufzeit hinaus behalten. Sie können remanente Variablen als RETAIN-Variablen oder noch strenger als PERSISTENT-Variablen im SPS-Projekt deklarieren.
Voraussetzung für die volle Funktionalität von RETAIN-Variablen ist ein entsprechender Speicherbereich auf der Steuerung (NovRam). Persistente Variablen werden nur beim Shutdown von TwinCAT geschrieben. Dazu bedarf es in der Regel einer entsprechenden USV. Ausnahme: Persistente Variablen können auch mit dem Baustein FB_WritePersistentData geschrieben werden.
Wenn es den entsprechenden Speicherbereich nicht gibt, gehen bei einem Stromausfall auch die Werte von RETAIN- oder PERSISTENT-Variablen verloren.
Die AT-Deklaration dürfen Sie nicht in Kombination mit VAR RETAIN oder VAR PERSISTENT verwenden. |
Persistente Variablen
Sie deklarieren persistente Variablen, indem Sie im Deklarationsteil von Programmierobjekten hinter dem Schlüsselwort für den Variablentyp (VAR, VAR_GLOBAL etc.) das Schlüsselwort PERSISTENT hinzufügen.
PERSISTENT-Variablen behalten ihren Wert nach einem unkontrollierten Beenden, einem Reset kalt oder einem erneuten Download des SPS-Projekts.
Bei einem erneuten Start des Programms arbeitet das System mit den gespeicherten Werten weiter. In diesem Fall initialisiert TwinCAT andere „normale“ Variablen neu, entweder mit ihren explizit vorgegebenen Initialwerten oder mit den Standardinitialisierungen.
TwinCAT initialisiert PERSISTENT-Variablen nur bei einem Reset Ursprung neu.
Ein Anwendungsbeispiel für persistente Variablen ist ein Betriebsstundenzähler, der nach einem Stromausfall und auch nach einem erneuten Download des SPS-Projekts weiter zählen soll.
Übersichtstabelle zum Verhalten von PERSISTENT-Variablen
Nach Online-Befehl | VAR PERSISTENT |
---|---|
Reset kalt | Werte werden beibehalten |
Reset Ursprung | Neuinitialisierung der Werte |
Download | Werte werden beibehalten |
Online-Change | Werte werden beibehalten |
Beispiel:
Persistente Variablenliste:
VAR_GLOBAL PERSISTENT
nVarPers1 : DINT; (* 1. Persistent variable *)
bVarPers2 : BOOL; (* 2. Persistent variable *)
END_VAR
|
RETAIN-Variablen
Sie deklarieren RETAIN-Variablen, indem Sie im Deklarationsteil von Programmierobjekten hinter dem Schlüsselwort für den Variablentyp (VAR, VAR_GLOBAL etc.) das Schlüsselwort RETAIN hinzufügen.
Als RETAIN deklarierte Variablen werden zielsystemabhängig, aber typischerweise in einem eigenen Speicherbereich verwaltet, der gegen Stromausfall gesichert sein muss. Der sogenannte Retain‑Handler sorgt dafür, dass die RETAIN-Variablen am Ende eines SPS-Zyklus und nur bei Änderung in den entsprechenden Bereich des NovRams geschrieben werden. Der Umgang mit dem Retain-Handler ist in der Dokumentation C/C++ im Kapitel „Retain Daten“ beschrieben.
RETAIN-Variablen behalten ihren Wert nach einem unkontrollierten Beenden (Spannungsausfall). Bei einem erneuten Start des Programms arbeitet das System mit den gespeicherten Werten weiter. In diesem Fall initialisiert TwinCAT andere „normale“ Variablen neu, entweder mit ihren explizit vorgegebenen Initialwerten oder mit den Standardinitialisierungen.
TwinCAT initialisiert RETAIN-Variablen neu bei einem Reset Ursprung.
Eine mögliche Anwendung ist ein Stückzähler in einer Fertigungsanlage, der nach einem Stromausfall weiter zählen soll.
Übersichtstabelle zum Verhalten von RETAIN-Variablen
Nach Online-Befehl | VAR RETAIN |
---|---|
Reset kalt | Werte werden beibehalten |
Reset Ursprung | Neuinitialisierung der Werte |
Download | Werte werden beibehalten |
Beispiele:
In einer POU:
VAR RETAIN
nRem1 : INT;
END_VAR
In einer GVL:
VAR_GLOBAL RETAIN
nVarRem1 : INT;
END_VAR
|
Gesamte Übersichtstabelle
Der Grad der Werteerhaltung von RETAIN-Variablen ist automatisch in der von PERSISTENT-Variablen enthalten.
Nach Online-Befehl | VAR | VAR RETAIN | VAR PERSISTENT |
---|---|---|---|
Reset kalt | Neuinitialisierung der Werte | Werte werden beibehalten | Werte werden beibehalten |
Reset Ursprung | Neuinitialisierung der Werte | Neuinitialisierung der Werte | Neuinitialisierung der Werte |
Download | Neuinitialisierung der Werte | Werte werden beibehalten | Werte werden beibehalten |
Online-Change | Werte werden beibehalten | Werte werden beibehalten | Werte werden beibehalten |
Siehe auch: