AT-Deklaration

Um eine Projektvariable an eine flexible (*) oder direkte Adresse zu binden, können Sie die Adresse bei der Deklaration der Variablen angeben. Durch Verwendung einer entsprechenden Variablenbezeichnung können Sie der Adresse einen aussagekräftigen Namen geben.

AT-Deklaration 1:

Automatische Adressierung

Es wird empfohlen, keine direkte Adressierung für allokierte Variablen zu verwenden, sondern stattdessen den Platzhalter * zu nutzen.
Mit dem Platzhalter * (%I*, %Q* bzw. %M*) wird eine flexible und optimierte Adressierung von TwinCAT automatisch durchgeführt.

Syntax:

<identifier> AT <address> : <data type>;

Bei der Angabe einer Adresse werden die Position im Speicher und die Größe mittels spezieller Zeichenfolgen ausgedrückt. Eine Adresse ist gekennzeichnet mit dem Prozentzeichen %, dann folgt der Speicherbereichspräfix, der optionale Größenpräfix und die Speicherposition.

%<memory area prefix> ( <size prefix> )? <memory position>
<memory area prefix> : I | Q | M
<size prefix>        : X | B | W | D
<memory position>    : * | <number> ( .<number> )*

Speicherbereichspräfix

I

Eingangsspeicherbereich für Eingänge ("Inputs")

Für physikalische Eingänge über Eingangstreiber ("Sensoren")

Q

Ausgangsspeicherbereich für Ausgänge ("Outputs")

Physikalische Ausgänge über Ausgangstreiber ("Aktoren")

M

Merkerspeicherbereich

Größenpräfix

X

Single Bit

B

Byte (8 Bits)

W

Word (16 Bits)

D

Double word (32 Bits)

Beispiele:

IbSensor1 AT%I*    : BOOL;
IbSensor2 AT%IX7.5 : BOOL;
AT-Deklaration 2:

Wenn Sie nicht explizit eine Einzelbitadresse angeben, werden boolesche Variablen byteweise alloziert. Beispiel: Eine Wertänderung von bVar AT %QB0 betrifft den Bereich von QX0.0 bis QX0.7.

Wenn Sie eine Variable einer Adresse zuweisen, müssen Sie Folgendes beachten:

AT-Deklaration 3:

Gültige Adressen

Dem Schlüsselwort AT muss eine gültige Adresse folgen. Weitere Informationen hierzu finden Sie im Abschnitt Referenz Programmierung > Operanden > Adressen. Beachten Sie mögliche Überlappungen im Fall vom Byte-Adressierungsmodus.

Beispiele

Variablendeklarationen:

IbSensor AT%I* : BOOL;

Bei der Adressangabe ist statt der Speicherposition der Platzhalter * angegeben. Dadurch wird eine flexible und optimierte Adressierung von TwinCAT automatisch durchgeführt.

InInput AT%IW0 : WORD;

Variablendeklaration mit Adressangabe eines Eingangsworts

ObActuator AT%QB0 : BOOL;

Boolesche Variablendeklaration

Hinweis: Für boolesche Variable wird intern ein Byte alloziert, wenn keine Einzelbitadresse angegeben ist. Eine Wertänderung von ObActuator betrifft folglich den Bereich von QX0.0 bis QX0.7.

IbSensor AT%IX7.5 : BOOL;

Boolesche Variablendeklaration mit expliziter Angabe einer Einzelbitadresse. Beim Zugriff wird nur das Eingangsbit 7.5 gelesen.

Weitere Adressen:

%QX7.5

%Q7.5

Einzelbitadresse des Ausgangsbits 7.5

%IW215

Wortadresse des Eingangsworts 215

%QB7

Byteadresse des Ausgangsbytes 7

%MD48

Adresse eines Doppelworts an der Speicherstelle 48 im Merkerbereich

%IW2.5.7.1

Interpretation abhängig von der aktuellen Steuerungskonfiguration (siehe unten)

Siehe auch: