回复:S7-200 累加器参与运算为什么会出错呢

芳季

西门子1847工业学习平台

  • 帖子

    15530
  • 精华

    101
  • 被关注

    963

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2015-10-25 16:48:36

7楼

第一条指令,AIW相加,结果得16位带符号数一个。

第二条指令,指令是DI相减喔。要求AC是一个32位的数喔。何来个32位啊?前面不是说16位结果吗。

下面,问题开始了。分开两个事情给你解释。一个是用AC为何不行。一个是用VD为何可以。

AC

16位结果放到AC里面,高16位的值不确定。低16位的值是你心里面知道的值,没错。由于AC在很多地方被你使用过,高16位自然有值,一定不是全0 。所以以后在DI相减的指令里面当然当做你高16位的值是有用的啦。可这个并不是你的意愿。所以错了。

VD

为何VD就可以呢?

16位结果放到VD里面,你说高16位会是什么?大声说出来……0000000000000000。你既然使用了VD,你绝对不会使用一个被广泛使用过的地址再重复使用吧?所以,我也可以大声说,这个高16位的值一定是0 。接着。轮到第二条指令了。DI相减。

以下就是我说的不希望楼主知道的事情,相信938到这里,已经知道为什么了吧?

下面的,我不说了。买个关子是因为我觉得这个事情真的不是个正途。

总之,楼主使用I转DI然后DI转R就是正道。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33266条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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