隨著組態(tài)軟件在各行業(yè)的應(yīng)用越來(lái)越廣泛,,了解和使用組態(tài)軟件的人越來(lái)越多,同時(shí)對(duì)組態(tài)軟件各方面的功能要求也越來(lái)越高,。
一般,,組態(tài)軟件在實(shí)際應(yīng)用中都會(huì)用到幾個(gè)基本功能,,比如數(shù)據(jù)采集,、實(shí)時(shí)數(shù)據(jù)展示、報(bào)警,、報(bào)表等,,而歷史數(shù)據(jù)存儲(chǔ)更是必不可少。通過(guò)自動(dòng)記錄下系統(tǒng)運(yùn)行時(shí)的數(shù)據(jù)變化,,可以對(duì)以后的事故分析,,趨勢(shì)統(tǒng)計(jì)提供必要的數(shù)據(jù)來(lái)源,大大提高系統(tǒng)運(yùn)行的穩(wěn)定性,,減少出現(xiàn)生產(chǎn)事故的機(jī)會(huì),。
目前市面上組態(tài)軟件種類繁多,采用的存儲(chǔ)策略不盡相同,,有采用外部數(shù)據(jù)庫(kù)作為歷史庫(kù),,這種方式具有功能強(qiáng)大、運(yùn)行穩(wěn)定的優(yōu)點(diǎn),,但缺點(diǎn)也非常很明顯,運(yùn)行速度慢,、占用空間大,、軟件集成性不好等。因此很多公司都自己開發(fā)歷史數(shù)據(jù)存儲(chǔ)功能,,開發(fā)的歷史庫(kù)不僅具有速度快,、占用空間小的優(yōu)點(diǎn),而且保密性較好,,不像通用數(shù)據(jù)庫(kù)可以隨便打開,。
世紀(jì)星組態(tài)軟件也是使用獨(dú)立開發(fā)的歷史庫(kù)。為保證歷史數(shù)據(jù)存儲(chǔ)速度快,、占用空間小,,世紀(jì)星組態(tài)軟件主要采用以下三種方案。
第一種是盡量減少數(shù)據(jù)存儲(chǔ)量,,從根本上降低對(duì)歷史數(shù)據(jù)庫(kù)的要求,。
組態(tài)軟件記錄的數(shù)據(jù)都是現(xiàn)場(chǎng)采集上來(lái)的各種參量,比如溫度,、壓力等,,需要保存的信息包括變量標(biāo)識(shí)、值和精確到毫秒的時(shí)間,。為達(dá)到減小存儲(chǔ)量的目的,,世紀(jì)星采用兩個(gè)方法:
一是以存儲(chǔ)變量ID代替存儲(chǔ)變量名,這是顯而易見的道理,,變量ID以4個(gè)字節(jié)表示,,而變量名通常都會(huì)超過(guò)4個(gè)字節(jié)。在盡量減小存儲(chǔ)空間的前提下,當(dāng)然要選擇以變量ID代替變量名進(jìn)行保存,。
二就是記錄時(shí)間的方法,,每一個(gè)變量都需要記錄一個(gè)精確到毫秒的時(shí)間。時(shí)間的存儲(chǔ)也可以有多種方式,,以字符串方式保存,、以一個(gè)長(zhǎng)整數(shù)來(lái)保存等等。有些人可能不清楚如何以一個(gè)長(zhǎng)整數(shù)來(lái)保存時(shí)間,,只需要一個(gè)特定的換算方法換算一下即可,。當(dāng)然,以長(zhǎng)整數(shù)來(lái)保存時(shí)間會(huì)減小存儲(chǔ)量,,這里還有一個(gè)問(wèn)題,,一個(gè)長(zhǎng)整數(shù)是無(wú)法保存包括年、月,、日,、小時(shí)、分鐘,、秒,、毫秒所有這些值,在世紀(jì)星中采用的辦法是以日期作為歷史數(shù)據(jù)文件的名稱,,這樣在文件中的時(shí)間只要表示小時(shí),、分鐘、秒,、毫秒就沒問(wèn)題了,。
第二種就是建立索引。這個(gè)方法在通用數(shù)據(jù)庫(kù)中也被廣泛的使用,,但由于工控行業(yè)有其自己的特殊性,,比如數(shù)據(jù)都是定時(shí)存儲(chǔ),數(shù)據(jù)在文件中的位置順序有規(guī)律,,因此這種建立索引的方法更能發(fā)揮巨大的作用,。
世紀(jì)星組態(tài)軟件的工程中保存兩種類型的歷史文件,一種以IDX結(jié)尾的索引文件,,一種以LGH結(jié)尾的數(shù)據(jù)文件,。在IDX文件中以分鐘為最小單元,記錄歷史數(shù)據(jù)在LGH文件中的確定位置,。查詢數(shù)據(jù)時(shí),,根據(jù)使用者提供的查詢時(shí)間,能夠很快的在IDX文件中確定數(shù)據(jù)的確切位置,,無(wú)視LGH數(shù)據(jù)文件的大小,,達(dá)到快速查詢的目的,。
下圖是數(shù)據(jù)查詢時(shí)的示意圖:
最后一個(gè)策略就是數(shù)據(jù)壓縮。工控行業(yè)有時(shí)候需要保存的數(shù)據(jù)量很大,,有時(shí)變化速率在100毫秒以內(nèi),,而且需要保存的時(shí)間很長(zhǎng),為保存這些數(shù)據(jù),,同時(shí)確保占用空間小,,就必須采用數(shù)據(jù)壓縮。世紀(jì)星采用zlib庫(kù)提供的壓縮算法,,zlib是一種可以免費(fèi)使用的壓縮庫(kù),,壓縮效果好,解壓速度快,。是目前比較成熟的數(shù)據(jù)壓縮方法,。
采用這三種方法之后,效果顯而易見,。經(jīng)過(guò)測(cè)試,,包含1w個(gè)變量的工程,其中4k個(gè)變量每200毫秒記錄一次,,在查詢10分鐘的數(shù)據(jù)時(shí)所用時(shí)間不超過(guò)200毫秒,;查詢4個(gè)小時(shí)的數(shù)據(jù),查詢時(shí)間不超過(guò)2秒,。
在實(shí)際應(yīng)用中也會(huì)發(fā)現(xiàn)一些不足,比如工程中變量很多,,要求存儲(chǔ)的數(shù)據(jù)量很大,,這時(shí)歷史文件會(huì)很大,即使有索引文件,,在查詢時(shí)的速度也會(huì)降低,。改進(jìn)的方法是可以把一個(gè)文件分成多個(gè),比如變量ID小于5000的數(shù)據(jù)保存成一個(gè)文件,,變量ID在5000到10000之間的保存成一個(gè)文件,,以此類推,這樣就可以減小文件的規(guī)模,,從而提高查詢速度,。