Das Schlüsselwort AT
weist in der Variablendeklaration eine Projektvariable einer bestimmten Eingabe-,
Ausgabe- oder Speicheradresse der im Gerätebaum konfigurierten Steuerung zu. Ebenso
können Sie die Zuweisung von Variablen auf eine Adresse im Dialog „E/A-Abbild“ der Geräts in der Steuerungskonfiguration festlegen.
Syntax
<variable name> AT <address> : <data type>; <address> : %<memory area prefix> ( <size prefix> )? <memory position>
Die AT-Deklaration ermöglicht, der Adresse einen aussagekräftigen Namen zu geben. Eventuell nötige Änderungen bezüglich des ein- oder ausgehenden Signals dürfen Sie nur an einer Stelle durchführen, zum Beispiel in der Deklaration.
Beispiele
|
Variablendeklaration mit Adressangabe eines Eingangsworts |
|
Boolesche Variablendeklaration Hinweis: Für boolesche Variable wird intern ein Byte alloziert, wenn keine Einzelbitadresse
angegeben ist. Eine Wertänderung von |
|
Boolesche Variablendeklaration mit expliziter Angabe einer Einzelbitadresse. Beim Zugriff wird nur das Eingangsbit 7.5 gelesen. |
|
Bei der Adressangabe ist statt der Speicherposition der Platzhalter Hinweis: Das ist in Funktionsbausteinen möglich. |
Wenn Sie eine Variable einer Adresse zuweisen, müssen Sie Folgendes beachten:
-
Auf Variablen, die auf einen Eingang gelegt sind, können Sie nicht schreibend zugreifen. Dies führt zu einem Compilerfehler.
-
AT-Deklarationen können Sie nur für lokale und globale Variablen durchführen, nicht aber für Ein- und Ausgabevariablen von Bausteinen.
-
AT-Deklarationen dürfen Sie nicht in persistenten Variablenlisten verwenden!
-
Wenn Sie AT-Deklarationen bei Strukturkomponenten oder Funktionsbausteinvariablen anwenden, verwenden alle Instanzen denselben Speicher. Dies entspricht der Verwendung von "statischen Variablen" in klassischen Programmiersprachen wie zum Beispiel "C".
-
Das Speicherlayout von Strukturen ist ebenfalls abhängig vom Zielsystem.




HINWEIS

Wenn Sie nicht explizit eine Einzelbitadresse angeben, werden boolesche Variablen byteweise alloziert.
Beispiel
PROGRAM PLC_PRG VAR xVar AT %QW0 : BOOL; END_VAR xVar := TRUE;
Beim Schreiben der Variablen xVar
ist der Ausgangsspeicherbereich von QX0.0
bis QX0.7
betroffen.