紫金橋?qū)崟r數(shù)據(jù)庫軟件里預(yù)置了一些組件,分別實(shí)現(xiàn)不同的特定功能,在工程組態(tài)的時候,恰當(dāng)利用這些組件來實(shí)現(xiàn)某些功能,會達(dá)到事半功倍的效果。
紫金橋?qū)崟r數(shù)據(jù)庫軟件里預(yù)置的報警時間統(tǒng)計(jì)組件,能夠按照需求統(tǒng)計(jì)某些數(shù)據(jù)在某個時間段內(nèi)的報警時間,從而計(jì)算出數(shù)據(jù)點(diǎn)在該時間段內(nèi)正常運(yùn)行的合格率。
本案例是某生產(chǎn)信息系統(tǒng)中使用報警時間統(tǒng)計(jì)組件的部分,使用了組件所支持的部分函數(shù),通過腳本對組件進(jìn)行操作,至于組件的組態(tài)設(shè)置,可以去軟件幫助中查找,這里不詳述。
下面主要講解一下報警時間統(tǒng)計(jì)組件在本例中的使用。
功能實(shí)現(xiàn)過程是這樣的:首先,將要統(tǒng)計(jì)報警時間的位號,添加到組件中,然后按照要求的統(tǒng)計(jì)周期以及時間范圍進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)完成后,將統(tǒng)計(jì)結(jié)果取出做其他計(jì)算,組件的功能完成。
在窗口中建立報警統(tǒng)計(jì)組件,并將組件命名為Alarm1,同時需要使用一個報表進(jìn)行配合使用,新建一個自由報表命名為Fr1,該報表是用來存放位號名稱以及上下限值,可以手動進(jìn)行維護(hù)。案例中的Fr1表內(nèi)的數(shù)據(jù)都是從SQL Server數(shù)據(jù)庫讀取的。
在使用報警統(tǒng)計(jì)組件之前,要先保證報表Fr1里有需要的內(nèi)容,例如下圖,其中報警統(tǒng)計(jì)組件要使用的分別是‘位號、下限、上限’這三列。

下面就來說一下報警統(tǒng)計(jì)組件的使用,我們先看下面的腳本截圖,

我們來看框體中的腳本:
1、紅框部分,第一行是清空報警時間統(tǒng)計(jì)組件,如果不清空的話,下一次添加到組件中的位號會與之前的共存。接下來是循環(huán)語句,#Alarm1.AddTag這行是將報表Fr1的第1列第i行的位號添加到組件中,并且自指定報警上下限值分別是第3列和第4列的第i行數(shù)值,為了使報警組件中自指定的位號上下限值在組件執(zhí)行時有效,需要修改位號的量程上下限值分別大于報警上下限值,所以就有了#Alarm1.AddTag函數(shù)上面的兩行腳本。紅框中最后一行是為了使位號量程上下限值設(shè)置生效,這里不詳述。
2、藍(lán)框部分,在上面紅框部分的腳本中,將位號全部添加到報警時間組件以后,接下來就是組件使用函數(shù)#Alarm1.Start開始執(zhí)行統(tǒng)計(jì),,函數(shù)的各個參數(shù)的意義請參考幫助文件,這里86400是一天內(nèi)的秒數(shù),即本次統(tǒng)計(jì)的是一天內(nèi)的數(shù)據(jù)。第二行是起始時間的設(shè)定,即下一次統(tǒng)計(jì)的起始時間,在本例中也就是下一天的統(tǒng)計(jì)開始時間。
3、綠框部分,取出統(tǒng)計(jì)完成的數(shù)據(jù),供我們使用。循環(huán)內(nèi)第一行里#Alarm1.GetCellHi是取出高限報警的時間,#Alarm1.GetCellLow是取出低限報警的時間。整行的功能是將高限報警時間和低限報警時間相加,除以全天的時間,就是位號在該日內(nèi)的不合格率,再用1減去不合格率,便得到合格率的數(shù)值,然后賦值給Bind_TagValue(中間變量,綁定表使用),后面的一行是將數(shù)據(jù)插入到SQL Server數(shù)據(jù)庫中。
彩色框外面的腳本只是在本案例中用來判斷腳本的執(zhí)行時間,讀者可以借鑒使用,也可以完全忽視。
以上就是本案例中報警時間統(tǒng)計(jì)組件通過函數(shù)的動態(tài)使用,比較適合需要統(tǒng)計(jì)的位號較多的情況,如果需要統(tǒng)計(jì)的位號較少,可以直接在報警時間統(tǒng)計(jì)組件的設(shè)置界面進(jìn)行組態(tài),然后直接執(zhí)行Start函數(shù)即可。
讀者如果有些函數(shù)不十分清楚,可以查看紫金橋?qū)崟r數(shù)據(jù)庫的幫助文件。以后我們還會陸續(xù)推出其他組件的示例說明。
更多資訊,請登陸:www.realsoft.cc
|