对于 S7-1200/1500 控制器,可以访问 Byte、 Word、 DWord 或 LWord 数据类型变量的存储区。将一个存储区域(如 byte 或 word)划分为一个较小的存储区域(如Bool)也称为片段。下图显示了对操作数的 bit、 byte 和 word 的访问。
• 编程效率高。
• 在变量声明中不需要额外的定义。
• 易于访问(例如控制位)。
• 使用 AT 结构的片段访问,而不是访问操作数中的某些数据区域。
通过片断访问对变量区域进行寻址
可以选择包含所声明变量的特定地址区域。可以访问宽为 1 位、8 位、16 位或 32 位的区域。将存储器区域(如,BYTE 或 WORD)拆分为一个较小的存储器区域(如 BOOL),又称为“分段”。
无法使用片段访问对覆盖 AT 的结构、常量和变量进行寻址。
语法
下列语法用于寻址:
<Tag>.X<Bit number>
<Tag>.B<BYTE number>
<Tag>.W<WORD number>
<Tag>.D<DWORD number>
该语法包含以下部分:
部分 | 说明 |
---|---|
<Tag> | 访问的变量。该变量的数据类型必须为“Bit string”或“Integer”。 在 SCL 中,如果禁用 IEC 检查,则只能对数据类型为“Integer”的变量进行片段访问。 |
X B W D | 访问宽度为“位(1 位)”的 ID 访问宽度为“字节(8 位)”的 ID 访问宽度为“字(16 位)”的 ID 访问宽度为“双字(32 位)”的 ID |
<BIT number> | 待访问 <tag> 内的位号。编号 0 表示访问最低有效位。 |
<BYTE number> | 待访问 <tag> 内的字节号。 编号 0 表示访问最低有效字节。 |
<WORD number> | 访问的 <tag> 内的字号。 编号 0 表示访问最低有效字。 |
<DWORD number> | 访问的 <tag> 内的双字号。 编号 0 表示访问最低有效双字。 |
片段访问示例
以下示例说明了位、字节、字和双字模式下片段的寻址方式:
寻址 | 说明 |
---|---|
"Engine".Motor.X0 "Engine".Motor.X7 | "Motor" 为全局数据块 "Engine". 中数据类型为 BYTE、WORD、DWORD 或 LWORD 的变量 X0 将寻址位地址 0,X7 则寻址 "Motor" 中的位地址 7。 |
"Engine".Speed.B0 "Engine".Speed.B1 | "Speed" 为全局数据块 "Engine". 中数据类型为 WORD、DWORD 或 LWORD 的变量 B0 将寻址字节地址 0,B1 则寻址 "Speed" 中的字节地址 1。 |
"Engine".Fuel.W0 "Engine".Fuel.W1 | "FUEL" 为全局数据块 "Engine". 中数据类型为 DWORD 或 LWORD 的变量 W0 将寻址字地址 0,W1 则寻址 "Fuel" 中的字地址 1。 |
"Engine".Data.D0 "Engine".Data.D1 | "Data" 为全局数据块 "Engine". 中数据类型为 LWORD 的变量 D0 将寻址双字地址 0,D1 则寻址 "Data" 中的双字地址 1。 |