用西门子3152PNDP的cpu做浮点数累计,用浮点数累计,1秒加一次,a+b=a来计算的,b的数值非常小最大0.004,最小时0.001,在做累计是开始正常,但是在加数a累计到一定数值时就不能正常累计了(数值大概到万以上就出现问题了),这是什么问题,有没有解决办法?
最佳答案
由于S7-300的浮点数格式为单精度格式的,其有效数据长度为8位,因此当两个相差很大的数相加时(如A/B > 10000000),会发生丢尾数及完全被舍弃的现象,这在累加值的应用中经常发生,所以必须根据你的实际应用情况确定其算法.
最好办法比如MD0达到一定数值1000后另存MD4从单位角度变换,然后 MD0到1000再给MD4相加,如此相加的都是1000,当MD4大到一定程度给MD8累加10000如此。
提问者对于答案的评价:
多谢帮助
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc212056.html