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