張全貴,李 鑫,王 普
(1.遼寧工程技術大學 電子與信息工程學院,遼寧 葫蘆島125105;2.北京工業(yè)大學 電子信息與控制工程學院,北京100124)
組態(tài)軟件作為數(shù)據(jù)采集和過程控制的專用軟件,使用靈活的組態(tài)方式為自動化軟件工程師提供快速構建監(jiān)控監(jiān)測軟件的工具。用戶使用組態(tài)軟件以 “搭積木”的方式來完成自己所需的自動化監(jiān)控軟件的功能,一般不需要編程或者只需要簡單的腳本編程[1]。使用組態(tài)軟件進行開發(fā)的過程中,大部分時間是對組件進行配置即組態(tài)的過程。由于其簡便性和靈活性,組態(tài)軟件在多個領域中得到了廣泛應用。但是,隨著工業(yè)自動化水平的不斷提高,人們對自動化監(jiān)控軟件的要求也越來越高,尤其是對用戶界面和工業(yè)現(xiàn)場仿真度的更高要求。傳統(tǒng)的二維用戶界面已經(jīng)不能滿足人們對自動化監(jiān)控軟件的需求,因為其很難直觀的地反映工業(yè)現(xiàn)場設備運行情況及生產(chǎn)過程,仿真度低。隨著虛擬現(xiàn)實技術和三維圖形學技術在各個領域的廣泛應用,一些研究人員開始進行三維監(jiān)控軟件的研究與開發(fā),用三維監(jiān)控用戶界面替代傳統(tǒng)二維用戶界面,如文獻 [2-4]。開發(fā)三維用戶界面監(jiān)控軟件的難度要比二維用戶界面監(jiān)控軟件大很多,不僅需要較高的程序設計能力,一定的自動化領域知識,還需要一定的三維圖形學知識。如果能以組態(tài)的方式來設計三維監(jiān)控軟件,則將大大降低三維監(jiān)控軟件開發(fā)的難度。基于此,本文基于X3D,使用開源的Xj3D圖形工具包設計并實現(xiàn)了組態(tài)軟件三維用戶界面組態(tài)引擎,使用該引擎可以以組態(tài)方式設計開發(fā)三維監(jiān)控軟件。
三維用戶界面組態(tài)引擎建立在傳統(tǒng)二維組態(tài)軟件之上,將二維組態(tài)軟件的用戶界面組態(tài)功能由二維用戶界面組態(tài)替換為三維用戶界面組態(tài)。這樣即避免了重復開發(fā),又能充分利用傳統(tǒng)二維組態(tài)軟件的成熟性。
傳統(tǒng)二維組態(tài)軟件一般由用戶界面組態(tài)模塊、實時數(shù)據(jù)庫組態(tài)模塊、設備接口組態(tài)模塊和系統(tǒng)運行模塊構成[5]。這四個模塊是使用組態(tài)軟件設計開發(fā)監(jiān)控系統(tǒng)的四個強有力的工具。加入三維用戶界面組態(tài)引擎后其體系結構如圖1所示。其中三維用戶界面組態(tài)引擎負責建立三維監(jiān)控人機界面,實現(xiàn)人機交互功能,提供工藝流程仿真的圖形對象開發(fā)環(huán)境。實時數(shù)據(jù)庫組態(tài)模塊負責定義實時數(shù)據(jù)庫結構、數(shù)據(jù)來源、I/O設備以及數(shù)據(jù)類型等相關參數(shù),負責數(shù)據(jù)的實時存儲與管理。設備接口組態(tài)模塊提供各種外圍設備的驅動程序,負責從設備采集實時數(shù)據(jù)并將相關的設備操作指令下達到具體設備,同時與實時數(shù)據(jù)庫進行通信。系統(tǒng)運行平臺為設計開發(fā)好的圖形監(jiān)控系統(tǒng)或工藝仿真系統(tǒng)提供運行所需的環(huán)境。
圖1 三維組態(tài)軟件體系架構
三維用戶界面組態(tài)引擎的主要功能是實現(xiàn)可視化直接操控方式的組態(tài)平臺,用戶可以使用傳統(tǒng)的鼠標和鍵盤進行三維用戶界面的組態(tài)。具體包括模型的調(diào)入、合成、編輯、顯示以及場景文件生成等功能。用戶界面如圖2所示。主要功能包括模型調(diào)入、場景對象組態(tài)、模型編輯、場景顯示和文件保存等。
圖2 三維用戶界面組態(tài)引擎用戶界面
(1)模型調(diào)入,用戶從場景對象列表中選擇要加入到當前場景中的對象,對象預覽窗口將顯示該對象。同時,主窗口右側將顯示該對象的屬性,用戶可以修改相關屬性,修改結果會實時顯示在對象預覽窗口中。
(2)場景對象組態(tài),當用戶從場景對象列表中選中某一對象時,主窗口左下方將會顯示該對象與當前場景中的對象可能的組態(tài)關系,選擇一對或幾對組態(tài)關系,該對象將自動調(diào)整大小及方向,并放置到場景窗口的合適位置上。如圖2所示,當前場景中已經(jīng)存在地面和鍋爐支架,當從場景對象列表中調(diào)入鍋爐模型后,由于鍋爐可以放置到地面上,也可以放置到鍋爐支架上,因此在左下方窗口中將顯示這兩種組態(tài)關系。用戶選擇其中一個組態(tài)關系,鍋爐將自動與地面或鍋爐支架按照合適的位置合成為一個新的對象。
(3)模型編輯,用戶可以對當前選中的對象進行編輯,從屬性編輯框中修改該對象的屬性,同時可以恢復該對象的默認屬性。修改后的效果會實時顯示在對象預覽窗口和場景瀏覽窗口中。另外,用戶也可以刪除當前的場景對象。
(4)場景顯示,在場景瀏覽窗口中實時顯示當前的組態(tài)場景。
(5)文件保存,用戶可以將當前場景保存為場景文件,以便在其他應用程序中復用。
三維用戶界面組態(tài)引擎的架構如圖3所示,由場景對象庫,X3D模型解析器、場景編輯器、三維場景文檔、X3D場景文件生成器、SAI接口和X3D瀏覽器組成。圖3中的箭頭表示了數(shù)據(jù)在系統(tǒng)中的流動方向。
圖3 三維用戶界面組態(tài)引擎架構
(1)場景對象庫,它為三維用戶界面組態(tài)引擎提供底層物理模型庫的支持。包括X3D物理模型和對象關聯(lián)器兩部分。物理模型庫的建立需要滿足以下要求,一是要按照領域對模型進行歸類,這樣便于場景對象庫的管理。二是模型的表示應該使用國際標準格式,這樣可以比較容易地實現(xiàn)與其他格式之間的轉換。三是模型的表示應該便于進行語義標注,這樣能夠方便進行模型與模型之間的關聯(lián),從而實現(xiàn)自動化場景組態(tài)。四是物理模型的表示應該適合WEB方式的實現(xiàn),因為目前組態(tài)軟件的應用不僅僅限于單機運行,很多情況下需要支持WEB方式運行。
為了滿足以上要求,我們采用X3D格式來存儲物理模型。X3D是由Web3D聯(lián)盟于1998年年底提出的。X3D規(guī)范使用 可擴展 標記語 言 XML(Extensible Markup Language)對VRML幾何造型和實體行為進行描述[6-7]。XML提供結構化文檔描述的數(shù)據(jù)格式,可以用來定義任意類型的文檔,可以對所有類型的數(shù)據(jù)結構進行編碼。正是由于X3D基于XML格式開發(fā),因此可以直接使用XML DOM文檔樹、XML Schema校驗技術和相關的XML編輯工具。目前X3D已經(jīng)是通過ISO認證的國際標準。因此使用X3D表示場景對象庫中的物理模型能夠滿足以上提出的要求。
對象關聯(lián)器定義了物理模型之間的各種組態(tài)關系,如鍋爐可以放置到地面上、鍋爐可以放置到鍋爐支架上,鍋爐支架可以放置到地面上等。借助于對象關聯(lián)器,用戶在進行三維用戶界面組態(tài)時可以實現(xiàn)自動化或半自動化組態(tài),大大節(jié)省場景組態(tài)時間并降低組態(tài)復雜度。
(2)X3D模型解析器,負責讀取并解析X3D模型文件,將該文件轉換成內(nèi)存中的X3D文檔,以便其他組件通過XML DOM API[8]對其進行操作。該引擎中使用XJ3D對X3D文件進行裝載和解析,然后返回文檔對象。
(3)場景編輯器,使用XML DOM API對內(nèi)存中的X3D文檔進行操作,包括添加對象,刪除對象和編輯對象(修改對象的屬性,如大小、顏色、材質和貼圖等)。
(4)三維場景文檔,內(nèi)存中存儲的當前場景的X3D文檔,通過XML DOM API可以與之交互。是場景編輯器的操作對象。
(5)X3D場景文件生成器,經(jīng)過調(diào)入對象,對象組態(tài)以及對象編輯后的場景可以存儲成X3D場景文件,以提供給其他組態(tài)模塊使用。該引擎中使用JAXP的一系列方法存儲 X3D文件并使用 DOM4J[9-10]格式化文件。
(6)SAI接口,SAI是用來操作場景的API,它提供一系列的X3D訪問接口[11]。VRML/X3D的主要功能是用來描述3D虛擬場景和場景中對象的屬性,如顏色、幾何形狀、材質等。它沒有可編程的能力,只能通過一些簡單的腳本進行交互操作。這些腳本很難滿足VRML/X3D的應用。VRML通過 EAI(external authoring interface)接口與Java語言進行交互。在X3D中除了保留了EAI接口外還提出了一個SAI接口。SAI接口統(tǒng)一了X3D的內(nèi)部和外部訪問接口,它提供了功能更強大和更可靠的訪問能力,通過提供的一系列服務訪問X3D節(jié)點,如圖4所示。用戶可以使用程序設計語言通過SAI操作場景中的對象??梢栽赬3D文檔中的Script節(jié)點內(nèi)使用SAI。或者在其他應用程序中使用SAI操作X3D瀏覽器中的場景對象。SAI可以完成以下操作:新增或刪除節(jié)點,產(chǎn)生事件,建立路由(route),更改或讀取字段中的值,操作或控制X3D瀏覽器。
三維用戶界面組態(tài)引擎中使用Xj3DSAI訪問X3D場景。Xj3D是Web3D委員會的一個開源項目,目的是為VRML97和X3D建立一系列工具包。它完全用Java語言開發(fā)。它一方面可以用來驗證X3D新規(guī)范,另一方面作為一個類庫,提供給應用程序開發(fā)者開發(fā)基于X3D技術的應用程序。Xj3D是一個高組件化的套件,用戶可以非常方便的選擇自己所需要的組件用于應用程序的開發(fā)中。Xj3D的主要組件包括:DOM、VRML Implementation、SAI、EAI、渲染器、Java3D裝載器、Swing、X3D工具。
(7)X3D瀏覽器,用于顯示場景、處理場景事件。目前市場上的Internet瀏覽器(如Mozilla、火狐、IE等)不支持X3D文件格式。因此它需要額外的X3D瀏覽器顯示X3D內(nèi)容。
圖4 SAI訪問模式
三維用戶界面組態(tài)引擎進行場景組態(tài)時的流程如圖5所示,首先從場景對象樹中選取模型對象,然后對其屬性進行編輯、設置,該對象選中以后將列出該對象與當前場景中其他對象之間的組態(tài)約束關系,用戶選擇其中一個或幾個約束關系,在所選約束關系的約束下輔助用戶實現(xiàn)自動化或半自動化的組態(tài)。用戶可以對該對象組態(tài)后的場景進行調(diào)整,然后進行其他模型對象的組態(tài),直到整個場景組態(tài)結束。
圖5 三維用戶界面組態(tài)引擎組態(tài)流程
三維用戶界面組態(tài)引擎的開發(fā)采用JAVA語言,原因如下:一是由于物理三維模型采用X3D表示,對于X3D場景的解析使用JAVA語言比較方便,有一些專門針對JAVA語言設計的X3D工具包(如XJ3D),而針對C/C++語言開發(fā)的X3D工具包很少。二是考慮組態(tài)軟件的通用性以及對WEB運行模式的需求,采用JAVA語言進行開發(fā)也比較合適。三是由于目前運行組態(tài)軟件的計算機性能的提高,再加上引擎中的三維物理模型采用精簡模型即可滿足組態(tài)軟件的要求,因此使用JAVA語言開發(fā)和使用C/C++語言開發(fā)對于系統(tǒng)運行的效率差別不大。
組態(tài)軟件三維用戶界面組態(tài)引擎的實現(xiàn)主要包括3個核心模塊:組態(tài)場景解析模塊、組態(tài)場景編輯模塊和組態(tài)場景瀏覽模塊。
2.4.1 組態(tài)場景解析模塊實現(xiàn)
組態(tài)場景解析模塊主要負責裝載初始組態(tài)場景,即調(diào)入X3D文件,并返回場景對象。首先使用XJ3D的SAI BrowserFactory類建立一個X3D對象。然后使用External-Browser接口建立一個X3D瀏覽器對象x3dBrowser,用于裝載X3D文件,并使用它建立新的節(jié)點。使用x3dBrowser對象裝載初始組態(tài)場景文件后返回X3D場景對象,并替換原來的空白場景。核心代碼如下:
2.4.2 組態(tài)場景編輯模塊
組態(tài)場景編輯模塊主要負責對加入到當前場景中的對象的屬性進行修改,如顏色、材質等,同時負責加入新的X3D模型節(jié)點。例如,要改變當前場景中名稱為theMaterial的材質節(jié)點的漫反射顏色,首先需要使用X3DScene類的getNamedNode方法找到theMaterial節(jié)點,然后使用getField方法找到該節(jié)點的diffuseColor域并改變其顏色值。核心代碼如下:
2.4.3 組態(tài)場景瀏覽模塊
組態(tài)場景瀏覽模塊主要負責實時顯示三維用戶界面的組態(tài)結果,并監(jiān)聽場景中節(jié)點的變化。主要使用XJ3D的Browser對象顯示X3D場景。核心代碼如下:
本文基于X3D技術,使用開源的XJ3D圖形開發(fā)包設計并實現(xiàn)了組態(tài)軟件三維用戶界面組態(tài)引擎,主要包括組態(tài)場景解析模塊、組態(tài)場景編輯模塊和組態(tài)場景瀏覽模塊。使用該引擎可以可視化的組態(tài)方式建立三維用戶界面。原型系統(tǒng)表明該引擎具有組態(tài)簡便、效率高的特點。沒有三維圖形開發(fā)經(jīng)驗的自動化軟件工程師短時間內(nèi)即可掌握該引擎的使用。同時,三維用戶界面的應用使組態(tài)軟件的仿真度大大提高,可以從多視角瀏覽工業(yè)現(xiàn)場的運行情況,該系統(tǒng)具有較高的應用前景。
[1]WANG Chensheng,XU Xingguo,ZHU Tings.On system design of general industrial configuration software compliant to IEC 61131-3 [J].Control Engineering of China,2009,17(S0):131-136(in Chinese).[王晨升,徐新國,朱廷劭.基于IEC61131-3的通用工業(yè)組態(tài)軟件系統(tǒng)設計研究 [J].控制工程,2009,17(S0):131-136.]
[2]ZHOU Zewei,F(xiàn)ENG Yiping,RONG Gang.3Dprocess simulation and visualization monitoring platform for process of coal pyrolysis to acetylene [J].Journal of Chemical Industry and Engineering,2011,62(8):2303-2311(in Chinese). [周澤偉,馮毅萍,榮岡.等離子體裂解煤工藝過程的三維仿真與可視化監(jiān)控系統(tǒng) [J].化工學報,2011,62(8):2303-2311.]
[3]CAO Wenming,WANG Yaonan,YIN Feng,et al.Study on real-time 3Dmonitoring of telerobot movement [J].Chinese Journal of Scientific Instrument,2010,31(4):728-734(in Chinese).[曹文明,王耀南,印峰,等.遙操作機器人運動的實時三維監(jiān)控方法研究 [J].儀器儀表學報,2010,31(4):728-734.]
[4]ZHANG Huiqing,SHI qing,ZHUANG Chunhua,et al.Research and implementation of fast configuration for pipeline connection in 3Dmonitor scene [J].Journal of Beijing University of Technology,2010,36(3):300-305(in Chinese).[張 會清,時菁,莊春華等.三維監(jiān)控場景中空間管道快速連接組態(tài)的研究與實現(xiàn) [J].北京工業(yè)大學學報,2010,36(3):300-305.]
[5]WANG Weiguo,WANG Fengyuan,LI Xuehua.Application of configuration software to lubricant pump test system [J].Computer Measurement &Control,2011,19(5):1212-1215(in Chinese).[王偉國,王逢源,李學華.組態(tài)軟件在潤滑油泵試驗系統(tǒng)中的應用 [J].計算機測量與控制,2011,19(5):1212-1215.]
[6]HUANG Qiguang,HAN X.Research and development of VRML visual editor [J].Computer Engineering and Design,2008,29(5):1296-1298(in Chinese).[黃 柒 光,韓 燮.VRML可視化編輯器的研究與開發(fā) [J].計算機工程與設計,2008,29(5):1296-1298.]
[7]LI Zhenpei,LI Ping,WU Ming.Research on interaction between X3Dvirtual scene and Java [J].Computer Engineering and Applications,2010,46(16):67-70(in Chinese).[李貞培,李平,吳明.X3D虛擬場景與Java交互研究 [J].計算機工程與應用,2010,46(16):67-70.]
[8]Kim S M,Yoo S I.Dom tree browsing of a very large XML document:Design and implementation [J].Journal of Systems and Software,2009,82(11):1843-1858.
[9]HUANG Hong,LIN Hui,WANG Ben.A GUI XML description method and tool development [J].Computer Applications and Software,2011,28(10):198-202(in Chinese).[黃洪,林輝,王奔.一種圖形用戶界面的XML描述方法與工具開發(fā)[J].計算機應用與軟件,2011,28(10):198-202.]
[10]DAI Beijie,YU Shuang,JIN Beihong.XML editor based on efficient DOM parser [J].Computer Engineering and Design,2007,28(22):5334-5338(in Chinese).[戴蓓潔,余雙,金蓓弘.基于DOM解析器的XML編輯器研究 [J].計算機工程與設計,2007,28(22):5334-5338.]
[11]Kurmos L,John N W,Roberts J C.Integration of haptics with Web3Dusing the SAI [C].New York USA:Proceedings of the 14th International Conference on 3DWeb Technology,2009:25-32.