昨天高线的电气负责人让我帮忙处理, 加热炉煤气消耗小时报表,频繁出现相邻的整点归档数据重复的问题。 这个严格来说也不叫报表,就是把煤气总流量整点归档。 相当于整点抄表。
首先, 按照正常的思路, 查看具体配置, 小时0分0秒归档, 没问题; 检查OB32的1000ms循环,进行秒流量累加, 除了发现计算精度有点丢失意外, 也没啥大问题;
检查出现重复的时间段历史趋势, 发现煤气总流量并不低; 不是大数吃掉小数的问题;
一时没思路了; 检查变量设置, 也没问题; 后来偶然将鼠标移动到该变量上, 发现更新时间还是最近的0分0秒。 直觉感到这里有问题。 再仔细看, 当前值和 PLC计算的实际值不一致, 确实是上次归档时的值;
奇怪了, 我的印象里应该是实时刷新的,有个默认刷新频率的;
后来考虑到, 由于这个总累计是只在这个小时归档这里用了一次; 变量可能是按访问频率来刷新的;这样,确实是按1小时刷新一次; 至于为什么会出现重复, 我的分析可能是某些偶发因素, 比如延迟啊, 或者出错啊,造成读的还是上个周期的值;当然, 具体原因我觉得不重要了。
想明白这里, 我就直接在全局脚本加了一个2S的C脚本, 就一行语句:
float flowGas = GetTagFloat("煤气流量累计");
然后, 变量管理器那里可以看到变量的值在快速的更新。
因此, 实时数据库中的变量, 确实是以访问的频率来刷新的。 而不是我以为地按照默认频率来刷新的。至少Wincc如此。