属性: implicit-parameter
该属性使调用 POU 自动提供隐式上下文信息,无需显式参数传递或复杂的反射函数。此上下文信息用作精确协议的基础,即使在生产环境中也可以轻松创建该协议。
作为 PLC 应用程序开发人员,您可以使用此属性生成日志信息,这些信息可以精确识别生产错误发生的位置。无需设置断点或调整各个呼叫位置
作为库开发人员,您可以使用此属性提供自动检测调用 POU 的验证函数。这为库用户提供了清晰而有意义的错误消息,而无需额外的编程工作。
句法:
{attribute 'implicit-parameter' := <value> }
表 26. Possible values for <value>
| 返回调用 POU 的限定名称 |
| 以人类可读的格式指定通话位置 |
| 返回调用 POU 的实例路径 |
允许的插入点:
该属性可以在声明区域中使用 VAR_INPUT 通过类型为的输入变量 STRING 或者 WSTRING。 POINTER TO STRING 和 POINTER TO WSTRING 也是可能的。
允许在以下类型的 POU 中使用此属性:
节目:
PROGRAM功能:
FUNCTION方法:
METHOD,也是接口方法
这个 检查函数 提供隐式监控支持该属性。
该属性无法继承。
自动生成的 POU 呼叫不支持该属性(例如 FB_Init, FB_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