回复:关于在OB1中使用临时变量LW0临时变量的问题

emil128

  • 帖子

    271
  • 精华

    10
  • 被关注

    21

论坛等级:侠圣

注册时间:2011-05-16

普通 普通 如何晋级?

发布于 2015-03-14 14:47:03

10楼

展开查看
以下是引用自控龙龙在2015-03-13 17:41:48的发言 >8楼:那么如果我用ob1调用FC1,FC1中使用了临时变量lw8,这个LW8和OB1中的lw8是一个吗?

是一个,也就是相当于lw8是一间房子或一个柜子,再fc1中可以存其它东西,但返回到ob1中时,系统自动将该位置放了规定的内容。
不是同一个。

因为“L 堆栈永远以地址0开始。”
所以虽然在FC1里写LW8但实际上是指的FC1所占有的本地堆栈区的第8个字而已,不是OB1的LW8.
例如,OB1占用20个字节,那么FC1的LW8就等于OB1的LW28。

延伸一下:
如OB1占用20字节,FC1占用30字节,FC2占用50字节。
1、OB1调用FC1,FC1调用FC2
那么OB1的本地堆栈区中OB1占用LB0~LB19,FC1占用LB20~LB49,FC2占用LB50~LB99
2、OB1调用完FC1,再由OB1调用FC2
那么OB1的本地堆栈区中OB1占用LB0~LB19,FC1占用LB20~LB49,FC2占用LB20~LB79
因为FC1执行完就把地址释放了。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54715条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。