【发布时间】:2015-11-14 09:07:10
【问题描述】:
每次更新 PLC 程序以跟踪更改时,我都需要增加一个整数值。
有online_change和before_download这样的系统事件,但我不知道如何实现它们的功能。
我还需要在更新之间保存价值。我认为跟踪变量应该创建为RETAIN,但不确定。
【问题讨论】:
标签: codesys
每次更新 PLC 程序以跟踪更改时,我都需要增加一个整数值。
有online_change和before_download这样的系统事件,但我不知道如何实现它们的功能。
我还需要在更新之间保存价值。我认为跟踪变量应该创建为RETAIN,但不确定。
【问题讨论】:
标签: codesys
在您的情况下,变量声明类型应为VAR RETAIN PERSISTENT。在RETAIN 下声明的变量只会在程序更改时(故意)丢失其值。
我相信内置的 Codesys 库 SysLibProjectInfo.lib 具有您正在寻找的功能 SysGetProjectID。如果您将 SysGetProjectID 存储为 RETAIN PERSISTENT,然后与它进行比较,您可以跟踪更改(或者,这个唯一值可能正是您想要的,而无需手动创建 ID)。
注意:根据您声明变量的方式,更改 I/O 配置甚至可能对 VAR RETAIN PERSISTENT 变量产生意外更改(因为所有动态分配的地址都已移动,并且可能不会指向它们过去的位置)。
【讨论】:
如果我理解您,您只想知道 PLC 上正在运行什么版本,并且您想跟踪您所做的更改?你可以通过两种方式做到这一点:
由于每次在 PLC 外部进行更改时它都是一个常数,因此您滚动一个变量的 rev,该变量声明为 SoftwareVersion :WORD := 100;并将其保存在修订版全局列表中,您可以在下载到 PLC 之前添加注释并更改版本。 您还可以使用具有字段的 PLC 汇总区域输入值,然后您可以通过 CoDeSys 读取它们而无需软件上传。
当然,上面的建议也可以。
【讨论】: