|
zaigongyekongzhizhong,changchangyaocongyixieshujudelishiqushizhongfenxiwentihefaxianwenti。zijinqiaoshishishujukuzhichilishishujudekuaisubaocunhejiansuo,keyianzhaoyidingdetiaojianbashujubaocundaolishikuzhong,yonghuxuyaoshikesuishifangwen。
曆li史shi數shu據ju一yi般ban是shi點dian的de某mou個ge參can數shu在zai過guo去qu某mou一yi時shi刻ke的de瞬shun時shi值zhi,是shi與yu時shi間jian有you關guan的de數shu據ju,每mei一yi個ge曆li史shi數shu據ju記ji錄lu上shang都dou有you一yi個ge時shi間jian戳chuo,記ji錄lu曆li史shi數shu據ju的de采cai樣yang時shi間jian。位wei號hao是shi否fou保bao存cun曆li史shi數shu據ju,曆li史shi數shu據ju的de保bao存cun條tiao件jian都dou由you用yong戶hu進jin行xing數shu據ju組zu態tai時shi決jue定ding。實shi時shi數shu據ju庫ku按an照zhao用yong戶hu指zhi定ding的de采cai樣yang條tiao件jian在zai庫ku中zhong進jin行xing采cai樣yang,如ru果guo采cai樣yang的de條tiao件jian滿man足zu,就jiu將jiang采cai樣yang數shu據ju加jia上shang時shi間jian戳chuo,記ji入ru曆li史shi庫ku中zhong。
lishishujukushicipanwenjian,weilefangzhipinfandexiecipan,zijinqiaoshishishujukuzaineicunzhongkaipilelishishujuhuanchongqu。lishishujucongshishishujukuzhongcaijiyihou,shouxianfangzaineicunhuanchongquzhong,dangcunpanshijiandaodahuohuanchongquyimanshiyicixingdexierucipanlishikuwenjian。yonghufangwenlishishujushi,xitongshouxianjianzhalishishujuhuanchongquzhongshifouyouyonghuxuyaodelishishuju,ruguomeiyouranhouzaijianzhalishishujukuwenjianzhongshifouyouyonghuxuyaodelishishuju。lishishujuhuanchongqudeshelidadajiakuailelishishujudecunqusudu。
紫金橋曆史數據庫具有如下特點:
u 紫金橋實時數據庫能夠將任何點的任何參數存盤。
u 無論數據來源於現場設備、人工錄入數據、還是計算結果都能存入曆史數據庫。
u 具有先進的數據壓縮算法,能夠充分利用有限的盤空間存儲長期的曆史數據
u 具有曆史插值功能。
對dui於yu某mou些xie特te定ding的de應ying用yong,需xu要yao修xiu改gai曆li史shi數shu據ju,紫zi金jin橋qiao實shi時shi數shu據ju庫ku沒mei有you提ti供gong相xiang關guan修xiu改gai曆li史shi數shu據ju的de方fang法fa,但dan通tong過guo上shang述shu的de曆li史shi插cha值zhi功gong能neng,可ke以yi完wan成cheng曆li史shi數shu據ju修xiu改gai的de目mu的de。下xia麵mian通tong過guo一yi個ge簡jian單dan的de示shi例li,介jie紹shao下xia曆li史shi數shu據ju的de修xiu改gai。
在工程中新建一個窗口,添加如下組件:

為了能用腳本調用各組件的功能,將各組件命名為:
|
組件 |
名稱 |
|
取曆史組件 |
His |
|
左側下拉框 |
tagSel |
|
起始時間 |
BegTime |
|
時間範圍 |
TimeLen |
|
左側報表 |
list |
|
右側下拉框 |
tagSel2 |
|
右側報表 |
newList |
設計思路:
1.查詢:通tong過guo下xia拉la框kuang選xuan擇ze要yao修xiu改gai的de數shu據ju庫ku點dian,點dian擊ji查zha詢xun按an鈕niu時shi,用yong起qi始shi時shi間jian和he結jie束shu時shi間jian組zu件jian的de設she置zhi,通tong過guo取qu取qu曆li史shi組zu件jian查zha詢xun該gai段duan時shi間jian範fan圍wei內nei的de曆li史shi數shu據ju,然ran後hou將jiang數shu據ju顯xian示shi在zai報bao表biao中zhong。點dian擊ji導dao出chu到daoExcel按鈕,將報表中的數據(包括時間和數值)導出至Excel中。
2.修改:利用Excel打開保存的文件,修改數據。
3.插值:選擇對應的數據庫點,點擊選擇Excel文件按鈕,加載Excel修改後的文件,將數據顯示在報表中,點擊插入曆史數據庫按鈕,完成曆史數據的插入。
實現方法:
1.將要修改的點在添加至下拉框中。
2.在查詢按鈕中添加自定義動作,如下:
string strCurTag = #tagSel.GetCurItemText();
strCurTag = StrTrimLeft(strCurTag);
strCurTag = StrTrimRight(strCurTag);
if StrInStr(StrLower(strCurTag),".pv",0) < 0 then
strCurTag = strCurTag+".pv";
endif
#his.FindHisEx(strCurTag,#BegTime.Time,#TimeLen.Time); //利用取曆史組件的FindHisEx函數,查詢某一數據庫點在指定時間範圍內的曆史數據。
3.將取曆史組件中的數據導出至報表中,設置取曆史組件的數據刷新動作為:
//調整報表的顯示行數,如果不足20行,則顯示20行,大於則顯示實際的行數
#list.DeleteRow(21,#list.RowCount());
int nListCnt = #list.RowCount();
int nDataCnt = #his.GetDataCount();
#list.ClearRowData(1,nListCnt);
if nDataCnt > nListCnt then
#list.AddRow(nDataCnt-nlistCnt);
Endif
//通過for循環將數據添加至報表中
int i=0;
int nTime = 0;
int nMS = 0;
real rData = 0;
for i=1 to nDataCnt+1
nTime = #his.GetDataTime(i);
#list.SetVal(1,i,nTime);
nMs = #his.GetDataMS(i);
#list.SetVal(2,i,nMs);
rData = #his.GetData(i);
#list.SetVal(3,i,rData);
Next
4.導出Excel按鈕腳本,如下:
#list.SaveAsEx("",0);
利用報表的SaveAsEx函數實現報表數據導出Exce文件功能。
5.選擇Exce按鈕腳本,如下:
#newList.LoadAsEx("",0);
6.插入曆史數據庫腳本,如下:
int nCnt = #hisList.RowCount();
int i=0;
string strCurTag = #tagSel2.GetCurItemText();
strCurTag = StrTrimLeft(strCurTag);
strCurTag = StrTrimRight(strCurTag);
if StrInStr(StrLower(strCurTag),".pv",0) < 0 then
strCurTag = strCurTag+".pv";
endif
for i=1 to nCnt+1
InsertHisDataEx("",strCurTag,#hisList.Val(3,i),#hisList.Val(1,i),#hisList.Val(2,i));
Next
利用InsertHisDataEx函數,實現曆史數據的插值,如果該時間戳已經存在,數據庫自動替換該值。
總結:利(li)用(yong)該(gai)功(gong)能(neng)可(ke)以(yi)方(fang)便(bian)的(de)完(wan)成(cheng)曆(li)史(shi)數(shu)據(ju)的(de)修(xiu)改(gai),紫(zi)金(jin)橋(qiao)實(shi)時(shi)數(shu)據(ju)庫(ku)對(dui)曆(li)史(shi)數(shu)據(ju)的(de)操(cao)作(zuo)提(ti)供(gong)了(le)靈(ling)活(huo)的(de)操(cao)作(zuo)手(shou)段(duan)。曆(li)史(shi)數(shu)據(ju)保(bao)存(cun)對(dui)數(shu)據(ju)完(wan)整(zheng)性(xing)和(he)數(shu)據(ju)的(de)壓(ya)縮(suo)比(bi)上(shang)有(you)較(jiao)好(hao)的(de)兼(jian)顧(gu)平(ping)衡(heng),數(shu)據(ju)保(bao)存(cun)結(jie)構(gou)先(xian)進(jin)合(he)理(li),使(shi)得(de)在(zai)檢(jian)索(suo)有(you)較(jiao)高(gao)的(de)效(xiao)率(lv),係(xi)統(tong)提(ti)供(gong)多(duo)種(zhong)數(shu)據(ju)查(zha)詢(xun)手(shou)段(duan),包(bao)括(kuo)單(dan)點(dian)數(shu)據(ju)查(zha)詢(xun),批(pi)量(liang)數(shu)據(ju)查(zha)詢(xun),指(zhi)定(ding)時(shi)間(jian)格(ge)式(shi)查(zha)詢(xun)、任意時間段數據查詢等都有對應的組件。曆史數據的處理是實時數據庫的重要性能指標,紫金橋實時數據庫有著獨到的優勢。
|