所谓变量,就是用字母、数字和下划线组成的一个标识符。


按照数据类型的不同,变量可以分为标准类型和用户自定义类型。其中标准类型包括布尔型


( BOOL )、整型( INT )、实型( REAL )、字符串型( STRING )以及时间型( TIME )等。自定


义类型包括结构体( STRUCT )和枚举 (ENUM) 。


按照使用范围的不同,变量可以分为全局变量和局部变量。局部变量只在整个工程的一部分程


序中有效,其它程序不能引用。全局变量则可以被整个工程的任意程序引用,在整个工程中均有效。


按照属性的不同,变量分为中间变量、输入型变量、输出型变量、输入输出型变量等。


按照能否掉电保护,变量分为保持型变量和非保持型变量。







保持型变量



在很多工程中,通常需要数据具有掉电保持功能,使 PLC 断电后数据不丢失。在定义变量时,



可以直接定义变量为保持型变量,此时变量自动保存于 R 存储区,具有掉电保持功能。



在自动定义时,在自动定义对话框的右下角,选择“保持”选项,变量就自动定义为保持型变



量。在手动定义时,将变量定义在 VAR_RETAIN 和 END_VAR 之间,也可以定义该变量为掉电保



持变量。



前面讲到存储区( 4.1 章节)时曾提到, M 区的部分地址( %MB300~%MB799 )同样具有掉电



保持功能。将变量定义为保持型变量与将数据放入地址在 %MB300~%MB799 的存储区内,具有相



同的效果











codesys掉电数据保存数据保存_变量


 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 所示的系统错误。