# 使用保留变量保存数据 ​

保留变量在热启动后保留其值。但是，持久变量的值保留程度更高。

控制器上需要特殊的非易失性存储区，例如NVRAM或UPS，以延长使用寿命。将数据保护在这样的内存中不需要额外的时间，这与使用Persistence Manager保留数据相比是一个优势。如果控制器不提供硬件支持，则数据通常存储在文件中。如果正确关闭控制器，数据将被保留。但是，如果发生电源故障或拔出插头，数据将会丢失。

### 声明​​

要声明保留变量，请将RETAIN关键字添加到变量声明中。

### 行为​

保留的价值

- 不受控制的出口
- 调用热复位命令

重新初始化

- 重复下载应用程序
- 调用冷复位命令（与持久变量相反）
- 调用初始复位命令

重新启动应用程序时，通常使用明确预设的初始值或默认值来初始化其变量。标有RETAIN关键字的变量将根据目标系统在单独的存储区中进行管理并保留其值。然后，例如保护变量免受电源故障的影响。这意味着您可以将保留变量应用于生产线中的零件计数器，以便即使在电源故障后也可以继续计数。

### 保持功能块实例的内存位置​

功能块实例作为一个块存储在存储器中。这是必需的，以便相同的代码可以在不同的实例上工作。如果在功能块中将变量标记为RETAIN，则该功能块的每个实例均受所有变量保护。对于没有以这种方式标记的功能块变量也是如此。但是，非易失性存储器的可用程度与主存储器不同。

具有指向SRAM中的实例作为变量的指针的功能块未存储在受保护的存储器中。

### 导入MetaFacture V2.3项目​

当您打开MetaFacture V2.3项目以将其导入MetaFacture V3时，保留变量的声明将保留并保持与以前一样有效。