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