剩余变量可以在一般程序运行期间保持其值不变。他们被声明为“保持变量”或者更严格的说是“永久变量”。每次会占用一个单独的内存空间。
声明决定了剩余变量在重置、下载或者重新启动PLC时“抵抗”的程度。在实际应用中,主要需要两个剩余标志的结合(见下文 ⇘ “永久变量”)。
提示! 如果打开了一个 V2.3 project 的项目,保留变量的声明依然有效,但是永久变量的声明需要重新建立,见 ⇘ “永久变量”: 还要建立一个自己的永久全局变量列表。 |
被声明为“保留”的变量是始终独立于PLC的,但是一般会在一个单独的内存区域。在项目内他们的POU或者全局变量列表声明关键词是 RETAIN。
在控制器意外关闭,或者正常开关控制器的情况下,保留变量都保持其值(或在线命令 ⇘ 热复位.。在重新启动程序时存储的值将被进一步处理。无论是以它们的初始值,或是以标准初始化,所有其它变量都重新被初始化。
应用举例:生产设备中的 工件计数器,电源故障后应继续计数。
但保留变量在 ⇘ 原始复位被重新初始化 - 对比于持久变量 - 在 ⇘ 冷复位 和应用程序下载。
保留属性可以结合永久属性。见下图: ⇘ “剩余变量行为一览表”。
提示! 如果一个局部变量在程序中被声明为VAR RETAIN,那么 这个变量肯定会存储在保留区域(如同全局保留变量)。 如果一个 功能块中的局部变量被声明为VAR RETAIN,那么此功能块的整个实例都会被保存在保留区域(POU的所有数据),据此只有声明了的保留变量会被做保留处理。 如果一个函数中的局部变量被声明为VAR RETAIN是无效的。变量不会被保存在保留区域内。如果一个函数中的局部变量被声明为PERSISTENT也是无效的 !! |
永久变量可通过关键词“PERSISTENT”识别 (VAR_GLOBAL PERSISTENT),只能在 ⇘ 原始复位中重新初始化。对比于保留变量,他们在下载后保留其值。操作时间计数器就是永久变量的一个应用实例,它在断电或者下载后依然继续工作。见如下: ⇘ “剩余变量行为一览表”。
永久变量处理方式如下所示,它是不同于 CoDeSys V2.3 :
⇘ 永久变量只能在 一个对象类型的具体全局变量列表中 被声明, 分配给一个 ⇘ 应用程序。每个应用程序只能有一个这样的列表。
与V3.3.0.1一样,以“VAR_GLOBAL PERSISTENT”作声明与“VAR_GLOBAL PERSISTENT RETAIN”或者“VAR_GLOBAL RETAIN PERSISTENT”的声明效果相同。 |
与保留变量一样,永久变量也存储在一个单独的内存空间。