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> }
| Renvoie le nom qualifié du POU appelant |
| Spécifie la position de l'appel dans un format lisible par l'homme |
| 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 :
PROGRAMFonction :
FUNCTIONMé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).
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