Attribute hide
El pragma {attribute 'hide'}
permite evitar que variables o incluso firmas completas se muestren dentro de la funcionalidad de los componentes del listado o la parte de la declaración o la accesibilidad en la modalidad en línea o la configuración de símbolos. Solamente se ocultará la variable posterior al pragma.
Si conoce la ruta de instancia de una variable, puede direccionarla en el código aunque se asigne {attribute 'hide'}
.
Esto puede ser útil para los desarrolladores de bibliotecas.
{attribute 'hide'}
Para ocultar todas las variables locales de una firma, utilice attribute hide_all_locals.
El bloque de funciones myPOU se implementa mediante el atributo:
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
{attribute 'hide'}
a_invisible: BOOL;
a_visible: BOOL;
END_VAR
VAR_OUTPUT
b:INT;
END_VAR
En el programa principal se definen dos instancias del bloque de funciones myPOU:
PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR
Al asignar un valor de entrada a POU1
, la funcionalidad de componentes de listado que funciona al escribir POU1
en la parte de implementación de PLC_PRG
mostrará las variables de entrada a
y a_visible
(y la variable de salida b
). La variable de entrada oculta a_invisible
no se mostrará.
Para ocultar de la misma manera las POU subordinadas (como métodos y propiedades), inserte el pragma {attribute 'hide'}
también al comienzo de las declaraciones.
{attribute 'hide'}
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
iA : INT;
iCount : INT;
iInvisible : INT;
END_VAR
{attribute 'hide'}
METHOD METH_Count : INT
VAR_INPUT
END_VAR
iCount := iCount + 1;
{attribute 'hide'}
METHOD METH_Invisible : BOOL
VAR_INPUT
END_VAR
iInvisible := iInvisible + 1;
{attribute 'hide'}
PROPERTY PUBLIC prop_iA : INT
Al hacerlo, las POU no se muestran durante el desarrollo de la aplicación. Sin embargo, se puede acceder a ellas introduciendo la ruta de instancia.
PROGRAM PLC_PRG
VAR
fbHidden : FB_A; // Hidden function block from library HiddenFunctionality
iCounter : INT;
END_VAR
fbHidden.METH_Invisible();
iCounter := fbHidden.iInvisible;
La supervisión no se realiza en la modalidad en línea.