保留变量在热启动后保留其值。然而,持久变量的保值程度更高。
控制器上需要一个特殊的非易失性内存区域,如 NVRAM 或 UPS,以延长使用寿命。在这样的内存中保护保留变量不需要额外的时间,这是与使用持久性管理器保留数据相比的优势。如果控制器不提供硬件支持,那么数据通常存储在文件中。如果正确关闭控制器,数据将被保留。但是,如果发生断电或拔出插头,数据就会丢失。
声明
要声明保留变量,请在变量声明中添加RETAIN
关键字。
行为
保留数值
-
失控出口
-
调用“Reset Warm” 命令
重新初始化
-
重复下载应用程序
-
调用“Reset Cold” 命令(与持久变量相反)
-
调用“重置原点” 命令
重新启动应用程序时,变量通常会以明确预设的初始值或默认值进行初始化。使用RETAIN
关键字标记的变量将根据目标系统的不同在单独的内存区域中进行管理,并保留其值。这样,变量就能在断电等情况下得到保护。这意味着您可以将保留变量应用于生产线上的零件计数器,这样即使在断电后也能继续计数。
持久功能块实例的内存位置
功能块实例在内存中存储为一个块。这是必要的,这样相同的代码才能在不同的实例上运行。如果函数块中的变量被标记为RETAIN
,那么函数块的每个实例都会受到所有变量的保护。对于未作此标记的功能块变量也是如此。不过,非易失性存储器的可用程度不如主存储器。
将指向 SRAM 中实例的指针作为变量的功能块不会存储在受保护内存中。
导入CoDeSys V2.3 项目
当您打开CoDeSys V2.3 项目并将其导入CODESYS V3 时,保留变量的声明将被保留,并继续有效。