前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >S7-1500 DB数据块的类型和使用方法

S7-1500 DB数据块的类型和使用方法

作者头像
科控物联
发布2022-03-29 16:57:02
8.7K0
发布2022-03-29 16:57:02
举报
文章被收录于专栏:科控自动化

1 数据块的类型

1.1 全局数据块(Global DB)

全局数据块用于存储程序数据,因此,数据块包含用户程序使用的变量数据。一个程序中可以自由创建多个数据块(不同CPU有最大数量的限制)。全局数据块必须事先定义才可以在程序中使用。要创建一个新的全局数据块,可在TIA 博途界面下点击“程序块”->“添加新块”,选择“数据块”并选择数据块类型为“全局 DB”(缺省),如图1所示。

图1

全局DB创建完成后自动打开,然后需要在DB块中定义变量才能使用,如图2所示,优化的DB块中可以为每一个变量定义属性,例如保持性,但是不能为一个变量中的元素定义属性,例如图2中的数组变量F,只能将F作为一个变量整体定义,为不能为其中一个元素单独定义,例如F[1]。

图2

DB的访问方式(以符号名称为例)为 <数据块名称>.<变量名称>.<元素名称>.<子元素名称>,例如将变量B的值传送到变量F其中的一个元素中,如图3所示。

图3

1.2 实例化数据块

实例化DB块与FB块相关联。在创建实例化DB块时,必须指定它所属的FB块,而且该FB块必须已经存在,如图4所示。

图4

在调用一个FB块时,既可以为之分配一个已经创建的实例化DB块,也可以直接定义一个新的DB块,该DB将自动生成并作为实例化数据块。实例化DB块与全局DB块相比,只存储FB块接口数据区(临时变量除外)相关的数据。数据块格式随接口数据区的变化而变化,数据块中不能插入用户自定义的变量,其访问方式(优化或非优化)、保持性、默认值均由FB块中的设置决定。实例化DB块与全局DB块都是全局变量,所以访问方式相同。

1.3 通过系统数据类型创建数据块

对于有些固定格式的数据块,有可能包含很多的数据,不便于用户自己创建,如用于开放式用户通信的参数DB。TIA 博途软件提供了一个含有固定数据格式的模板,用户使用这个模板可创建具有该格式的数据块,比如可以使用“TCON_Param”系统数据类型创建与之对应的DB。创建基于数据类型的数据块时,必须指定它所属的数据类型,如图5所示。

图5

数据块创建完成后,在使用时直接赋值,例如使用“TCON_Param”系统数据类型创建的DB为“Com”,在调用TCON时赋值,如图6所示。

图6

与实例化DB块相同,基于系统数据类型的DB块只存储与数据类型DB相关的数据,不能插入用户自定义的变量。可以使用相同的系统数据类型生成多个数据块。

注意:

图6中“CONNECT”参数的赋值也可以在一个全局DB中创建,然后以一个变量的方

式赋值,但是“TCON_Param”系统数据类型在全局数据块变量类型的向导中不存在

必须手动键入。此外创建一个独立的DB块存储参数,结构也比较清晰,当然这与编程人员的喜好方式有关,无论如何,方式更加灵活。

1.4 通过PLC 数据类型创建DB

PLC数据类型是一个用户自定义的数据类型模板,可以由不同的数据类型组成,提供一个固定格式的数据结构,便于用户使用。PLC数据类型的变量在程序中作为一个整体变量使用。

1) 创建PLC 数据类型

在“PLC 数据类型”文件夹中,单击“添加新数据类型”后,会创建和打开一个PLC 数据类型的声明表。选择该PLC 数据类型,并在快捷菜单中选择“重命名”命令,就可以给这个PLC数据类型重新命名。然后在声明表中声明变量及数据类型,完成PLC 数据类型的创建。比如创建一个名称为“PLC_DT_1”的PLC数据类型,在这个数据类型中包含3个变量,如图7所示。

图7

2) 创建固定数据结构的 DB 块

单击“添加新块”命令,选择数据块,并在类型的下拉列表中选择所创建的PLC 数据类型“PLC_DT_1”,如图8所示。

图8

然后点击“确定”,生成与“PLC_DT_1”相同数据结构的DB块。

通过PLC 数据类型创建DB与通过系统数据类型创建DB的目的相同,一个是用户自定义的数据类型,一个系统给出的特定的数据类型,但是用户自定义的数据类型在全局DB块中的变量类型向导中是可见的。

1.5 数组DB

数组DB是一种特殊类型的全局数据块,它包含一个任意数据类型的数组。例如可以是基本数据类型,也可以是PLC数据类型(UDT)的数组,但这种数据块不能包含除数组之外的其它元素。创建数组DB时需要输入数组的数据类型和数组的上限。创建完数组DB后,可以在其属性中随时更改数组的上限,但是无法更改数据类型。数组DB始终启用“优化块访问”(Optimized block access)属性,不能进行标准访问,并且为非保持性属性,不能修改为保持性属性。数组DB的声明如图9所示。

图9

数组DB块的名称与块中变量(只能有一个数组变量)的名称是相同的,如图10所示。

图10

数组DB块中变量元素的访问需要使用“THIS[x]”替代变量的名称,例如图10中变量的第一个元素为DDD.THIS[0],如图11所示。

图11

可以使用函数“ReadFromArrayDB”和“WriteTOArrayDB”等对数组DB进行类似间接寻址的访问,比如将数组DB中的变量值复制到“变量1”中,可以参考图12中的程序。

图12

在DB13(数据块_7)中共有3个数组元素,由“Tag_58”的值决定将哪个元素的值复制给“数据块_10”中的“变量1”。示例中“Tag_58”的值为1,所以是将“数据块_7[1]”的值赋值给“变量1”。

1.6 什么类型的DB可以与VARIANT转换

S7-1500中使用VARIANT数据类型变量作为程序块中参数的传递,指令DB_ANY_TO_VARIANT或者VARIANT_TO_DB_ANY用于参数DB_ANY和VARIANT转换,DB_ANY的使用是有要求的,必须是格式固定的,使用要求参考下表(DB_ANY_TO_VARIANT的在线帮助)中的加粗标记。

输入变量

转换结果...

转换选项

DB_ANY

作为 PLC 数据类型或系统数据类型 (SDT) 的实例化数据块的数据块。

可以转换

DB_ANY

...作为 ARRAY 数据块的数据块。

可以转换

DB_ANY

...作为函数块或全局数据块中的实例化数据块

不可转换

所以说通常情况下,通过系统数据类型、用户数据类型创建的数据块、数组DB与全局DB访问和使用的方式是相同的,而在特殊的情快下,这些数据块类型是不可替代的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 数据块的类型
    • 1.1 全局数据块(Global DB)
      • 1.2 实例化数据块
        • 1.3 通过系统数据类型创建数据块
          • 1.4 通过PLC 数据类型创建DB
            • 1.5 数组DB
              • 1.6 什么类型的DB可以与VARIANT转换
              相关产品与服务
              云硬盘
              云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档