回复:FB块在多重数据块中的寻址问题。红字的解决办法没看明白,能否详细认真讲解。

艾星落尘

  • 帖子

    996
  • 精华

    1
  • 被关注

    179

论坛等级:至圣

注册时间:2010-02-26

白金 白金 如何晋级?

发布于 2017-04-17 13:13:05

1楼

链接一个帖子,供参考下:

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1189908&b_id=4&s_id=0&num=22#anch

主要的问题,也是和这里说的一样;

大家知道在SIMENES PLC中有2个地址寄存器,AR1和AR2,以及2个数据块寄存器DB,DI。其中AR2地址寄存器和DI数据块寄存器相对特殊,主要用在FB中进行寻址。当我们在程序里进行调用FB块时,AR2寄存器类容被初始化为16#85000000.实际上在该FB期间AR2一直保持为16#85000000,当该FB块为一个“父FB块”时,在调用到“子FB块”时,AR2类容变为什么了?答案是在调用"子FB块"过程中AR2类容变为16#85000000+"子FB块"在“父FB块”中的偏移地址。但这个问题和程序出错又有什么关系了?
:) 因为在“子FB块”我以 LAR1 P##Bins; 语句取出的Bins的起始地址仅仅是在”子FB块“中的偏移地址。如果“在FB块”在“父FB块”以多重背景方式调用时,我们应该为该偏移地址再加上“子FB块”在“父FB块”中的偏移地址。
说到这里我想大家应该也明白问题所在了。因此我将上面代码稍作修改,程序即可正确执行了。

一个人在战斗
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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