Namespaces in ST: Verwendung
Auf Sprachelemente eines Namespace können Sie so außerhalb dieses Namespaces zugreifen:
Verwendung der USING-Namespace-Anweisung
Definieren Sie eine USING-Namespace-Anweisung. Die USING-Anweisung erlaubt den Zugriff auf jene Sprachelemente, die im angegebenen Namespace enthalten sind, in den folgenden Elementen:
Element |
Fügen Sie die USING-Anweisung an dieser Position ein: |
im ST-Objekt |
am Anfang des ST-Objekts (als erste Zeile im ST-Editor) |
vor einem Abschnitt VAR_GLOBAL ... END_VAR des Global-Objekts |
|
im SPS-Objekt |
vor einem Abschnitt VAR_GLOBAL ... END_VAR des SPS-Objekts Definieren Sie am besten nur eine USING-Anweisung pro Konfiguration im SPS-Objekt – entweder vor der Deklaration von Konfigurations-globalen Variablen oder vor der Deklaration von Ressource-globalen Variablen. |
in einem Namespace |
hinter dem Namen des Namespaces |
in einem →Funktionsbaustein |
hinter dem Namen des Funktionsbausteine |
in einer →Funktion |
hinter dem Namen der Funktion bzw. Datentyp des Ergebniswerts für die Funktion |
Ein weiteres Element, in dem die USING-Anweisung eingefügt werden kann:
Element |
Fügen Sie die USING-Anweisung an dieser Position ein: |
nach {extern_c} oder {extern_cxx} |
Eine USING-Anweisung beginnt mit dem Schlüsselwort USING, danach folgt der voll qualifizierte Name des Namespaces und ; (siehe unten Beispiel 1). Die USING-Anweisung ermöglicht nur den Zugriff auf den angegebenen Namespace, nicht auf andere verschachtelte Namespaces (siehe unten Beispiel 2).
Eine USING-Anweisung kann auch im Applikationsnavigator vorgegeben werden (siehe unter "Aktionen mit Ordner/Objekten in Zusammenhang mit Namespaces" für Details). In diesem Fall wird k
eine
USING
-Namespace-Anweisung für diesen Namespace im ST-Editor benötigt.
Einschränkungen
Angaben in der Form USING Namespace1, Namespace 2; werden nicht unterstützt. Falls Sie auf Sprachelemente aus verschiedenen Namespaces zugreifen wollen, müssen Sie mehrere USING-Anweisungen definieren.
Derzeit ist die Verwendung von Sprachelementen mit einem gleichen Namen aus dem globalen Namespace nicht möglich. Diese Einschränkung gilt für alle Sprachelemente, die im globalen Namespace deklariert sind, aber besonders für die Systembausteine. logi.CAD 3 ändert den Aufruf des Sprachelements aus dem globalen Namespace automatisch auf den Aufruf des Sprachelements aus dem gleichen Namespace. Siehe Beispiel 1.
Die folgenden Beispiele basieren auf dem ST-Code des Beispiels 2 unter "Namespaces in ST: Deklaration".
FUNCTION_BLOCK Uses_Timer2
USING Standard.Timers;
VAR
Ton1 : TON; (* verwendet den 'TON'-Baustein, der im verschachtelten Namespace 'Standard.Timers' deklariert ist *)
(* Hinweis: Der Standard-'TON'-Baustein aus dem globalen Namespace kann in diesem Beispiel nicht verwendet werden. *)
(* Falls dies erforderlich ist, definieren Sie alle Sprachelemente mit den voll qualifizierten Namen; siehe oben. *)
bTest : BOOL;
END_VAR
Ton1(In:= bTest, PT:= t#5s);
END_FUNCTION_BLOCK
NAMESPACE Infeed
USING Standard;
USING Standard.Counters;
FUNCTION_BLOCK Uses_Timer3
VAR
Ton1 : Timers.TON;
(* Fehler, da kein Zugriff auf den verschachtelten Namespace 'Standard.Timer' möglich *)
(* Lösungen: *)
(* entweder Anweisung 'USING Standard.Timers' oberhalb einfügen und Zeile auf 'Ton1 : TON;' korrigieren *)
(* oder den voll qualifizierte Namen verwenden, also: Zeile auf 'Ton1 : Standard.Timer.TON;' korrigieren *)
bTest : BOOL;
END_VAR
Ton1(In:= bTest, PT:= t#5s);
END_FUNCTION_BLOCK
END_NAMESPACE