摘 要: 提出了一種基于移動代理的Lon網(wǎng)絡遠程監(jiān)控系統(tǒng)的實現(xiàn)方案,介紹了系統(tǒng)的構成和設計技術。
關鍵詞: 遠程監(jiān)控 LonWorks 移動代理 Aglet
計算機與網(wǎng)絡技術的迅速發(fā)展,極大地促進了現(xiàn)代制造業(yè)的發(fā)展。各種基于網(wǎng)絡技術和分布式計算機技術的系統(tǒng)大量應用于工業(yè)生產(chǎn),衍生了許多新的生產(chǎn)方式和制造模式,如網(wǎng)絡制造、聯(lián)盟企業(yè)和全球制造等。目前,以Internet和現(xiàn)場總線為應用背景的基于B/S或C/S計算模式的實時遠程監(jiān)控系統(tǒng)是研究和實現(xiàn)遠程監(jiān)控與故障診斷的熱點,并已得到廣泛應用。這種在遠程監(jiān)控主機和本地監(jiān)控系統(tǒng)之間基于B/S或C/S的遠程監(jiān)控系統(tǒng),比較適合穩(wěn)定和快速響應的網(wǎng)絡連接環(huán)境。但是基于B/S或C/S的遠程監(jiān)控系統(tǒng)的流程和功能是固定實現(xiàn)的,缺少可擴展性、靈活性和智能性。為此,本文提出了一種LonWorks與Internet集成架構網(wǎng)絡環(huán)境下的基于移動代理(MA)的遠程監(jiān)控系統(tǒng)的實現(xiàn)方案。
移動代理是一個具有移動性、自治性、并行性和交互性等特點的智能體。它能夠攜帶著自己的代碼、數(shù)據(jù)及執(zhí)行狀態(tài),在網(wǎng)絡系統(tǒng)中自主地從一臺主機移動到另一臺主機。在移動過程中,可以根據(jù)要求掛起其運行,然后移動到網(wǎng)絡的其他節(jié)點重新開始或繼續(xù)執(zhí)行,最后返回結果和消息。移動代理的這些特點和功能,使得移動代理計算模型具有很大的動態(tài)性、智能性、靈活性、高效性和可靠性[2]。因此,使用移動代理機制構造的遠程監(jiān)控系統(tǒng)中,在遠程監(jiān)控主機和本地監(jiān)控系統(tǒng)之間采用移動代理計算模式,利用其高智能性和遠程數(shù)據(jù)處理能力,不需要在遠程監(jiān)控主機和本地監(jiān)控系統(tǒng)間傳輸大量的原始數(shù)據(jù),使監(jiān)控和數(shù)據(jù)分析都通過移動代理在監(jiān)控系統(tǒng)本地完成,從而降低了對Internet帶寬和可靠性的依賴,提高了系統(tǒng)的遠程實時交互性及運行的可靠性和穩(wěn)定性,同時可為系統(tǒng)提供更好的靈活性、可擴充性和適應性。
1 系統(tǒng)的設計與實現(xiàn)
1.1 系統(tǒng)結構與實現(xiàn)平臺
系統(tǒng)由LON網(wǎng)絡層、本地監(jiān)控層和基于移動代理計算模型的遠程監(jiān)控層三層結構組成,如圖1所示。
LonWorks[3]總線控制網(wǎng)絡由與通信介質(zhì)相連的設備節(jié)點和LonWorks網(wǎng)絡服務器(主機節(jié)點)組成。設備節(jié)點實現(xiàn)現(xiàn)場設備信號的采集、狀態(tài)監(jiān)測、實時控制以及節(jié)點間的數(shù)據(jù)通信。LonWorks網(wǎng)絡服務器安裝了PCLTA-10 Lon網(wǎng)絡接口卡和Lonmaker for Windows、 LonManager DDE Server等Lon網(wǎng)絡管理和服務工具軟件。Lonmaker for Windows實現(xiàn)設備節(jié)點和網(wǎng)絡變量(NV)的管理,LonManager DDE Server以網(wǎng)絡變量的形式實現(xiàn)本地監(jiān)控層與設備節(jié)點的實時數(shù)據(jù)通信。
本地監(jiān)控層由本地局域網(wǎng)(Intranet)及互連的本地監(jiān)控主機和數(shù)據(jù)庫服務器組成。本地監(jiān)控主機同時運行了采用VB6.0開發(fā)的監(jiān)控應用程序和LonWorks網(wǎng)絡服務器,實現(xiàn)了本地的生產(chǎn)過程的監(jiān)控管理。VB監(jiān)控應用程序利用DDE編程技術通過設置數(shù)據(jù)綁定控件的若干Link屬性與LonManager DDE Server通信,獲取Lon網(wǎng)絡的各設備節(jié)點的網(wǎng)絡輸出變量信息,并寫入MySQL數(shù)據(jù)庫;同時,通過對MySQL數(shù)據(jù)庫的訪問,獲取控制數(shù)據(jù),并以輸入網(wǎng)絡變量的形式通過LonManager DDE Server和KinkPoke方法傳遞給Lon網(wǎng)絡各節(jié)點的Neuron C控制程序,執(zhí)行數(shù)據(jù)項的更新和設備控制。
架構于Internet之上的網(wǎng)絡采用移動代理計算模型的移動代理服務器和遠程監(jiān)控主機二個協(xié)作的代理子系統(tǒng)構成了遠程監(jiān)控層。移動代理服務器和遠程監(jiān)控主機的移動代理運行平臺采用IBM公司用純Java開發(fā)的Aglets,它們均安裝了IBM Aglets2.0.1代理平臺軟件包和JDK1.3.1軟件包,采用多Agent協(xié)同的Master-Slave代理計算模式。IBM Aglets2.0.1的可視化的Aglet平臺和由7個包組成的對象模型為Aglet提供了執(zhí)行任務的環(huán)境和用戶開發(fā)Aglet代碼的環(huán)境。
1.2 代理系統(tǒng)的組成及分類
系統(tǒng)移動代理計算由遠程監(jiān)控主機代理子系統(tǒng)和移動代理服務器代理子系統(tǒng)組成,采用多Agent協(xié)同的工作方式,如圖1所示。系統(tǒng)中的代理分為二類:一類為負責代理系統(tǒng)管理及服務的靜態(tài)代理,另一類為負責執(zhí)行遠程監(jiān)控任務的移動代理。
代理的描述形式如下:
<Agent>∷=(<標識描述域>,<功能描述域>,<狀態(tài)描述域>,<信息描述域>)
標識描述域:Agent的惟一標識號(Agent ID),企業(yè)信息(企業(yè)號、監(jiān)控權限等)等。
功能描述域:Agent執(zhí)行任務的能力和功能等。
狀態(tài)描述域:Agent的執(zhí)行狀態(tài),即工作或休眠。
信息描述域:Agent創(chuàng)建的位置、權限和所在的移動代理系統(tǒng)MAS。
遠程監(jiān)控主機代理子系統(tǒng)使用Master-Slave計算模式。MasterAgent(HManagerAgent)為靜態(tài)代理,實現(xiàn)代理系統(tǒng)管理職能;SlaveAgent為由MasterAgent創(chuàng)建的移動代理,它被委派到移動代理服務器執(zhí)行監(jiān)控任務并返回結果或消息。移動代理服務器代理子系統(tǒng)為SlaveAgent等提供代理執(zhí)行環(huán)境,并根據(jù)遠程監(jiān)控主機或其他移動代理服務器的請求或協(xié)作,完成相應代理服務和響應職能。其代理由事件代理和管理代理等靜態(tài)代理組成。遠程監(jiān)控主機和移動代理服務器的信息交換是通過Agent間的基于消息傳遞方式的傳遞消息對象來實現(xiàn)的。下面介紹根據(jù)系統(tǒng)遠程監(jiān)控功能的需要而設計的遠程監(jiān)控主機和移動代理服務器的主要代理的功能和分類。
(1)主機管理代理(HManagerAgent)。執(zhí)行系統(tǒng)管理任務的靜態(tài)代理。它負責啟動系統(tǒng)代理計算,管理SlaveAgent及生成主圖形用戶界面和監(jiān)控圖形界面。它根據(jù)用戶的輸入請求、執(zhí)行環(huán)境或其他Agent傳遞消息對象的信息,通過創(chuàng)建和加載遠端移動代理服務器的SManagerAgent啟動遠端移動代理服務器的代理計算;同時,根據(jù)用戶和系統(tǒng)的授權,創(chuàng)建、加載SlaveAgent中相應的移動代理,啟動系統(tǒng)各個遠程監(jiān)控功能域,為移動代理提供執(zhí)行任務的參數(shù)和指派相應的權限,并委派移動代理至遠端移動代理服務器執(zhí)行任務。同時,SlaveAgent返回的執(zhí)行結果及遠端Agent傳遞來的消息對象均由HManagerAgent負責接收、顯示和處理。
(2)初始化代理(InitAgent)。執(zhí)行系統(tǒng)初始化任務的移動代理。它將HManagerAgent的Agent ID碼、Context地址和用戶設置的數(shù)據(jù)刷新率等系統(tǒng)初始化數(shù)據(jù)傳遞給遠端移動代理服務器的SManagerAgent;同時,將SManagerAgent的Agent ID碼和通過對MySQL數(shù)據(jù)庫的訪問所收集到的由各本地監(jiān)控主機存入信息數(shù)據(jù)庫的設備節(jié)點和網(wǎng)絡變量等信息返回給HManagerAgent。HManagerAgent根據(jù)返回的信息生成監(jiān)控圖形界面。
(3)監(jiān)控代理(MoniAgent)。執(zhí)行實時監(jiān)控任務的移動代理。系統(tǒng)包含有多個監(jiān)控代理,每一個監(jiān)控代理執(zhí)行一項監(jiān)控任務。MoniAgent在遠端移動代理服務器端,通過對MySQL數(shù)據(jù)庫的訪問所獲取的現(xiàn)場設備節(jié)點運行狀態(tài)的實時和歷史數(shù)據(jù),根據(jù)監(jiān)控規(guī)則和算法,實現(xiàn)其控制函數(shù)運算,并將運算結果的控制數(shù)據(jù)通過本地監(jiān)控主機傳遞給節(jié)點控制程序,實現(xiàn)對節(jié)點的控制。同時,MoniAgent還要將執(zhí)行結果返回給遠程監(jiān)控主機的HManagerAgent處理,以實現(xiàn)高層的決策。
(4)巡視代理(ItinAgent)。執(zhí)行設備節(jié)點信息搜尋任務的移動代理。它不斷地在各遠端移動代理服務器間進行巡視,巡視到某一個地點,通過對MySQL數(shù)據(jù)庫的訪問,動態(tài)地獲取整個系統(tǒng)的設備節(jié)點信息,并向HManagerAgent報告。HManagerAgent利用該信息自動或在用戶的管理下創(chuàng)建、加載或清除相應代理,完成設備節(jié)點和監(jiān)控任務的動態(tài)加入或刪除。
(5)協(xié)作代理(CoopAgent)。執(zhí)行協(xié)作任務的移動代理。HManagerAgent通過向各遠端移動代理服務器發(fā)送CoopAgent,由CoopAgent在各遠端移動代理服務器間實現(xiàn)基于消息傳遞方式的信息交換,自主制定協(xié)作工作計劃,實現(xiàn)共同的監(jiān)控目標。
(6)服務器管理代理(SManagerAgent)。負責接收、顯示和處理HManagerAgent傳遞的消息對象,生成圖形用戶界面以及創(chuàng)建、加載Up_eventAgent和Al_eventAgent,并為之提供監(jiān)控數(shù)據(jù)刷新率及HManagerAgent的Agent ID碼和Context地址等執(zhí)行參數(shù)的靜態(tài)代理。
(7)數(shù)據(jù)刷新事件代理(Up_eventAgent)。由SManagerAgent創(chuàng)建、加載的靜態(tài)代理。它根據(jù)監(jiān)控數(shù)據(jù)刷新率參數(shù),定期訪問MySQL數(shù)據(jù)庫,獲取現(xiàn)場設備節(jié)點運行狀態(tài)的數(shù)據(jù)信息,并通過消息對象傳送給HManagerAgent,實時刷新各設備節(jié)點信息。
(8)數(shù)據(jù)報警事件代理(Al_eventAgent)。由SManagerAgent創(chuàng)建、加載的靜態(tài)代理。它通過消息對象將報警信息實時傳送給HManagerAgent,實現(xiàn)遠程實時故障報警。
這幾類職能代理完成了系統(tǒng)主要的職能,并為其他代理提供了基本服務。此外,根據(jù)系統(tǒng)應用的需要,可創(chuàng)建新的職能代理,并通過代理間的通信實現(xiàn)特定的服務。
1.3 系統(tǒng)工作流程
系統(tǒng)工作流程如圖2所示。
系統(tǒng)的工作過程為:
(1)啟動HManagerAgent,并通過主圖形用戶界面輸入遠端目標移動代理服務器地址、數(shù)據(jù)刷新率及企業(yè)信息等初始化數(shù)據(jù)。HManagerAgent根據(jù)該地址創(chuàng)建和加載遠端移動代理服務器的SManagerAgent,啟動遠端移動代理服務器的代理計算,并加載和發(fā)送InitAgent至各遠端目標移動代理服務器執(zhí)行初始化任務,啟動代理計算。同時,InitAgent將SManagerAgent的Agent ID碼和通過對MySQL數(shù)據(jù)庫的訪問所收集到的由各本地監(jiān)控主機存入數(shù)據(jù)庫的設備節(jié)點和網(wǎng)絡變量等信息返回給HManagerAgent。待InitAgent返回結果后,HManagerAgent根據(jù)返回的信息生成監(jiān)控圖形界面,并向SManagerAgent發(fā)送服務請求消息對象。
(2)VB監(jiān)控應用程序?qū)崿F(xiàn)本地生產(chǎn)過程的監(jiān)控管理,它通過 LonManager DDE Server獲取Lon網(wǎng)絡的各設備節(jié)點的網(wǎng)絡輸出變量信息,并寫入MySQL數(shù)據(jù)庫。
(3)SManagerAgent接收到服務請求消息對象后,加載并啟動Up_eventAgent和Al_eventAgent。Up_eventAgent定期檢索MySQL數(shù)據(jù)庫,獲取現(xiàn)場設備節(jié)點運行狀態(tài)信息和網(wǎng)絡輸出變量信息,并通過消息對象傳送給HManagerAgent,遠程實時刷新各節(jié)點設備信息。若VB獲取的設備信息為報警數(shù)據(jù),則VB還必須實時地將數(shù)據(jù)復制到移動代理服務器的系統(tǒng)共享剪貼板。Al_eventAgent通過剪貼板可實時地粘貼報警數(shù)據(jù),并將報警數(shù)據(jù)實時傳送給HManagerAgent,實現(xiàn)遠程實時數(shù)據(jù)報警。
(4)當遠程監(jiān)控主機對現(xiàn)場設備實施控制時,HManagerAgent根據(jù)用戶的輸入請求、執(zhí)行環(huán)境或其他Agent傳遞的消息對象的信息,啟動并派遣相應的MoniAgent 或CoopAgent至移動代理服務器。Agent讀取MySQL數(shù)據(jù)庫中被控設備節(jié)點的實時和歷史數(shù)據(jù)信息,實現(xiàn)其控制函數(shù)運算,并將運算結果的控制數(shù)據(jù)寫入MySQL數(shù)據(jù)庫。VB監(jiān)控應用程序讀取該數(shù)據(jù)項,并將該數(shù)據(jù)以輸入網(wǎng)絡變量的形式通過LonManager DDE Server和KinkPoke方法傳遞給Lon網(wǎng)絡各節(jié)點的Neuron C控制程序,執(zhí)行數(shù)據(jù)項的更新和設備控制。
1.4 系統(tǒng)代理代碼的設計
系統(tǒng)代理代碼是基于IBM公司的Aglets設計的。設計中定義并創(chuàng)建了MasterAglet、SlaveAglet和EventAglet三個抽象代理類。系統(tǒng)中各代理均通過繼承該三個類,并按照前面定制的各代理功能,在繼承的各代理子類對象中覆蓋其中相應的方法,完成代理代碼的編寫。
2 系統(tǒng)的應用與結論
目前,本系統(tǒng)在某機床零件加工遠程流程監(jiān)控系統(tǒng)中實現(xiàn)了應用。實踐表明,在實時性和刷新率均要求很高的情況下,系統(tǒng)具有良好的控制效果和運行的穩(wěn)定性,取得了預期的效果。
該方案對大范圍的協(xié)作生產(chǎn)過程的遠程監(jiān)控應用顯示了良好的應用前景。
參考文獻
1 Wijata Y I,Nichaus D,F(xiàn)rost V S.A scalable agent-based network measurement infrastructure.IEEE Communications Magazine,2000;(9)
2 Fuggetta A,Picco G,Vigna G.Understanding code mobility IEEE Trans on Software Engineering,1998;24(5)
3 楊育紅.LON網(wǎng)絡控制技術及應用.西安:西安電子科技大 學出版社,1999
4 Danny B,Mitsurn O.Mobile Agents with Java:The Aglet API.World Wide Web Journal,1998;(3)