在zai工gong業ye控kong製zhi中zhong,常chang常chang要yao從cong一yi些xie數shu據ju的de曆li史shi趨qu勢shi中zhong分fen析xi問wen題ti和he發fa現xian問wen題ti。紫zi金jin橋qiao實shi時shi數shu據ju庫ku支zhi持chi曆li史shi數shu據ju的de快kuai速su保bao存cun和he檢jian索suo,可ke以yi按an照zhao一yi定ding的de條tiao件jian把ba數shu據ju保bao存cun到dao曆li史shi庫ku中zhong,用yong戶hu需xu要yao時shi可ke隨sui時shi訪fang問wen。
曆(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 具有曆史插值功能。
duiyumouxietedingdeyingyong,xuyaoxiugailishishuju,zijinqiaoshishishujukumeiyoutigongxiangguanxiugailishishujudefangfa,dantongguoshangshudelishichazhigongneng,keyiwanchenglishishujuxiugaidemude。xiamiantongguoyigejiandandeshili,jieshaoxialishishujudexiugai。
在工程中新建一個窗口,添加如下組件:

為了能用腳本調用各組件的功能,將各組件命名為:
|
組件 |
名稱 |
|
取曆史組件 |
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、任意時間段數據查詢等都有對應的組件。曆史數據的處理是實時數據庫的重要性能指標,紫金橋實時數據庫有著獨到的優勢。