楊 紅, 付 帥, 許銀萍, 何嶺松
( 1. 武漢工程大學機電工程學院, 湖北, 武漢 430074;2. 華中科技大學機械科學與工程學院,湖北,武漢 430074)
以計算機為核心的工業綜合自動化生產是制造業的主要生產控制方式,基于智能虛擬環境的工業監控人機交互技術,可對現有工控系統的二維圖形用戶界面環境進行有效“增強”,增加信息交互的維度和智能化程度,成為工業自動化軟件發展的關鍵技術之一[1].X3D(eXtensible 3D)是新一代的網絡虛擬現實技術標準,是VRML技術的繼承和發展,將X3D與Internet技術相結合應用于工控界面系統,可實現工業生產的遠程、三維監視與控制,并可基于成熟的標準技術,有效提高系統開放性[2-4].但在具體應用中,X3D規范采用樹形嵌套式的場景描述,系統構模能力差,要在標準系統提供的基本幾何節點的基礎上實現較為復雜的生產環境建模,開發周期長,虛擬效果差.同時,場景單元實體的造型與行為的分離,也使得整個系統結構復雜,開發效率和執行效率低.
X3D虛擬現實技術融入工業監控體系可有效增強工控界面的表現力和交互能力.界面構件的有效封裝,是界面場景快速開發的基礎.X3D與多Agent系統(MAS)具有很好的一致性,基于Agent建模方法,可采用劃分基本行為模塊的方法,對X3D環境下的界面對象進行獨立描述和集成封裝,并可有效提高界面系統智能化程度[5].X3D虛擬界面環境是基于界面構件組裝而成,基于界面系統多Agent模型,實現X3D環境下的個體Agent封裝,建立界面構件庫,是界面場景快速開發的基礎.可擴展性是X3D的重要特性,X3D支持多種擴展方式,為不同類型的界面構件封裝提供了實現途徑.
針對X3D環境下的界面構件封裝,本文首先分析了X3D的多種擴展機制,基于界面系統多Agent模型,探討了X3D環境下不同類型界面構件封裝的一般技術,并重點分析了具有復雜行為特征的智能構件的封裝實現方法,給出了一個智能儀表構件的封裝實例.
X3D支持充分的擴展性,除了基于開放的標準體系,支持特定應用領域的專用標準集擴展,X3D在標準體系內也提供了多種擴展機制,支持諸如造型功能擴展、原型節點擴展和腳本編程擴展等[6].X3D的擴展體系如圖1所示.

圖1 X3D的擴展體系Fig.1 Extension system of X3D
X3D規范擴展主要有兩種形式,一是基于規范原型機制的原型節點擴展,簡稱原型節點擴展;一是規范語言級的擴展,又稱為內節點擴展.
原型(Prototype)是X3D規范提供的一種標準擴展機制,用戶可以通過原型機制擴充X3D標準節點類型集.構造原型是通過對規范中的標準節點進行組合、變換、添加交互或使用腳本編程等實現的.通過構造原型,可以創建出功能各異的新節點,為構造個性化場景提供了極大方便.原型是X3D系統擴展的一種有效方法,可實現代碼重用、節點擴展、造型與行為打包等功能.原型機制雖然可以實現用戶自定義節點的有效擴展,但原型設計的基礎是X3D系統的標準節點,原型使用仍然限制在原有的事件體系中,對原型節點的訪問和控制也仍然限制在X3D瀏覽器內部,使節點擴展在實現形式和擴展功能上受到一定限制.
X3D的構件化結構保證了開發者可以按照標準規范的一致性原則根據自己的需求開發自己的節點、組件并定義新的概貌(Profile),達到從“語言級”擴展X3D的目的,該種擴展稱為內節點擴展.內節點擴展針對性強、使用方便、執行效率高,特別適合于一些特定領域、特定功能的應用擴展.內節點擴展除了根據特定的功能要求,按照X3D規范對節點進行語法、語義定義,還要對特定的瀏覽器進行相應的功能擴展,以實現對新節點的應用支持.
場景單元的幾何造型是虛擬現實環境實現的基礎.X3D自身的造型功能不強,只提供幾個基本的造型節點,但目前主流的3D造型軟件,如3DMAX、Pro/E、UG等都有支持X3D的接口,一些復雜的三維造型可以利用這些第三方的造型軟件進行前期制作,再基于造型軟件的文件轉換接口生成X3D格式的造型文件.獨立的造型單元文件可利用X3D的內聯(Inline)機制組裝到虛擬場景主文件中,以彌補X3D本身造型功能的不足.基于X3D的內聯機制,可將復雜的X3D場景文件分割成相對簡單的一些獨立的場景造型文件,分別設計并存儲,使用時再將其組裝融合在一起,以簡化復雜場景的設計與調試,并方便維護與多人開發.
腳本(Script)節點實際上是一個外殼,它包含一組利用腳本描述語言,如Java、JavaScript或VrmlScript(由SGI公司開發的一種類似于Java的腳本編程語言)編寫的函數或方法.腳本節點收到事件后將執行相應函數,函數則通過常規的路由機制發送事件,也可直接向腳本節點指向的任意節點發送事件.腳本還可以動態地增刪路由,從而修改事件體系的拓撲結構.因此,腳本節點可看作一個智能節點,它以腳本編程的方式實現對事件的高層處理和動畫的擴展控制.
基于X3D與多Agent系統的一致性,本文建立的工控界面MAS框架體系如圖2所示[5].按其功能,系統Agent可劃分為界面Agent組和系統維護Agent組.界面Agent組用于構建界面交互環境,主要包括構造虛擬操作場景的各種設備Agent(Devices Agent)、實現虛擬場景與外部監控環境數據交互的DAQ Agent、實現必要的數據處理和故障診斷功能的Data Agent等.在Devices Agent組中,按功能又可分成設備實體類Agent、控制儀表類Agent、廠房等輔助構件類Agent等.

圖2 工控界面MAS總體結構Fig.2 The MAS framework of IMC system
X3D環境下的個體Agent結構包括一組事件接口、一組腳本函數和一組域值屬性,并通過建立事件-腳本函數關系來實現相應的事件-任務模型,以擴展節點的形式實現個體Agent的封裝.
針對X3D的多種擴展方式,考慮到幾何造型以及行為封裝實現的便利程度,對一些非可視Agent,如DAQ Agent等,以內節點擴展(語言級擴展)實現為主,如筆者擴展實現的網絡通信節點[7].而對具有幾何外觀特征的可視Agent,若為單純的幾何結構類Agent,如廠房構件、結構類設備構件等,可基于內聯機制,以單獨的造型文件形式進行封裝,如筆者開發的過程裝備仿真構件庫[8-9];若具有較為復雜的行為特征,如儀器、儀表、智能構件等,則以原型節點的形式進行封裝,以腳本節點內嵌的腳本函數編程來實現Agent的行為功能.基于X3D擴展實現個體Agent封裝的方法如圖3所示.

非可視Agent具有行為特征的可視Agent單純結構類可視Agent內節點擴展原型節點擴展造型文件擴展X3D系統平臺-MAS系統框架
圖3基于X3D擴展的個體Agent封裝方法
Fig.3 Encapsulation method to individual agent based on X3D extension
智能儀表是工控系統中常用的參數顯示控制單元,是一個典型的控制儀表類Agent.本節以某款智能顯示調節儀為模型,建立一個通用的智能儀表構件.
智能儀表幾何模型參照某款智能顯示調節儀,儀表面板包括LED數字顯示區、運行狀態指示區和儀表設置區等部分.儀表功能包括測量顯示、智能控制和儀表設置三部分.它接收輸入的參數測量值,作LED數字顯示;內置PID算法模塊,以測量值、設定值、PID參數等為入口參數,進行PID運算,并輸出控制值;對測量值進行上、下限越限報警指示,并實現位式控制功能;能設置儀表的相關控制參數和狀態參數,以控制儀表行為.
按照上述功能描述,可對智能儀表構件的內部結構和外部接口進行設計,具體包括Agent的屬性集、消息接口集以及執行方法集,對應于X3D原型的節點域、事件和腳本函數,如表1所示.

表1 智能儀表構件原型接口定義Tabel 1 Prototype interface define to intelligent instrument component
智能儀表構件以原型形式進行封裝,原型接口包括節點域和事件,還包括相關的執行函數.原型定義采用傳統的VRML格式編碼,基于VRML97核心庫支持,構件的原型定義文件(intel_meter.wrl)節選如下:
#VRML V2.0 utf8
#原型接口定義
PROTO intel_meter [
eventIn SFFloat dataDisplay #事件定義
eventOut SFFloat outPut
field SFFloat upLimit 40 #域定義
……
]
#原型體定義
{ Transform {#造型體定義}
#腳本定義,基于SAI接口封裝儀表行為
DEF path Script{
mustEvaluate TRUE
field SFFloat upLimit1 IS upLimit #域定義
……
#事件定義
eventIn SFFloat dataDisplay1 IS dataDisplay #測量值輸入
eventOut SFFloat outPut1 IS outPut #控制值輸出
eventOut SFColor color1 #上限指示燈狀態(顏色)
eventOut SFColor color2 #下限指示燈狀態(顏色)
eventOut MFString str #測量值顯示文本
url "danxian.class" #嵌入Java類,封裝儀表行為
}
#建立路由
ROUTE path.color1 TO xiaodeng1.diffuseColor #上限指示燈顯示
ROUTE path.color2 TO xiaodeng2.diffuseColor #下限指示燈顯示
ROUTE path.str TO tex.string #測量值顯示
本原型行為擴展基于SAI實現,相關的執行函數包含在腳本節點內嵌的Java class中,實現執行方法功能.
原型測試的主要目的是測試智能儀表的數字顯示和調節控制功能,主要內容有測量數據顯示、報警指示和控制輸出等.為便于擴展管理,本文涉及的原型擴展設計采用外部原型調用,測試時要建立一個對此原型的引用,然后賦予不同的域值或事件,使儀表依次處于各種工作狀態以檢查其功能.智能儀表構件測試環境如圖4所示.

圖4 智能儀表構件原型測試Fig.4 Prototype test to an intelligent instrument component
X3D與多Agent系統具有很好的一致性,基于Agent建模方法,可對X3D環境下的界面構件進行獨立描述和集成封裝.基于X3D支持的多種擴展方式,不同類型的界面構件可采用不同的封裝方法.對一些非可視構件,以內節點形式從語言
級擴展為主;對單純的幾何結構類可視構件,可基于內聯機制,以單獨的造型文件形式進行封裝;對具有復雜行為特征的智能可視構件,則以原型節點的形式進行封裝,以腳本節點內嵌的腳本函數實現構件的行為功能,可實現造型和行為的集成封裝.智能儀表構件的封裝實例,體現了以原型節點和腳本編程擴展形式實現智能構件封裝的可行性和有效性.基于上述封裝方法,可進一步建立工控界面構件庫,為界面場景系統的快速構建奠定基礎.
參考文獻:
[1] 費敏銳, 李力雄. 自動化領域的一些進展與評論[J]. 儀器儀表學報,2002, 23(5): 242-244.
[2] Shih-Ching Ou., Wen-Tsai Sung, Sung-Jung Hsiao. Development of intelligent virtual reality web-based robotics for manufacturing applications[J]. IEEE ICIT,2002(1): 348-353.
[3] DAI Qing-yun, ZOU Mu-chang, WU Wei-yang. Application of virtual reality in monitoring system of inverter power supply[J]. Computer Engineering and Design. 2006, 27(19): 3528-3530.
[4] Hong Yang, Yinping Xu, Shuai Fu, et al.The Human Machine Interface System for Industrial Monitor and Control Based on X3D and Multi-agent Technology[C]//Proceedings of IEEE International Conference on Electrical and Control Engineering,2011:4142-4145.
[5] Yang Hong, Li Pan, Fu Shuai, Chen Hanxin, He Lingsong. Multi-agent Modeling & Realization for Interface System of Industrial Monitor and Control System under X3D[C]//Proceedings of IEEE International Conference on Electric Information and Control Engineering, 2011(4):5114-5117.
[6] Web3D.Consortium.ISO-IEC-19775-FDIS-X3dAbstractSpecificationz[EB/OL].http://www.web3d.org/x3d/specifications. 2004-08-24.
[7] Hong Yang, Lingsong He, Dengpan Zhang, et al. An Extension of Network Communication in X3D for Remote Monitor and Control[C]//Proceedings of the 2007 IEEE International Conference on Mechatronics and Automation, 2007:2236-2240.
[8] 楊紅,龔本,張敏樹,等.基于VRML的虛擬拆裝實驗技術研究[J].武漢工程大學學報,2007,29(1):58-61.
[9] 楊紅, 楊巍巍, 張敏樹, 等. 基于VRML的過程裝備仿真素材庫開發[J].遠程教育雜志, 2007(2): 76-78.