登录
首页 PLC论坛 三菱Mitsubishi
回帖 发帖
正文

主题:三菱16位整数比较和32位整数比较的区别??

点击:4127 回复:9

我最近接手上一个工程师的项目,要修改他的FX3U的程序。
程序当中很多地方用32位整数比较指令,只有个别高位寄存器被别的地方占用。
机器平时运转没什么问题,过了两个月后,机器就开始速度不受控制(液压油油量变得比较大),
我用软件监控,发现32位整数比较的数据混乱了(以前监控的时候挺正常的),触摸屏上面很多输入数据的地方成斜杠了。
然后我把32位整数比较指令全部换成16整数比较指令,那被占用的高位寄存器换成了别的寄存器,之后机器就正常了,监控制的数据也正常了。
这个问题想了很长时间,还是想不透,所以就来这里问问。
这里有什么玄机吗???
13-08-17 20:13
不知道程序故意的编的有问题还是水平问题
13-08-17 20:41
为什么改成16位比较后,数据就正常了??
自己搞不明白啊!
13-08-17 21:42
超出范围了!
13-08-18 06:56
  呵呵;正常设计程序时首先要考虑对应的数据范围,如果在-32768~32767间不可能超的话,还是直接用16位的,如果有可能会超,则使用32位的,32位是二个二个用的,上面的一个寄存器注意不要占用;
 按上面的描述,可能是程序设计不够严谨;
13-08-18 09:19
我改成16位比较的时候,一个一个对着看,没有超出范围(除了那些高位被占用的),所以我敢全部改成16位比较。
因为程序步数太多了,1万多步,所以毛病的根源一下找不出来。
13-08-18 11:26
没有那么大的数据,用32位也是浪费。
13-08-18 12:48
现在虽然好了,但是是什么原因引起的,至今还没弄明白。
13-08-18 14:39
今天上班我又监控了一下,情况是这样的:
    比如,>=  D2076   D2150,D2150的数据为819,改成32位比较后,D>=  D2076   D2150,D2150的数据为-64717,高位D2151没有被别的地方占用,但D2151的数据为16个1(二进制)。
    64717+819=65536(1 0000 0000 0000 0000)
  搞不明白为什么会这样??
   请大侠解释一下吧。
13-08-19 20:14
我用指令复位了一下,LD M8000 ZRST D0 D7999,然后把这个复位的删掉,再监控,D2151还是16个1,很多数据寄存器都是16个1。
难道16个1就是为0吗?
13-08-22 23:09

工控新闻

更多新闻资讯