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

[复制链接]
查看352 | 回复0 | 2024-6-28 20:34:42 | 显示全部楼层 |阅读模式
>

说明
全局数据块中的变量可以按符号名或绝对地址进行寻址。对于符号寻址,可以使用数据块的名称和变量名,并用圆点分隔。数据块的名称用引号括起来。
对于绝对寻址,可以使用数据块的编号和数据块变量的绝对地址,并用圆点分隔。地址标识符 % 被自动设置为绝对地址的前缀。
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) 区域中。例如,可以通过这些指令对数据块名称进行间接寻址。
语法
"<DBname>".TagName
%<DBnumber>.absoluteAddress
#<DBAny_name>.%absoluteAddress
"<ArrayDBname".THIS[#i].<Component>.<ComponentElement>
SCL:
"<ArrayDBname"."THIS"[#i].<Component>.<ComponentElement>
下表内容为数据块中变量可能的绝对地址:




数据类型
绝对地址
示例
说明
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”。









免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则