回复:AR2地址寄存器引发的FB问题

0917

  • 帖子

    86
  • 精华

    0
  • 被关注

    3

论坛等级:游侠

注册时间:2012-12-03

普通 普通 如何晋级?

发布于 2014-12-19 16:03:45

13楼

展开查看
以下是引用letham在2014-12-18 17:27:44的发言 >11楼
quote:以下是引用0917在2014-12-17 10:44:23的发言:
学习了,谢谢楼主分享,但是子程序块的偏移地址是怎么回事?自己在琢磨琢磨!

LAR1 P#Bins
仅仅是 得到了Bins这个数组在多重背景FB块里的首地址,由于多重背景FB,在调用时,没有自己的单独的DB块,需要使用 调用多重背景FB块的背景DB,考虑到调用多重背景FB块的FB块有其他IN,STAT等类型数据,所以BINS在调用多重背景FB块的FB地址并不等于LAR1 P#BINS后 的AR1,在调用多重背景FB块时,AR2会自动定位到 被多重背景使用的FB块在 “父FB块”的偏移地址。
下面语句 就是干这个事的
LAR1 P##Bins;
TAR2 //新增加语句,取出“子FB块"在”父FB块“中的偏移地址
+AR1 //新增语句,加上该偏移地址,从而得到BINS在“父FB块”中的偏移地址

说的太拗口了 你可以把 被多重背景使用的FB块叫“子FB”,调用多重背景FB块的FB块 叫“父FB”吧。
谢谢楼主的回复。关于子程序块调用,我是不是可以这样理解,在FB块调用子程序块时子程序块里的变量占用了FB块的地址,所以p##bins并没有指向子程序块里的bins所占地址,这就是所谓的地址偏移。但是“在调用多重背景FB块时,AR2会自动定位到 被多重背景使用的FB块在 “父FB块”的偏移地址。”AR2为什么会自动定位为偏移地址?不是很理解。
学习快乐 快乐学习
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54805条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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