Attribute hide

Présentation

Le pragma {attribute 'hide'} permet d'empêcher l'affichage de variables, voire de signatures complètes, dans la fonctionnalité de liste des composants ou l'aide à la saisie ou la partie déclaration en mode en ligne ou la configuration de symbole. Seule la variable suivant le pragma sera masquée.

Si vous connaissez le chemin d'instance d'une variable, vous pouvez l'adresser dans le code même si {attribute 'hide'} lui est affecté.

Cela peut être utile pour les développeurs de bibliothèques.

Syntaxe

{attribute 'hide'}

Pour masquer toutes les variables locales d'une signature, utilisez attribute hide_all_locals.

Exemple de variable masquée

Le bloc fonction myPOU est implémenté avec l'attribut :

FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
{attribute 'hide'}
a_invisible: BOOL;
a_visible: BOOL;
END_VAR
VAR_OUTPUT
b:INT;
END_VAR

Dans le programme principal, deux instances du bloc fonction myPOU sont définies :

PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR

Lors de l'affectation d'une valeur d'entrée à POU1, la fonctionnalité de liste des composants (accessible en saisissant POU1 dans la partie implémentation de PLC_PRG) affichera les variables d'entrée a et a_visible (et la variable de sortie b). La variable d'entrée masquée a_invisible ne sera pas affichée.

Exemple de POU de bibliothèque masqué

Pour masquer les POU subordonnés (méthodes et propriétés, par exemple) de la même manière, insérez le pragma {attribute 'hide'} au début des déclarations.

{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

Ces POU ne seront pas affichés lors du développement de l'application. Ils restent néanmoins accessibles via leur chemin d'instance.

PROGRAM PLC_PRG
VAR
        fbHidden : FB_A; // Hidden function block from library HiddenFunctionality
        iCounter : INT;
END_VAR
fbHidden.METH_Invisible();
iCounter := fbHidden.iInvisible;

La surveillance n'est pas effectuée en mode en ligne.