三菱PLC FX 两个储存区(D1D2)做加法后储存到另个储存区(D3)D3没有清零指令为什么会自动清零做的是脉冲加法

如题所述

楼主这样用肯定不行啦,D是16位寄存器,你用的都是32位操作指令,这样算出来的数据不是你想要的,这个暂且不说,你用的也不是脉冲执行指令,我来给你理理,首先你把D8140清零了,DMOV指令将把0传送给D1,D2(因为你用的是32位操作),这样D1和D2都等于0,然后DADD指令将用D2,D3的值(0,0)加上D1,D2的值(0,0)然后存入D2,D3中;DDIV指令用D2,D3乘以100,积是放在D3,D4,D5,D6中的,自然就等于0了,不光D3等于0,D4、D5、D6也等于零的,你的指令不能这样用,估计你是吧32位指令和脉冲执行指令搞错了,举例:
[MOV] 数据传送指令,16位操作连续执行型;
[MOVP] 数据传送指令,16位操作脉冲执行型;
[DMOV] 数据传送指令,32位操作连续执行型;
[DMOVP]数据传送指令,32位操作脉冲执行型;
其它指令同理。
敲了半天,希望能够帮到你,如果看不懂留下联系方式或追问!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-14
自动清0? 开什么玩笑 是数据溢出了吧。 你可以用 DADD D1 D2 D4 这样 存在。。。我忘了是D3D4还是 D4D5里了追问

不是我用DADD的 【dmov d8140 d1】 [dadd d2 d1 d2] [ddiv d2 k100 d3] 我只是把D8140清掉但是D3 也被清掉了

追答

....
D数据是2位的 D1 D2 D3 分别改成 D0 D2 D4

第2个回答  2012-12-14
问题的描述不够清楚。
你是用[ADDP D1 D2 D3]吗?
相似回答