Skip to main content

属性:call_after_init

重要

VAR_INPUT 使用此属性的函数或方法中的声明会导致编译错误。原因:在这种情况下,调用时输入变量是未知的,这在在线更改期间隐式发生。

重要

标有此属性的函数只有在编译并下载到控制器后才会执行。

如果未在项目的其他任何地方调用您的函数,则编译器可以将该函数排除在构建范围之外。为确保该函数始终处于编译状态并可供执行,请添加 pragma {attribute 'linkalways'} 到函数声明。

或者,你也可以启用 永远链接 该函数的属性对话框中的选项 构建 选项卡。

如果没有此选项,您的初始化函数可能无法运行,即使它看起来配置正确。

注意

编译器版本 3.4.1.0 支持此功能。

此 pragma 的效果是在功能块实例初始化后隐式调用方法。出于性能原因,您必须在声明部分上方的第一行中将属性添加到功能块和方法中。

具有此 pragma 的方法在 FB_Init 方法和初始化表达式的变量值在实例声明中有效之后。

句法

{attribute 'call_after_init'}

调用:方法和功能块声明部分上方的第一行

259. 例子

定义

{attribute 'call_after_init'}
FUNCTION_BLOCK FB_DoIt
... <functionblock definition>

{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>

该声明在后续代码处理中实现如下声明:

fbDoIt : FB_DoIt := (in1 := 99);

代码处理

fbDoIt.FB_Init();
fbDoIt.in1 := 99;
fbDoIt.FB_AfterInit();

这允许对用户定义的初始化做出反应 FB_AfterInit.