【导读】博途中不但变量数据类型的隐式转换很好用,而且对于变量的Slice(直译:片或部分)寻址也很方便,下面就来说下S7-1200/1500如何以用Slice方式对变量进行寻址。
【一】语法表达式以及说明
(1)语法表达式
.x
.b
.w
4..d
(2)语法说明
部分 | 说明 |
访问的变量标识。 | |
x b w d | 访问宽度为“位(1 位)”的标识 访问宽度为“字节(8 位)”的标识 访问宽度为“字(16 位)”的标识 访问宽度为“双字(32 位)”的标识 |
待访问 内的位号。编号 0 表示访问低有效位。 | |
待访问 内的字节号。编号 0 表示访问低有效字节。 | |
访问的 内的字号。编号 0 表示访问低有效字。 | |
访问的 内的双字号。编号 0 表示访问低有效双字。 |
(3)功能说明
通常针对Byte、Word等数据类型的变量进行片段访问,如下图所示,此外也可以对 INT、DINT 等整数数据类型的变量进行片段访问。
(4)注意事项
从博途V13以后,语法规则从 ".x" 改为 ".%x",并且对于S7-300/400是不支持这种变量的片访问方式;对于S7-1200/1500其它类型的变量,比如数组元素,访问形式都差不多,大家自己动手试试吧!
【二】使用说明
(1)使用 DB 块变量进行 Slice 访问
创建一个 S7-1200 的项目,在程序块中新建一个 DB 块(优化的块访问),创建一个变量,数据类型为 DWord,可以看到该变量没有地址,如下图所示:
在程序段 1 中插入常开和赋值指令,常开指令填写地址“DB1.Static_1.X0”,赋值指令填写地址“DB1.Static_1.X1”,其中 X0 和 X1 分别表示变量 Static_1 的第 0 位和第 1 位,如下图所示:
在程序段 2 中插入 MOVE 指令,IN 管脚填写地址“DB1.Static_1.B0”,OUT 管脚填写地址“DB1.Static_1.B1”,其中 X0 和 X1 分别表示变量 Static_1 的第 0 字节和第 1 字节,如下图所示:
依次类推,对字访问,就是填写地址“DB1.Static_1.W0”和“DB1.Static_1.W1”。
(2)FB、FC 块接口变量的 Slice 访问
创建程序块(本例创建 FC 块,优化的块访问),在 Input 和 Output 分别创建变量“Input_1”和“Output_1”,数据类型分别是 DInt 和 Dword,可以看到这两个变量没有地址,如下图所示:
程序段 1,常开指令填写地址“Input_1.X0”,赋值指令填写地址“Output_1.X0”;程序段2,MOVE 指令的 IN 管脚填写地址“Input_1.W0”,OUT 管脚填写地址“Output_1.W0”。后如下图所示。