摘要:本文對運行時組態(tài)的概念、優(yōu)點、實現(xiàn)方法、發(fā)展趨勢做了闡述。
關(guān)鍵詞:組態(tài)軟件、運行時組態(tài)、在線組態(tài)、IO設(shè)備。
一.前言
運行時組態(tài)是組態(tài)軟件新近提出的新的概念。運行時組態(tài)是在運行環(huán)境下對已有工程進行修改,添加新的功能。它不同于在線組態(tài),在線組態(tài)是在工程運行的同時,進入組態(tài)環(huán)境,在組態(tài)環(huán)境中對工程進行修改。而運行時組態(tài)是在運行環(huán)境中直接修改工程。運行時組態(tài)改變了已往必須進入復(fù)雜的組態(tài)環(huán)境修改工程應(yīng)用的歷史,給組態(tài)軟件帶來了新的活力,并預(yù)示著組態(tài)軟件新的發(fā)展方向。
為了說明什么是運行時組態(tài)讓我們先打個比方。我們可以將工程組態(tài)比作是建造房屋。房屋在建造前先設(shè)計好圖紙,然后按照圖紙進行施工,工程驗收后房屋的大小、結(jié)構(gòu)就固定下來了。交付住戶使用后,住戶自己是不能輕易改變房屋的結(jié)構(gòu)(除非他本人就是建筑師且有合法手續(xù)),更不能擴展房屋的大小。如果對房屋進行改造,必須請建筑師設(shè)計,由建筑工人來施工。
傳統(tǒng)的組態(tài)與之類似,工程組態(tài)好并交付用戶使用后,工程中包括的功能就固定不變了。如果要擴充、修改工程的功能,就必須請熟悉該工程的組態(tài)工程師進入組態(tài)環(huán)境進行修改。
如果房屋建好后,用戶能夠根據(jù)自己的需要方便的改變房間的內(nèi)部結(jié)構(gòu),或者擴大房屋的空間,那將是多么愜意的事。假如建造師將房間的墻壁做成可移動、可拉伸的,并且預(yù)留了制作墻壁、門窗等構(gòu)造房屋所需的機器,你就自己就可以將平房變成樓房,將樓房加高。當然建筑師很難為你制作出這樣的設(shè)備,但是組態(tài)軟件卻可以做到這些。
組態(tài)工程師可以在構(gòu)建工程后,有預(yù)見的設(shè)計出該工程的擴展工具。擴展工具用來生成擴展工程時所需的畫面、畫面中的構(gòu)件、連接的硬件設(shè)備、新的測點等。擴展工具完全是跟該工程或該應(yīng)用領(lǐng)域相關(guān),工具一般只包含針對該應(yīng)用的有限的幾種部件,但是卻能夠滿足該工程以后擴展。因為讓技術(shù)人員(非組態(tài)工程師)掌握這些工具比掌握包羅萬象的開發(fā)環(huán)境要容易得多,因此用戶自己稍加指導(dǎo)就很容易完成工程的后期維護工作了。另外由于擴展工具只提供有限的功能,讓用戶犯錯誤的機會也就小多了。
二.運行時組態(tài)的優(yōu)點
* 縮短工期。對于一具體工程項目,如果能將項目中用到的模式歸納出來,做成模板(該模板可以通過前面提到的擴展工具運行時生成),那么我們無須等到整個工程做完就可以將其投入運行了。即只要工程中需要的制作工具完成后,你就可以讓最終用戶在運行時自己增加功能了。讓用戶在運行環(huán)境中修改和完善,直至整個工程完成。該工作模式充分發(fā)揮了組態(tài)工程師和技術(shù)工人自身的優(yōu)勢,快速完成工程項目。因為組態(tài)工程師對組態(tài)軟件熟悉,而技術(shù)工人對其應(yīng)用熟悉,讓他們分工做自己熟悉的事情,項目進度當然就快了。
* 解決了設(shè)備、畫面不確定問題。有些工程本來就存在這樣的需求。如在煤礦安全監(jiān)測中,作業(yè)現(xiàn)場具有流動性,其監(jiān)測的設(shè)備是經(jīng)常變化的。這就要求組態(tài)軟件中的測點和監(jiān)視畫面根據(jù)情況不斷調(diào)整。我們不可能用常規(guī)的辦法將各種情況事先窮舉出來,也不可能每次改變都要求現(xiàn)場的技術(shù)人員進入復(fù)雜的開發(fā)環(huán)境進行修改。而現(xiàn)場應(yīng)用模式比較穩(wěn)定,這樣我們就易于建造其運行時擴展工具。運行時組態(tài)對此是非常適用的。
* 動態(tài)生成、精簡畫面。已往動態(tài)場景的實現(xiàn)需要在組態(tài)環(huán)境中必須一一羅列,然后在畫面元素中加入隱藏、顯現(xiàn)動畫,制作維護非常繁瑣。在運行時這些元素不管用到與否都要為其分配空間,造成一定浪費。動態(tài)生成技術(shù)可以在需要時創(chuàng)建,不但使畫面簡化,同時也減小了系統(tǒng)開銷。
* 精簡組態(tài)環(huán)境。動態(tài)生成點、畫面所使用的構(gòu)件都是與當前應(yīng)用相關(guān)的,無關(guān)的構(gòu)件不會出現(xiàn)在運行時的“組態(tài)”環(huán)境中。運行時的“組態(tài)”是為具體應(yīng)用量身制作的。相對于開發(fā)環(huán)境中的組態(tài)要單一得多,工廠的技術(shù)人員也很容易掌握。這即保證了最終應(yīng)用程序的可擴展性,又保證了運行“組態(tài)”的簡單性、方便性。
* 維護方便。傳統(tǒng)意義的組態(tài)是在工程組態(tài)完成后,應(yīng)用程序的功能已經(jīng)固化好了。如果需要修改或增加新功能,還必須進入開發(fā)環(huán)境重新配置。這一般需要精通開發(fā)環(huán)境,并且熟悉該工程的工程師來完成。如果工程不是本單位完成的,還要涉及到升級改造,甚至另立項目的費用。動態(tài)生成可以保證系統(tǒng)有一定程度的擴展性,并且可以由工廠的一般技術(shù)人員來完成。
* 利于組態(tài)軟件向行業(yè)化發(fā)展。行業(yè)工程師可以針對自己的行業(yè)需求,配置運行時所需構(gòu)件,讓普通技術(shù)人員使用,這就形成了三級應(yīng)用模式。軟件工程師集中精力開發(fā)靈活的手段,行業(yè)工程師致力于行業(yè)構(gòu)件的構(gòu)建,最終技術(shù)人員實現(xiàn)自己的應(yīng)用邏輯。三級應(yīng)用模式將大大加速組態(tài)軟件行業(yè)化進程。
三.安全性問題。
如果在運行時可以隨便增加、修改、刪除工程中的畫面、畫面中的元素、數(shù)據(jù)庫中的點。這豈不是很危險嗎?是的,確實很危險。如果沒有保護措施,運行時生成就會帶來很多的麻煩。我們可以通過以下兩項安全措施來保護運行時的工程。
1.系統(tǒng)保護措施:
* 只有具有特定權(quán)限的用戶才能進行運行時組態(tài)。
* 只有畫面的創(chuàng)建者可以修改畫面元素,其他用戶無權(quán)修改。
* 特權(quán)用戶可以在工程完善后,禁止運行組態(tài)功能。
2.設(shè)計時保護
由于運行時的工具是由組態(tài)工程師生成的,因此運行時組態(tài)的自由度完全由組態(tài)工程師掌握。這就要求組態(tài)工程師對運行時提供的手段要加以限制,不要提供過多的、不必要的靈活性,同時對修改對象提供必要的保護措施。例如提供了運行時組態(tài)點的工具,就有必要對已有的點進行保護,同時對用戶添加的點的數(shù)量要進行限制。同樣對于畫面修改也是如此,不需要運行時修改的畫面就不要設(shè)置“運行時編輯”權(quán)限。
總之,組態(tài)人員既要給用戶提供擴展功能的手段,又要對其加以足夠的限制,以保證系統(tǒng)安全運行。
四.運行時組態(tài)的實現(xiàn)
目前,無論是國內(nèi)還是國外組態(tài)軟件對運行時組態(tài)支持都很少,尤其是運行時添加設(shè)備、添加變量等各家組態(tài)軟件基本沒有提供任何支持。對于支持VBA腳本的組態(tài)軟件,雖然可通過編寫程序?qū)崿F(xiàn)畫面的動態(tài)生成,但是這畢竟是非可視化的手段。紫金橋監(jiān)控組態(tài)軟件在這方面做了初步嘗試。下面以紫金橋監(jiān)控組態(tài)軟件為例說明運行時組態(tài)的實現(xiàn)方法。
運行時組態(tài)包括運行時數(shù)據(jù)庫組態(tài)和運行時圖形組態(tài)兩部分,下面分別說明:
1.數(shù)據(jù)庫組態(tài)
運行時數(shù)據(jù)庫組態(tài)包括:對下列內(nèi)容動態(tài)增加、刪除和修改:
* I/O設(shè)備。
* 數(shù)據(jù)庫點。
* I/O連接項,網(wǎng)絡(luò)連接。
* 歷史保存項。
界面中腳本支持以上操作,并且修改完上述內(nèi)容后數(shù)據(jù)庫不需要重新啟動,馬上就能生效,并且不會影響已有數(shù)據(jù)庫點的正常運行。
一般的應(yīng)用中只會涉及到有限的幾種設(shè)備類型和幾種點類型。對于每種設(shè)備或點類型我們要在畫面中建立相應(yīng)的窗口,該窗口用于對I/O設(shè)備或點進行維護。下面是一簡單的點定義窗口:
運行時點組態(tài)畫面示例
2.畫面組態(tài)
運行時加入圖形對象包括腳本創(chuàng)建對象和運行中手工填加圖形對象兩種方式,下面分別介紹。
2.1腳本動態(tài)生成圖形的步驟
o 定義圖形對象樣板。
o 通過下列腳本替換已有對象、增加新對象、替換對象中引用的變量。常用的腳本函數(shù)如下:
* 調(diào)用RepObj函數(shù)替換對象。
* 調(diào)用AddObj函數(shù)增加新對象。
* 調(diào)用RepVar函數(shù)替換變量。
* 調(diào)用DelObj函數(shù)刪除對象。
* 在窗口外部可以通過調(diào)用RepVarWin對選定對象進行變量替換。
o 將修改完的畫面保存到主服務(wù)器,其他客戶端的畫面將自動更新,這一步不是必須的,如果不需要保存到服務(wù)器,可以忽略此步。
o 運行時切換到“編輯”模式,這時可以手動加入、修改、刪除調(diào)整樣板對象。并可以對圖元對象中引用的變量進行替換。
2.2運行時手工添加圖形對象
在運行時手工添加圖形對象相對更為靈活,其操作基本步驟如下:
* 在窗口參數(shù)中選中“允許運行編輯”復(fù)選框。若啟動了安全管理,那么還要指定具有“運行時編輯畫面”權(quán)限帳戶,只有該賬戶能夠進行動態(tài)生成對象。
* 制作工具畫面。在該畫面中添加運行時需要的工具,每個工具要打成子圖、單元或圖形模板,并將其置于拖拽框?qū)ο笾隆?
* 通過導(dǎo)航樹中的“畫面”選項卡中的“操作面板”添加工具畫面。也可以沒有該步驟。
* 在運行時,通過拖拽工具畫面中的對象,增加圖形對象。
* 保存修改,將修改內(nèi)容傳送到服務(wù)器端(此步驟不是必須的)。
運行時手工添加的圖形對象,在組態(tài)時要預(yù)先繪制好,并加入到工具畫面中。運行時通過拖拽方式將其繪制到相應(yīng)的畫面,然后修改其關(guān)聯(lián)變量等操作,最后保存到服務(wù)器,實現(xiàn)動態(tài)添加圖形對象的操作。
運行時生成畫面示例
五.發(fā)展方向
組態(tài)軟件行一般稱為通用組態(tài)軟件?!巴ㄓ谩币辉~表示它可以適合各種應(yīng)用領(lǐng)域。不同的應(yīng)用領(lǐng)域雖然存在許多共性的東西,但是行業(yè)的差異是客觀存在的。差異表現(xiàn)在畫面的組織形式,組成部件,構(gòu)建邏輯。如果讓組態(tài)軟件能夠包羅萬象來適應(yīng)各行各業(yè),那么呈現(xiàn)給用戶的軟件將過于復(fù)雜,最終會使得組態(tài)軟件本身的友好性太差,失去其存在的意義。如前所述,運行時動態(tài)生成的元素是在組態(tài)環(huán)境下生成的。行業(yè)工程師可以在組態(tài)環(huán)境下構(gòu)建其應(yīng)用領(lǐng)域所需模件,然后讓專業(yè)技術(shù)人員運用自己熟知的構(gòu)件在運行時搭建自己的應(yīng)用。這樣就使組態(tài)軟件形成三級應(yīng)用模式:軟件工程師-行業(yè)工程師-專業(yè)技術(shù)人員。軟件工程師注重的是給行業(yè)工程師提供靈活的手段,行業(yè)工程師構(gòu)件行業(yè)模件,專業(yè)技術(shù)人員構(gòu)件最終的應(yīng)用。這才會使組態(tài)軟件深入到行業(yè),這也正式組態(tài)軟件未來發(fā)展之道。