colin0801a 发表于 2020-4-23 17:38:37

CODESYS 资料记忆

本帖最后由 colin0801a 于 2020-4-23 17:39 编辑

CODESYS 资料记忆 请问前辈,CODESYS看手册宣告成VAR PERSISTENT RETAIN RST Warm可将资料记忆,但测试都失败,请问是否那边需注意?感谢

admin 发表于 2020-4-24 08:00:21

需要硬件支持,要看你用的那种控制器硬件。

xuedong.liu 发表于 2020-4-24 09:12:48

查一下在线帮助“PERSISTENT”关键字,里面说的比较清楚。


通过VAR PERSISTENT的持久性机制
在一个现有持久性变量列表中的变化 会导致重新初始化,即持久性的丢失。如果您能估计应用领域的频繁变化,原则上不推荐这样的列表。这主要涉及名称或已被声明的变量数据类型的变化(见下图:“更改现有的声明”)。编辑器用更新的 CODESYS 版本(> V3.5 Sp1)处理新声明的插入或现有声明的删除,操作如下:

永久变量列表的编辑器以控制器需求的方式排列永久变量。该技术如下所示:CODESYS 存储校验值和控制器中永久变量的长度。在下载期间, CODESYS 上传这些值并将它们与当前值进行比较。所有达到指定长度的变量与该项目中当前变量比较。如果这些变量仍然相同,则它们是未被初始化的;新变量被初始化了。编辑器干预变量列表,即它用占位符变量取代了在存储器中被删除的变量并且重新移动新插入的变量到列表的末尾。因此,你可以根据需要显式地修改它们,但你创建的是间隔项。这些间隔产生的结果是存储器可能不再有足够的空间来存储占位符变量。所以,您应该稍后清除这些间隔(命令 重排列表清除间隔)。然而,在清除完之后,列表将不会再匹配控制器上的列表和将要被初始化的持久性变量。

为了保留这种清除过程之外中的值,在清除处理之前,您必须在配方管理器的帮助下存储配方中的值。

改变永久变量列表中现有的声明: 如果您更改变量的名称或数据类型,这将被解释为一个新的声明,并在下一次的在线变化或下载时重新初始化!这是用户定义的数据类型发生改变的一种情况,例如:如果在结构中加入一个新的变量,或者在使用结构体的深处使变量的类型从INT变成为UINT。因此,用户定义的复杂数据类型不适用于管理永久变量列表,至少当它能预计用户定义数据类型的定义发生连续改变时是不适用的。

一般来说,你不需要一直改变永久变量的列表。然而,如果你希望这在实践中成为必须,最好通过 应用设计器 中的 永久性管理器 来设置其持久性,因为这种情况提供了更好的保留机制(缺点:在大量持久性变量的情况下会有相当大的性能损失)。在特殊情况下,为了在下一次下载后将变量值重新加载到控制器,您可以考虑从一开始就保存配方中变量的当前值。

colin0801a 发表于 2020-4-24 14:03:44

询问厂商后,目前重开机测试可以了,感谢
页: [1]
查看完整版本: CODESYS 资料记忆