数据如何分解 点击:597 | 回复:5



yksk

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 25回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2011年3月01日
发表于:2015-04-06 17:23:07
楼主

信捷PLC,寄存器D1000内保存了一个非0的n位整数,假设是123456,现在我想把它取出来,6放到D0,5放到D1,依次类推,1放到D5,该如何操作,用什么指令?




小诚

  • 精华:16帖
  • 求助:64帖
  • 帖子:679帖 | 7271回
  • 年度积分:3
  • 历史总积分:32156
  • 注册:2012年9月27日
发表于:2015-04-06 18:29:40
1楼

除法指令,比如就12

你要取出1,就用12去除以10,商就是1,余数就是2.

分别取出来。

yksk

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 25回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2011年3月01日
发表于:2015-04-06 18:59:36
2楼

    曾经试过,单取一个高位数可以的,123456,除以k100000,余数省略,可以把整数1取出来了,问题是余下23456,下一步怎么再把2取出来呢?如果把原来变量123456SUB掉100000再来操作下一步也可以,但是这个变量并不确定的,有可能345621,那且不是要先减300000再来第二步?那首先这个100000或者300000这个变量从哪里去取?

yksk

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 25回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2011年3月01日
发表于:2015-04-06 19:31:48
3楼

  谢谢小诚,这种算法可是可以的,但是需要15条指令,扫描周期过长,有没有更简单的算法?

小诚

  • 精华:16帖
  • 求助:64帖
  • 帖子:679帖 | 7271回
  • 年度积分:3
  • 历史总积分:32156
  • 注册:2012年9月27日
发表于:2015-04-06 22:17:31
4楼


引用 yksk 的回复内容:     曾经试过,单取一个高位数可以的,123456,...

————————————————————————

不用谢,你试试能不能把不需要的先屏蔽掉。

既然是变量,你采集了就保存。然后数据处理,看看能不能用中断的方式处理

不知道是哪方面的应用,PLC执行速度是很快的。就这几步运算,没什么影响吧?


yksk

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 25回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2011年3月01日
发表于:2015-04-07 01:54:53
5楼

D22,D24都是32位的,应该没有溢出,求高手指点


热门招聘
相关主题

官方公众号

智造工程师