Attribut-Schlüsselwörter für Variablentypen
Die folgenden Attribut-Schlüsselwörter können der Deklaration des Variablentyps hinzugefügt werden, um den Gültigkeitsbereich zu definieren:
oRETAIN: Siehe Retain-Variablen
oPERSISTENT: SiehePersistente Variablen
oCONSTANT: Siehe Konstanten – CONSTANT, Getypte Literale
Remanente Variablen – RETAIN, PERSISTENT
Remanente Variablen können ihren Wert über die übliche Programmlaufzeit hinaus behalten. Sie werden als „Retain-Variablen“ oder sogar als „Persistente Variablen“ deklariert.
Die Art der Deklaration bestimmt den Grad der „Resistenz“ einer remanenten Variablen im Falle von Resets, Downloads oder einem Reboot der Steuerung. In Applikationen wird vor allem die Kombination der beiden remanenten Flags gefordert sein (siehe Persistente Variablen).
HINWEIS: Eine VAR PERSISTENT-Deklaration wird auf dieselbe Weise interpretiert wie eine VAR PERSISTENT RETAIN oder VAR RETAIN PERSISTENT.
HINWEIS: Verwenden Sie den Befehl Alle Instanzpfade hinzufügen, um alle Variablen, die als persistent deklariert wurden, in das Objekt Persistente Liste zu übertragen.
Variablen, die als Retain-Variablen deklariert sind, werden in einem nicht flüchtigen Speicher gespeichert. Um derartige Variablen zu deklarieren, verwenden Sie im Deklarationsteil einer POU oder in einer globalen Variablenliste das Schlüsselwort RETAIN.
Beispiel
VAR RETAIN
iRem1 : INT; (* 1. Retain variable*)
END_VAR
Retain-Variablen behalten ihren Wert auch nach dem unvorhergesehenen Herunterfahren der Steuerung sowie nach einem unbeabsichtigten Aus- und Wiedereinschalten der Steuerung (oder beim Ausführen des Online-Befehls Reset warm). Bei jedem Neustart des Programms werden die Retain-Variablen weiter bearbeitet. Die anderen (nicht Retain-) Variablen werden neu initialisiert, wobei entweder die deklarierten Initialisierungswerte oder die Standardinitialisierungswerte (wenn keine Initialisierungswerte deklariert wurden) hinzugezogen werden.
Ein Anwendungsbeispiel hierfür wäre die Verwendung eines Retain-Werts für einen Stückzähler in einer Produktionsmaschine, der nach einem Stromausfall weiterzählen soll.
Retain-Variablen werden jedoch beim Ausführen des Online-Befehls Reset Ursprung neu initialisiert, während persistente Variablen beim Ausführen des Online-Befehls Reset kalt oder beim Herunterladen einer Applikation neu initialisiert werden.
HINWEIS: Es werden nur die als VAR RETAIN definierten Variablen im nichtflüchtigen Speicher gespeichert. Die in Funktionen als VAR RETAIN definierten lokalen Variablen werden NICHT im nichtflüchtigen Speicher gespeichert. Die lokale Definition von VAR RETAIN in Funktionen hat keine Auswirkung.
Die Verwendung von Schnittstellen oder Funktionsbausteinen aus Systemkonfigurationsbibliotheken in der Retain-Programm-Section (VAR_RETAIN) bewirkt Systemausnahmen, die den die Steuerung betriebsunfähig machen, sodass sie neu gestartet werden muss.
|
UNBEABSICHTIGTER BETRIEBSZUSTAND DES GERÄTS |
oVerwenden Sie keine Schnittstellen der Bibliothek SystemConfigurationItf in der Retain-Programm-Section (VAR_RETAIN). oVerwenden Sie keine Funktionsbausteine der Bibliothek SystemConfiguration in der Retain-Programm-Section (VAR_RETAIN). |
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben. |
HINWEIS: Die Bibliotheken SystemConfigurationItf und SystemConfiguration sind nur für PacDriveSteuerungen (PacDrive LMC Eco, PacDrive LMC Pro/Pro2) verfügbar.
Persistente Variablen werden durch ein Schlüsselwort PERSISTENT (VAR_GLOBAL PERSISTENT) identifiziert. Sie werden nur beim Ausführen des Online-Befehls Reset Ursprung neu initialisiert. Im Unterschied zu Retain-Variablen behalten sie ihren Wert nach einem Download bei.
HINWEIS: Verwenden Sie die AT-Deklaration nicht in der Kombination mit VAR PERSISTENT.
Anwendungsbeispiel:
Ein Betriebsstundenzähler, der nach einem Stromausfall oder Download weiterzählen soll. Weitere Informationen finden Sie in der Übersichtstabelle zum Verhalten von remanenten Variablen.
Persistente Variablen können nur in einer besonderen globalen Variablenliste mit persistenten Variablen des Typs „Objekt“ deklariert werden. Diese Liste muss einer Applikation zugewiesen sein. Sie können nur jeweils eine Liste zu einer Applikation hinzufügen.
HINWEIS: Eine Deklaration mit VAR_GLOBAL PERSISTENT hat die gleiche Auswirkung wie eine Deklaration mit VAR_GLOBAL PERSISTENT RETAIN oder VAR_GLOBAL RETAIN PERSISTENT.
So wie Retain-Variablen können auch persistente Variablen in einem separaten Speicherbereich gespeichert werden.
Beispiel
VAR_GLOBAL PERSISTENT RETAIN
iVarPers1 : DINT; (* 1. Persistent+Retain Variable App1 *)
bVarPers : BOOL; (* 2. Persistent+Retain Variable App1 *)
END_VAR
HINWEIS: Persistente Variablen können in einem Objekt des Typs Persistente Liste deklariert werden. Wenn sie an anderer Stelle deklariert werden, verhalten sie sich wie Retain-Variablen und werden in der Ansicht Meldungen als Fehler beim Übersetzen angezeigt. (Die Deklaration von Retain-Variablen kann in den globalen Variablenlisten oder in POUs erfolgen.)
Bei jedem erneuten Laden der Applikation wird die Liste mit den persistenten Variablen auf der Steuerung mit der des Projekts verglichen. Die Liste in der Steuerung wird von der Anwendung identifiziert. Im Falle von Widersprüchen werden Sie aufgefordert, alle persistenten Variablen einer Applikation zu reinitialisieren. Inkonsistenzen entstehen beispielsweise durch Umbenennen oder Entfernen oder sonstigen Veränderungen vorhandener Deklarationen in der Liste.
HINWEIS: Also sollte jede Änderung im Deklarationsteil der Liste mit den persistenten Variablen und die Auswirkung einer Reinitialisierung, die daraufhin angefragt wird, sorgfältig überlegt werden.
Neue Deklarationen können nur am Ende der Liste hinzugefügt werden. Während eines Downloads werden diese als neu erkannt und ein Reinitialisieren der gesamten Liste wird nicht erforderlich. Wenn Sie den Namen oder Datentyp einer Variable ändern, wird dies als neue Deklaration betrachtet und zieht ein Reinitialisieren der Variable beim Nächsten Online Change oder Download nach sich.
Verhalten remanenter Variablen
Siehe Weitere Informationen finden Sie im Programmierhandbuch Ihrer Steuerung. für weitere Informationen zum Verhalten remanenter Variablen.
Konstanten werden mit dem Schlüsselwort CONSTANT gekennzeichnet. Sie können lokal oder global deklariert werden.
Syntax
VAR CONSTANT<Kennung>:<Typ> :=<Initialisierung>;END_VAR
Beispiel
VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constant*)
END_VAR
Im Kapitel Operanden finden Sie eine Liste möglicher Konstanten.
Normalerweise wird beim Rechnen mit IEC-Konstanten der kleinstmögliche Datentyp verwendet. Soll ein anderer Datentyp verwendet werden, kann dies mithilfe von getypten Literalen erreicht werden, ohne dass die Konstanten explizit deklariert werden müssen. Die Konstante wird hierbei mit einem Präfix versehen, welches den Typ festlegt.
Syntax
<Typ>#<Literal>;
<Typ> |
Gibt den gewünschten Datentyp an. Mögliche Einträge: BOOL, SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL Der Datentyp muss in Großbuchstaben geschrieben werden. |
<Literal> |
Gibt die Konstante an. Die Eingabe muss zu dem unter <Typ> angegebenen Datentyp passen. |
Beispiel
iVar1:=DINT#34;
Kann die Konstante nicht ohne Datenverlust in den Zieltyp konvertiert werden, so wird eine Fehlermeldung ausgegeben.
Getypte Literale können überall dort verwendet werden, wo normale Konstanten verwendet werden können.
Wenn die Standardeinstellung Konstanten ersetzen (Datei > Projekteinstellungen > Compiler-Optionen) aktiviert ist, werden Konstanten im Online-Modus in der Deklaration oder in der Überwachen-Ansicht durch ein in Spalte Werte vorangestelltes Symbol gekennzeichnet. In diesem Fall kann nicht auf sie zugegriffen werden, beispielsweise durch Forcen oder Schreiben.