Deklaration von globalen Variablen in ST

Syntax
VAR_GLOBAL (* optional_begin *) CONSTANT RETAIN NON_RETAIN {DMA := 'string'} (* optional_end *)
  name_1, name_2, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : data-type := initial-value;
  name_3, name_4, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : STRING[length] := 'initial-value';
  name_5, name_6, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : ARRAY [x..y] OF type := [initial-value_1, initial-value_2, .., initial-value_n];
  name_7, name_8, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : ARRAY [x1..y1, x2..y2, x3..y3] OF data-type;   (* Initialisierungswerte sind hier ebenfalls möglich. *)   
END_VAR

Bedeutung

Deklaration einer bzw. mehrerer →globaler Variablen, wobei name_1, name_2 usw. →IEC-Bezeichner sein müssen.
Die Deklaration mehrerer solcher Abschnitte ist zulässig.

Erweiterung zur IEC-Norm

Für Ressource-/Konfigurations-globale Variablen ist dies eine Erweiterung zur →IEC-Norm, die nur einen derartigen Abschnitt zulässt. Zusätzlich ist es möglich, globale Variablen in einem Global-Objekt zu deklarieren und hier nur einen Verweis einzufügen.

Die Deklaration von Programm-globalen Variablen ist in einem ST-Objekt möglich, und zwar innerhalb der Deklaration eines Programms. Der Zugriff auf solche globale Variablen im Kontext anderer →POE (FUNCTION, FUNCTION_BLOCK) erfolgt über →externe Variablen.

Die Deklaration von Ressource-globalen oder Konfigurations-globalen Variablen ist in einem SPS-Objekt möglich, und zwar innerhalb der Deklaration einer →Ressource oder →Konfiguration. Der Zugriff auf solche globale Variablen erfolgt im Kontext von POE (PROGRAM, FUNCTION, FUNCTION_BLOCK) – ebenfalls über externe Variablen. Siehe "Globale Variablen für Ressource oder Konfiguration deklarieren und diese verwenden".

Das optionale Schlüsselwort CONSTANT markiert alle globalen Variablen dieses Abschnitts als →konstant (das Überschreiben solcher Werte ist dann während der Ausführung des Programms nicht mehr möglich).
Das optionale Schlüsselwort RETAIN oder NON_RETAIN markiert alle Variablen dieses Abschnitts als →gepuffert oder nicht-gepuffertFalls Variablen basierend auf einem strukturierten Datentyp im Abschnitt mit RETAIN oder NON_RETAIN deklariert sind, werden dessen Strukturelemente (inkl. Verschachtelungen) ebenfalls entsprechend als gepuffert oder nicht-gepuffert behandelt. 

Die optionalen Attribute DMA (= Direct Memory Access) und key sind für Systemintegratoren vorgesehen.

Informieren Sie sich unter "Unterstützte Datentypen", welche Datentypen Sie für die Deklaration von Variablen angeben können. Mit dem optionalen →Initialisierungswert [:= initial-value] weisen Sie der Variable einen Wert zu (Details: siehe "Initialisierung von Variablen in ST").
Außerdem ist es möglich,

Mit dem optionalen Schlüsselwort AT können Sie der symbolischen Variable eine physikalische Adresse in der →SPS zuweisen.

Beispiele für physikalischen Adressen: 

BeispielErklärung
%QB7Ausgang, Byte, 7. Element (in der 1. Ebene)
%IX1Eingang, Bool, 1. Element (in der 1. Ebene)
%I1Eingang, Bool, 1. Element (in der 1. Ebene)
%IW2.5.7.3Eingang, Word, 3. Element im 7. "Modul" auf dem 5. "Regal" des 2. "Bus"

Wenn Sie EtherCAT-Feldbusse verwenden, die von →EC-Master und →EC-Engineer angesprochen werden können, informieren Sie sich unter "Auf Hardware-IOs via Acontis EC-Master und EC-Engineer zugreifen" über den Zugriff auf deren Hardware-IOs.

Geben Sie eine physikalische Adresse laut diesem Aufbau ein:


ZeichenBedeutung
1.%leitet die Adresse ein
2.Präfix für Lagedefiniert die Lage

IEingang

QAusgang

MSpeicher (Memory)
3.Präfix für Größedefiniert die Größe

X oder keinerBool (einzelnes Bit)

BByte (8 Bits)

WWort (16 Bits)

DDoppelwort (32 Bits)

LLangwort (64 Bits)
4.

eine oder mehrere vorzeichenlose ganze Zahlen (→Unsigned Integers)
Zur Eingabe von hierarchischen Ebenen müssen Sie die Zahlen durch . voneinander trennen.
Die höchste Ebene geben Sie als Zahl ganz links ein, die nächsten Ebenen als Zahlen rechts davon.

Einschränkung

logi.CAD 3 unterstützt max. 5 Ebenen. Die höchstmögliche Zahl pro Ebene ist: 4_294_967_295 (das entspricht UINT32_MAX)
Die Unterstrich-Zeichen _ sind nur zur besseren Lesbarkeit eingefügt und daher nicht signifikant.


definiert die Adresse

logi.CAD 3 bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar oder JSON-String für Variablen und Datentypen angeben" für Details.

Beispiel
VAR_GLOBAL
  portSetting : INT;
  upTime : TIME;
  gVar1: ARRAY [1..2] of BOOL;
  gVar2 : STRING[10];
END_VAR
Beispiel für Zuweisung einer physikalischen Adresse
VAR_GLOBAL
  VALVE_POS AT %QW28 : INT;
END_VAR