摘要:為了解決項目中,增強(qiáng)報警組件顯示報警信息時,可以同時更加方便的關(guān)注一下報警點(diǎn)的在報警時一段時間內(nèi)的數(shù)據(jù)變化走勢的問題,本文提供了較為簡單的方法來達(dá)到該目的。
一、引言
在項目中,經(jīng)常會用到增強(qiáng)報警組件來顯示報警信息,但是往往發(fā)生報警后或者在查看歷時報警時,還想關(guān)注一下報警點(diǎn)的在報警時一段時間內(nèi)的數(shù)據(jù)變化走勢,通常的做法為人為的記錄該報警點(diǎn)的位號,并到趨勢畫面中進(jìn)行查詢,這樣操作起來比較麻煩,現(xiàn)在可以通過較為簡單的方法來達(dá)到該目的。
二、功能實現(xiàn)
首先,創(chuàng)建兩個窗口,一個命名為“報警顯示”,在窗口屬性中將“打開其他窗口時自動關(guān)閉”的勾去掉,在窗口中添加“增強(qiáng)型報警組件”,命名為_Alarm;另一個串口命名為“趨勢分析”,在窗口屬性中將窗口類型設(shè)置為“彈出式窗口”,在窗口中添加“趨勢分析”組件,命名為_Curview,定義一個整形的窗口變量nFlag。其次,創(chuàng)建一個間接變量“SendMessage”做數(shù)組用,用來在兩個窗口之間傳遞報警點(diǎn)的信息。
1.報警顯示窗口設(shè)置
在“報警顯示”窗口中,雙擊“增強(qiáng)型報警組件”,在彈出的“報警屬性”對話框中的“報警設(shè)置”標(biāo)題頁點(diǎn)擊“設(shè)置報表”按鈕,彈出“自由報表設(shè)置”對話框。

在“單元格觸發(fā)動作設(shè)置”中選擇“左鍵雙擊”動作,輸入如下腳本:
SendMessage.Clear();
SendMessage.Add(#_Alarm.GetAlrmTxt(2,$R));
SendMessage.Add(#_Alarm.GetAlrmTxt(7,$R)+" "+StrLeft(#_Alarm.GetAlrmTxt(7,$R),8));
Display("趨勢分析");
該段腳本的含義為將報警點(diǎn)的點(diǎn)名與報警時間加入到數(shù)組SendMessage中。
2.趨勢分析窗口設(shè)置
在“趨勢分析”窗口中,在窗口動作“進(jìn)入窗口”中編寫如下腳本:
string _PenName;
string _PenEUHi;
string _PenEULo;
string _PenHi;
string _PenLo;
_PenName = SendMessage[0]+".PV";
_PenHi = SendMessage[0]+".HI";
_PenHi = SendMessage[0]+".LO";
#本地.RegTag(_PenName);
#本地.RegTag(_PenHi);
#本地.RegTag(_PenLo);
#_Curview.SetPen(0,_PenName);
#_Curview.SetPen(1,_PenHi);
#_Curview.SetPen(2,_PenLo);
nFlag = 1;
該短腳本中要注意數(shù)據(jù)庫函數(shù)RegTag()的使用,由于數(shù)組SendMessage傳遞來的是不帶參數(shù)的點(diǎn)位號,所以要通過_PenName、_PenHi、_PenHi拼接成點(diǎn)名,但拼接成的點(diǎn)名數(shù)據(jù)庫并不承認(rèn),所以要用該函數(shù)注冊之后才可以使用。之后要向“趨勢分析”組件中添加三支畫筆,分別為實時值、報警上限、報警下線。其中,nFlag為標(biāo)志位,用于判斷曲線顯示的起始時間,在周期腳本中調(diào)用。
在“窗口運(yùn)行時中期執(zhí)行”中編寫如下腳本:
if #_Curview.GetTimeBegin(0) <> LongTime(SendMessage[1]) && #_Curview.GetPenDesc(0) <> "" && nFlag == 1 then
#_Curview.SetTimeBegin(0,LongTime(SendMessage[1]));
nFlag = 0;
endif
該短腳本的含義為將曲線的起始時間設(shè)置成報警點(diǎn)的報警時間。
這樣,在系統(tǒng)運(yùn)行時,在“報警顯示”窗口雙擊某一條報警信息,則會彈出該報警點(diǎn)在觸發(fā)報警之后的一段時間內(nèi)的趨勢圖,方便用戶對該報警點(diǎn)的走勢進(jìn)行分析。

三、結(jié)束語
通過該方式可以實現(xiàn)報警信息與趨勢分析的快速切換,提供了工作效率同時,也給廣大用戶帶來了方便。
|