Daten mit Retain-Variablen erhalten
Retain-Variablen behalten ihren Wert nach einen Warmstart. Der Grad der Werteerhaltung ist bei persistenten Variablen aber höher.
Für die Verlängerung der Lebensdauer ist ein spezieller nichtflüchtiger Speicherbereich auf der Steuerung nötig, beispielsweise als NVRAM oder USV. Das Sichern der Retain-Variablen in einem solchen Speicher erfordert keinen zusätzlichen Zeitbedarf, was ein Vorteil gegenüber dem Datenerhalt mit Persistence Manager ist. Wenn die Steuerung keine Hardware-Unterstützung bietet, werden die Daten üblicherweise in einer Datei gespeichert. Dann bleiben die Daten zwar erhalten, wenn Sie die Steuerung korrekt herunterfahren. Bei einem Stromausfall oder einem „Stecker ziehen“ kommt es aber zum Datenverlust.
Deklaration
Um eine Retain-Variable zu deklarieren, fügen Sie einer Variablendeklaration das Schlüsselwort RETAIN
hinzu.
Verhalten
Neustart der Steuerung
Unkontrolliertem Beenden (nur verfügbar bei Hardwareunterstützung wie einem NvRAM)
Aufruf des Befehls Reset warm
Erneutem Download der Applikation
Aufruf des Befehls Reset kalt (im Gegensatz zu persistenten Variablen)
Aufruf des Befehls Reset Ursprung
Wenn Sie eine Applikation neu starten, werden deren Variablen üblicherweise mit einem explizit vorgegebenen Initialwerten oder mit einem Standardwert initialisiert. Variablen, die mit dem Schlüsselwort RETAIN
gekennzeichnet sind, werden zielsystemabhängig in einem eigenen Speicherbereich verwaltet und behalten ihren Wert. Die Variablen sind so beispielsweise gegen Stromausfall geschützt. Sie können Retain-Variablen also bei einem Stückzähler in einer Fertigungsanlage anwenden, um auch nach einem Stromausfall weiterzählen zu können.
Speicherlokation von Retain-Funktionsbaustein-Instanzen
Funktionsbaustein-Instanzen liegen am Stück im Speicher. Das ist notwendig, damit der gleiche Code auf verschiedenen Instanzen arbeiten kann. Wenn nun eine Variable in einem Funktionsbaustein mit RETAIN
gekennzeichnet ist, dann wird jede Instanz des Funktionsbausteins mit allen Variablen gesichert. Auch die Variablen des Funktionsbausteins, die nicht so gekennzeichnet sind. Nichtflüchtiger Speicher steht aber nicht in gleichem Maß zur Verfügung wie Arbeitsspeicher.
Ein Funktionsbaustein, der als Variable einen Pointer auf eine Instanz im SRAM hat, wird nicht im gesicherten Speicher abgelegt.
Import von CoDeSys V2.3-Projekten
Wenn Sie ein CoDeSys V2.3-Projekt öffnen, um es in CODESYS V3 zu importieren, bleiben die Deklarationen von Retain-Variablen erhalten und sind unverändert wirksam.
Für weitere Informationen siehe RETAIN
und V2.3-Projekt öffnen