Forwarded from 秋名山巨魔俱乐部
Please open Telegram to view this post
VIEW IN TELEGRAM
S7-1200 使用 Slice 方式对变量进行寻址
可以选择包含所声明变量的特定地址区域,可以访问宽为 1 位、8 位、16 位或 32 位的区域,这种访问类型称之为“片段访问”(Slice access)。
通过 slice(片段访问)方式,可以选择所声明变量中的特定寻址区域;可以实现从单个位到变量级别的符号访问;片段访问不能寻址常量。
slice 方式支持这2种方式的块:可标准访问的块、可优化访问的块。
1. 语法表达
下列语法用于寻址:
1. <Tag>.x<Bit number>
2. <Tag>.b<BYTE number>
3. <Tag>.w<WORD number>
4. <Tag>.d<DWORD number>
西门子plc 数据切片的语法
#plc
指针的语法:
P#bit地址 数据类型 数据个数
eg: p#m0.0 word 3
eg: p#db1.dbx0.0 int 2
————————
P#DB1.DBX0.0 BYTE 10这种结构起源于S7-300/S7-400的Any指针,S7-1200无法像S7-300/S7-400一样定义以及拆解Any指针,但是在参数类型为Variant时,可以输入这种指针。并且,如前所述,S7-1200将识别其为数组。
P#DB1.DBX0.0 BYTE 10的解释:指向从DB1.DBX0.0开始的10个字节,并且DB1必须是非优化的DB块,并包含有10字节长度的变量。
P#DB1.DBX位置可以替换成其他DB块号例如P#DB10.DBX,或者I区:P#I,Q区:P#Q,M区:P#M。
0.0的位置为这种指针的起始地址,例如1.0、100.0、......,并且小数点后一定是0。
BYTE位置可以是以下类型:Bool、Byte、Word、DWord、Int、DInt、Real、Char、Date、TOD、Time类型。
10的位置为指针执行前面数据类型的个数,Bool类型比较特殊,只能是1,或者8的倍数。
P#指针举例,P#I0.0 Bool 8,P#Q0.0 Word 20,P#M100.0 Int 50。
#plc
P#bit地址 数据类型 数据个数
eg: p#m0.0 word 3
eg: p#db1.dbx0.0 int 2
————————
P#DB1.DBX0.0 BYTE 10这种结构起源于S7-300/S7-400的Any指针,S7-1200无法像S7-300/S7-400一样定义以及拆解Any指针,但是在参数类型为Variant时,可以输入这种指针。并且,如前所述,S7-1200将识别其为数组。
P#DB1.DBX0.0 BYTE 10的解释:指向从DB1.DBX0.0开始的10个字节,并且DB1必须是非优化的DB块,并包含有10字节长度的变量。
P#DB1.DBX位置可以替换成其他DB块号例如P#DB10.DBX,或者I区:P#I,Q区:P#Q,M区:P#M。
0.0的位置为这种指针的起始地址,例如1.0、100.0、......,并且小数点后一定是0。
BYTE位置可以是以下类型:Bool、Byte、Word、DWord、Int、DInt、Real、Char、Date、TOD、Time类型。
10的位置为指针执行前面数据类型的个数,Bool类型比较特殊,只能是1,或者8的倍数。
P#指针举例,P#I0.0 Bool 8,P#Q0.0 Word 20,P#M100.0 Int 50。
#plc