紫金橋實時數據庫軟件里預置了一些組件,分別實現不同的特定功能,在工程組態的時候,恰當利用這些組件來實現某些功能,會達到事半功倍的效果。
紫金橋實時數據庫軟件里預置的歷史查詢組件,能夠按照需求查找一段時間內的歷史數據,然后通過報表顯示出來或者供其他使用。
本示例是通過歷史查詢組件支持的函數,利用腳本對組件進行操作,關于組件支持的具體函數,可以去軟件幫助中查找,這里不詳述。
下面主要講解一下歷史查詢組件的具體使用。
功能是這樣的:首先,將要查詢歷史的位號,添加到組件中,然后設定要查詢歷史的起始時間和結束時間,再設定要查詢的相鄰歷史數據之間的時間間隔,執行查詢并把結果顯示到報表中,功能完成。
在窗口中添加歷史查詢組件,并將組件命名為His1,同時需要使用一個報表進行配合使用,新建一個自由報表命名為Tab1,該報表用來顯示查詢的結果。
下圖是運行后查詢數據的畫面:

下面就來說一下各部分的腳本,腳本一共3部分,分別是‘添加位號’、‘開始檢索’按鈕中的腳本,還有一部分是歷史查詢組件中的‘事件腳本’。
首先來看‘添加位號’按鈕中的腳本,如下圖:

因為本例中使用的點名是有規律的,所以使用一個循環腳本一次全添加到歷史查詢組件中,其中主要是使用了歷史查詢組件的函數AddTag(),讀者可以根據自己的實際情況使用該函數向組件中動態的添加要查詢的點。
接下來是‘開始檢索’按鈕的腳本,如下圖:

這里主要就是歷史查詢組件執行Start()函數,開始歷史檢索,但是由于函數參數需要,先計算出了指定時間范圍內要查找的歷史數據個數以及相鄰歷史的時間間隔。
最后一部分腳本是歷史查詢組件里的‘事件腳本’,雙擊組件,在彈出窗口單機‘事件腳本’按鈕即進入腳本編輯框,在‘檢索完成時’選項卡里面,就是組件檢索完成歷史數據后要執行的腳本,如下圖:

此部分前兩段分別是根據查詢到的歷史數據個數以及數據點的個數,來設置報表的行數和列數,最后一段的循環語句是把查詢到的數據添加到報表中,第一層循環是按行添加,循環內的第一行是利用歷史查詢組件的函數GetTimeText()取得該行歷史數據的時刻,第二層循環是按列添加,循環內的第一行使用GetTagName()函數取得每列的點名,添加到報表的表頭,第二行使用GetCell()取得每列在該行的歷史數據,然后添加到報表中。
以上就是本例中歷史查詢組件通過函數的使用,適合需要查詢的位號較多并且位號名有一定規律的情況,如果需要查詢的位號較少,可以直接在歷史查詢組件的組態界面直接添加,然后直接執行Start()函數即可。
另外,本例中為了方便觀察,設置了歷史查詢組件運行可見,實際上該組件默認在運行狀態是不顯示的,也沒有必要顯示,這一點可以在組件的組態界面中勾選或者取消‘運行時可見’即可。
讀者如果有些函數不十分清楚,可以查看紫金橋實時數據庫的幫助文件。以后我們還會陸續推出其他組件的示例說明。
|