Skip to main content

属性:init_on_onlchange

快速在线更改期间没有初始化代码

由于编译器版本 >= 3.5.0.0,因此对较小的更改执行“快速在线更改”。在快速在线更改期间,仅编译和下载修改后的 POU。特别是,不会生成初始化代码。

对于具有的变量 init_on_onlchange 属性,这也导致 正在生成初始化代码。在通常的情况下,这没有影响,因为该属性通常用于用地址初始化变量。但是,在快速在线更改期间,不会发生变量更改其地址的情况。

但是,为了确保 init_on_onlchange 属性应用在整个应用程序代码中,一般对于应用程序你可以使用 no_fast_online_change 编译器定义禁用快速在线更改。为此,请在设备树中选择您的应用程序对象并单击 特性 在上下文菜单中。以下 建造 选项卡,添加 no_fast_online_change 编译器定义。

有关详细信息,请参阅: 建造

此 pragma 的效果是应用 pragma 的变量在每次在线更改时都会被初始化。

句法:

{attribute 'init_on_onlchange' }

插入位置:变量声明行上方的行。

273. 例子
VAR_GLOBAL    
    {attribute 'init_on_onlchange'}    
    g_fastOnlineChange : BOOL := FALSE;
END_VAR
{attribute 'call_after_online_change_slot' := '4567'}
FUNCTION FUNC_OnlineChangeDetection : BOOL
VAR_INPUT
END_VAR
VAR
END_VAR 

IF GVL_OnlineChangeDetection.g_fastOnlineChange THEN    
    // here you know that you are inside a FastOnlineChange
END_IF
// reset for next detection
GVL_OnlineChangeDetection.g_fastOnlineChange := TRUE;