对于常规的数据统计建议使用WinCC变量记录系统的归档实现。
一、变量记录系统的过程值归档
下面是使用者经常忽略的归档方式,可以有效解决历史数据相关报表的数据存储问题:
1、变量记录中的过程值归档可以实现对数据的平均、最大值、最小值 以及求和汇总。
2、涉及到对已有归档数据统计分析的,可以结合过程值归档和压缩归档实现。
这两种方式可以实现的数据归档方式:
1、周期性归档
2、根据数据变化归档
3、通过事件(变量)触发归档、通过事件(变量)触发循环归档的开始和结束。
基本上常见的报表数据存储需求使用这些归档方法都能实现。
虽说外挂或者VBS也是对数据库的操作,但是成型的产品比用户自己写的脚本考虑更全面,更加稳定和高效。
二、用户归档
用户归档可以实现对于采集频率不高,归档数据量不大的工艺数据的统计。
简单介绍一下用户归档:它是用于满足配方需求的一个WinCC选件。这个选件提供了类似数据库“增删改查”的接口和界面,即可以使用简单组态完成这些工作,也可以通过C或VBS脚本使用更灵活的控制逻辑。这些特性可以方便的应用于报表需求。相对过程值归档来讲,用户归档更接近数据库的概念。因为我们可以通过SQLServer浏览器看到数据的表结构。同时它也提供了视图的功能,可以创建一些关系。从而为出报表做一些前期准备。
用户归档的每一个归档(其实对应的就是数据库的表),都提供了一组控制变量。我们可以通过这些控制变量实现对归档的操作。说白了就是wincc后台做好了读写数据库的脚本。通过这些变量触发实现操作的。不熟悉编程,不了解数据库结构的的工程师也可以实现对数据库的操作。
总之:以上两种方法实现对数据的存储和操作,都比自己写代码要高效稳定。这也是WinCC建议使用的数据存储方法。
同时使用以上的方法开发的项目,通过WinCC提供的项目复制器可以很好地实现项目的移植和备份。
题外话:
关于数据库的操作的性能问题。
实际上对数据库操作占用时间的并不是打开和关闭数据库链接,而是后面的读写和查询操作。
一般大家常用两种方式实现数据库连接:
1、自己写脚本建立连接,在本地完成数据操作后然后释放连接。
2、通过数据库的存储过程实现。
两者主要的区别是:方法一 每次都需要在本地内存重新生成相应对象和执行代码,然后释放连接;方法二是编译后对象和代码长期驻留服务器内存,效率更高一些。但这个效率主要是针对后面的读写和查询操作来讲的。
其实一般的数据库对链接的要求还是有限制的,如果长期占用链接不释放的情况下,会影响数据库的运行性能和接入。所以从数据库的角度不建议长期占用链接(除非特殊情况)。 针对高速的数据存储,一般不会用于报表系统。对于WinCC来说,还是对报表需要的数据另行归档,或对高速归档使用“压缩归档”抽出所需数据,比较合理。
另:关于此次讨论的结果,我们最后会做整理。请大家继续关注!踊跃发言!
管理员注:本帖已被纳入此次探讨发帖整理之理论探讨,请
点此详阅