台达数据寄存器上下行内不一致 点击:351 | 回复:4



纸厂电工

    
  • 精华:0帖
  • 求助:3帖
  • 帖子:29帖 | 135回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2005年6月09日
发表于:2012-04-13 15:45:47
楼主
今天调试程序时发现一个问题,就是我用了一个数据寄存器D10,在做程序监控时发现上下行的数值不一样,而且在程序中数据寄存器都用的是双数,就是为了避免冲突,先把这段程序展示给大家,不知是啥问题,而且D10在整个程序中只有这两个地方有用到,真是莫名其妙?可以看到下一行D10是-100,而上一行变成了65436,请遇到过这类问题的朋友帮忙解答一下


楼主最近还看过



yjig

  • 精华:2帖
  • 求助:6帖
  • 帖子:110帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-04-13 18:02:33
1楼

正常情况,上一行的D10是32位双寄存器,体现在【D> D100  D10】

而下一行的D10是16位单寄存器,体现在【SUB  D202  K100 D10】

如果希望下一行也是32位双寄存器,则应该为【DSUB  D202  K100  D10】

莫其麟

  • 精华:14帖
  • 求助:0帖
  • 帖子:125帖 | 5688回
  • 年度积分:0
  • 历史总积分:29157
  • 注册:2004年2月27日
发表于:2012-04-13 20:11:16
2楼
情况如楼上所说;
当(D11D10)=K65436,则D11的内容是0,D10的内容是K-100(HFF9C),在机器内负数用补码表示;
K-100,可由执行【SUB  D202  K100 D10】(当D202为0)而来。

纸厂电工

  • 精华:0帖
  • 求助:3帖
  • 帖子:30帖 | 135回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2005年6月09日
发表于:2012-04-17 09:52:34
3楼
感谢大家的回复,问题出在16位和32位寄存器乱用上,看来以后编程时还的多注意了

ljbcompany

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 1289回
  • 年度积分:0
  • 历史总积分:5847
  • 注册:2011年4月24日
发表于:2012-04-17 11:34:46
4楼
其实这也不是楼主的错,软件参数检查没有寄存器占用校验?!希望台达、三菱等厂商将这一“人性化”功能加上,方便编程人员。

热门招聘
相关主题

官方公众号

智造工程师