Attribute hide

Descripción general

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.

Sintaxis

{attribute 'hide'}

Para ocultar todas las variables locales de una firma, utilice attribute hide_all_locals.

Ejemplo de una variable oculta

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á.

Ejemplo de una POU de biblioteca oculta

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.