共享数据块(DB)

与逻辑块不同,在数据块中没有STEP 7的指令。它们用于存放用户数据,换句话说,数据块中存放用户程序工作时所需的变量数据。共享数据块用于存放所有其它块都可以访问的用户数据。
DB的大小可以不同。关于所允许的最大尺寸,请参考用户所用CPU的描述。
用户可以用任意方式来建立数据块的结构,以适合其不同的需求。
在用户程序中的共享数据块
如果某个逻辑块(FC,FB或OB)被调用,则它可以临时占用临时本地数据区的空间(L堆栈)。除了这个本地数据区,逻辑块还可以打开一个DB形式的存储区。与局域数据区中的数据不同,当相应的逻辑块运行结束从而DB关闭时,在DB中的数据不会被删除。
每个FB、FC或OB可从共享DB中读取数据,或将数据写入共享DB。当该DB退出时,这些数据保持在DB中。
一个共享DB和一个背景DB可同时打开。下图所示为访问数据块的不同方法。

数据块的结构化存取
Structured Access to Data Blocks
结构化存取使用在数据块中声明的变量的标识符。能够将变量赋值给任何同类型的变量。
通过指定DB名和用点分隔的简单变量和名字来引用在数据块中的变量。
简单变量表示在DB的声明中指定为基本或复杂数据类型的变量。
如果使用一个BLOCK_DB类型的参数或转换函数WORD_TO_BLOCK_DB的结果来初始存取数据块,只通顺是绝对方式或索引方式存取,不能用结构方式存取。
例子(Example)
//在FB10的声明部分:
VAR
Result: STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
END_VAR
//用户定义数据类型UDT1
TYPE UDT1 STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
//带用户定义数据类型的DB20:
DB20
UDT1
BEGIN 。。。
//不带用户定义数据类型的DB30:
DB30 STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
BEGIN 。。。
//用以下存取的功能块:
。。
FB10.DB10();
RESWORD_A := DB10.Result.RES2;
RESWORD_B := DB20.RES2;
RESWORD_C := DB30.RES2;
编辑:jq
-
cpu
+关注
关注
68文章
11216浏览量
222888 -
数据
+关注
关注
8文章
7314浏览量
93952 -
DB
+关注
关注
0文章
49浏览量
23473 -
STEP7
+关注
关注
4文章
103浏览量
33621
原文标题:西门子SCL-数据块(DB)的结构化存取
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
西门子推出Tessent IJTAG Pro
工业智能网关可以采集西门子PLC吗
在西门子TIA Portal中使用CFC语言实现电机控制的全流程
西门子再收购EDA公司 西门子宣布收购Excellicon公司 时序约束工具开发商
西门子中国工厂首个光储一体化项目成功投运
西门子荣获IDC MarketScape MES领导厂商称号
PLC边缘计算网关采集西门子PLC数据过程
西门子TIA Portal中函数FC和函数块FB的相互转换
三菱PLC与西门子PLC比较
西门子PLC S7-1500系列介绍
Profinet 转 EtherNet/IP 网关怎样化解西门子 S7 - 1500 PLC 与 AB PLC 之间的通讯难题

浅谈西门子SCL-数据块(DB)的结构化存取
评论