组态软件编程语法之变量

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

变量

与数据的外部表示相反,变量提供能够改变其内容的数据对象的识别方法。例如,可改变与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]。

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

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

相关文章
|
前端开发 JavaScript 物联网
JavaScript使用Modbus协议实现RTU设备连云
在阿里云物联网平台下发物模型属性设置数据,HaaS600Kit 接收并解析云端数据后控制 Modbus 继电器设备进行开关动作。
JavaScript使用Modbus协议实现RTU设备连云
|
缓存 关系型数据库 MySQL
MariaDB的安装与配置
MariaDB的安装与配置
1999 0
|
测试技术
|
开发工具 git
Git - Smart Checkout、Force Checkout 区别
Git - Smart Checkout、Force Checkout 区别
1823 0
Git - Smart Checkout、Force Checkout 区别
|
6月前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
271 29
|
10月前
|
监控 Cloud Native 持续交付
云原生时代的微服务架构设计原则与实践
【9月更文挑战第27天】本文深入探讨了在云原生环境下,如何高效地实施微服务架构。通过分析微服务的基本概念、设计原则和关键技术,结合实际案例,指导读者理解并应用微服务架构于云计算项目之中。文章旨在为软件开发者和架构师提供一条清晰的路径,以实现更加灵活、可扩展且易于维护的系统。
|
9月前
|
关系型数据库 MySQL Java
【MySQL】基础语法大全
【MySQL】基础语法大全
426 0
|
11月前
|
负载均衡 网络协议 应用服务中间件
HAProxy 与 NGINX:全面比较
【8月更文挑战第21天】
1631 0
HAProxy 与 NGINX:全面比较
|
11月前
|
负载均衡 安全 网络虚拟化
CCE集群VPC网络模式下几种访问场景
【8月更文挑战第13天】在CCE(Cloud Container Engine)集群的VPC网络模式下,支持多样化的访问场景:容器应用可直接利用VPC访问外部资源;通过ELB负载均衡或VPN/专线配置,实现外部网络对容器应用的安全访问;容器间通过内部IP或服务发现机制相互通信;跨VPC访问则可通过VPC对等连接或云连接服务实现。这些方案确保了应用内外部通信的安全与高效。
380 3
|
12月前
|
机器学习/深度学习 存储 监控
云上智能视频分析:解锁视频数据的无限潜能
更加安全可靠:随着网络安全和数据保护意识的提高,云上智能视频分析系统将更加注重安全性和可靠性保障。未来的系统将采用更加先进的加密技术和安全防护措施,确保视频数据的传输和存储过程安全可靠;同时还将建立完善
342 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等