Skip to main content

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

. Werterhalt bei
  • Neustart der Steuerung

  • Unkontrolliertem Beenden (nur verfügbar bei Hardwareunterstützung wie einem NvRAM)

  • Aufruf des Befehls Reset warm

. Neuinitialisierung bei
  • 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