Skip to main content

Opérateur : espace de noms de bibliothèque

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

Exemple: LIB_A.FB_A

Un identifiant de bloc de bibliothèque est ajouté à l'espace de nom de la bibliothèque (sous forme de préfixe séparé par un point) pour un accès unique et qualifié au module de bibliothèque. L'espace de noms correspond généralement au nom de la bibliothèque.

Exemple 161. Exemple

Une bibliothèque est incluse dans un projet et contient les FB_A PU. Cependant, le bloc fonctionnel portant le même nom est déjà disponible localement dans le projet. Identifiez le POU de la bibliothèque comme LIB_A.FB_A afin d'accéder au POU de la bibliothèque, et non au bloc fonction local.

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


Vous pouvez définir un autre identifiant pour l'espace de noms. Pour ce faire, spécifiez un espace de noms dans les informations du projet (développeurs de bibliothèque : lors de la création d'un projet de bibliothèque). Vous pouvez également spécifier un espace de noms spécifique pour une bibliothèque dans le gestionnaire de bibliothèques dans le Propriétés boîte de dialogue (développeurs d'applications : lors de la création d'une application).

Pour plus d'informations, consultez : Utilisation des bibliothèques

Opérateur (#) pour un accès direct

L'opérateur est une extension de la norme CEI 61131-3.

Il est possible que les composants locaux d'un bloc fonctionnel remplacent les POU de bibliothèque portant le même nom, ce qui entraîne une ambiguïté. Par conséquent, l'accès avec la convention d'espace de noms habituelle n'est pas possible. Ensuite, il est utile d'utiliser le # l'opérateur de forcer l'accès direct.

Vous pouvez utiliser la syntaxe suivante pour forcer l'accès direct :

Syntaxe: <namespace> # <library POU path>

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