Deklaration von globalen Variablen in ST

Syntax
VAR_GLOBAL (* optional_begin *) {DMA := 'string'} CONSTANT RETAIN NON_RETAIN (* 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. *)
(* Zusätzliche Daten, wie partielle Adressen, sind ebenfalls für die Variablen 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 (beachten Sie dabei, dass sich die Syntax-Elemente unterscheiden können).

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".

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

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-gepuffert. Falls 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.

Informieren Sie sich unter "Unterstützte Datentypen (in ST)", 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 physikalische Adressen:

Beispiel

Erklärung

%QB7

Ausgang, Byte, 7. Element (in der 1. Ebene)

%IX1

Eingang, Bool, 1. Element (in der 1. Ebene)

%I1

Eingang, Bool, 1. Element (in der 1. Ebene)

%IW2.5.7.3

Eingang, 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.

Erforderlicher Aufbau für physikalische Adresse

Geben Sie eine physikalische Adresse laut diesem Aufbau ein:


Zeichen

Bedeutung

1.

%

leitet die Adresse ein

2.

Präfix für Lage

definiert die Lage


I

Eingang


Q

Ausgang


M

Speicher (Memory)

3.

Präfix für Größe

definiert die Größe


X oder keiner

Bool (einzelnes Bit)


B

Byte (8 Bits)


W

Wort (16 Bits)


D

Doppelwort (32 Bits)


L

Langwort (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


Gut zu wissen

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/lightbulb.svg logi.CAD 3 bietet außerdem die Möglichkeit, noch nicht festgelegte Speicherorte bei der Deklaration anzugeben. Siehe "Deklaration eines Sprachelements mit partieller Adresse in ST" für Details.

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/lightbulb.svg logi.CAD 3 bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar, JSON-String oder Typ für Variablen oder 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