西门子博途中全局数据块中的变量寻址

描述

说明

全局数据块中的变量可以按符号名或绝对地址进行寻址。对于符号寻址,可以使用数据块的名称和变量名,并用圆点分隔。数据块的名称用引号括起来。

对于绝对寻址,可以使用数据块的编号和数据块变量的绝对地址,并用圆点分隔。地址标识符 % 被自动设置为绝对地址的前缀。

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) 区域中。例如,可以通过这些指令对数据块名称进行间接寻址。

语法

"".TagName

%.absoluteAddress

#.%absoluteAddress

".

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”。

 

  
审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分