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