说明
全局数据块中的变量可以按符号名或绝对地址进行寻址。对于符号寻址,可以使用数据块的名称和变量名,并用圆点分隔。数据块的名称用引号括起来。
对于绝对寻址,可以使用数据块的编号和数据块变量的绝对地址,并用圆点分隔。地址标识符 % 被自动设置为绝对地址的前缀。
S7-1200/1500 提供了一个选项,用于访问编程期间处于未知状态的数据块。为此,请在访问块的块接口中创建一个 DB_ANY 数据类型的块参数。数据块名称或数据块编号将在运行期间传送到此参数。为了访问数据块的内部变量,请使用 DB_ANY 数据类型的块参数名称以及变量的绝对地址,并用圆点分隔。
说明 将带存储器预留区的 DB 传送至参数 DB_ANY。 无法将带存储器预留区的 DB 传送至数据类型为“DB_ANY”的块参数。 |
说明 按绝对地址对 DB 变量寻址 以下变量无法进行绝对寻址: 优化访问块中的变量。 LWORD、LINT、ULINT、LREAL、LTIME、LTOD 和 LDT 数据类型的变量。 最佳做法是对这些变量使用更为便捷的符号寻址。 |
ARRAY 数据块
ARRAY 数据块是一种特殊类型的全局数据块。这些数据块包含一个任意数据类型的 ARRAY。例如,可以是 PLC 数据类型 (UDT) 的 ARRAY。
可通过关键字“THIS”寻址 ARRAY 数据块中的元素。然后再在方括号中指定下标。下标可以是一个常量,也可以是一个变量。变量类型的下标最大可支持长度为 32 位的整数。
寻址 ARRAY 数据块的扩展选项位于“指令”(Instructions) 任务卡的“移动”(Move) 区域中。例如,可以通过这些指令对数据块名称进行间接寻址。
语法
"
#
"
SCL:
"
下表内容为数据块中变量可能的绝对地址:
数据类型 | 绝对地址 | 示例 | 说明 |
---|---|---|---|
BOOL | %DBn.DBXx.y | %DB1.DBX1.0 | DB1 中的数据位 1.0 |
BYTE, CHAR, SINT, USINT | %DBn.DBBy | %DB1.DBB1 | DB1 中的数据位 1 |
WORD, INT, UINT | %DBn. DBWy | %DB1.DBW1 | DB1 中的数据字 1 |
DWORD, DINT, UDINT, REAL, TIME | %DBn.DBDy | %DB1.DBD1 | DB1 中的数据双字 1 |
示例
以下示例为全局数据块变量的寻址:
寻址 | 说明 |
---|---|
"Motor".Value | 全局数据块 "Value" 中变量 "Motor" 的符号寻址。 |
%DB1.DBX1.0 | 全局数据块 "DB1" 中变量 "DBX1.0" 的绝对寻址。 |
#MyDBAny.%DBX30.0 | 运行期间在 "MyDBany" 参数上传递的全局数据块中 "DBX30.0" 变量的绝对寻址。 |
"MyARRAY_DB".THIS[#MyIndex].MyComponent.MyComponentElement | 寻址 ARRAY 数据块。通过 "MyIndex" 变量指定 ARRAY 下标。ARRAY 元素具有 2 个附加子结构:“MyComponent”和“MyComponentElement”。 |
审核编辑:汤梓红
-
西门子
+关注
关注
93文章
3008浏览量
115624 -
变量
+关注
关注
0文章
613浏览量
28328 -
数据类型
+关注
关注
0文章
236浏览量
13608 -
S7-1200
+关注
关注
11文章
331浏览量
17908
原文标题:西门子博途:全局数据块中的变量寻址
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论