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