所谓变量,就是用字母、数字和下划线组成的一个标识符。
按照数据类型的不同,变量可以分为标准类型和用户自定义类型。其中标准类型包括布尔型
( 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 所示的系统错误。