变量:RETAIN
保留变量由关键字声明 RETAIN 在范围内的编程对象中添加 VAR, VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_STAT, 或者 VAR_GLOBAL.
声明的语法
<scope> RETAIN
    <identifier>: <data type> ( := <initialization> )? // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL输入、输出或内存地址的分配 AT 不允许使用关键字。
例 98. 例子
在 POU 中
VAR RETAIN
        iVarRetain: INT;
END_VAR在 GVL 中
VAR_GLOBAL RETAIN
        g_iVarRetain: INT;
END_VAR可能的申报地点
| 在程序中本地 | 只有变量位于保留内存区域。 注意使用冗余时,整个程序及其所有数据都位于保留内存区域中。 | 
| 在全局变量列表中全局 | 只有变量位于保留内存区域。 注意使用冗余时,整个全局变量列表及其所有数据都位于保留内存区域中。 | 
| 在功能块中本地 | 功能块的整个实例及其所有数据都位于保留内存区域中。只有声明的保留变量受到保护。 | 
| 在函数中本地 | 该变量不在保留内存区域中。此声明没有任何效果。 | 
| 在函数中本地和持久地 | 该变量不在保留内存区域中。此声明没有任何效果。 | 
提示
尽可能避免使用 RETAIN 标记功能块的变量。