紫金橋組態(tài)軟件系統(tǒng)自帶的報(bào)警功能的處理邏輯是一次達(dá)到報(bào)警條件后,如果現(xiàn)場(chǎng)測(cè)量值一直滿足當(dāng)前的報(bào)警條件,那么只會(huì)提示最開始的第一條報(bào)警記錄。但是如果需要在發(fā)生報(bào)警后,當(dāng)前現(xiàn)場(chǎng)測(cè)量值繼續(xù)滿足報(bào)警條件還要給出報(bào)警提示時(shí),這樣就需要進(jìn)行二次開發(fā),下面的示例就給出了一個(gè)針對(duì)這種需求的解決方法。
用戶具體需求是:當(dāng)現(xiàn)場(chǎng)測(cè)量值滿足條件(這里假定是大于3.9或者小于3.5)觸發(fā)報(bào)警之后,立刻報(bào)警。下一條數(shù)據(jù)也滿足條件時(shí)也要觸發(fā)報(bào)警(不能不報(bào))。具體是,如果收到的數(shù)據(jù)一直不在3.5~3.9的范圍內(nèi)且值不變化則60秒報(bào)一次警,如果收到的數(shù)據(jù)一直不在3.5~3.9的范圍內(nèi),且值是變化的同步產(chǎn)生報(bào)警。下面以偏差報(bào)警為例進(jìn)行說明。
下圖是功能實(shí)現(xiàn)的流程圖:
系統(tǒng)流程圖
具體實(shí)現(xiàn):
一、畫面圖元組態(tài)
1、在工程目錄下新建了一個(gè)Access數(shù)據(jù)庫(kù)并新建了一個(gè)數(shù)據(jù)表ALM1如下圖:
2、在點(diǎn)組態(tài)里新建模擬點(diǎn)TEST、TEST1、TEST2和報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)RP如下圖:
3、新建了中間變量RECY。(下文會(huì)交代它的作用)
4、組態(tài)報(bào)表關(guān)系源點(diǎn)連接字符串,具體就是點(diǎn)擊圖中連接字符串文本框后面的按鈕進(jìn)行配置如下圖:
最終生成的字符串為:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+GetAppPath()+"\Sql\AlmDB.mdb;User Id=admin;Password=;"
5、在紫金橋開發(fā)環(huán)境里新建一個(gè)窗口Draw1、一個(gè)自由報(bào)表ALM、一個(gè)文本對(duì)象、一個(gè)按鈕如下圖:
6、關(guān)聯(lián)文本對(duì)象的動(dòng)畫連接——TEST.PV的模擬輸入輸出,用于手動(dòng)改變TEST.PV的值,模擬現(xiàn)場(chǎng)情況。
7、關(guān)聯(lián)按鈕的動(dòng)畫連接鼠標(biāo)腳本:#ALM.SaveExcel("",1,1);后邊要通過查看保存的Excel文件來驗(yàn)證系統(tǒng)是否可以實(shí)現(xiàn)預(yù)期功能。
二、系統(tǒng)控制邏輯組態(tài)
1、窗口腳本周期腳本組態(tài),這部分腳本主要是要實(shí)現(xiàn)系統(tǒng)流程圖中的從關(guān)系數(shù)據(jù)表讀入數(shù)據(jù)并顯示在報(bào)表控件上。如下圖:
2、在自由報(bào)表ALM/自由報(bào)表設(shè)置/關(guān)系庫(kù)連接設(shè)置里,組態(tài)了報(bào)表關(guān)系庫(kù)源點(diǎn),如下圖:
3、在應(yīng)答后觸發(fā)的腳本/SQL正確返回腳本中,實(shí)現(xiàn)判斷當(dāng)前TEST.PV是否滿足偏差報(bào)警條件,如果滿足就把變量RECY置1否則置0,這里RECY是一個(gè)中間變量起到觸發(fā)向關(guān)系庫(kù)插入報(bào)警記錄的開關(guān)作用。腳本如下圖:
4、畫面/腳本/條件腳本組態(tài),這里我們新建了一個(gè)條件腳本InsertRecord如下圖,并進(jìn)行腳本控制邏輯組態(tài)如下圖:
通過這個(gè)條件腳本實(shí)現(xiàn)了向關(guān)系庫(kù)插入報(bào)警記錄的邏輯。
三、運(yùn)行工程,測(cè)試系統(tǒng)實(shí)際效果
1、手動(dòng)改變TEST.PV=9.7滿足偏差報(bào)警條件大于3.9或者小于3.5保持一段時(shí)間如下圖:
2、手動(dòng)改變TEST.PV=3.6不滿足偏差報(bào)警條件(大于3.9或者小于3.5)
3、手動(dòng)改變TEST.PV=1滿足偏差報(bào)警條件(大于3.9或者小于3.5)保持一段時(shí)間
4、點(diǎn)擊“導(dǎo)出”按鈕保存自由報(bào)表的內(nèi)容為excel格式文件。
5、打開Excel表格如下圖:
6、分析表格記錄
通過對(duì)表格的分析我們可以得出清晰的結(jié)論:
(1)如果當(dāng)前現(xiàn)場(chǎng)測(cè)量值滿足報(bào)警條件且和前一個(gè)報(bào)警值不一致則也會(huì)產(chǎn)生報(bào)警,即插入關(guān)系數(shù)據(jù)表并在自由報(bào)表上顯示。如表格中的第一條記錄TEST.PV=0和第二條記錄TEST.PV=9.7。
(2)如果當(dāng)前現(xiàn)場(chǎng)測(cè)量值滿足報(bào)警條件并且不變則系統(tǒng)會(huì)向關(guān)系數(shù)據(jù)表中60秒插一條記錄并顯示在自由報(bào)表控件上例如當(dāng)TEST.PV=9.7時(shí)。即符合用戶關(guān)于“如果收到的數(shù)據(jù)一直不在3.5~3.9的范圍內(nèi)則60秒報(bào)一次警”的需求。
(3)如果當(dāng)前報(bào)警值不符合報(bào)警條件就不會(huì)產(chǎn)生報(bào)警例如:令TEST.PV=3.6在導(dǎo)出的表格里沒有記錄。即系統(tǒng)只會(huì)記錄報(bào)警記錄。
(4)當(dāng)現(xiàn)場(chǎng)測(cè)量值由正常值變成符合報(bào)警條件的值時(shí),立刻就會(huì)產(chǎn)生一條報(bào)警例如:TEST.PV=3.6變成TEST.PV=1就會(huì)產(chǎn)生報(bào)警。Excel表格中第14條記錄就當(dāng)
TEST.PV=3.6變成TEST.PV=1時(shí)產(chǎn)生的報(bào)警。
綜上,經(jīng)測(cè)試系統(tǒng)達(dá)到了用戶的需求并能正確穩(wěn)定運(yùn)行。
有任何關(guān)于組態(tài)軟件的技術(shù)問題或需要更多的技術(shù)資料,可以在微信(微信號(hào):Realinfo)留下聯(lián)系方式或者到http://www.realinfo.cc/交流論壇里提出,我們將及時(shí)為您解答。