|
隨著組態軟件在各行業的應用越來越廣泛,了解和使用組態軟件的人越來越多,同時對組態軟件各方麵的功能要求也越來越高。
一般,組態軟件在實際應用中都會用到幾個基本功能,比如數據采集、實時數據展示、報警、報bao表biao等deng,而er曆li史shi數shu據ju存cun儲chu更geng是shi必bi不bu可ke少shao。通tong過guo自zi動dong記ji錄lu下xia係xi統tong運yun行xing時shi的de數shu據ju變bian化hua,可ke以yi對dui以yi後hou的de事shi故gu分fen析xi,趨qu勢shi統tong計ji提ti供gong必bi要yao的de數shu據ju來lai源yuan,大da大da提ti高gao係xi統tong運yun行xing的de穩wen定ding性xing,減jian少shao出chu現xian生sheng產chan事shi故gu的de機ji會hui。
目前市麵上組態軟件種類繁多,采用的存儲策略不盡相同,有采用外部數據庫作為曆史庫,這種方式具有功能強大、運行穩定的優點,但缺點也非常很明顯,運行速度慢、占用空間大、軟件集成性不好等。因此很多公司都自己開發曆史數據存儲功能,開發的曆史庫不僅具有速度快、占用空間小的優點,而且保密性較好,不像通用數據庫可以隨便打開。
世紀星組態軟件也是使用獨立開發的曆史庫。為保證曆史數據存儲速度快、占用空間小,世紀星組態軟件主要采用以下三種方案。
第一種是盡量減少數據存儲量,從根本上降低對曆史數據庫的要求。
組態軟件記錄的數據都是現場采集上來的各種參量,比如溫度、壓力等,需要保存的信息包括變量標識、值和精確到毫秒的時間。為達到減小存儲量的目的,世紀星采用兩個方法:
一是以存儲變量ID代替存儲變量名,這是顯而易見的道理,變量ID以4個字節表示,而變量名通常都會超過4個字節。在盡量減小存儲空間的前提下,當然要選擇以變量ID代替變量名進行保存。
二就是記錄時間的方法,每一個變量都需要記錄一個精確到毫秒的時間。時間的存儲也可以有多種方式,以字符串方式保存、以(yi)一(yi)個(ge)長(chang)整(zheng)數(shu)來(lai)保(bao)存(cun)等(deng)等(deng)。有(you)些(xie)人(ren)可(ke)能(neng)不(bu)清(qing)楚(chu)如(ru)何(he)以(yi)一(yi)個(ge)長(chang)整(zheng)數(shu)來(lai)保(bao)存(cun)時(shi)間(jian),隻(zhi)需(xu)要(yao)一(yi)個(ge)特(te)定(ding)的(de)換(huan)算(suan)方(fang)法(fa)換(huan)算(suan)一(yi)下(xia)即(ji)可(ke)。當(dang)然(ran),以(yi)長(chang)整(zheng)數(shu)來(lai)保(bao)存(cun)時(shi)間(jian)會(hui)減(jian)小(xiao)存(cun)儲(chu)量(liang),這(zhe)裏(li)還(hai)有(you)一(yi)個(ge)問(wen)題(ti),一(yi)個(ge)長(chang)整(zheng)數(shu)是(shi)無(wu)法(fa)保(bao)存(cun)包(bao)括(kuo)年(nian)、月、日、小時、分鍾、秒、毫秒所有這些值,在世紀星中采用的辦法是以日期作為曆史數據文件的名稱,這樣在文件中的時間隻要表示小時、分鍾、秒、毫秒就沒問題了。

第(di)二(er)種(zhong)就(jiu)是(shi)建(jian)立(li)索(suo)引(yin)。這(zhe)個(ge)方(fang)法(fa)在(zai)通(tong)用(yong)數(shu)據(ju)庫(ku)中(zhong)也(ye)被(bei)廣(guang)泛(fan)的(de)使(shi)用(yong),但(dan)由(you)於(yu)工(gong)控(kong)行(xing)業(ye)有(you)其(qi)自(zi)己(ji)的(de)特(te)殊(shu)性(xing),比(bi)如(ru)數(shu)據(ju)都(dou)是(shi)定(ding)時(shi)存(cun)儲(chu),數(shu)據(ju)在(zai)文(wen)件(jian)中(zhong)的(de)位(wei)置(zhi)順(shun)序(xu)有(you)規(gui)律(lv),因(yin)此(ci)這(zhe)種(zhong)建(jian)立(li)索(suo)引(yin)的(de)方(fang)法(fa)更(geng)能(neng)發(fa)揮(hui)巨(ju)大(da)的(de)作(zuo)用(yong)。
世紀星組態軟件的工程中保存兩種類型的曆史文件,一種以IDX結尾的索引文件,一種以LGH結尾的數據文件。在IDX文件中以分鍾為最小單元,記錄曆史數據在LGH文件中的確定位置。查詢數據時,根據使用者提供的查詢時間,能夠很快的在IDX文件中確定數據的確切位置,無視LGH數據文件的大小,達到快速查詢的目的。
下圖是數據查詢時的示意圖:

最後一個策略就是數據壓縮。工控行業有時候需要保存的數據量很大,有時變化速率在100毫秒以內,而且需要保存的時間很長,為保存這些數據,同時確保占用空間小,就必須采用數據壓縮。世紀星采用zlib庫提供的壓縮算法,zlib是一種可以免費使用的壓縮庫,壓縮效果好,解壓速度快。是目前比較成熟的數據壓縮方法。
采用這三種方法之後,效果顯而易見。經過測試,包含1w個變量的工程,其中4k個變量每200毫秒記錄一次,在查詢10分鍾的數據時所用時間不超過200毫秒;查詢4個小時的數據,查詢時間不超過2秒。
在(zai)實(shi)際(ji)應(ying)用(yong)中(zhong)也(ye)會(hui)發(fa)現(xian)一(yi)些(xie)不(bu)足(zu),比(bi)如(ru)工(gong)程(cheng)中(zhong)變(bian)量(liang)很(hen)多(duo),要(yao)求(qiu)存(cun)儲(chu)的(de)數(shu)據(ju)量(liang)很(hen)大(da),這(zhe)時(shi)曆(li)史(shi)文(wen)件(jian)會(hui)很(hen)大(da),即(ji)使(shi)有(you)索(suo)引(yin)文(wen)件(jian),在(zai)查(zha)詢(xun)時(shi)的(de)速(su)度(du)也(ye)會(hui)降(jiang)低(di)。改(gai)進(jin)的(de)方(fang)法(fa)是(shi)可(ke)以(yi)把(ba)一(yi)個(ge)文(wen)件(jian)分(fen)成(cheng)多(duo)個(ge),比(bi)如(ru)變(bian)量(liang)ID小於5000的數據保存成一個文件,變量ID在5000到10000之間的保存成一個文件,以此類推,這樣就可以減小文件的規模,從而提高查詢速度。
|