在S7-400PLC 在OB35(0.01s周期)中进行介质消耗的累加,累积量加上0.01s的瞬时流量再赋给累积量。
在实际使用中当累积量过大时,瞬时量过小时,累积量一点都不增加。同时计算每半小时的累积量发给L2的服务器做累加。
让我感到疑惑的是 L2统计的每天消耗竟然比PLC累计的当天量小。我自己观察半天都没弄明白,PLC的累积量半小时走100多,总的累积量一点都没有增加,怎么L2比PLC的每天累计量小。
后来把PLC中的程序累计量也改成先计算半小时的累计量,再将累积量加到总的累积量上L2和PLC累积量就能对上了。
------这是浮点数的分辨率有限造成的。浮点数太大,新加上的数小于它的分辨率。
10ms累加一次也太频繁了吧?瞬时流量变化有那么快吗?建议保存1秒内的瞬时流量看看累加间隔取多大好一些。
--------300/400的累加器有效位是6位,如果相加的两个数相差10^7数量级,则指数对齐后,小的数就变成了,所以不能累加,为了实现你的要求你可以多次累加:sum=sum+pv,sum>sum_sp则sum1=sum1+sum,sum=0。sum1>sum1_sp,则sum2=sum2+sum1,sum1=0......最后的累计值是所有的sum的和。
---------浮点数分辨率大与小的问题,所以楼主后面做的方法才是方法之一
--------瞬时累加不能时基太小
欢迎光临 工控编程吧 (https://www.gkbc8.com/) | Powered by Discuz! X3.4 |