REAL数据类型为什么只显示4位小数

REAL数据类型为什么只显示4位小数?如图所示,DBD6和DBD40都是REAL类型。我是采用DBD6+DBD40所得的和再放入到DBD6 然而DBD40有若干位小数,而相加后的和也就是DBD6只有4位小数,这样造成了很大误差,请问问题出现在哪里?如何将DBD6也设置为显示多位的小数?

图片说明:

REAL数据类型为什么只显示4位小数    REAL数据类型为什么只显示4位小数   

最佳答案

S7-300/400里的浮点数是符号IEEE754标准的单精度浮点数,占4个字节,有效数字不可能很多,当一个比较大的浮点数加上一个比较小的浮点数就可能产生比较大的误差,所以浮点数计算的一个常识就是要避免大小悬殊的数相加,你这应该是属于不断的累加吧,如果是给你推荐一个算法
增加一个变量用于保存计算误差,比如是DBD100,那么计算过程如下
LD0=DBD40+DBD100        把上一次的误差累加进去
LD4=DBD6+LD0                这样当前累加量和上一次计算丢失的值都加进去
DBD100=LD4-DBD6+LD0   计算一下本次累加误差丢失的值
DBD6=LD4                        更新当前累加值
这个算法的核心就在于,如果要加的数比较小,和大数相加会丢失数值,丢失的数值会和下一次的值累加,这样当达到一定的程度,就可以累加到大数里了

提问者对于答案的评价:
3Q,谢谢2位大侠
2楼的方法没用到,因为现在PLC正在运行,这个块是用FB(SCL)写的,如果更改那么PLC会进入到STOP模式,现在明白道理了,使用了另外的笨办法

最佳答案作者回复:
DBD100=LD4-DBD6+LD0   计算一下本次累加误差丢失的值       有误,应为
DBD100=DBD6-LD4+LD0

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午3:57
下一篇 2018年12月2日 下午3:58

相关推荐