变量的声明
每一个程序组织单元POU都有一个变量声明区。
变量声明的语法结构为
变量:类型:=初始化数值。
变量声明的语法结构如图6-6所示。
图6-6 变量声明的语法结构
多个变量可以如下声明:iVar1,iVar2,iVar3:INT;
变量范围由以下开始:
●VAR;
●VAR_INPUT;
●VAR_OUTPUT;
●VAR…
由END_VAR结束。变量声明如图6-7所示。
图6-7 变量声明
变量声明-局域变量
局域变量在程序组织单元POU的变量名声明区声明。
它们可以被其他POU调用(取决于变量范围),如图6-8所示。
图6-8 变量可由其他POU调用
变量声明-全局变量
全局变量在全局变量列表(GVL)中声明,如图6-9所示。
它们可以在所有应用中被访问。
每当键入完一个新的变量都会自动弹出一个声明框,如图6-10所示。
●CONSTANT:初始化常数。
●RETAIN:保持型变量可以在POU或全局变量列表中使用关键字“RETAIN”来声明此类变量。
图6-9 全局变量声明
(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 保持型变量的行为概述表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。