展开查看
以下是引用youhm在2015-01-30 14:10:29的发言 >1楼:在Step7帮助里可以查到如下内容:
局部数据堆栈
L堆栈保存有:
1. 块的本地数据的临时变量
2.组织块的启动信息
3. 关于传送参数的信息
4.梯形图程序中逻辑的中间结果
在你这段代码里可以看出,使用了LW20、LW22共占用4个字节,组织块本身占用20字节,代码里调用了SFC21,SFC21三个参数数据类型分别是Any、INT、Any,这三个参数需要分配10+2+10=22字节,多次调用SFC21共用这22字节,这里代码应为STL,不存在梯形图逻辑中间结果,所以最终分配的本地数据为46字节。
前辈,这段看懂了,然后看同一程序的OB1又对不上了,程序结构显示OB1的局部数据[26]
OB1的程序段1
AN M 8.1
= M 10.0
程序段2
CALL "GET" , DB14 //SFB14
REQ :=M8.1
ID :=W#16#1
NDR :=M0.1
ERROR :=M0.2
STATUS:=MW2
ADDR_1:=DB1.ARAY
ADDR_2:=P#M 40.0 BYTE 20
ADDR_3:=
ADDR_4:=
RD_1 :=DB2.ARAY
RD_2 :=P#M 20.0 BYTE 20
RD_3 :=
RD_4 :=
程序段3
CALL "PUT" , DB15 //SFB15
REQ :=M10.0
ID :=W#16#1
DONE :=M10.1
ERROR :=M10.2
STATUS:=MW12
ADDR_1:=DB2.ARAY
ADDR_2:=P#M 20.0 BYTE 20
ADDR_3:=
ADDR_4:=
SD_1 :=DB1.ARAY
SD_2 :=P#M 40.0 BYTE 20
SD_3 :=
SD_4 :=
组织块的启动信息 20字节,还剩6字节,SFB14,SFB15这2个块的参数加起来远远不止6个字节了