这个浮点数修改后程序就出问题是什么原因?

分享到:
211
下一篇 >

菜鸟提问

这段程序是为了累加电磁流量计的流量,M1000.1是秒脉冲,即1秒钟导通一次。由于是在程序里累加,时间长了,PLC累加的数值会和流量计自己计算的有个差值。这样我在组态王里把DB3.DBD128设置成读写属性。差值大了我就修改成一致。

但是现在的问题时,在组态王里修改DB3.DBD128后,有些时候DB3.DBD128会继续累加,有些时候就一直保持修改的数值,不继续累加,这个寄存器在其他的地方也没有用到。通过在线监视,发现DB1.DBD52的数值与电磁流量计的示数一样,没有问题。

求解,问题出在哪啊,现场找不到原因

斑竹:

一个极大的数加一个极小的数,这个极小的数会被忽略。

当太阳和蜡烛一起时,蜡烛的光亮可以忽略不计!

大虾:

你的这个问题也讨论过很多次了,这是因为累加器的有效位造成,而累加的过程实数累加,先对齐指数,然后对齐有效数字部分,累加的两个数的数量级相差10^7的话,小的那个数对齐指数后,有效数字就变成0了。所以累加的过程中数量级不能相差10^7,越接近这个数量级误差越大。

解决方法:你可以用多次累加的方式来做:sum1=sum1+pv,若sum1>sum1_sp,则sum2=sum2+sum1,sum1=0,*后的累计值就是sum1+sum2,如果要累计更多,你可以再重复上面的方法。

游民:

直接用DINT数据类型 累加到20多亿,一般情况够你累计流量了。

确实是,现场调试时也是数据过大时,累加后误差就很大,如果数据比较小时,累加时就没问题


你可能感兴趣: 工控菜鸟园 自动化系统 电磁流量计
无觅相关文章插件,快速提升流量