Skip to main content

Operador: espacio de nombres de la biblioteca

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

Ejemplo: LIB_A.FB_A

Un identificador de bloque de biblioteca se extiende por el espacio de nombres de la biblioteca (separado como un prefijo con un punto) para acceder al bloque de biblioteca de una manera única y calificada. El espacio de nombres y el nombre de una biblioteca suelen coincidir.

ejemplo 161. Ejemplo

Una biblioteca se incluye en un proyecto y contiene la FB_A POU. Sin embargo, el bloque de funciones con el mismo nombre ya está disponible localmente en el proyecto. Identifique la POU de la biblioteca como LIB_A.FB_A para acceder a la POU de la biblioteca, no al bloque de función 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


Puede definir otro identificador para el espacio de nombres. Para hacer esto, especifique un espacio de nombres en la información del proyecto (desarrolladores de bibliotecas: al crear un proyecto de biblioteca). Alternativamente, también puede especificar un espacio de nombres específico para una biblioteca en el Administrador de bibliotecas en el Propiedades diálogo (desarrolladores de aplicaciones: al crear una aplicación).

Para más información, ver: Uso de bibliotecas

Operador (#) para acceso directo

El operador es una extensión del estándar IEC 61131-3.

Es posible que los componentes locales de un bloque de funciones anulen las POU de la biblioteca con el mismo nombre, lo que genera ambigüedad. Como resultado, no es posible el acceso con la convención de espacio de nombres habitual. Entonces es útil usar el # operador para forzar el acceso directo.

Puede utilizar la siguiente sintaxis para forzar el acceso directo:

Sintaxis: <namespace> # <library POU path>

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