300编程中能否使用小数啊 点击:841 | 回复:8



kirate

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2006年10月29日
发表于:2006-11-01 11:25:00
楼主
比如说我在触摸屏那里发送一个小数,要用什么来接收啊。。例如lw100是不是不能存放小数啊。。我还想把这个小数放大100倍然后通过sfc15来控制变频器运行速度,这样可以么?我试过把小数放到md或者mw里,但是算完乘法数都乱了,真晕啊。希望高手能指点下



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-11-01 11:33:00
1楼
小数属于浮点数类型,必须使用双字的存储空间,所以你需要放到MD,DBD这类类型中去。

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2006-11-01 11:38:00
2楼
小数放到md,算完乘法数都乱了,你需要用real来监控就可以了
最后不要忘了用rtd,把实数转化成整数的形式来发送

kirate

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2006年10月29日
发表于:2006-11-01 13:46:00
3楼
还是不太懂。。能帮我发个例子么。比如说md100里边存放的是1.25 我想把他放大100倍放到 mw200的话怎么做啊,麻烦了。

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-11-01 14:05:00
4楼
你的要求不可能实现,原因在于浮点数相乘后,结果还是浮点数,也就是说,存储空间仍然需要MD才可以存放,经过取整后,其结果转化为长整形数据,其存储空间仍然为32位空间,也就是仍然要MD,然后取其1个字节,其结果就是丢失符号位,并且数据也不正确,所以你这种想法其本身就是错误的。
另外,请问LMHX:
   西门子300中有RTD指令吗?浮点数转换为长整形数是通过截尾取整指令作的,而指令中是没有从浮点数向长整形数转换的指令的,只有从长整形数向浮点数转换的指令DTR

kirate

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2006年10月29日
发表于:2006-11-01 14:11:00
5楼
原来如此啊。谢谢,以前我用200的时候可以转换的,没想到300里边不行啊。。呵呵,再次感谢

皓月

  • 精华:9帖
  • 求助:0帖
  • 帖子:483帖 | 5271回
  • 年度积分:0
  • 历史总积分:8863
  • 注册:2003年11月09日
发表于:2006-11-02 09:36:00
6楼
TO  yuanle: 
   西门子300中有RTD指令吗?浮点数转换为长整形数是通过截尾取整指令作的,而指令中是没有从浮点数向长整形数转换的指令的,只有从长整形数向浮点数转换的指令DTR
不好意思,我记错了,应为RND
TO kirate:
你的问题可以这样做:
L MD100
L 100.0
*R
RND
T MW200

kirate

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2006年10月29日
发表于:2006-11-02 14:02:00
7楼
谢谢大家能回帖,我才试了刚才lmhx大哥发的帖子,确实可以实现,看来我得好好学学用stl写程序了。。到现在为止,我一直都是用梯形图呵呵

刘正刚

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 216回
  • 年度积分:0
  • 历史总积分:237
  • 注册:2006年11月10日
发表于:2006-11-12 12:54:00
8楼
论坛里还是有很多的大侠的,只是我不明白怎么会没有人回答我的问题哪?郁闷啊!不过我在西门子发布的帖子有人回啦。

热门招聘
相关主题

官方公众号

智造工程师