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