Attribute: implicit-parameter
El atributo hace que la POU que realiza la llamada proporcione automáticamente información de contexto implícita sin requerir una transferencia de parámetros explícita ni una función de reflexión compleja. Esta información de contexto se utiliza como base para un protocolo preciso que se puede crear incluso en entornos de producción sin mucho esfuerzo
Como desarrollador de aplicaciones de PLC, puede usar este atributo para generar información de registro que pueda identificar con precisión dónde se producen los errores de producción. No es necesario establecer puntos de interrupción ni adaptar las ubicaciones de las llamadas individuales
Como desarrollador de bibliotecas, puede usar este atributo para proporcionar funciones de validación que detecten automáticamente la POU que realiza la llamada. Esto proporciona a los usuarios de la biblioteca mensajes de error claros y significativos sin requerir un esfuerzo de programación adicional.
Sintaxis:
{attribute 'implicit-parameter' := <value> }
| Devuelve el nombre completo de la POU llamante |
| Especifica la posición de la llamada en un formato legible para los humanos |
| Devuelve la ruta de instancia de la POU que realiza la llamada |
Punto de inserción permitido:
El atributo se puede usar en el área de declaración VAR_INPUT mediante una variable de entrada de tipo STRING o WSTRING. POINTER TO STRING y POINTER TO WSTRING también son posibles.
Este atributo está permitido en las POU del siguiente tipo:
Programa:
PROGRAMFunción:
FUNCTIONMétodo:
METHOD, también método de interfaz
El funciones de verificación proporcionados para la supervisión implícita, respaldan el atributo.
El atributo no se puede heredar.
El atributo no es compatible con las llamadas POU generadas automáticamente (como FB_Init, FB_Reinit, o FB_Exit).
Declaración
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
Detalles de implementación
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