.
‘在线修改’命令
.
.

功能:此命令用于在当前应用程序上启动在线修改。完成后,CODESYS仅重新下载已在PLC上运行的应用程序的更改部分。

调用:菜单栏:在线应用程序对象的右键菜单

要求:应用程序处于在线模式。

如果在设备树中选择了应用程序,则该命令在右键菜单中可用。这样,即使该应用程序当前未激活,也可以仅对其一个应用程序执行在线更改。

小心!

在线更改会修改正在运行的应用程序,需要重新启动。

确保新的应用程序代码对受控系统仍然具有所需的效果。

根据受控设备的不同,设备和工件可能会受到损坏或危及人员的健康和生命。

提示!

1.如果执行了在线更改,则由于计算机保留其状态,因此不执行应用程序特定的初始化(例如:回原)。因此,新程序代码可能无法达到预期的效果。

2.指针变量从最后一个周期开始保留其值。如果指针指向变量,其值在在线更改中已更改,则该变量将不再产生正确的值。确保在每个循环中重新分配指针。

3.更改父应用程序后,执行在线更改时,子应用程序将从控制器中删除。

提示!

对于编译器版本>= 3.5.0.0,对较小的更改执行快速的在线更改。在这种情况下,仅编译和下载修改后的块。特别是,不会生成初始化代码。这意味着初始化具有init_on_onlchange属性的变量时也不会生成任何代码。通常,这没有效果,因为该属性主要用于初始化带有地址的变量。但是,在在线更改期间变量不会更改其地址。

为了确保init_on_onlchange属性在整个应用程序代码中的影响,通常必须使用编译器定义no_fast_online_change来取消激活该应用程序的快速在线更改。为此,请在应用程序属性(编译选项卡)中插入定义。

下载时,CODESYS还将在消息视图的编译类别中列出已更改的接口,受影响的变量以及所有带有新生成代码的块。如果内存位置发生变化,对话框将与指针一起通知你可能出现的问题。

 

在线更改的内存预留视图中,可以为在线更改配置内存预留,以便在在线更改中更改功能块时不必在内存中移动实例变量。

.
是什么阻止在线更改?

CODESYS中有一些操作,之后无法在控制器上进行在线更改。之后,应用程序必须完全重新编译。一个典型的情况是全部清除操作,该操作会删除上次下载时存储的编译信息。然而,这类操作通常会产生警告,您必须确认该警告。

但是,还有一些“常规”编辑操作会导致下次登录时无法进行在线更改。因此,在程序POU中进行编辑时,请注意状态栏中的以下符号:。当此符号变成红色()时,只能执行完整下载到控制器。双击该符号将打开应用程序信息对话框,其中列出了与上次下载的差异。在对话框中,您还可以找到有关哪些更改阻止在线更改的信息。

应用程序不同区域中阻止在线更改的操作和更改:

.

校验函数

激活或删除一个校验函数(CheckBounds, CheckRange, CheckDiv, 等。)

校验函数接口的更改(也包括插入和删除局部变量)

任务配置

更改配置设置

工程设置

更改设置部分中的编译选项(Unicode,替换常量,登录,断点)

编译器定义的更改

应用属性

更改目标系统内存设置编译选项卡)

POU属性

更改外部实现选项(编译选项卡)

任务-本地全局变量列表

所有更改

功能块

更改功能块的基本POU(EXTENDS FBbase),以及插入或删除此类基本POU

在接口列表中的更改(IMPLEMENTS ITF)。例外:在列表的末尾添加一个新接口

数据类型

将变量的数据类型从用户定义的数据类型更改为另一种用户定义的数据类型(例如,从TONTOF

数据类型从用户定义的数据类型更改为基本类型(例如,从TONTIME

注意:解决方法是,您应始终更改变量名称以及数据类型。然后将该变量初始化为新变量,并删除旧变量。然后可以进行在线更改。

报警配置

报警数据库配置的更改

更改锁存变量的数量(也影响数据库中的内存格式)

更改分布式报警的配置

数据源

配置中的所有更改

设备配置

更改设备树(也通过更新设备命令)

更改设备配置:默认情况下,对设备参数的更改无法在线更改。但是,可以在设备描述中配置异常。

注意:可以通过在线更改将I/O映射到变量。

可视化

切换覆盖功能

在V3.5 SP6之前:更改跟踪元素的配置

注意:在V3.5 SP6和更高版本中,以下条件适用:对于影响可视化或影响应用程序数据的在线更改(例如,插入了新变量),可视化将完全重新初始化。例如,对于目标可视化而言,这意味着可视化文件将在开始页面关闭并重新打开。对于网页可视化,可视化也会在短暂的等待时间后重新启动。

单位转换

插入或删除用于单位转换的对象

趋势

更改变量数或最大变量数。通过描述或特殊行设置更改变量数量

设备应用程序

通常无法进行在线更改