首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
首頁 | 培訓(xùn)研討 | 公司簡介 | 聯(lián)系方式 | 公司動態(tài) | 產(chǎn)品 | 應(yīng)用實例 | 下載 | 文摘 | 誠聘 |
紫金橋軟件讀取歷史數(shù)據(jù)的方法總結(jié)

紫金橋軟件技術(shù)有限公司
收藏本文     查看收藏

摘要:本文簡述了紫金橋軟件讀取歷史數(shù)據(jù)的三種方式,重點說明了取批量歷史的不同操作方法以及各種方法之間的區(qū)別。

正文

紫金橋軟件自帶了過程數(shù)據(jù)庫,可以高效的保存相關(guān)數(shù)據(jù)點的歷史記錄,同時提供了豐富的方法讀取所需的歷史記錄。

關(guān)于保存歷史記錄

通過紫金橋組態(tài)軟件自身的過程數(shù)據(jù)庫,可以通過兩種方式自動保存數(shù)據(jù)點的歷史記錄,定時保存和變化率保存,定時保存適合保存變化不是很快,或者比較有規(guī)律的數(shù)據(jù)點,變化率保存的應(yīng)用范圍相對更廣,適合變化較快或者較慢的情形,這里要注意兩點內(nèi)容:

  • 對于定時保存的歷史記錄一般不做壓縮的,所以不建議對于較多的數(shù)據(jù)庫點設(shè)置為保存間隔較短的定時保存,否則歷史記錄的文件體積會增加相對較快;
  • 對于變化率保存的數(shù)據(jù),系統(tǒng)會自動壓縮保存,要注意的是其變化率是相對于該點的量程而言的,而不是相對于上次保存的歷史值。數(shù)據(jù)點的量程可以在“點組態(tài)”基本參數(shù)中修改;

個人覺得過程數(shù)據(jù)庫很適合保存現(xiàn)場連續(xù)的采集值,對于一些字符型的數(shù)據(jù),可能還需要借助關(guān)系數(shù)據(jù)庫來保留歷史值了。而關(guān)系數(shù)據(jù)庫在保存連續(xù)數(shù)值方面也遠(yuǎn)不如過程數(shù)據(jù)庫方便。關(guān)于紫金橋?qū)﹃P(guān)系數(shù)據(jù)庫的各種操作,筆者將在其它文檔中進(jìn)行說明,這里不再贅述。

歷史數(shù)據(jù)的讀取

紫金橋軟件提供了多種方式讀取歷史數(shù)據(jù),這里僅就一些常用的方法進(jìn)行說明。一般有三種方式讀取歷史記錄,分別是:歷史曲線、讀取單點歷史、讀取批量歷史。在說明各種方式之前先要解釋下“壞值”的概念,數(shù)據(jù)點只有在系統(tǒng)運行時才能保存歷史記錄,對于系統(tǒng)沒有運行時的歷史值,如果該時刻早于當(dāng)前時刻,紫金橋軟件通常會賦一個壞值,-9999。而對于未到時間的歷史值可以在“系統(tǒng)參數(shù)”進(jìn)行設(shè)置,如圖所示:

下面簡述下讀取歷史記錄的三種操作:

1 通過歷史曲線

通過歷史曲線或者趨勢分析曲線可以直接查詢相關(guān)點的歷史值,這種方法的優(yōu)點在于數(shù)據(jù)很直觀,便捷、曲線可以任意放大。

歷史曲線

趨勢分析:

歷史曲線和趨勢分析曲線的不同在于,歷史曲線可以通過“打散單元”的操作將該組件分解,自行根據(jù)需要重新組合;而趨勢分析組件功能更強,提供了歷史曲線沒有的統(tǒng)計數(shù)據(jù)、全屏顯示等功能,但是不支持分解操作,不能自行組合。

2 讀取單點歷史記錄

單獨采集某點某時刻的歷史值或某段時間的統(tǒng)計值一般通過腳本函數(shù)實現(xiàn):

l、讀取某時刻歷史值一般使用三種函數(shù):

GetHisData(Var,Year,Month,Day,Hour,Minute,Second,MilliSec);

GetHisData2(Var,StartTime, MilliSec);

GetHisDataEx(DataSource, VarName ,StartTime,MilliSecond);

GetHisDataGetHisData2前者適合讀取具體時刻的歷史值,后者通過一個時間值來獲取歷史記錄,該值是一個整數(shù),表示相對于1970年1月1日08:00時過去的秒數(shù),這個秒數(shù)在紫金橋軟件中非常常用。實際工程中,這個秒數(shù)可以通過函數(shù)LongTime ("2001/01/01 14:50:48")得到,該函數(shù)可以自動得到某時刻過去的秒數(shù)。秒數(shù)也可以通過一些組件得到,比如起始時間組件,如圖所示:

圖中有一個起始時間組件,其下是該組件的time屬性所對應(yīng)的相對于1970/1/1/08:00:00 過去的秒數(shù)。比如該組件被命名為EndTime,在腳本中通過#EndTime.time即可得到相應(yīng)的秒數(shù)。

2、讀取某段時間內(nèi)的統(tǒng)計值  可以通過函數(shù)GetStatisDataEx(DataSource,VarName, StartTime,TimeSpan, Flag,Time)或GetStatisData  (Var, Year, Month, Day, Hour, TimeSpan, Flag,Time)得到一段時間內(nèi)的最大值、最小值或者平均值。val = GetStatisDataEx("","FQ101.PV", LongTime("2007/09/04 14:30:00"), 2,0,strTime) 示例中Val變量可以得到FQ101.pv值在2007年9月4日14點30分起2個小時內(nèi)的平均值。這里要注意的是,GetStatisData GetStatisDataEx函數(shù)會自動過濾掉壞值。在使用統(tǒng)計函數(shù)時,要確保對應(yīng)的點在組態(tài)時選擇上統(tǒng)計設(shè)置,如圖所示:

此外還要注意的是,由于紫金橋系統(tǒng)是每小時自動統(tǒng)計下歷史記錄,對于剛保存的歷史記錄,比如1小時內(nèi)的歷史值,通過統(tǒng)計函數(shù)可能無法得到最新的統(tǒng)計值。如果需要得到即時的統(tǒng)計值,需要借助紫金橋軟件提供的SPC歷史組件進(jìn)行統(tǒng)計。關(guān)于該組件的一些操作可以參看紫金橋軟件相關(guān)幫助文檔。

3 讀取批量歷史

讀取批量歷史通常以報表的形式顯示出來。對于歷史報表,依據(jù)不同的標(biāo)準(zhǔn)有不同的分法,按照行數(shù)區(qū)分可以分為固定行列和不固定行數(shù),按顯示的類型可以分為統(tǒng)計和非統(tǒng)計歷史報表。所謂統(tǒng)計報表通常是對一些累加值的點進(jìn)行統(tǒng)計,比如最大值、最小值、或者平均值等,非統(tǒng)計報表就是直接查詢某時刻的歷史值。不同情況下具體實現(xiàn)的方法也各不同,這里僅就筆者熟悉的方法進(jìn)行簡述。

行數(shù)固定的非統(tǒng)計歷史報表

對于需要獲取某段時間內(nèi),固定時間間隔的歷史記錄,通常其行數(shù)是固定的,比如需要對一天內(nèi)的整點數(shù)值采樣,其行數(shù)是24,時間間隔一小時。這種情況下,使用自由報表的“取批量歷史”功能最為簡單。具體操作方式簡述如下:

首先選中自由報表中需要顯示歷史記錄的一列,然后點擊自由報表工具欄中右側(cè)的公式選擇按鈕,如圖所示:

點擊后選擇“取批量歷史”,如圖所示:

系統(tǒng)彈出對話框:

在“數(shù)據(jù)庫變量”中填寫所關(guān)聯(lián)的數(shù)據(jù)點,比如“A1.pv”,根據(jù)實際情況設(shè)定“采集個數(shù)”和“時間間隔”,“采集個數(shù)”不能填寫為變量。這里的“時間表達(dá)式”是指批量歷史中首個采集點的時間,可以是一個整型變量,其值是前文中提到的1970年1月1日08:00時過去的秒數(shù)。

優(yōu)點:通過取批量歷史的功能,可以輕松的獲取某點采集個數(shù)固定,時間間隔固定的歷史記錄。

缺點:無法實現(xiàn)采集時間不固定、采集歷史記錄個數(shù)不固定的要求,無法采集統(tǒng)計值。

小技巧:通常顯示歷史記錄的時候,往往需要在另一行顯示該記錄相對應(yīng)的時間,可以選擇一列,將該列的輸入輸出設(shè)置為“日期和時間”,然后將該列關(guān)聯(lián)和歷史值對應(yīng)的秒數(shù)即可。

行數(shù)不固定的非統(tǒng)計報表

有時需要用戶自行設(shè)置歷史記錄查詢的開始時間和結(jié)束時間,查詢的歷史記錄的間隔時間,這時往往需要借助歷史數(shù)據(jù)對象來獲取記錄。

在紫金橋的圖庫中“歷史數(shù)據(jù)”選擇“歷史數(shù)據(jù)對象”,如圖所示:

將其拖拽置窗口,系統(tǒng)自動增加一歷史數(shù)據(jù)對象,如圖所示:

雙擊該對象,可以在屬性對話框中進(jìn)行參數(shù)設(shè)置,如圖所示:

該組件通常運行時是隱藏的?梢栽趯傩栽O(shè)置對話框中增加所需查詢的歷史點(可以同時查詢多個)。通過點擊“事件腳本”,可以在此編寫所需的腳本語句,如圖所示:

通常是通過按鈕等事件調(diào)用歷史數(shù)據(jù)對象的Start(BeginTime, Cycle, Count)函數(shù),通過該函數(shù)可以設(shè)置查詢的開始時間,查詢的時間周期和查詢的歷史個數(shù),并進(jìn)行查詢。當(dāng)查詢結(jié)束后,會執(zhí)行“檢索完成時”腳本。一般在“檢索完成時”的腳本中通過一個循環(huán)語句,把查詢到的結(jié)果更新到自由報表中。例如腳本:

num=#his.GetColCount();//得到查詢的行數(shù)

for k=1 to num+1 step 1

#report.settxt(1,k+1,#his.GetTimeText(k-1,0));//得到時間

#report.settxt(2,k+1,#his.GetCellText(0,k-1));//得到變量1的歷史值

#report.settxt(3,k+1,#his.GetCellText(1,k-1));//得到變量2的歷史值

Next

該腳本首先獲得歷史數(shù)據(jù)對象查詢的數(shù)據(jù)行數(shù),然后逐行賦值給自由報表中指定的單元格。關(guān)于該組件的更詳細(xì)操作可以參看紫金橋軟件的說明書。

優(yōu)點:可以方便的采集行數(shù)固定或不固定的歷史值。

統(tǒng)計報表

對于有些報表,需要統(tǒng)計一些歷史值,比如一段時間的最大值、最小值、平均值或者某段時間內(nèi),歷史值的最大值和最小值的差值(比如產(chǎn)量)。這類報表可以通過SPC控件或者歷史摘要控件進(jìn)行讀取統(tǒng)計值,然后再寫入自由報表中,也可以直接使用統(tǒng)計函數(shù)獲取統(tǒng)計值。關(guān)于SPC控件和歷史摘要控件的操作方法和上文中提到了歷史數(shù)據(jù)對象比較類似,具體內(nèi)容和相關(guān)函數(shù)可以參看紫金橋軟件說明書。其中SPC控件可以從任意時段的歷史數(shù)據(jù)中進(jìn)行抽樣統(tǒng)計,進(jìn)行SPC統(tǒng)計的點是否選擇了“是否統(tǒng)計”都不影響SPC分析;而歷史摘要控件選擇的是該點的統(tǒng)計值,進(jìn)行歷史摘要的點必須選擇“統(tǒng)計”,而統(tǒng)計往往是以小時為單位的,所以相對于SPC控件,摘要控件統(tǒng)計的結(jié)果更為準(zhǔn)確,但是時間跨度需要大于一小時。

這里要說明的是,對于一些累加的值而言,比如產(chǎn)量等,有時需要得到一段時間內(nèi)的差值,有些用戶往往會用結(jié)束時刻的歷史值減去開始時刻的歷史值,這種做法是有隱患的,因為開始時刻或者結(jié)束時刻系統(tǒng)可能處于未運行狀態(tài),這時,歷史值會是壞值-9999。所以建議的做法是選取這段時間內(nèi)的最大統(tǒng)計值減去這段時間內(nèi)的最小統(tǒng)計值(系統(tǒng)會自動過濾壞值),不過獲取統(tǒng)計值的速度會比獲取歷史值的速度稍慢一點,如果該段時間跨度很大,可以適當(dāng)縮小統(tǒng)計值的時間范圍。

其他歷史報表

有時可能需要統(tǒng)計一些離散的歷史值,比如在檢測行業(yè),每次測量的時間間隔可能不固定,測量次數(shù)可能也不確定,這時想查詢歷史檢測記錄,使用前面提到的方法都難以實現(xiàn)。這里推薦兩種做法:

  1. 設(shè)置一個標(biāo)記點,該標(biāo)記點使用變化率保存歷史記錄,每測量結(jié)束后,都改變一次標(biāo)記點的值,其他測量值同樣保持歷史記錄,查詢時使用“取全部歷史數(shù)據(jù)對象”組件(在圖庫中“歷史數(shù)據(jù)”中調(diào)用),如圖所示:

通過該組件可以查詢這個標(biāo)記點指定范圍內(nèi)的所有歷史記錄,同時可以查詢到該時刻時其他測量值的歷史值。比如,工程中有A1和A2兩個位號,A1是標(biāo)記點,現(xiàn)在希望查詢A1的在當(dāng)天的所有歷史數(shù)據(jù)。比如查到的結(jié)果是12:23:18.102時刻有一個歷史數(shù)據(jù),18:43:25.358時刻有一個歷史數(shù)據(jù)。這時希望同時查詢A2在12:23:18.102時刻和18:43:25.358時刻的歷史數(shù)據(jù)。進(jìn)入“取全部歷史數(shù)據(jù)”對象的報表設(shè)置界面:

可以看到,報表的前3列分別是時間、毫秒和查詢的位號的數(shù)據(jù),可以在后面增加一列,比如A2.PV,見上圖。 并在下面輸入如下的腳本=GetHisData2(A2.PV, Val(1,$R), Val(2,$R)) 。這段腳本的意義是取A2.PV的歷史數(shù)據(jù),其中時間采用左側(cè)第一列的時間,毫秒數(shù)采用左側(cè)第二列的時間。 當(dāng)組件查詢到A1.PV的歷史數(shù)據(jù)的時候,會自動地增加報表的行數(shù)來存放相應(yīng)的數(shù)據(jù)。同時也會自動地復(fù)制上面輸入的腳本,這樣后面的列就能顯示A2.PV的相應(yīng)時刻的歷史數(shù)據(jù)了。

   優(yōu)點:無需借助關(guān)系數(shù)據(jù)庫,即可查詢離散的無規(guī)律變化的歷史記錄;

   缺點:受過程數(shù)據(jù)庫自身的局限,無法保存字符型歷史記錄。

2、每次測量結(jié)束后,將測量數(shù)據(jù)保存到關(guān)系數(shù)據(jù)庫中,然后通過自由報表查詢關(guān)系數(shù)據(jù)庫中的歷史記錄。

優(yōu)點:可以方便的保存字符型或非字符型的離散歷史記錄;

缺點:需要關(guān)系庫的支持;

   本文簡述了讀取紫金橋軟件歷史數(shù)據(jù)庫的三種方式:曲線、函數(shù)、報表,并詳細(xì)介紹了各種情況下使用報表讀取歷史數(shù)據(jù)的不同操作方法,當(dāng)然具體操作中,還有更多其他的方法可以選擇。希望以上介紹能對各位操作紫金橋軟件有所幫助,也希望起到拋磚引玉的作用,歡迎提出更好操作方法,彼此討論提高。


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 紫金橋軟件技術(shù)有限公司
聯(lián) 系 人: 李磊
電  話: 0459-8151391-808
傳  真: 0459-8151391-804
地  址: 大慶市高新區(qū)服務(wù)外包產(chǎn)業(yè)園C-1座817室
郵  編: 163316
主  頁:
 
紫金橋軟件相關(guān)文摘:
跨平臺實時數(shù)據(jù)庫變量引用導(dǎo)航功能介紹
跨平臺實時數(shù)據(jù)庫 如何利用MODBUS仿真軟件測試MODBUS驅(qū)動
紫金橋跨平臺實時數(shù)據(jù)庫如何實現(xiàn)多屏顯示
紫金橋跨平臺軟實時數(shù)據(jù)庫Web服務(wù)器和數(shù)據(jù)服務(wù)器分離訪問的配置
紫金橋跨平臺軟件遠(yuǎn)程采集RealInfo6.5
使用虛擬機做的工程實現(xiàn)跨網(wǎng)Web訪問
紫金橋軟件Microsoft Office Access 2003的ODBC數(shù)據(jù)源配置
紫金橋軟件閘門整體自動化監(jiān)控系統(tǒng)
通過紫金橋軟件來提高畫面組態(tài)速度
組態(tài)軟件在配套設(shè)備中的應(yīng)用
紫金橋的關(guān)系庫同步工具簡介
紫金橋組態(tài)軟件與歐姆龍PLC以太網(wǎng)通信(FINS命令)——CPU型號-CJ2M-CPU33
更多紫金橋軟件文摘...
通過中華工控網(wǎng)在線留言紫金橋軟件技術(shù)有限公司:
用戶名: 密碼: 免費注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)
 
中華工控網(wǎng) GKong.com制作發(fā)布 廣告聯(lián)系