In der Variablendeklaration ordnet der Code AT
eine Projektvariable einer bestimmten Eingangsadresse, Ausgangsadresse oder Speicheradresse
der SPS zu, die im Gerätebaum konfiguriert ist. Sie können die Zuordnung von Variablen
zu einer Adresse auch im Dialog „I/O Mapping“ des Gerätes in der Steuerungskonfiguration festlegen.
Syntax
<variable name> AT <address> : <data type>; <address> : %<memory area prefix> ( <size prefix> )? <memory position>
Die AT-Deklaration ermöglicht es Ihnen, der Adresse einen aussagekräftigen Namen zu geben. Sie können alle notwendigen Änderungen für die Eingangs- oder Ausgangssignale an nur einer Stelle vornehmen, zum Beispiel in der Deklaration.
Beispiele
|
Variablendeklaration mit Adressinformation eines Eingangswortes |
|
Deklaration boolescher Variablen Hinweis: Bei booleschen Variablen wird intern ein Byte zugewiesen, wenn keine Einzelbitadresse
angegeben ist. Eine Änderung des Wertes von |
|
Boolesche Variablendeklaration mit expliziter Angabe einer Einzelbitadresse Beim Zugriff wird nur das Eingangsbit 7.5 gelesen. |
|
Bei der Adressangabe wird anstelle der Speicherposition der Platzhalter Hinweis: Dies ist in Funktionsblöcken möglich. |
Wenn Sie einer Adresse eine Variable zuweisen, ist Folgendes zu beachten:
-
Sie können nicht in Variablen schreiben, die an Eingängen platziert sind. Dies führt zu einem Compilerfehler.
-
Sie können AT-Deklarationen nur für lokale und globale Variablen durchführen, nicht für Ein-/Ausgangsvariablen von POEs.
-
Außerdem können AT-Deklarationen nicht in persistenten Variablenlisten verwendet werden.
-
Wenn Sie AT-Deklarationen für Strukturkomponenten oder Funktionsblockvariablen verwenden, verwenden alle Instanzen denselben Speicher. Dies entspricht der Verwendung von "statischen Variablen" in klassischen Programmiersprachen wie "C".
-
Der Speicheraufbau von Strukturen hängt auch vom Zielsystem ab.




HINWEIS

Wenn Sie nicht ausdrücklich eine Einzelbitadresse angeben, werden boolesche Variablen byteweise zugeordnet.
Beispiel
PROGRAM PLC_PRG VAR xVar AT %QW0 : BOOL; END_VAR xVar := TRUE;
Wenn die Variable xVar
geschrieben wird, ist der Ausgangsspeicherbereich von QX0.0
bis QX0.7
betroffen.