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

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

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

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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
如何维护爬虫代理
为了保证网络爬虫再爬虫业务中能更高效稳定运行,在使用代理时需要维护一个好的爬虫代理IP池。那如何维护爬虫代理IP呢?
用户6172015
2020/10/13
7330
隧道IP的原理与使用
随着大数据时代的发展,网络爬虫的用户也越来越多,随之HTTP代理成了网络爬虫的不可缺少的一部分。使用过http代理的都清楚,,使用代理ip的基础流程是这样的:爬虫用户使用程序发送请求到代理服务器,代理服务器将请求转发到目标网站,目标网站处理完后返回结果,代理服务器收到反馈到结果后将信息转发到客户端,这样就完成了一次代理请求。整个过程中,代理服务器就充当了一个转发请求和结果的作用。HTTP代理分为隧道代理和外网代理IP。有通过API提取的也有动态转发的爬虫代理。那什么是隧道IP呢?
用户6172015
2020/12/10
1.8K0
使用python制作属于自己的地铁图
在日常出行中有时候会需要用到地毯地铁,网上找的地铁线路图大多数都不太清晰,而且有水印,对本人这种视力不好的人来说看起来是真的不方便。我想可以通过站点数据制作属于自己的线路图。主要还是缺乏站点数据,有数据了图自然就有了。经过网上查询,发现高德地图上有专门的地铁线路图,但是不能导出数据或图片,只好自己想办法抓取了,下面我们就通过使用python获取自己所在城市的地铁站点数据。抓取思路是这样,首先,用浏览器高德地图官网 ,搜索地铁, 进入地铁线路网站如下,网址:http://map.amap.com/subway/index.html,然后我们通过python爬虫爬取各线路各站点的 名称、经纬度 信息,以供后续使用。在获取数据的时候我们可能会遇到反爬机制,像封IP的等行为。在访问的过程中我们可以加上代理以防万一,简单的爬虫过程如下:// 要访问的目标页面
小白学大数据
2024/06/08
1940
python如何抓取微博定时热搜
不知道大家在工作无聊时,是不是总想掏出手机,刷刷微博看下热搜在讨论什么有趣的话题,但又不方便直接打开微博浏览,今天就和大家分享一个有趣的小爬虫,那就是如何定时采集微博热搜榜&热评,下具体的实现方法我们接下来慢慢讲。首先我们需要找到微博排行、热度、标题,以及详情页的链接。热搜首页链接https://weibo.com/hot/search我们通过这个链接获取500条数据,热搜榜采集代码, 然后发起请求,简单的代码如下<?php // 要访问的目标页面
小白学大数据
2024/06/08
2180
更换HTTP代理的方式
爬虫代理IP被应用到了很多的场景中,无论是对于家庭网络还是工作中的网络来说,为我们平时的工作提供了很多服务,有其是网络爬虫,爬虫代理IP更是不可缺少的一部分。面对网络上许多IP代理商,选择代理可以根据不同的使用方向进行选择。
用户6172015
2020/12/21
4950
HTTP代理的应用场景
很多爬虫工作者都知道,爬虫工作的进行离不开HTTP代理IP的支持。除了网络爬虫,那么HTTP代理IP适合于那些应用环境呢?
用户6172015
2020/11/18
6450
判断代理IP是否是高匿
普通匿名代理能隐藏客户机的真实IP,但会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的ip地址,但仍然可以知道你在使用代理,当然某些能够侦测ip的网页仍然可以查到你的ip。 高匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理。
用户6172015
2021/02/01
3K0
python帮你更快选择国考职位
2022年国考明天开始报名,11月28日举行公共科目笔试,本次招考共有75个部门、23个直属机构参加,计划招录3.12万人。很多小伙伴都在考虑是否要报公务员,但是却不知道适合自己的岗位有什么,那么今天我们就来利用Python找出适合你的岗位吧!我们可以根据以往的报考职位表,找到以下的报考限制因素:专业、学历、政治面貌、基层工作年限等。 以我们计算机本科专业为例,没有任何的基层工作经验,以这样的条件筛选,那么我们可以报考的岗位有多少呢?我们可以利用python获取数据,但是因为暂时还看不到具体的岗位数据,我们就以去年的岗位为例。数据获取代码如下:
小白学大数据
2024/06/08
1040
正确的使用HTTP代理
HTTP代理对于网络爬虫是一种很常见的协议,HTTP代理协议也是大数据时代不可缺少的一部分。HTTP代理在网络爬虫中发挥出了他大量用途。HTTP代理其实有许多用途,例如:刷票,爬虫,抢单,刷单,等等一系列业务 都适合HTTP代理。其实对于网络爬虫工作来着说,许多网络工作者都不知道如何使用HTTP代理。那么如何才能正确使用HTTP代理呢?
用户6172015
2020/11/16
1.4K0
python3和scrapy使用隧道代理问题以及代码
近期,我参与了一个需要爬取国家食品药品监督局数据的项目,但该网站存在IP屏蔽机制。因此,我需要在Scrapy框架中实现自动IP切换,才能完成任务。然而,尽管我使用了第三方库scrapy-proxys和代理API接口,但测试并不成功。
小白学大数据
2023/03/02
9130
优化爬虫程序使用代理IP时出现的TIME_WAIT和CLOSE_WAIT状态
为了提高爬虫程序的效率,我们通常使用代理IP来同时访问多个网站,避免被封禁。但是,使用代理IP也会带来一些问题。在Linux系统下,我们经常会遇到TIME_WAIT和CLOSE_WAIT状态的问题。
jackcode
2023/05/05
4270
优化爬虫程序使用代理IP时出现的TIME_WAIT和CLOSE_WAIT状态
如何在 Docker 容器内部使用外部代理服务器访问HTTP网络资源
在某些情况下,我们可能需要在 Docker 容器内部向外部代理服务器发送请求。例如,当我们需要访问外部网络资源时,我们可能需要通过代理服务器来访问它们。另一个例子是在企业网络中,可能需要使用代理服务器来访问互联网资源。然而,由于 Docker 容器的网络隔离性质,使得容器默认情况下无法直接连接到外部代理服务器。因此,为了让 Docker 容器内部能够通过代理服务器访问外部网络资源,我们需要进行相应的网络配置,包括在容器启动时传递--network host选项来允许容器使用主机网络接口,以及在容器内部设置http_proxy和https_proxy环境变量来配置代理服务器。通过这些配置,Docker 容器就能够顺利地连接到外部代理服务器并访问所需的网络资源。
jackcode
2023/03/22
4.2K0
如何在 Docker 容器内部使用外部代理服务器访问HTTP网络资源
python3和scrapy使用隧道代理问题以及代码
最近有个项目需要爬取药监局数据,对方有ip屏蔽机制。所以我需要在scrapy中实现ip自动切换,才能够完成爬取任务。在此之前,我先使用过第三方库scrapy-proxys加上代理api接口,可能是代码没有完善好,导致测试没有成功。 所以这次选择使用隧道的方式来测试看下,使用的是python3和scrapy库一起测试看下效果。
小白学大数据
2024/06/08
1820
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
随着互联网信息爆炸式增长,获取有效数据成为决策者的重要任务。人工爬取数据不仅耗时且效率低下,因此自动化数据处理成为一种高效解决方案。本文将介绍如何使用Selenium与Excel实现数据爬取与处理,结合代理IP技术构建一个可稳定运行的数据爬取管道,专门用于从WIPO(世界知识产权组织)的Brand Database网站(branddb.wipo.int)中获取专利和技术信息。
jackcode
2024/10/15
2310
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
PHP爬虫性能优化:从多线程到连接池的实现
随着网络数据的爆炸式增长,爬虫技术成为数据获取的重要工具。从市场调研到用户行为分析,爬虫的应用无处不在。然而,在实际应用中,我们常常遇到爬虫性能不足的问题:单线程处理效率低下、请求超时、数据采集量庞大却无法及时处理等,这些问题严重限制了爬虫技术的潜能。
jackcode
2024/12/02
1750
PHP爬虫性能优化:从多线程到连接池的实现
Selenium+代理爬取需要模拟用户交互的网站
在日常爬虫采集网站的过程中,部分数据价值较高的网站,会限制访客的访问行为。这种时候建议通过登录的方式,获取目标网站的cookie,然后再使用cookie配合代理IP进行数据采集分析。今天我们就介绍下如何使用Selenium库来爬取网页数据,特别是那些需要模拟用户交互的动态网页。
小白学大数据
2023/05/18
3930
如何伪装本地IP
我们通过互联网上网的的时候,浏览各大网站时,个人信息随时都有可能被泄露,信息泄露都是悄无声息的发生,不会被用户发现。一旦发现我们自己的的信息被泄露的时候,说明肯定给自己造成了一定的损失。
用户6172015
2020/10/26
2.5K0
付费代理的使用
相对免费代理来说,付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。 一、付费代理分类 付费代理分为两类: 一类提供接口获取海量代理,按天或者按量收费,如讯代理; 一类搭建了代理隧道,直
崔庆才
2018/06/25
4.2K0
影响HTTP代理速度的几个因素
随着大数据时代的发展,代理IP慢慢成为了中很多人经常使用的上网采集的一种工具。特别是对于一些专业的爬网络爬虫用户来说,这种代理是他们生活工作必不可少的工具。就如同我们平时上网一样。当然使用代理IP,肯定会考虑到速度问题。就像我们的本地IP一样访问一个网站一样也有延迟。当我们验证代理IP地址时,会间隔几秒。这间隔的几秒就是服务器的响应时间,时间越快,说明速度快,使用起来也快,好用许多。
用户6172015
2020/12/31
8820
解决网络爬虫使用代理IP效果变差的原因
现在的互联网大数据时代中,代理IP是网络爬虫不可缺少的一部分。大数据采集最简单直接有效的方法就是使用网络爬虫,不仅速度快,提高了业务率,而且还能更加有效率的采集到数据。网络爬虫都很清楚,如果使用本IP去采集大数据,是不可能完全任务的,所以就需要使用代理IP。
用户6172015
2020/11/26
4990
相关推荐
如何维护爬虫代理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档