所谓变量,就是用字母、数字和下划线组成的一个标识符。
按照数据类型的不同,变量可以分为标准类型和用户自定义类型。其中标准类型包括布尔型
(
BOOL
)、整型(
INT
)、实型(
REAL
)、字符串型(
STRING
)以及时间型(
TIME
)等。自定
义类型包括结构体(
STRUCT
)和枚举
(ENUM)
。
按照使用范围的不同,变量可以分为全局变量和局部变量。局部变量只在整个工程的一部分程
序中有效,其它程序不能引用。全局变量则可以被整个工程的任意程序引用,在整个工程中均有效。
按照属性的不同,变量分为中间变量、输入型变量、输出型变量、输入输出型变量等。
按照能否掉电保护,变量分为保持型变量和非保持型变量。
保持型变量
在很多工程中,通常需要数据具有掉电保持功能,使
PLC
断电后数据不丢失。在定义变量时,
可以直接定义变量为保持型变量,此时变量自动保存于
R
存储区,具有掉电保持功能。
在自动定义时,在自动定义对话框的右下角,选择“保持”选项,变量就自动定义为保持型变
量。在手动定义时,将变量定义在
VAR_RETAIN
和
END_VAR
之间,也可以定义该变量为掉电保
持变量。
前面讲到存储区(
4.1
章节)时曾提到,
M
区的部分地址(
%MB300~%MB799
)同样具有掉电
保持功能。将变量定义为保持型变量与将数据放入地址在
%MB300~%MB799
的存储区内,具有相
同的效果
RETAIN
以关键字
RETAIN
声明类型变量。
RETAIN
型变量在控制器正常关闭、打开(或收到在线命令
“热复位”),甚至意外关闭之后这类变量仍然能保持原来的值。随着程序重新开始运行,存储的
值能继续发挥作用。
RETAIN
类型变量声明格式如下:
VAR RETAIN
<
标识符
>:<
数据类型
>;
END_VAR
但
RETAIN
变量在“初始值位”、“冷复位”和程序下载之后将会重新初始化
内存存储位置:
RETAIN
型变量仅仅被存储在一个单独的内存区中。
在实际的工程应用中,如生产线上的计件器便是一个典型的例子:电源被切断之后,它仍然可
以在再次启动时继续计数。而其它所有变量此时都将被重新初始化,变为指定初始值或标准初始化
的值。
PERSISTENT
目前只有少数
PLC
还保留独立的内存区域用于存放
PERSISTENT
类型数据,在
CoDeSys V3.x
中,取消了其原掉电保持的功能,取而代之的是通过
VAR RETAIN PERSISTENT
或
VAR
PERSISTENT RETAIN
来实现,两者从功能上完全一样。
PERSISTENT
类型变量声明格式如下:
VAR GLOBAL PERSISTENT RETAIN
<
标识符
>:<
数据类型
>;
END_VAR
内存存储位置:与
RETAIN
变量一样,
RETAIN PERSISTENT
和
PERSISTENT RETAIN
变量
也存储在一个独立的内存区中。
CONSTANT
常量,在程序运行过程中,只能对其读取数据而不能进行修改的量称之为常量,关键字为
CONSTANT
。可以将常量声明为局部常量,也可以为全局常量。
CONSTANT
常量声明格式如下。
VAR CONSTANT
<
标识符
>:<
数据类型
> := <
初始化值
>;
END_VAR
在实际应用中,通常可以将一些重要参数或系数设为常量,这样可以有效的避免其他变量对其
修改最终影响系统整体稳定性及安全性。举例如下。
VAR CONSTANT
pi:REAL:= 3.1415926;
END_VAR
程序一旦开始运行,通过
CONSTANT
声明的变量在程序运行过程中,是不允许被修改的,如
强制修改系统会出现如图
3.41
所示的系统错误。