S7-1500 通过片断访问对变量区域进行寻址

对于S7-1500/1200 PLC,可以选择包含所声明变量的特定地址区域,访问宽为 1 位、8 位、16 位或 32 位的区域。将存储器区域(如,BYTE 或 WORD)拆分为一个较小的存储器区域(如 BOOL),又称"片段访问"(Slice access)。

注意:无法使用片段访问对覆盖 AT 的结构、常量和变量进行寻址。

以下内容使用TIA V17 Pro软件测试。

1. 使用语法

下列语法用于寻址:

1. <Tag>.X<Bit number>

2. <Tag>.B<BYTE number>

3. <Tag>.W<WORD number>

4. <Tag>.D<DWORD number>

该语法包含以下部分:

部分 说明
<Tag>

访问的变量

X
B
W
D
访问宽度为"位(1 位)"
访问宽度为"字节(8 位)"
访问宽度为"字(16 位)"
访问宽度为"双字(32 位)"

<BIT number>

访问 <tag> 内的位号。 编号 0 表示访问最低有效位
<BYTE number> 访问 <tag> 内的字节号。编号 0 表示访问最低有效字节
<WORD number> 访问的 <tag> 内的字号。编号 0 表示访问最低有效字
<DWORD number> 访问的 <tag> 内的双字号。编号 0 表示访问最低有效双字

通常针对Byte、Word等数据类型的变量进行片段访问,如图1所示。也可对 INT、DINT 等整数数据类型的变量进行片段访问。

图1. 片段访问结构

注意:当使用SCL编程对INT、DINT 等整数数据类型的变量进行片段访问时,不能启用SCL程序块的IEC检查,否则提示语法错误,如图2所示。

图2. 对整数变量片段访问的特殊情况

2. 片段访问使用示例

1. 对 DB 块变量进行 Slice 访问(优化或非优化DB均可)

创建一个 S7-1500 的项目,在程序块中新建优化DB “数据块_1”和非优化DB “数据块_2”,并新建DWORD和WORD数据类型的变量,如图 3 所示。

图3. 创建 DB 块变量

在程序段 1 简单编程(程序无实际意义仅为应用示例),变量输入方法:拖拽变量,然后在变量后面输入“.X0"或".B0",如图 4 所示。

图4. 对 DB 块变量的进行 Slice 访问

2. FB、FC 块接口变量的 Slice 访问

以FB为例,在 Input 和 Output 分别创建变量"Input_1"和"Output_1",数据类型为WORD。编程使用方法和DB变量的片段访问一样,先拖拽变量然后再输入“.X0"或".B0",如图 5 所示。


图5. 对FB接口变量进行 Slice 访问