摘 要: 提出了一種基于移動代理的Lon網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控系統(tǒng)的實現(xiàn)方案,,介紹了系統(tǒng)的構(gòu)成和設(shè)計技術(shù)。
關(guān)鍵詞: 遠(yuǎ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計算模式的實時遠(yuǎn)程監(jiān)控系統(tǒng)是研究和實現(xiàn)遠(yuǎn)程監(jiān)控與故障診斷的熱點,,并已得到廣泛應(yīng)用,。這種在遠(yuǎn)程監(jiān)控主機和本地監(jiān)控系統(tǒng)之間基于B/S或C/S的遠(yuǎn)程監(jiān)控系統(tǒng),比較適合穩(wěn)定和快速響應(yīng)的網(wǎng)絡(luò)連接環(huán)境,。但是基于B/S或C/S的遠(yuǎn)程監(jiān)控系統(tǒng)的流程和功能是固定實現(xiàn)的,,缺少可擴展性、靈活性和智能性,。為此,,本文提出了一種LonWorks與Internet集成架構(gòu)網(wǎng)絡(luò)環(huán)境下的基于移動代理(MA)的遠(yuǎn)程監(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)造的遠(yuǎn)程監(jiān)控系統(tǒng)中,,在遠(yuǎn)程監(jiān)控主機和本地監(jiān)控系統(tǒng)之間采用移動代理計算模式,利用其高智能性和遠(yuǎn)程數(shù)據(jù)處理能力,,不需要在遠(yuǎn)程監(jiān)控主機和本地監(jiān)控系統(tǒng)間傳輸大量的原始數(shù)據(jù),,使監(jiān)控和數(shù)據(jù)分析都通過移動代理在監(jiān)控系統(tǒng)本地完成,從而降低了對Internet帶寬和可靠性的依賴,,提高了系統(tǒng)的遠(yuǎn)程實時交互性及運行的可靠性和穩(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)控層和基于移動代理計算模型的遠(yuǎ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ù)器和遠(yuǎn)程監(jiān)控主機二個協(xié)作的代理子系統(tǒng)構(gòu)成了遠(yuǎn)程監(jiān)控層,。移動代理服務(wù)器和遠(yuǎ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í)行任務(wù)的環(huán)境和用戶開發(fā)Aglet代碼的環(huán)境,。
1.2 代理系統(tǒng)的組成及分類
系統(tǒng)移動代理計算由遠(yuǎn)程監(jiān)控主機代理子系統(tǒng)和移動代理服務(wù)器代理子系統(tǒng)組成,,采用多Agent協(xié)同的工作方式,如圖1所示,。系統(tǒng)中的代理分為二類:一類為負(fù)責(zé)代理系統(tǒng)管理及服務(wù)的靜態(tài)代理,,另一類為負(fù)責(zé)執(zhí)行遠(yuǎn)程監(jiān)控任務(wù)的移動代理。
代理的描述形式如下:
<Agent>∷=(<標(biāo)識描述域>,,<功能描述域>,,<狀態(tài)描述域>,<信息描述域>)
標(biāo)識描述域:Agent的惟一標(biāo)識號(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,。
遠(yuǎn)程監(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ù)遠(yuǎn)程監(jiān)控主機或其他移動代理服務(wù)器的請求或協(xié)作,,完成相應(yīng)代理服務(wù)和響應(yīng)職能。其代理由事件代理和管理代理等靜態(tài)代理組成,。遠(yuǎn)程監(jiān)控主機和移動代理服務(wù)器的信息交換是通過Agent間的基于消息傳遞方式的傳遞消息對象來實現(xiàn)的,。下面介紹根據(jù)系統(tǒng)遠(yuǎn)程監(jiān)控功能的需要而設(shè)計的遠(yuǎn)程監(jiān)控主機和移動代理服務(wù)器的主要代理的功能和分類。
(1)主機管理代理(HManagerAgent),。執(zhí)行系統(tǒng)管理任務(wù)的靜態(tài)代理,。它負(fù)責(zé)啟動系統(tǒng)代理計算,管理SlaveAgent及生成主圖形用戶界面和監(jiān)控圖形界面,。它根據(jù)用戶的輸入請求,、執(zhí)行環(huán)境或其他Agent傳遞消息對象的信息,通過創(chuàng)建和加載遠(yuǎn)端移動代理服務(wù)器的SManagerAgent啟動遠(yuǎn)端移動代理服務(wù)器的代理計算,;同時,,根據(jù)用戶和系統(tǒng)的授權(quán),創(chuàng)建,、加載SlaveAgent中相應(yīng)的移動代理,,啟動系統(tǒng)各個遠(yuǎn)程監(jiān)控功能域,為移動代理提供執(zhí)行任務(wù)的參數(shù)和指派相應(yīng)的權(quán)限,,并委派移動代理至遠(yuǎn)端移動代理服務(wù)器執(zhí)行任務(wù),。同時,SlaveAgent返回的執(zhí)行結(jié)果及遠(yuǎn)端Agent傳遞來的消息對象均由HManagerAgent負(fù)責(zé)接收,、顯示和處理,。
(2)初始化代理(InitAgent)。執(zhí)行系統(tǒng)初始化任務(wù)的移動代理,。它將HManagerAgent的Agent ID碼,、Context地址和用戶設(shè)置的數(shù)據(jù)刷新率等系統(tǒng)初始化數(shù)據(jù)傳遞給遠(yuǎn)端移動代理服務(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在遠(yuǎn)端移動代理服務(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é)果返回給遠(yuǎn)程監(jiān)控主機的HManagerAgent處理,,以實現(xiàn)高層的決策。
(4)巡視代理(ItinAgent),。執(zhí)行設(shè)備節(jié)點信息搜尋任務(wù)的移動代理,。它不斷地在各遠(yuǎn)端移動代理服務(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通過向各遠(yuǎn)端移動代理服務(wù)器發(fā)送CoopAgent,,由CoopAgent在各遠(yuǎn)端移動代理服務(wù)器間實現(xiàn)基于消息傳遞方式的信息交換,,自主制定協(xié)作工作計劃,實現(xiàn)共同的監(jiān)控目標(biāo),。
(6)服務(wù)器管理代理(SManagerAgent),。負(fù)責(zé)接收、顯示和處理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)遠(yuǎ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,,并通過主圖形用戶界面輸入遠(yuǎn)端目標(biāo)移動代理服務(wù)器地址,、數(shù)據(jù)刷新率及企業(yè)信息等初始化數(shù)據(jù)。HManagerAgent根據(jù)該地址創(chuàng)建和加載遠(yuǎn)端移動代理服務(wù)器的SManagerAgent,,啟動遠(yuǎn)端移動代理服務(wù)器的代理計算,,并加載和發(fā)送InitAgent至各遠(yuǎn)端目標(biāo)移動代理服務(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,,遠(yuǎn)程實時刷新各節(jié)點設(shè)備信息。若VB獲取的設(shè)備信息為報警數(shù)據(jù),,則VB還必須實時地將數(shù)據(jù)復(fù)制到移動代理服務(wù)器的系統(tǒng)共享剪貼板,。Al_eventAgent通過剪貼板可實時地粘貼報警數(shù)據(jù),,并將報警數(shù)據(jù)實時傳送給HManagerAgent,實現(xiàn)遠(yuǎn)程實時數(shù)據(jù)報警,。
(4)當(dāng)遠(yuǎn)程監(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)在某機床零件加工遠(yuǎn)程流程監(jiān)控系統(tǒng)中實現(xiàn)了應(yīng)用,。實踐表明,在實時性和刷新率均要求很高的情況下,,系統(tǒng)具有良好的控制效果和運行的穩(wěn)定性,,取得了預(yù)期的效果。
該方案對大范圍的協(xié)作生產(chǎn)過程的遠(yuǎ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)用.西安:西安電子科技大 學(xué)出版社,,1999
4 Danny B,,Mitsurn O.Mobile Agents with Java:The Aglet API.World Wide Web Journal,1998,;(3)