如何将浮点数(MD形式)转换成整数(MW形式)? 点击:3425 | 回复:7



ygwygw555

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:9帖 | 22回
  • 年度积分:0
  • 历史总积分:149
  • 注册:2010年3月05日
发表于:2010-03-07 22:39:00
楼主

如何将带小数的实数(比如MD10=5.0)转换成整数(比如MW2=5)呢?

我在指令集里找遍了都没看到将浮点数转换成整数的指令,只有将整数转换成浮点数的指令,郁闷!

请高手指教。




yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2010-03-08 08:41:06
1楼
Step1:使用结尾取整指令将浮点数转换为长整型数据。
Step2:判断长整型数据是否在数据范围 -32768~+32767之间,如果不是,那么数据范围溢出。
              如果是,那么读取低16位数据。
Step3:读取长整型数据的最高位并将其写入16位数据的最高位。

Regards

xiakebiao110

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 645回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2010-03-08 10:28:35
2楼

施奈德PLC有专门的数据变换指令。

ygwygw555

  • 精华:0帖
  • 求助:1帖
  • 帖子:9帖 | 22回
  • 年度积分:0
  • 历史总积分:149
  • 注册:2010年3月05日
发表于:2010-03-08 10:53:48
3楼

回复内容:
对:yuanle 关于

Step1:使用结尾取整指令将浮点数转换为长整型数据。
Step2:判断长整型数据是否在数据范围 -32768~+32767之间,如果不是,那么数据范围溢出。
              如果是,那么读取低16位数据。
Step3:读取长整型数据的最高位并将其写入16位数据的最高位。

Regards

内容的回复:

首先要感谢你,我理解大概啥意思了。

但是还是不知道具体怎么样操作,你能不能给我举个实例?

比如说将MD10=5.0如何转换成MW2=5



zx1986110

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年9月09日
发表于:2010-03-09 23:30:31
4楼
回复内容:
对:yuanle 关于Step1:使用结尾取整指令将浮点数转换为长整型数据。
Step2:判断长整型数据是否在数据范围 -32768~+32767之间,如果不是,那么数据范围溢出。
              如果是,那么读取低16位数据。
Step3:读取长整型数据的最高位并将其写入16位数据的最高位。

Regards
内容的回复:

好像有点意思!

ygwygw555

  • 精华:0帖
  • 求助:1帖
  • 帖子:9帖 | 22回
  • 年度积分:0
  • 历史总积分:149
  • 注册:2010年3月05日
发表于:2010-03-10 18:53:56
5楼
回复内容:
对:NEWBRIDGE 关于

有元整指令的

ROUND

MOVE

内容的回复:

ROUND指令只能将实数转换成长整数,还是MD,变不成MW

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-03-10 20:36:20
6楼
引用ygwygw555 的回复内容:回复内容:
对:NEWBRIDGE 关于

有元整指令的

ROUND

MOVE

内容的回复:

ROUND指令只能将实数转换成长整数,还是MD,变不成MW


再做一次转换即可, DW_MW, 其实就是截取低字,超出部分忽略!

seven_du

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2005年8月01日
发表于:2010-03-14 18:12:40
7楼
先用ROUND或TRUNC指令,得到双整数,再使用MOVE得到整数。转换过程中有精度丢失。

热门招聘
相关主题

官方公众号

智造工程师