Skip to main content

属性: implicit-parameter

该属性使调用 POU 自动提供隐式上下文信息,无需显式参数传递或复杂的反射函数。此上下文信息用作精确协议的基础,即使在生产环境中也可以轻松创建该协议。

作为 PLC 应用程序开发人员,您可以使用此属性生成日志信息,这些信息可以精确识别生产错误发生的位置。无需设置断点或调整各个呼叫位置

作为库开发人员,您可以使用此属性提供自动检测调用 POU 的验证函数。这为库用户提供了清晰而有意义的错误消息,而无需额外的编程工作。

句法

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

26. Possible values for <value>

'pouname'

返回调用 POU 的限定名称

'position'

以人类可读的格式指定通话位置

'instance-path'

返回调用 POU 的实例路径



允许的插入点:

该属性可以在声明区域中使用 VAR_INPUT 通过类型为的输入变量 STRING 或者 WSTRINGPOINTER TO STRINGPOINTER TO WSTRING 也是可能的。

允许在以下类型的 POU 中使用此属性:

  • 节目: PROGRAM

  • 功能: FUNCTION

  • 方法: METHOD,也是接口方法

这个 检查函数 提供隐式监控支持该属性。

该属性无法继承。

自动生成的 POU 呼叫不支持该属性(例如 FB_InitFB_Reinit,或 FB_Exit)。

273. 例子

声明

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

实施细节

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