回复:小指令,大影响

伊默

西门子1847工业学习平台

  • 帖子

    4259
  • 精华

    118
  • 被关注

    220

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

发布于 2011-09-20 11:40:48

7楼

quote:以下是引用划痕在2011-09-20 10:01:55的发言:
处理方法如下——
在自定义的FB中第一个网络里这样写:
TAR1 #dwSAVE_Ar1
TAR2 #dwSAVE_AR2
在最后一个网络里这样写:
LAR1 #dwSAVE_Ar1
LAR2 #dwSAVE_AR2
处理原理:在自定义的FB使用地址寄存器时,首先将AR1和AR2保存起来(因为其他程序可能也在使用地址寄存器),然后在自定义的FB中使用AR1和AR2<注意对AR1和AR2的初始化!>,使用结束后将原来保存的AR1和AR2值还原,这样处理不会引起AR1和AR2使用的冲突!!类似于中断程序,对断点的保护一样!!
<以上是我的理解,当然还有很多不足之处,我也在思考中,还请多多指教>


我就是这么做的,但是根本不会管用。
你这样做,仅仅在你当前使用的FB、FC内暂存了AR而已。 当你使用FB,而且还要在该FB内使用AR2,请问,你这样处理行吗?

你这样做,仅能避免: 当某一个FB/FC正在执行(且该FB/FC内使用了AR2),此时产生了中断OB,而在中断OB内执行了某些操作,会导致AR或者ACC的变化。 故凡是可能被中断OB操作,或者其他方式调用的FC/FB最好暂存AR,完成操作后再恢复AR。
但是它不能解决我想在FB内使用AR2的问题, 按照我现在的理解就是在FB内不能使用AR2…… 想要用AR2,只能在FC内。 所以我这次做的配方程序就改用了FC+全局DB (全局DB用来存储配方数据)。
I can do it
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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