组态软件编程语法之变量

简介: 组态软件编程语法之变量

变量

与数据的外部表示相反,变量提供能够改变其内容的数据对象的识别方法。例如,可改变与PLC输入/输出或存储器有关的数据。变量可以被声明为基本数据类型、一般数据类型和衍生数据类型。

1.变量的表示

在IEC 61131-3标准中,变量分为单元素变量和多元素变量。

1)单元素变量

单元素变量(Single-element Variable)用于表示基本数据类型的单一数据元素、衍生的枚举数据类型或子范围数据类型的数据元素,或上述数据类型的衍生数据元素。单元素变量可以是直接变量或符号变量。

(1)直接变量(Direct Variable)以百分号“%”开始,随后是位置前缀符号和大小写前缀符号。如果有分级,则用整数表示分级,并用小数点“.”分隔表示直接变量。

fe8a9d897b7d47c6acb98fda2a570eb6.png


表是直接表示变量中前缀符号的定义。

167e72207e8447f7a6431a1fdc636ea6.png


表是直接表示变量的示例。直接变量可用于程序、功能块、配置和资源的声明中。一个可编程控制器系统的程序存取另一个可编程控制器中的数据时,采用分级寻址的方式,这应被认为是一种语言的扩展。

直接变量类似于传统可编程控制器中的操作数,它对应于一个可寻址的存储器单元。需要注意的是,在早期可编程控制器的产品中并没有对操作数进行明确定义,所以一些产品用编号表示操作数。在IEC 61131-3标准中,将存储器的地址分为输入单元、输出单元和存储器单元,并且用直接表示变量的方法来表示变量。直接表示变量的值可根据变量的地址直接存取。例如,VAR_INPUT AT %IX2.3:BOOL;END_VAR表示一个变量直接从%IX2.3地址读取布尔数据类型的数据。


(2)符号变量(Symbolic Variable)

符号变量是用符号表示的变量,其地址对不同的可编程控制器可以不同,从而为程序的移植创造条件。例如,在VAR_INPUT SW_1 AT %IX2.3:BOOL;END_VAR中,用符号变量SW_1表示从%IX2.3地址读取布尔量。当实际地址改变时,在程序的其他部分仍使用该符号变量,因此,只需要对该地址进行修改,对程序的其他部分可以不修改,就可以完成整个程序的移植。

直接表示变量和符号表示变量借助于分级地址指令表语言中的应用,给一个标志或I/O地址指定一个数据类型,这样能使编程系统检查是否正在正确地存取该变量。例如,一个被说明为“AT %QD5:DINT”的变量不会因疏忽而以UINT或REAL类型存取。用直接表示变量代替至今还在程序中经常使用的直接PLC地址,在这种情况下,地址的作用与变量名(如%IW4)一样。

符号变量的声明及其使用与正常变量的声明和使用一样,只不过其存取位置不能由编程系统自由地指定,而限于由用户以“AT”指定的地址。这些变量对应于预先由分配表或符号表指定的地址。

在程序、资源和配置中,直接表示变量和符号变量可以用于变量类型VAR,VAR_GLOBAL,VAR_EXTERRNAL和VAR_ACCESS的声明。在功能块中,它们只能用VAR_EXTERNAL输入。


2)多元素变量

多元素变量(Multi-element Variable)包括衍生数据类型中数组类型的变量和结构化数据类型的变量。

数组数据类型变量也称为数组变量,它用符号变量名和随后的下标表示。下标包含在一对括号内,用逗号分隔。例如,数组变量AI:ARRAY[1…3,1…8] OF REAL表示数组变量AI,它是由3×8个实数数据类型的变量组成的,各组成变量是:AI[1,1],AI[1,2],…,AI[1,8],AI[2,1],AI[2,2],…,AI[2,8],AI[3,1],AI[3,2],…,AI[3,8]。

结构数据类型变量也称为结构变量,它用结构变量名表示。

访问数组中的元素,可以通过选择方括号内整数的数组注脚(索引)的方法。对结构元素寻址,可以采用“结构的变量名.结构部件名”的形式。

相关文章
|
物联网 开发工具 芯片
剑池CDK开发工具介绍 | 《平头哥剑池CDK快速上手指南》第一章
剑池CDK是平头哥推出的一款专业面向IoT开发领域的集成开发环境,该集成开发环境围绕平头哥“1天上手,5天出原型,20天出产品”1520技术理念,为开发者提供简洁统一的图形开发界面,帮助开发者进行应用开发。该开发环境目前已支持平头哥自研指令集C-SKY架构和RISC-V架构的芯片的开发。
剑池CDK开发工具介绍  |  《平头哥剑池CDK快速上手指南》第一章
|
Ubuntu Shell 网络安全
实例 : 查看Docker容器内文件系统
dockfile ; docker container ; docker images
5633 0
|
JavaScript 前端开发 数据安全/隐私保护
Vue如何实现权限管理(动态路由addRoutes)
Vue如何实现权限管理(动态路由addRoutes)
1131 1
|
11月前
|
前端开发 Java 数据库
2025 年 Java 学习完整步骤及详细路线指南
本教程涵盖Java从基础到高级的完整学习路径,包括环境配置、语法基础、面向对象编程、集合框架、多线程、网络编程、数据库操作、Spring Boot、微服务架构及项目实战。通过系统学习与实操,助你全面掌握Java核心技术与企业级应用开发。
1442 0
|
11月前
|
机器学习/深度学习 数据采集 数据可视化
基于YOLOv8的PCB缺陷检测识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8实现PCB缺陷检测,提供一站式解决方案。包含完整训练代码、标注数据集、预训练权重及PyQt5图形界面,支持图片、文件夹、视频和摄像头四种检测模式。项目开箱即用,适合科研、工业与毕业设计。核心功能涵盖模型训练、推理部署、结果保存等,检测类型包括缺孔、鼠咬缺口、开路、短路、飞线和杂铜。项目具备高性能检测、友好界面、灵活扩展及多输入源支持等优势,未来可优化模型轻量化、多尺度检测及报告生成等功能。
基于YOLOv8的PCB缺陷检测识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
负载均衡 网络协议 应用服务中间件
HAProxy 与 NGINX:全面比较
【8月更文挑战第21天】
3374 0
HAProxy 与 NGINX:全面比较
|
JavaScript Linux iOS开发
详解如何实现自由切换Node.js版本
不同的项目中需要使用不同版本的 Node.js,有时旧项目需要旧版本,而新项目则可能依赖最新的 Node.js 版本
2641 0
|
自然语言处理 PyTorch 语音技术
Transformers 4.37 中文文档(八十)(4)
Transformers 4.37 中文文档(八十)
400 2
|
机器学习/深度学习 数据采集
开源多结构蛋白质预测大模型——Genie 2
【6月更文挑战第24天】Genie 2,一款开源的深度学习蛋白质设计模型,扩展了原始Genie的结构预测能力,通过创新架构和大规模数据增强处理更复杂多样的蛋白质结构。引入的多基序框架允许设计多功能蛋白质,提升无条件和有条件生成的性能。尽管面临数据质量、复杂相互作用处理及模型可解释性的挑战,Genie 2仍为蛋白质设计树立新标杆。[论文链接](https://arxiv.org/abs/2405.15489)
429 1
|
网络协议 网络架构
计算机网络中MSS和MTU的区别
【4月更文挑战第11天】
2603 0
计算机网络中MSS和MTU的区别

热门文章

最新文章