Attribut 'TcRetain'

Dieses Pragma bewirkt, dass die folgenden Variablen als Retain-Variablen angelegt werden und nach einem unkontrollierten Beenden (Spannungsausfall) ihren Wert behalten. Das Pragma stellt damit eine Alternative zur Nutzung des Schlüsselworts VAR RETAIN dar.

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.

Wenn selbstangelegte Datentypen (DUTs) als Retain-Variablen verwendet werden sollen, müssen die Datentypen im TwinCAT Typsystem vorhanden sein. Hierfür kann entweder die Option Convert to Global Type verwendet werden oder Strukturen können direkt als STRUCT RETAIN angelegt werden, womit dann jedoch alle Vorkommen der Struktur über den Retain Handler behandelt werden.

Für POUs (Funktionsbausteine) als Ganzes ist die Verwendung von Retain-Daten nicht möglich. Einzelne Elemente eines POUs können hingegen verwendet werden.

Syntax: {attribute 'TcRetain'}

Einfügeort: Zeile oberhalb der Deklarationszeile einer Variablen

Beispiel:

PROGRAM MAIN
VAR
    {attribute 'TcRetain'}
    nVar1  : INT;
END_VAR