您现在所在的是:

台达论坛

回帖:13个,阅读:17397 [上一页] [1] [2] [下一页]
8391
fujifa
文章数:2943
年度积分:77
历史总积分:8391
品牌积分(台达):2
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2018/7/6 7:28:40
#10楼
以下是引用蜀中之首2018/7/5 22:43:42的发言:
“现在正在学习台达PLC,早两晚仿真发现 :使用 DFLT 指令把整数转换成浮点数后,再DEMUL指令浮点乘法计算,再转换回整数。结果后面两位与正确值有差距。”

“我这几个计算测试都没用到小数”

这是楼主发出的信息
整数变浮点,再做乘法,结果再转换回整数,没做小数计算(整数也没小数呀)

我做了4位数的,只是没提整-浮-整的操作,就遭到嘚啵,好可笑。

来看楼主的数据
2.(应版主要求,先看试验2)

附件 untitled1.jpg

32767*3007=983239369
没看错吧,是10进制(BCD)计算。

附件 untitled2.jpg
附件 untitled3.jpg
附件 untitled4.jpg
附件 untitled5.jpg
是不是与计算器结果一致。

1,再看试验一
附件 untitled6.jpg
32767*12343=404443081
附件 untitled7.jpg
附件 untitled8.jpg
结果一样嘛

再看一个4020*23481=94393620
附件 untitled9.jpg

BCD:94393620
发好这帖感觉是不是很好?赢了版主哎。

知道版主为何不回应了吗?我不知道。

看懂版主和网友的回答了吗?知道为啥产生误差了吗?

我来告诉你,误差来自于浮点数乘法而不是转换,你整形乘法再转换你算看懂楼主的问题了吗?
[此贴子已经被jint于2018/7/6 8:41:06编辑过]
8018
蜀中之首
文章数:5230
年度积分:50
历史总积分:8018
品牌积分(台达):76
注册时间:2018/5/27
发站内信
发表于:2018/7/6 10:06:58
#11楼
整形乘法再转换?瞎汪汪,为积分就上某电视购物,签到就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编辑过]
8391
fujifa
文章数:2943
年度积分:77
历史总积分:8391
品牌积分(台达):2
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2018/7/6 10:34:47
#12楼
本来应该回帖者自己查的资料却让人家提问的查,本来楼主提的单精度问题却硬要扯双精度。
[此贴子已经被jint于2018/7/6 11:05:18编辑过]
38059
cvlsam 版主
文章数:12482
年度积分:670
历史总积分:38059
品牌积分(台达):43
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2018/7/6 10:49:14
#13楼
以下是引用蜀中之首2018/7/5 22:43:42的发言:
“现在正在学习台达PLC,早两晚仿真发现 :使用 DFLT 指令把整数转换成浮点数后,再DEMUL指令浮点乘法计算,再转换回整数。结果后面两位与正确值有差距。”

“我这几个计算测试都没用到小数”

这是楼主发出的信息
整数变浮点,再做乘法,结果再转换回整数,没做小数计算(整数也没小数呀)

我做了4位数的,只是没提整-浮-整的操作,就遭到嘚啵,好可笑。

来看楼主的数据
2.(应版主要求,先看试验2)

附件 untitled1.jpg

32767*3007=983239369
没看错吧,是10进制(BCD)计算。

附件 untitled2.jpg
附件 untitled3.jpg
附件 untitled4.jpg
附件 untitled5.jpg
是不是与计算器结果一致。

1,再看试验一
附件 untitled6.jpg
32767*12343=404443081
附件 untitled7.jpg
附件 untitled8.jpg
结果一样嘛

再看一个4020*23481=94393620
附件 untitled9.jpg

BCD:94393620

单精度浮点数的有效位是7位,以楼主贴出的图片所展示的台达机型并不支持双精度浮点数。

撇开机型不谈,双精度浮点数的有效位是15~16位,因此,当数值足够大的时候,即使使用双精度浮点数,也存在这个问题。

因此,前面网友已经说过了,有效位才是导致这个问题关键。

哪怕你再贴出128位的浮点数指令,也一样存在这个问题。

最后:既然楼主提出了问题,那么回帖者应该竭力解决问题而不是让提问者修改问题,什么5位改4位……所以,答题应尽量以提问者的问题为中心,而不是去扩展问题。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

78.0005