Skip to main content

Attribute: implicit-parameter

L'attribut amène le POU appelant à fournir automatiquement des informations contextuelles implicites sans nécessiter de transfert de paramètres explicite ou une fonction de réflexion complexe. Ces informations contextuelles sont utilisées comme base pour un protocole précis qui peut être créé même dans des environnements de production sans trop d'effort.

En tant que développeur d'applications PLC, vous pouvez utiliser cet attribut pour générer des informations de journal permettant d'identifier précisément où se produisent les erreurs de production. Il n'est pas nécessaire de définir des points d'arrêt ou d'adapter les emplacements des appels individuels

En tant que développeur de bibliothèques, vous pouvez utiliser cet attribut pour fournir des fonctions de validation qui détectent automatiquement le POU appelant. Cela fournit aux utilisateurs de la bibliothèque des messages d'erreur clairs et significatifs sans nécessiter d'efforts de programmation supplémentaires.

Syntaxe:

{attribute 'implicit-parameter' := <value> }

Tableau 26. Possible values for <value>

'pouname'

Renvoie le nom qualifié du POU appelant

'position'

Spécifie la position de l'appel dans un format lisible par l'homme

'instance-path'

Renvoie le chemin d'instance du POU appelant



Point d'insertion autorisé :

L'attribut peut être utilisé dans la zone de déclaration VAR_INPUT via une variable d'entrée de type STRING ou WSTRING. POINTER TO STRING et POINTER TO WSTRING sont également possibles.

Cet attribut est autorisé dans les POU du type suivant :

  • Programme : PROGRAM

  • Fonction : FUNCTION

  • Méthode : METHOD, également méthode d'interface

Le fonctions de vérification fourni pour une surveillance implicite, prend en charge l'attribut.

L'attribut ne peut pas être hérité.

L'attribut n'est pas pris en charge pour les appels POU générés automatiquement (tels que FB_Init, FB_Reinit, ou FB_Exit).

Exemple 273. Exemple

Déclaration

FUNCTION MyAwesomeLogger
VAR_INPUT
    {attribute 'implicit-parameter':='pouname'}
    pouName : STRING := '';
    {attribute 'implicit-parameter':='position'}
    position : POINTER TO STRING := 0; // Pass by reference is supported for performance reasons
    {attribute 'implicit-parameter':='instance-path'}
    instance_path : STRING := '';
END_VAR

Détails de mise en œuvre

FUNCTION_BLOCK FB    
    // Can be used like this, to pass all arguments automatically
    MyAwesomeLogger(); // Values inside the function: pouName="FB", position=ADR("Line 15"), instance_path = "Device.Application.GVL.fbInstance"
    // Or like this with explicit parameters
    MyAwesomeLogger(pouName := 'OverwrittenName', position := ADR('OverwrittenPosition'));
END_PROGRAM