Deklaration von globalen Variablen in Global-Objekt und deren Verwendung in ST

Die Deklaration von →globalen Variablen in einem Global-Objekt ermöglicht es Ihnen, die Deklaration von globalen Variablen in einem oder mehreren zentralen Objekten für das Projekt zu sammeln. Im →Programm, in der →Ressource oder →Konfiguration – also dort, wo Sie die Deklaration benötigen – fügen Sie anschließend nur mehr einen Verweis ein.

Erweiterung zur IEC-Norm

Diese Möglichkeit ist eine Erweiterung zur →IEC-Norm.

Dieser Artikel enthält die folgenden Informationen:

Global-Objekt erstellen

Erstellen Sie ein Global-Objekt, indem Sie den Befehl Global-Objekt verwenden (z.B. im Kontextmenü für ein Projekt, unter Neu).

Siehe "Neue Objekte oder Ordner erstellen" für allgemeine Informationen über das Erstellen von Objekten.

GLOBALS-Abschnitt in Global-Objekt zur zentralen Deklaration von globalen Variablen

Deklarieren Sie die globalen Variablen innerhalb des GLOBALS-Abschnitts in einem Global-Objekt, und zwar analog zur Deklaration von globalen Variablen in ST. Pro Global-Objekt ist ein GLOBALS-Abschnitt möglich.

Syntax
GLOBALS name
  VAR_GLOBAL (* optional_begin *) CONSTANT RETAIN {DMA := 'string'} (* optional_end *)
    name_1, name_2, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : data-type := initial-value;
    ...
  END_VAR
 
  VAR_GLOBAL (* optional_begin *) CONSTANT RETAIN {DMA := 'string'} (* optional_end *)
    name_1, name_2, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : data-type := initial-value;
    ...
  END_VAR
 
  ...
END_GLOBALS
Bedeutung

Deklaration des GLOBALS-Abschnitts, wobei name ein →IEC-Bezeichner sein muss.
Im GLOBALS-Abschnitt können mehrere VAR_GLOBAL-Abschnitte erstellt werden, in denen wiederum mehrere globale Variablen deklariert werden können.

Wie bereits erwähnt, ist die Syntax für VAR_GLOBAL ... END_VAR und deren Möglichkeiten analog zur Deklaration von globalen Variablen in ST. Unterschiede:

  • Die USING-Namespace-Anweisung wird im GLOBALS-Abschnitt unterstützt.
  • Das Schlüsselwort NON_RETAIN wird im GLOBALS-Abschnitt nicht unterstützt.

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
GLOBALS MyGVs
  VAR_GLOBAL
    Setting_1 : INT;
    Setting_2 : BOOL;
  END_VAR
 
  VAR_GLOBAL CONSTANT
    Constant_1 : INT;
    Constant_2 : BOOL;
  END_VAR
END_GLOBALS

Verweis auf den GLOBALS-Abschnitt in einem Programm, einer Ressource und/oder Konfiguration

Im Programm, in der Ressource oder in der Konfiguration fügen Sie INCLUDE_GLOBALS-Anweisungen ein, damit die globalen Variablen aus dem entsprechenden GLOBALS-Abschnitt als Programm-globale, Ressource-globale oder Konfigurations-globale Variablen deklariert werden.

Syntax
{INCLUDE_GLOBALS name_1}
{INCLUDE_GLOBALS name_2}
... 

Fügen Sie die INCLUDE_GLOBALS-Anweisungen immer vor den evtl. vorhandenen Abschnitten VAR_GLOBAL ... END_VAR ein.

Beispiel für einen Verweis in einem Programm
PROGRAM Motor
  {INCLUDE_GLOBALS MyGVs}   (* Diese Programm-globalen Variablen sind deklariert: 'Setting_1', 'Setting_2', 'Constant_1', 'Constant_2' *)
  VAR_GLOBAL
    portSetting : INT;
    Setting_1 : INT;        (* Fehler, da die Programm-globale Variable 'Setting_1' mehrmals deklariert ist *)
  END_VAR
  ...
END_PROGRAM
Beispiel für einen Verweis in einer Ressource
RESOURCE local ON BuiltInPlc { ON_CHANNEL := LocalChannel }
  {INCLUDE_GLOBALS MyGVs}    (* Diese Ressource-globalen Variablen sind deklariert: 'Setting_1', 'Setting_2', 'Constant_1', 'Constant_2' *)
  VAR_GLOBAL
    VALVE_POS AT %QW28 : INT;
    Constant_1 : INT;        (* Fehler, da die Ressource-globale Variable 'Constant_1' mehrmals deklariert ist *)
  END_VAR
  TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
... 
Beispiel für einen Verweis in einer Konfiguration
CONFIGURATION LocalConfiguration
  {INCLUDE_GLOBALS MyGVs}    (* Diese Konfigurations-globalen Variablen sind deklariert: 'Setting_1', 'Setting_2', 'Constant_1', 'Constant_2' *)
  VAR_GLOBAL
    VALVE_POS AT %QW28 : INT;
    Constant_2 : INT;        (* Fehler, da die Konfigurations-globale Variable 'Constant_2' mehrmals deklariert ist *)
  END_VAR
RESOURCE ...
...