首页 理论教育 全局数据块及其复杂数据类型详解

全局数据块及其复杂数据类型详解

时间:2023-06-30 理论教育 版权反馈
【摘要】:单击“确定”按钮后自动生成数据块。可以在代码块的接口区和全局数据块中创建字符串、数组和结构。在数据块_1的第4行生成一个名为“电动机”的结构,数据类型为Struct。

全局数据块及其复杂数据类型详解

1.生成全局数据块

在项目“电动机控制”(见随书光盘中的同名例程)中,单击项目树PLC的“程序块”文件夹中的“添加新块”,在打开的对话框中(见图2-18中的大图),单击“数据块(DB)”按钮,生成一个数据块,可以修改其名称或采用默认的名称,其类型为默认的“全局DB”,生成数据块编号的方式为默认的“自动”。如果用单选框选中“手动”,可以修改块的编号。单击“确定”按钮后自动生成数据块。选中下面的复选框“新增并打开”,生成新的块之后,将会自动打开它。

978-7-111-58719-4-Chapter02-28.jpg

图2-18 添加数据块与数据块中的变量

2.块访问的基本知识

STEP7提供可优化访问和可标准访问这两种块访问的方式。

(1)可优化访问方式

可优化访问的数据块没有固定的定义结构。在块的变量声明中,仅为数据元素分配一个符号名称,而不分配在块中的固定地址。这些元素将自动保存在块的空闲内存区域中,在内存中不留存储间隙。这样可以提高内存空间的应用率。在这种数据块中,只能用符号地址访问块中的变量,不能使用绝对地址来访问。

这种访问方式可以快速访问经优化并由系统进行管理的数据。在间接寻址或HMI访问时不会发生访问错误,可以将指定的单个变量定义为具有保持性。无需将CPU设置为STOP模式,就可以下载已修改的块,而不会影响已加载的变量的值。GRAPH块和ARRAY数据块始终启用“优化的块访问”属性。

(2)可标准访问方式

未勾选属性中的“优化的块访问”复选框的数据块,称为“可标准访问”的数据块。它具有固定的结构,数据元素在声明中分配了一个符号名,并且在块中有固定的地址。地址在“偏移量”列中显示。这些变量既可以使用符号寻址,也可以使用绝对地址进行寻址。

978-7-111-58719-4-Chapter02-29.jpg

图2-19 设置数据块的属性

3.块访问的设置

S7-1200/1500的CPU创建的块默认的设置为“优化的块访问”。打开项目树中的“程序块”文件夹,右键单击要更改访问方式的块。选择快捷菜单中的“属性”命令,选中打开的对话框左边导航区域的“属性”(见图2-19)。启用或禁用“优化的块访问”选项,单击“确定”按钮确认。

背景数据块的块访问属性取决于对应的函数块。如果更改了函数块的访问模式,需要更新分配的背景数据块。不能改变系统块和受专有技术保护的块的访问方式。

S7-1500可标准访问的OB的启动信息与S7-300/400相同,保存在块接口Temp部分的前20个字节中。可优化访问的OB的启动信息在块接口的Input部分。S7-1200的OB只能采用可优化访问的方式。

4.字符

数据类型String(字符串)是字符组成的一维数组,每个字节存放1个字符。下面是字符串常数的例子:'PLC'或String#'PLC'。字符串的第一个字节是字符串的最大字符长度,第二个字节是字符串当前有效字符的个数,字符从第3个字节开始存放,一个字符串最多254个字符。

数据类型WString(宽字符串)存储多个数据类型为WChar的Unicode字符(长度为16位的宽字符,包括汉字),宽字符串常数的前面必须使用WString#,例如WString#’西门子’。输入时软件将在‘西门子’的前面自动添加WString#。宽字符串的第一个字是最大字符个数,默认的长度为254个宽字符,最多16382个WChar字符。第二个字是当前的总字符个数。(www.xing528.com)

可以在代码块的接口区和全局数据块中创建字符串、数组和结构。

在“数据块_1”的第2行的“名称”列(见图2-18中的小图)输入字符串的名称“故障信息”,单击“数据类型”列中的978-7-111-58719-4-Chapter02-30.jpg按钮,选中下拉式列表中的数据类型“String”。“String[30]”表示该字符串的最大字符个数为30,其启动值(初始字符)为‘OK’。

转义字符$用于标识控制字符、美元符号和单引号。ASCⅡ控制字符的使用方法见字符串的在线帮助。

5.数组

数组(Array)是由固定数目的同一种数据类型元素组成的数据结构。允许使用除了Array之外的所有数据类型作为数组的元素,数组的维数最多为6维。数组元素通过下标进行寻址。在数组声明中,下标的上、下限值在Array关键字之后的方括号中定义。

在数据块的第3行的“名称”列输入数组的名称“功率”(见图2-18中的小图),单击“数据类型”列中的978-7-111-58719-4-Chapter02-31.jpg按钮,选中下拉式列表中的数据类型“Array[lo..hi] of type”。其中的“lo”(low)和“hi”(high)分别是数组元素的下标的下限值和上限值,它们用两个小数点隔开。对于可标准访问的块,可以是任意的整数(-32768~32767),下限值应小于等于上限值。对于可优化访问的块,下标的上限值和下限值可以是任意的双整数。方括号中各维的参数用英语的逗号隔开,type是数组元素的数据类型。

将“Array[lo..hi] of type”修改为“Array[0..23] of Int”(见图2-18),其元素的数据类型为Int,元素的下标为0~23。在用户程序中,可以用符号地址"数据块_1".功率[2]或绝对地址DB1.DBW36访问数组“功率”中下标为2的元素。

图2-20给出了一个名为“电流”的二维数组Array[1..2,1..3] of Byte的内部结构,它一共有6个字节型元素,第一维的下标1、2是电动机的编号,第二维的下标1~3是三相电流序号。数组元素“电流[1,2]”是一号电动机的第2相电流。

单击图2-18中“功率”左边的978-7-111-58719-4-Chapter02-32.jpg按钮,它变为978-7-111-58719-4-Chapter02-33.jpg,将会显示数组的各个元素,可以监控它们的启动值和监控值。单击“功率”左边的978-7-111-58719-4-Chapter02-34.jpg按钮,它变为978-7-111-58719-4-Chapter02-35.jpg,数组的元素被隐藏起来。

6.结构

数据类型结构(Struct)是由固定数目的不同的数据类型的元素组成的数据结构。结构的元素可以是数组和结构,嵌套深度限制为8级(与CPU的型号有关)。用户可以把过程控制中有关的数据统一组织在一个结构中,作为一个数据单元来使用,而不是使用大量的单个的元素,为统一处理不同类型的数据或参数提供了方便。

在数据块_1的第4行生成一个名为“电动机”的结构(见图2-18),数据类型为Struct。在第5~8行生成结构的4个元素。单击“电动机”左边的978-7-111-58719-4-Chapter02-36.jpg按钮,它变为978-7-111-58719-4-Chapter02-37.jpg,结构的元素被隐藏起来。单击“电动机”左边的978-7-111-58719-4-Chapter02-38.jpg按钮,它变为978-7-111-58719-4-Chapter02-39.jpg,将会显示结构的各个元素。

数组和结构的“偏移量”列是它们在数据块中的起始绝对字节地址。结构的元素的“偏移量”列是它们在结构中的地址偏移量,可以看出数组“功率”占48B。

下面是用符号地址表示结构的元素的例子:"数据块_1".电动机.电流。

单击数据块编辑器工具栏上的978-7-111-58719-4-Chapter02-40.jpg按钮(见图2-18),在选中的变量的下面增加一个空白行,单击工具栏上的978-7-111-58719-4-Chapter02-41.jpg按钮,在选中的变量的上面增加一个空白行。单击扩展模式按钮978-7-111-58719-4-Chapter02-42.jpg,可以显示或隐藏结构和数组的元素。

选中项目树中的PLC_1,将PLC的组态数据和用户程序下载到CPU,将CPU切换到RUN模式。打开数据块_1以后,单击工具栏上的978-7-111-58719-4-Chapter02-43.jpg按钮,启动监控功能,出现“监视值”列,可以看到CPU中各变量的值。

978-7-111-58719-4-Chapter02-44.jpg

图2-20 二维数组的元素

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈