登录
首页 PLC论坛 台达PLC
回帖 发帖
正文

主题:台达PLC整数转换浮点数后计算会有误差

点击:16947 回复:13

引用 蜀中之首 在 2018/7/5 22:43:42 发言【内容省略】

发好这帖感觉是不是很好?赢了版主哎。
知道版主为何不回应了吗?我不知道。
看懂版主和网友的回答了吗?知道为啥产生误差了吗?
我来告诉你,误差来自于浮点数乘法而不是转换,你整形乘法再转换你算看懂楼主的问题了吗?
最后修改:2018/7/6 8:41:06
18-07-06 07:28
整形乘法再转换?瞎汪汪,为积分就上某电视购物,签到就2元。
楼主你试一下,将数字改小,由5位改为4位试试
整-浮*-整有误差,你想不通,我也认为没道理,毕竟没有输入小数
量变就会产生质变,5位数*5位数,超过8位了,指令就要变
基于上述二点
整变浮,用的DBLL(双精度32位BIN转浮点),如果再用FLTL(32位BIN转浮点)就不合适了。
同样浮点乘法,用到*D(双精度浮点乘法),没有使用*F,简单看一个占用64位,一个占用32位。
当然浮点转整就用到了FIXLD(双精度浮点--32位BIN),没有使用FIXL
转换后的BIN用了DBSL,因为开始输入的数据是BCD,所以在此用个双字BIN--BSD
你可能注意到了,第一个数字转换(BDSL带符号双字BIN--BCD)结果是000000,是因为结果超出8位了,使用特列出第3例。
你再查查台达是不是有相应指令。
最后修改:2018/7/6 10:10:50
18-07-06 10:06
本来应该回帖者自己查的资料却让人家提问的查,本来楼主提的单精度问题却硬要扯双精度。
最后修改:2018/7/6 11:05:18
18-07-06 10:34

引用 蜀中之首 在 2018/7/5 22:43:42 发言【内容省略】

单精度浮点数的有效位是7位,以楼主贴出的图片所展示的台达机型并不支持双精度浮点数。
撇开机型不谈,双精度浮点数的有效位是15~16位,因此,当数值足够大的时候,即使使用双精度浮点数,也存在这个问题。
因此,前面网友已经说过了,有效位才是导致这个问题关键。
哪怕你再贴出128位的浮点数指令,也一样存在这个问题。
最后:既然楼主提出了问题,那么回帖者应该竭力解决问题而不是让提问者修改问题,什么5位改4位……所以,答题应尽量以提问者的问题为中心,而不是去扩展问题。
18-07-06 10:49

上一页 上一页

工控新闻

更多新闻资讯