Die Lebensdauer von Variablen und deren Daten reicht vom Zeitpunkt, an dem eine Variable erzeugt wird, bis zu dem Zeitpunkt, zu dem sie gelöscht und ihr Speicherplatz wieder freigegeben wird. Der Zeitpunkt der Variablenerzeugung, Initialisierung oder Instanzierung hängt vom deklarierten Gültigkeitsbereich ab. Der Zeitpunkt der Speicherfreigabe üblicherweise auch. Beispielsweise wird der Speicher von globalen Variablen mit Beenden der Applikation freigegeben.
Sie können Daten länger als üblich erhalten. Dafür stehen Ihnen folgende Mechanismen zur Verfügung.
Mechanismen zur Datenerhaltung
-
(A): Persistente globale Variablenliste
mit dem Schlüsselwort
PERSISTENT RETAIN
Die persistenten Variablen behalten bei einem erneuten Laden der Applikation ihren Wert. Auch nach einem Download, Warmstart, oder Kaltstart werden die Werte wiederhergestellt.
-
(B): Retain-Variablen mit dem Schlüsselwort
RETAIN
Die Retain-Variablen behalten ihren Wert nach einem Warmstart, nicht aber bei einem erneuten Laden der Applikation, einem Download oder Kaltstart.
-
(C): Variablen des Persistence Managers des CODESYS Application Composer
Die Variablen des Persistence Managers werden in einer externen Datei gesichert.
-
(D): Rezepturvariablen
Rezepturvariablen und ihre Werten werden in der Rezepturdatei gesichert.
Mechanismen im Vergleich
Welcher Mechanismus ist bei welchem Anwendungsfall geeignet? In der Tabelle werden einige übliche Anwendungsfälle betrachtet. Die konkreten Beispiele beziehen sich auf eine Haussteuerung.
Anwendungsfall |
(A) Persistente Variablen |
(B) Retain-Variablen |
(C) Variablen des Persistence Manager |
(D) Rezepturvariablen |
|
---|---|---|---|---|---|
1 |
Die Applikation muss Geräteeinstellungen erhalten. Beispiel: Die Haussteuerung muss nach einem Stromausfall die Information, wie lange eine Jalousie für ihr Hochfahren benötigt, zur Verfügung haben. |
Geeignet1 Bevorzugter Anwendungsfall Sie können in diesem Fall statt persistenter Variablen auch Retain-Variablen verwenden. Das ist bei Variablen vorteilhaft, deren Deklaration oft geändert wird. |
Geeignet Bevorzugter Anwendungsfall Retain-Variablen sind vorteilhaft, wenn deren Deklarationen oft geändert werden. |
Geeignet2 Vorteilhaft bei Steuerungen, die über keine Hardwareunterstützung verfügen. Spezielle Funktionalitäten wie Double File Buffering ermöglichen dies. |
Möglich, aber sehr umständlich und deshalb nicht empfehlenswert. |
2 |
Die Applikation muss Werte auch nach Programmänderungen oder -erweiterungen erhalten. |
||||
2a: Seltene Erweiterungen Beispiel: Ein Applikationsprogrammierer erweitert das Programm um einen neuen Schalter und baut ein neues Licht ein. Die Haussteuerung muss bis dahin gesicherte Werte danach noch zur Verfügung haben. |
Geeignet 1 Bevorzugter Anwendungsfall |
Geeignet |
Geeignet2 |
Möglich, aber umständlich. |
|
2b: Freiere Änderungen, auch Löschen oder Ändern des Datentyps von Variablen Die Haussteuerung läuft und ist persistiert. Wenn ein Applikationsprogrammierer die Steuerung um eine neue Funktionalität und deswegen in einem Funktionsbaustein um eine weitere persistente Variable erweitert, müssen die bis dahin gesicherten Werte erhalten bleiben. Beispielsweise wird das Programm in einem FB um eine Variable, die das automatische Ausschalten einer bisher ungesteuerten Lampe nach einer bestimmten Zeit steuert, erweitert. Die Haussteuerung muss nach der Erweiterung die Zeiten aller gesteuerten Lampen zur Verfügung haben. |
Nicht geeignet |
Geeignet Daten von Retain-Variablen bleiben nach einem Online-Change möglichst erhalten. |
Geeignet, soweit möglich 2 Bevorzugter Anwendungsfall |
Möglich, wenn textuell, aber umständlich |
|
2c: Die Applikation muss Werte nach einem Download erhalten. |
Geeignet |
Nicht geeignet |
Geeignet |
Geeignet |
|
3 |
Die Applikation muss unterschiedliche Wertesätze verwenden können. Beispiel: Die Betriebseinstellungen für Sommer, Winter und Urlaub müssen gespeichert und nach Bedarf wieder eingespielt werden können. |
Nicht geeignet |
Nicht geeignet |
Nicht geeignet |
Geeignet Bevorzugter Anwendungsfall |
4 |
Die Applikation muss Einstellungen von einem anderen System verwenden können. Das Übertragen von Einstellungen auf eine andere Anlage, die ähnliche Variablen verwendet, muss möglich sein. |
Nicht geeignet |
Nicht geeignet |
Geeignet2 |
Geeignet3 |
5 |
Die Applikation muss menschenlesbare Daten zur Verfügung stellen. Der Benutzer muss die Daten lesen, vergleichen und editieren können. |
Nicht geeignet |
Nicht geeignet |
Geeignet2 |
Geeignet3 |
1 Nachteil: Nur möglich, wenn das Laufzeitsystem diesen Mechanismus unterstützt und ein NVRam-Speicher oder USV vorhanden ist. Vorteil: Schnelligkeit; empfohlener Anwendungsfall: 1 und 2a
2 Nachteil: Im Fall einer großen Variablenmenge (> 10000) ist mit langen Wartezeiten bei einer Initialisierung und einem Shutdown zu rechnen. Vorteil: Keine spezielle Speicherausstattung ist nötig; Werteerhalt besteht auch bei Änderungen, Erweiterungen oder Löschungen.
3 Vorteil: Extern bearbeitbar, Übertragbarkeit. Nachteil: Umständlich
Lebensdauer von Variablen bei Aufruf von Onlinebefehlen
Benutzereingaben im Menü „Online“ |
Variable mit üblicher Lebensdauer Weder |
|
|
---|---|---|---|
Befehl „Online-Change“ |
x |
x |
x |
Befehl „Reset warm“ |
i |
x |
x |
Befehl „Reset kalt“ |
i |
i |
x |
Befehl „Laden“ |
i |
i |
x 1 |
Befehl „Reset Ursprung“ |
i |
i |
i |
x : Variable behält ihren Wert.
i : Variable wird initialisiert.
1 Hinweis: Zur Struktur von persistenten Daten beachten Sie bitte die Informationen unter "Mechanismus beim Download".
Lebensdauer von Variablen beim Laden eines Bootprojekts
Die Werte von normalen Variablen verlieren ihren Wert und werden neu initialisiert.
Die Werte von persistenten Variablen bleiben erhalten, wenn
-
die Struktur der persistenten Variablen im Speicher zur Struktur in der persistenten Datenliste passt
Die Werte von Retain-Variablen bleiben erhalten, wenn
-
die Struktur der persistenten Variablen im Speicher zur Struktur in der persistenten Datenliste passt
-
die persistenten Variablen zur Applikation passen (GUID muss übereinstimmen)
Wenn beim Booten der Applikation die Voraussetzungen für das Wiederherstellen der Werte von Retain-Variablen und persistenten Variablen nicht erfüllt sind, erfolgt ein "Retain mismatch". Die Reaktion auf diese Unstimmigkeit ist in der Dokumentation des Hardwareherstellers beschrieben.
Hinweis: Zur Struktur von persistenten Daten beachten Sie bitte die Informationen unter "Mechanismus beim Download".
Siehe auch
-
Daten mit persistenten Variablen erhalten
-
Daten mit Retain-Variablen erhalten
-
Daten mit Variablen des Persistence Managers erhalten
-
Daten mit Rezepturen erhalten
-
VAR PERSISTENT-Variablen deklarieren
-
Speichern der Werte einer persistenten Variablenliste in einer Rezeptur