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

news2024/11/24 15:45:56
所谓变量,就是用字母、数字和下划线组成的一个标识符。
按照数据类型的不同,变量可以分为标准类型和用户自定义类型。其中标准类型包括布尔型
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.coloradmin.cn/o/1048883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络协议】TCP报文格式

1.源端口和目的端口 源端口字段占16比特&#xff0c;用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。 目的端口字段占16比特&#xff0c;用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。 2.序号 当序号增加到最后一个时&#xff0c;下…

【C语言_题库】舍罕网的失算?明明是我的失算!

test 舍罕王 失算 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋&#xff0c;决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8 * 8 共 64 格的象棋说&#xff1a;“陛下&#xff0c;请您赏给我一些麦子吧。就在棋盘的第 1 格放 1 粒&#xff0c;第 2…

leetCode 198.打家劫舍 动态规划

198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#…

机器学习---BP算法

1. 多级网络 层号确定层的高低&#xff1a;层号较小者&#xff0c;层次较低&#xff0c;层号较大者&#xff0c;层次较高。 输入层&#xff1a;被记作第0层。该层负责接收来自网络外部的信息。 第j层&#xff1a;第j-1层的直接后继层&#xff08;j>0&#xff09;&#xff…

sub0 里斯本精彩回顾:探索波卡区块的创新空间

sub0 Europe 2023 已在葡萄牙里斯本圆满结束&#xff01;sub0 大会是波卡生态开发者大会&#xff0c;由波卡协议的主要开发方 Parity Technologies 举办的开发者大会&#xff0c;汇聚了全球 Substrate 开发者和学习者&#xff0c;旨在为 Polkadot 和 Kusama 生态的开发者、贡献…

【红日靶场】vulnstack2-完整渗透过程

文章目录 一、网络拓扑二、描述配置环境渗透开始信息收集开始攻击干掉杀软cs上线权限提升 内网探测横向移动再次横向rdp连接痕迹清除 总结&#xff1a; 一、网络拓扑 网络配置&#xff1a; 二、描述 红队实战系列&#xff0c;主要以真实企业环境为实例搭建一系列靶场&#x…

Library ‘iconv2.4.0‘ not found 问题及解决方法

今天升级了一下Mac mini 和Xcode&#xff0c;运行项目就报Library iconv2.4.0 not found的错误 mac mini 升级&#xff1a;13.0 --> 13.6 xcode升级到&#xff1a;15.0(15A240d) 可以肯定 项目在旧版本下&#xff0c;是能通过编译 并且能运行的。 废话不多说&#xff0c…

网络安全——自学(黑客)方法

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

再生之术:遗忘 Root 密码的 CentOS8 Stream 解决方案

文章目录 大魔头 RootGRUB 引导界面BootLoaderGRUB主要功能选择启动的操作系统编辑内核启动参数 进入GRUB 引导界面编辑内核启动参数单用户模式 进入内核编辑界面rd.break进入单用户模式 大魔头 Root 哈哈&#xff0c;你好&#xff01;今天&#xff0c;让我们来聊聊 Linux 系统…

提高效率!掌握项目管理工具中任务优先级的使用技巧

在项目管理中&#xff0c;我们经常会遇到一些具有强制依赖关系的任务。这些任务之间的关系是绝对的&#xff0c;并且毫无疑问必须首先完成什么。例如&#xff0c;您必须先设计一个产品&#xff0c;然后才能构建它&#xff0c;并且必须先构建它&#xff0c;然后才能绘制它。然而…

嵌入式芯片-NE555

目录 1、比较器&#xff08;运放&#xff09; 2、相反门&#xff08;非门&#xff09; 3、或非门 4、双稳态触发器 5、NE555功能框图 1、比较器&#xff08;运放&#xff09; 2、相反门&#xff08;非门&#xff09; 3、或非门 4、双稳态触发器 5、NE555功能框图

FastestDet---模型训练

代码:https://github.com/dog-qiuqiu/FastestDet 一、构造数据集 数据集格式YOLO相同,每张图片对应一个txt标签文件。标签格式:“category cx cy wh”,category为类别id,cx, cy为归一化标签框中心点的坐标,w, h为归一化标签框的宽度和高度, .txt标签文件内容示例如下: 0…

基于SpringBoot的医院管理系统

目录 前言 一、技术栈 二、系统功能介绍 病床信息管理 药房信息管理 个人中心管理 药房信息 病床类别 科室信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介…

如何像人类一样写HTML之代码编辑器的选择与基础框架

文章目录 前言一、 HTML是什么&#xff1f;二、 HTML的发展历史三、 HTML的优点a. 简单易学b. 跨浏览器兼容性c. 良好的可读性 四、 超文本是什么&#xff1f;五、 代码编辑器的选择&#xff1a;VSCodea. 安装VSCodeb. 创建HTML文件方式1方式2 c. 编写HTML代码安装Live Server插…

【算法基础】数组和链表,动态数组,循环数组,链表的变种

目录 1 数组&#xff08;Array&#xff09; 1.1 定义和特点 1.2 基本操作 1.3 数组的时间复杂度 1.4 应用场景 2 链表&#xff08;Linked List&#xff09; 2.1 定义和特点&#xff1a; 2.1.1 单向链表&#xff08;Singly Linked List&#xff09; 2.1.2 双向链表&…

Axure RP9 引入eCharts图表

一、 ECharts 地址&#xff1a;https://echarts.apache.org/zh/index.html 概述&#xff1a;一个基于 JavaScript 的开源可视化图表库 提供了很多图标样式案例 二、 Axure引入eCharts图表步骤 步骤一&#xff1a;打开Axure&#xff0c;添加矩形元素&#xff0c;调整矩形所…

Mybatis 二级缓存

之前我们介绍过映射器与XML配置职责分离&#xff0c;本篇我们在此基础上介绍Mybatis中二级缓存的使用。 如果您对映射器与XML配置职责分离不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis 映射器与XML配置职责分离https://blog.c…

轻松解决软件游戏msvcr120.dll丢失问题,msvcr120.dll丢失的修复步骤分享

msvcr120.dll 丢失可能会让许多软件和游戏无法正常运行&#xff0c;给用户带来无尽的困扰。当你尝试打开某个程序时&#xff0c;可能会弹出一个提示框&#xff0c;告诉你缺少 msvcr120.dll 文件。当你尝试运行某个游戏时&#xff0c;可能会遇到无法启动或运行一段时间后崩溃的问…

java项目中数据权限实现思路

一、需求&#xff1a; 同样的页面&#xff0c;不同的账号登录进去&#xff0c;看到的数据不一样。 二、权限管理的方式 RBAC模型 角色与数据权限的关系&#xff1a; 比如管理员角色&#xff0c;他的数据权限是全部&#xff0c;那么拥有该角色的用户&#xff0c;所能看到的数…

基于YOLOv8模型的蜜蜂目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的蜜蜂目标检测系统可用于日常生活中检测与定位蜜蜂目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…