Skip to main content

Operator: Bibliotheksnamensraum

Syntax: <library namespace>.<library POU identifier>

Beispiel: LIB_A.FB_A

Ein Bibliotheksbausteinbezeichner wird (als Präfix mit einem Punkt getrennt) um den Bibliotheksnamensraum erweitert, um eindeutig und qualifiziert auf den Bibliotheksbaustein zuzugreifen. Üblicherweise stimmen Namensraum und Name einer Bibliothek überein.

Beispiel 161. Beispiel

Eine Bibliothek ist in einem Projekt eingebunden und enthält einen Baustein FB_A. In dem Projekt ist aber bereits lokal ein Funktionsbaustein mit gleichem Namen instanziiert. Bezeichnen Sie den Bibliotheksbaustein mit LIB_A.FB_A, um nicht auf den lokalen Funktionsbaustein sondern auf den Bibliotheksbaustein zuzugreifen.

var1 := FB_A(in := 12); // Call of the project function FB_A
var2 := LIB_A.FB_A(in := 22); // Call of the library function FB_A


Sie können für den Namensraum eine anderen Bezeichner definieren. Dafür tragen Sie (als Bibliotheksentwickler beim Erstellen eines Bibliotheksprojekts) in den Projektinformationen einen Namensraum ein. Oder Sie bestimmen (als Applikationsentwickler beim Erstellen einer Applikation) im Bibliotheksverwalter für eine Bibliothek im Dialog Eigenschaften einen speziellen Namensraum.

Für weitere Informationen siehe: Bibliotheken verwenden

Operator # für direkten Zugriff

Der Operator ist eine Erweiterung der Norm IEC 61131-3.

Es ist möglich, dass lokale Komponenten eines Funktionsbausteins namensgleiche Bibliotheksbausteine verschatten und so eine Mehrdeutigkeit verursacht wird. Infolgedessen ist ein Zugriff mit der üblichen Namensraumkonvention nicht möglich. Dann ist es hilfreich den Operator # zu verwenden, um einen direkten Zugriff zu erzwingen.

Mit der folgenden Syntax können Sie einen direkten Zugriff erzwingen:

Syntax: <namespace> # <library POU path>

Beispiel 162. Beispiel
TYPE Struct1 :
STRUCT
	Standard : Struct2;
END_STRUCT
END_TYPE
TYPE Struct2 :
STRUCT
	Concat : DINT;
END_STRUCT
END_TYPE
{attribute 'qualified_only'}
VAR_GLOBAL
	Standard : Struct2;
END_VAR
PROGRAM PLC_PRG
VAR
    test : _3S_License#Standard#TON;
    str : STRING;
END_VAR

// access to global variable
_3S_License.Standard.CONCAT := 123;

// with hashtag access, the library is explicitly addressed 
str := _3S_License.Standard#CONCAT('test1', '3444');
str := Standard#CONCAT('test1', '3444');
str := _3S_License#Standard#CONCAT('test1', '3444');
str := _3S_License.Standard#CONCAT('test1', '3444');
str := CONCAT('test1', Standard#CONCAT('3444', '444'));
str := CONCAT('test1', _3S_License.Standard#CONCAT('3444', '444'));
str := CONCAT('test1', _3S_License#Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License.Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License#Standard#CONCAT('3444', '444'));
str := Standard#CONCAT('test1', _3S_License#Standard#CONCAT('asdf', 'fdas'));