理论教育 局域变量和全局变量的应用

局域变量和全局变量的应用

时间:2023-10-22 理论教育 版权反馈
【摘要】:图6-7 变量声明变量声明-局域变量局域变量在程序组织单元POU的变量名声明区声明。图6-8 变量可由其他POU调用变量声明-全局变量全局变量在全局变量列表中声明,如图6-9所示。与Persistent变量不同的是,Retain变量将会在新的程序下装之后被重新初始化。例如:VAR GLOBAL PERSISTENT RETAINiVarPers1:DINT;bVarPers:BOOL;END_VAR注意:目前只有全局Persistent变量可以这样。在下装过程中,这些声明将会被识别为“新”声明,而不会造成整个列表的重新初始化表6-2 保持型变量的行为概述表

局域变量和全局变量的应用

变量的声明

每一个程序组织单元POU都有一个变量声明区。

变量声明的语法结构为

变量:类型:=初始化数值。

变量声明的语法结构如图6-6所示。

978-7-111-46531-7-Chapter06-7.jpg

图6-6 变量声明的语法结构

多个变量可以如下声明:iVar1,iVar2,iVar3:INT;

变量范围由以下开始:

●VAR;

●VAR_INPUT;

●VAR_OUTPUT;

●VAR…

由END_VAR结束。变量声明如图6-7所示。

978-7-111-46531-7-Chapter06-8.jpg

图6-7 变量声明

变量声明-局域变量

局域变量在程序组织单元POU的变量名声明区声明。

它们可以被其他POU调用(取决于变量范围),如图6-8所示。

978-7-111-46531-7-Chapter06-9.jpg

图6-8 变量可由其他POU调用

变量声明-全局变量

全局变量在全局变量列表(GVL)中声明,如图6-9所示。

它们可以在所有应用中被访问。

每当键入完一个新的变量都会自动弹出一个声明框,如图6-10所示。

●CONSTANT:初始化常数。

●RETAIN:保持型变量可以在POU或全局变量列表中使用关键字“RETAIN”来声明此类变量。

978-7-111-46531-7-Chapter06-10.jpg

图6-9 全局变量声明

978-7-111-46531-7-Chapter06-11.jpg(www.daowen.com)

图6-10 自动变量声明

例如:

VAR RETAIN

iRem1:INT;(*1.Retain变量*)

END_VAR

Retain属性:以关键字RETAIN声明Retain类型变量。Retain型变量在控制器正常关闭、打开(或收到在线命令“热复位”),甚至意外关闭之后这类变量仍然能保持原来的值。随着程序重新开始运行,存储的值能继续发挥作用。生产线上的计件器便是一个典型的例子:电源被切断之后,它仍然可以在再次启动时继续计数。而其他所有变量此时都将被重新初始化,变为指定初始值或标准初始化的值。

与Persistent变量不同的是,Retain变量将会在新的程序下装之后被重新初始化。应用举例:生产机器中的计件器,在掉电之后可以继续计数。

但Retain变量在“初始化复位”、“冷复位”和程序下装之后将会重新初始化;而相对地,persistent变量只在“初始化复位”之后重新初始化。

内存位置:依赖于设备。

1)Retain型变量存储于标准数据存储区,并且被循环复制到一个Retain内存中。

2)Retain型变量仅仅被存储在一个单独的内存区中。

●PERSISTENT:变量的重新初始化按需要进行。

由关键字“PERSISTENT”识别Persistent变量(VAR_GLOBAL_PERSISTENT)。它们仅在(应用)重设起点时被重新初始化。与Retain变量相比,它们在下装后仍保持原有的值。一个Persistent变量的应用例子是操作时间计数器,即使在断电和下装以后它仍然应该继续计数。见下面的表6-2。

Persistent变量的处理情况与CoDeSys V2.3中有所不同,如下所述。

Persistent变量只能在特定的“Persistent变量”对象类型全局变量列表中声明,这一类型是指定一个应用的。每一个应用之中可能只有一个这种列表。

注意:从V3.3.0.1版开始用“VAR_GLOBAL PERSISTENT”声明,这与“VAR GLOBAL PERSISTENT RETAIN”或“VAR_GLOBAL RETAIN PERSISTENT”声明方法等效。

与Retain变量一样,Persistent变量也存储在一个独立的内存区中。

例如:

VAR GLOBAL PERSISTENT RETAIN

iVarPers1:DINT;(*1.App1中的Persistent+Retain变量*)

bVarPers:BOOL;(*2.App1中的Persistent+Retain变量*)

END_VAR

注意:目前只有全局Persistent变量可以这样。

目标系统必须提供一个独立的存储空间来保存每一个应用的Persistent变量列表。

每一次重新装载应用时,PLC中的Persistent变量列表将与工程中的列表核对。此时通过应用的名称识别PLC i.a.中的列表。一旦两者不一致,将会提示用户重新初始化应用中所有的Persistent变量。这种错误可能是由于对已经存在于列表中的声明进行重命名、移除或其他操作造成的。

用户只能在列表的末尾添加新的声明。在下装过程中,这些声明将会被识别为“新”声明,而不会造成整个列表的重新初始化

表6-2 保持型变量的行为概述表

978-7-111-46531-7-Chapter06-12.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈