.

Retain变量-RETAIN

.
.

保持型变量由关键字RETAIN声明,添加到范围VARVAR_INPUTVAR_OUTPUTVAR_IN_OUTVAR_STATVAR_GLOBAL的编程对象中。

.声明的语法:


<范围> RETAIN
    <标识符>: <数据类型> ( := <初始化> )? // ( ...)? : 可选的
END_VAR
<范围> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL
 

不允许使用AT关键字分配输入,输出或内存地址。

.
.

.示例

.在一POU中:


VAR RETAIN
    iVarRetain: INT;
END_VAR
 

.在一GVL中:


VAR_GLOBAL RETAIN
    g_iVarRetain: INT;
END_VAR
 
.
可能的声明位置
.

在函数的本地

只有变量位于保持存储区中。

信息:使用冗余时,整个程序及其所有数据都位于保留存储区中。

全局地在全局变量列表中

只有变量位于保持存储区中。

信息:使用冗余时,整个全局变量列表及其所有数据都位于保留存储区中。

仅在功能块中

功能块的整个实例及其所有数据位于保留存储区中。仅声明的保持变量受保护。

局部地在一个函数中

该变量不在保留存储区中。 这个声明没有任何作用。

局部和持久地在一个函数中。

该变量不在保留存储区中。该声明没有任何作用。

 

尽可能避免使用RETAIN标记功能块的变量。