世纪星组态软件的数据存储方案

时间:2011-07-28

  一般,组态软件在实际应用中都会用到几个基本功能,比如数据采集、实时数据展示、报警、报表等。而且组态软件的应用越来越广泛,对这方面性能的要求也越来越高了,尤其是数据存储,数据对于以后的系统的各方面进行分析评估有着至关重要的作用。

  目前市面上组态软件种类繁多,采用的存储策略不尽相同,有采用外部数据库作为历史库,这种方式具有功能强大、运行稳定的优点,但缺点也非常很明显,运行速度慢、占用空间大、软件集成性不好等。因此很多公司都自己开发历史数据存储功能,开发的历史库不仅具有速度快、占用空间小的优点,而且保密性较好,不像通用数据库可以随便打开。

  世纪星组态软件也是使用独立开发的历史库。为保证历史数据存储速度快、占用空间小,世纪星组态软件主要采用以下三种方案。

  种策略就是数据压缩。数据压缩的性能直接关系到存储空间的大小,工控行业数据变化频繁,而且数据长度比较长,虽然一个数据可能就那么几个字节,但是由于记录时间频繁使得整个数据量就很庞大。世纪星采用zlib库提供的压缩算法,zlib是一种可以使用的压缩库,压缩效果好,解压速度快。是目前比较成熟的数据压缩方法。

  第二种就是建立索引。世纪星组态软件的工程中保存两种类型的历史文件,一种以IDX结尾的索引文件,一种以LGH结尾的数据文件。这个方法在通用数据库中也被广泛的使用,但由于工控行业有其自己的特殊性,比如数据都是定时存储,数据在文件中的位置顺序有规律,因此这种建立索引的方法更能发挥巨大的作用。

  在IDX文件中以分钟为单元,记录历史数据在LGH文件中的确定位置。查询数据时,根据使用者提供的查询时间,能够很快的在IDX文件中确定数据的确切位置,无视LGH数据文件的大小,达到快速查询的目的。

  下图是数据查询时的示意图:

  种是尽量减少数据的存储。

  组态软件记录的数据都是现场采集上来的各种参量,比如温度、压力等,需要保存的信息包括变量标识、值和到毫秒的时间。为达到减小存储量的目的,世纪星采用两个方法:

  一是以存储变量ID代替存储变量名,以4个字节的ID来替代超过4字节的变量,这样可以减少数据的存储。因此如果能用ID,就尽量用ID来存储。

  二就是记录时间的方法,时间的存储也可以有多种方式,以字符串方式保存、以一个长整数来保存等等。每一个变量都需要记录一个到毫秒的时间。当然,以长整数来保存时间会减小存储量。不需要降年月日等通通存进数据,这样做也没有意义,只需要讲小时,分钟,秒存下来就可以了,至于年月日可以用文件名的方式表示。

  采用这三种方法之后,效果显而易见。经过测试,包含1w个变量的工程,其中4k个变量每200毫秒记录,在查询10分钟的数据时所用时间不超过200毫秒;查询4个小时的数据,查询时间不超过2秒。

  在实际应用中也会发现一些不足,比如工程中变量很多,要求存储的数据量很大,这时历史文件会很大,即使有索引文件,在查询时的速度也会降低。改进的方法是可以把一个文件分成多个,比如变量ID小于5000的数据保存成一个文件,变量ID在5000到10000之间的保存成一个文件,以此类推,这样就可以减小文件的规模,从而提高查询速度。


  
上一篇:“猫”(ADSL)的故障维修
下一篇:解析USB3.0系统可靠性

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料