当前位置: 首页 > news >正文

LM小型可编程控制器软件(基于CoDeSys)笔记三十一:保持变量和非保持变量

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

http://www.lryc.cn/news/177766.html

相关文章:

  • 「C++之STL」关于在模拟实现STL容器中的深浅拷贝问题
  • 文件内容显示
  • Milvus+Attu
  • LeetCode算法二叉树—226. 翻转二叉树
  • AI项目十:Swin Transformer目标检测环境搭建
  • 【IPC 通信】信号处理接口 Signal API(5)
  • Arduino PLC IDE
  • 记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章
  • Java8实战-总结37
  • 【超详细】前段开发之详细的Vue3入门教程,特别适合小白系统学习,入门到熟练使用Vue看这一篇就够了!
  • 【深度学习】ONNX模型多线程快速部署【基础】
  • Python 同、异步HTTP客户端封装:性能与简洁性的较量
  • 无代码赋能数字化,云表搭桥铺路链接“数据孤岛”
  • 无需公网IP,实现公网SSH远程登录MacOS【内网穿透】
  • 网络爬虫学习笔记 1 HTTP基本原理
  • 113. 路径总和ii
  • 百度APP iOS端包体积50M优化实践(六)无用方法清理
  • MySQL了解视图View (视图篇 一)
  • 使用applescript自动化trilium的数学公式环境
  • idea中maven项目打包成jar,报错没有主清单属性解决方法
  • Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache
  • 基于PHP+MySQL的家教平台
  • 吉利微型纯电,5 万元的快乐
  • Gitee使用方法
  • 前端适配笔记本缩放125%,150%导致页面错乱问题
  • 多线程的学习中篇下
  • 贪心算法-拼接字符串使得字典顺序最小问题
  • Linux--互斥锁
  • [2023.09.21]:源码已上传,供大家了解Rust Yew的前后端开发
  • 时序分解 | Matlab实现CEEMD互补集合经验模态分解时间序列信号分解