Skip to main content

Operatore: Spazio dei nomi della libreria

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

Esempio: LIB_A.FB_A

Un identificatore di blocco della libreria viene aggiunto allo spazio dei nomi della libreria (come prefisso separato da un punto) per un accesso univoco e qualificato al modulo della libreria. Lo spazio dei nomi di solito corrisponde al nome della libreria.

Esempio 161. Esempio

Una libreria è inclusa in un progetto e contiene il file FB_A POU. Tuttavia, il blocco funzione con lo stesso nome è già disponibile localmente nel progetto. Identificare il POU della libreria come LIB_A.FB_A per accedere alla libreria POU, non al blocco funzione locale.

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


È possibile definire un altro identificatore per lo spazio dei nomi. Per fare ciò, specificare uno spazio dei nomi nelle informazioni sul progetto (sviluppatori di librerie: durante la creazione di un progetto di libreria). In alternativa, puoi anche specificare uno spazio dei nomi specifico per una libreria nel Gestore libreria nel file Proprietà dialogo (sviluppatori di applicazioni: durante la creazione di un'applicazione).

Per ulteriori informazioni, vedere: Utilizzo delle biblioteche

Operatore (#) per l'accesso diretto

L'operatore è un'estensione della norma IEC 61131-3.

È possibile che i componenti locali di un blocco funzione sovrascrivano le POU della libreria con lo stesso nome, causando ambiguità. Di conseguenza, l'accesso con la consueta convenzione dello spazio dei nomi non è possibile. Allora è utile usare il # operatore per forzare l'accesso diretto.

È possibile utilizzare la seguente sintassi per forzare l'accesso diretto:

Sintassi: <namespace> # <library POU path>

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