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.
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>
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'));