基于HLA的分布式網(wǎng)絡(luò)仿真組件的研究實現(xiàn)
1 引 言
本文引用地址:http://m.butianyuan.cn/article/90215.htm仿真技術(shù)作為人類第三種認識、改造客觀世界的重要手段已經(jīng)深入應(yīng)用到各個領(lǐng)域并取得了很多成果,如軍事、電力、以及能源等。在各類應(yīng)用需求的作用下仿真技術(shù)已經(jīng)發(fā)展形成綜合性的專業(yè)技術(shù)體系,特別是DIS,HLA等技術(shù)的發(fā)展給仿真的應(yīng)用帶來了新的機遇。
分布式協(xié)同工作網(wǎng)絡(luò)系統(tǒng)(Distributed CollaborativeWorking Network System)是指分布在不同平臺上的多個處理系統(tǒng),通過TCP/IP網(wǎng)絡(luò)進行數(shù)據(jù)交互,完成同一個任務(wù),達到快速解決問題及實現(xiàn)協(xié)同工作。作為DIS和HLA仿真系統(tǒng)中底層必備的網(wǎng)絡(luò)通信模塊,在實際開發(fā)中各Agent封裝自己底層通信模塊,分布式各節(jié)點只暴露他對外通信接口,因此使各個節(jié)點的通信細節(jié)不明確、耦合度很差;造成開發(fā)資源的極大浪費,以及開發(fā)成本的增加。同時也讓仿真系統(tǒng)開發(fā)人員需要花大部分精力對底層通信進行調(diào)試,這種工作非常繁瑣,同時也不易進行。本文將重點介紹應(yīng)用在HLA仿真系統(tǒng)中新型底層通信組件設(shè)計方案及實現(xiàn)方法。
2 HLA簡介及組件開發(fā)模型
2.1 HLA高層體系結(jié)構(gòu)
分布交互仿真(DIS)技術(shù)從產(chǎn)生(SIMENT計劃)到DIS2.X,IEEE1278.X系列協(xié)議和ALSP協(xié)議制定,進而發(fā)展到今天的HLA,都是力圖解決系統(tǒng)建模與系統(tǒng)仿真(Modeling and Simulation,M&S)領(lǐng)域存在的問題:絕大多數(shù)仿真器的應(yīng)用實現(xiàn)較為獨立,仿真器之間的互操作性和重用性差;開發(fā)、維護和使用費時且成本高;可驗證性、有效性和置信度較差。HLA就是從體系結(jié)構(gòu)上建立這樣的一個框架,他能盡量涵蓋M&S領(lǐng)域中所涉及的各種不同類型仿真系統(tǒng),并利于他們之間的互操作性和重用性。同時能利用不斷發(fā)展的新技術(shù),來滿足復(fù)雜大系統(tǒng)的仿真要求。HLA按照面向?qū)ο蟮乃枷牒头椒▉順?gòu)建仿真系統(tǒng),他的基本思想是不考慮如果有對象構(gòu)造成員,而是在假設(shè)已有成員的情況下考慮如何構(gòu)建聯(lián)邦。采用面向?qū)ο蟮姆椒▉碓O(shè)計、開發(fā)和實現(xiàn)方針系統(tǒng)的對象模型(OM)以獲取聯(lián)邦的高層次的互操作和重用。雖然HLA本身不能完全實現(xiàn)互操作,但他定義了實現(xiàn)聯(lián)邦成員互操作的體系結(jié)構(gòu)和集中,提供靈活的仿真框架。由各聯(lián)邦成員和運行支持環(huán)境RTI(Run-Time Infrastrueture,運行時間基礎(chǔ)結(jié)構(gòu)或運行支撐環(huán)境)一起構(gòu)成一個分布式仿真系統(tǒng),用于集成分布的各種聯(lián)邦成員,在聯(lián)邦運行時提供各種標準的服務(wù),并具有良好的可擴充性。主要包含聯(lián)邦管理、聲明管理、對象管理、所有權(quán)管理、時間管理和數(shù)據(jù)分發(fā)管理。一個典型的機遇HLA的仿真邏輯結(jié)構(gòu)圖如圖1所示:
2.2 底層網(wǎng)絡(luò)通信組件模型
基于組件開發(fā)(Component-Based Development,CBD)是當前的最新發(fā)展階段,是解決軟件復(fù)用和重用的突破點,能更好地滿足目前軟件開發(fā)的需求。他是經(jīng)過封裝的、定義完備接口可發(fā)布的軟件包,提供特定的服務(wù),并期望得到外部特定的接口輸入。從某種程度上說他也是一種程序接口,實現(xiàn)系統(tǒng)模塊之問的互操作和重用。每個組件包含一組屬性、事件和方法,組合若干組件就可以生成設(shè)計者所需要的特定程序,并能集成到其他軟件產(chǎn)品中。應(yīng)用程序開發(fā)者可以購買現(xiàn)成的組件,他們只要利用現(xiàn)有的組件,再加上自己的業(yè)務(wù)規(guī)則,就可以開發(fā)一個應(yīng)用軟件??傊M件開發(fā)技術(shù)使軟件設(shè)計變得更加簡單和快捷,并極大地增強軟件的重用能力。他相對系統(tǒng)軟件體系獨立的不關(guān)心軟件系統(tǒng)業(yè)務(wù)實現(xiàn),因此可以獨立于系統(tǒng)軟件的開發(fā),從而降低軟件調(diào)試困難。
本網(wǎng)絡(luò)底層通信組件主要為解決基于HLA分布式仿真應(yīng)用系統(tǒng)中底層網(wǎng)絡(luò)通信接口通信,分布各仿真模擬器節(jié)點的網(wǎng)絡(luò)數(shù)據(jù)交換,以及網(wǎng)絡(luò)通信服務(wù)質(zhì)量(QOS)的保證。提高系統(tǒng)運行的時效、完整的數(shù)據(jù)報文交換、及數(shù)據(jù)報文的丟失解決、冗余數(shù)據(jù)檢測等。下面是為HLA分布式仿真系統(tǒng)設(shè)計的網(wǎng)絡(luò)通信組件的設(shè)計的模型結(jié)構(gòu)圖,各仿真模擬器節(jié)點通過他實現(xiàn)對整個模擬交換和互操作,實現(xiàn)協(xié)同完成系統(tǒng)模擬仿真工作。仿真模型結(jié)構(gòu)如圖2所示。
3 仿真網(wǎng)絡(luò)組件設(shè)計與實現(xiàn)
3.1 仿真網(wǎng)絡(luò)通信組件的設(shè)計
本網(wǎng)絡(luò)通信組件采用CORBA設(shè)計思想對網(wǎng)絡(luò)底層通信協(xié)議異步套接字(Socket)進行的封裝,統(tǒng)一實現(xiàn)對整個系統(tǒng)的通信的支持。CORBA(公共對象請求代理架構(gòu)) 由OMT提出,用于在不同進程(程序)之間,甚至是不同物理機器上的進程(程序)之間通訊。底層技術(shù)依靠RPC(遠程過程調(diào)用)實現(xiàn)。面向?qū)ο蟮能浖詳?shù)據(jù)為中心設(shè)計,對象類既具有模塊的封裝性和類屬等特性,還具有繼承特性,極大地提高了類的可擴充性和可再用能力。對象類較之于傳統(tǒng)軟件的功能模塊而另具有的優(yōu)點是:易于理解,具有完整的語義特征;易于擴充和修改,具有較高的通用性和適應(yīng)性;易于構(gòu)造組裝,具有規(guī)范的外部接口。
基于CORBA的對象請求代理ORB為客戶機/服務(wù)器開發(fā)提供了中間件的新格式。把IDL說明編譯為面向?qū)ο蟪绦蛟O(shè)計語言的實代碼后,客戶可以調(diào)用已知對象的操作。在某些應(yīng)用中,用戶并不了解應(yīng)用接口編譯信息,但也要求調(diào)用對象的操作,這時就要動態(tài)調(diào)用接口來調(diào)用用戶的操作。具體的對象操作的調(diào)用實際上是用動態(tài)調(diào)用接口來完成的。在基于HLA仿真應(yīng)用系統(tǒng)的各個仿真節(jié)點實現(xiàn)互操作,及協(xié)同工作完成整個仿真任務(wù)都是通過網(wǎng)絡(luò)數(shù)據(jù)進行數(shù)據(jù)交換,及對數(shù)據(jù)報文進行解析、分發(fā)、操作實現(xiàn)的任務(wù)協(xié)同,因此對于HLA仿真應(yīng)用對整個TCP報文或者UDP報文采用統(tǒng)一的格式,例如:對整個系統(tǒng)環(huán)境網(wǎng)、系統(tǒng)模擬仿真網(wǎng)絡(luò)中傳輸?shù)腡CP,UDP報文采用統(tǒng)一的報文標識,如系統(tǒng)仿真時統(tǒng)UDP報文標示為0x1,那么在仿真系統(tǒng)中收到標識為0x1的UDP報文。各個分布式仿真節(jié)點將對該報文進行時統(tǒng)系統(tǒng)對時,實現(xiàn)整個仿真系統(tǒng)的時間一致行,保證對整個仿真過程中時間與現(xiàn)實的同步,選擇異步Socket進行自我封裝成能夠符合HLA仿真系統(tǒng)的報文傳輸要求。同時組件的設(shè)計安裝面向?qū)ο笤O(shè)計的一般過程、軟件工程的要求。
設(shè)計如下的組件的結(jié)構(gòu)如圖3所示。
3.2 通訊組件的實現(xiàn)
作為一種通信組件,他不僅需要完成上層HLA仿真主程序給他的發(fā)送報文的分發(fā)及從其他仿真節(jié)點收到的仿真數(shù)據(jù)報文的解析,還提供對外清晰的交互接口。同時作為仿真工作的一個部件,他需要工作在一個復(fù)雜的網(wǎng)絡(luò)環(huán)境中,在不能很多程度上與占有寶貴的分布式處理機的處理時問,作為網(wǎng)絡(luò)組件經(jīng)常會在某些時間,等待連接、或者等待數(shù)據(jù)報文而發(fā)生嚴重的阻塞,以及需要不斷的監(jiān)聽端口,從而耗費處理機時間,信號Windows提供了異步SOCKET的API接口使得組件設(shè)計能夠一直以異步方式工作的應(yīng)用層,不斷向網(wǎng)絡(luò)層接收和發(fā)送數(shù)據(jù)報文。但是單純實用原始異步SOCKET的API接口仍然不能滿足某些特定的要求,不能很好地融入HLA仿真應(yīng)用系統(tǒng)中去。因此首先對Windows提供的異步SOCKET套接字CAsyncSocket進行特定封裝。
下面給出部分封裝代碼:
在應(yīng)用中申請一個組件的主構(gòu)造類,在該類中去實例化經(jīng)過封裝的異步套接字來進行底層網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),組件實例可以接收到初始化該組件的操作句柄,完成配合仿真節(jié)點完成仿真主題工作,數(shù)據(jù)的交互,數(shù)據(jù)的處理等。
下面是主題組件的實體類。
仿真節(jié)點只要向組件發(fā)送一啟動命令(IniComponent(HWND m_hWnd))組件就將啟動并完成組件的初始化,如組件全局SOCKET的版本請求、版本協(xié)商、經(jīng)過封裝后的異步套接字實例化、SOCKET通信API的實例初始化等。同時組件完成初始化以后,組件將一直開始監(jiān)聽本機指定端口、并等待接收本仿真節(jié)點的消息發(fā)送命令等。仿真節(jié)點在按照HLA仿真體系中規(guī)定的報文協(xié)議填寫完成數(shù)據(jù)報文以后,只需要調(diào)用組件對外的接口函數(shù):Send-Data(char *bur,char*pDataCode,char*pIDNode)即能完成把報文發(fā)送到指定目的仿真接點,協(xié)同完成仿真模擬任務(wù)。組件在接收到網(wǎng)絡(luò)消息的時候調(diào)用OnReceive(intnErrorCode)進行報文的預(yù)處理,確定是否需要仿真節(jié)點處理該報文。如首先對接收到的報文進行長度分析如果長度很小為系統(tǒng)發(fā)送確認報文,就不需要仿真主程序進行處理,為仿真節(jié)點主處理器節(jié)省處理時間。如果長度超過一定長度,是仿真節(jié)點中協(xié)同報文的話,組件將首先對報文得到報文標識頭(GetNodeByName(char*IdNode,CString strPeerAddress))然后進行報文解析,并向仿真主程序發(fā)送消息函數(shù)::PostMessage(…)到主程序中,進行最終的報文處理工作;如界面更新、數(shù)據(jù)交互處理等,同時組件線程在完成了對解析以后需要對發(fā)送方發(fā)送解析和成功解析報文,以確認發(fā)送方的發(fā)送報文別目的節(jié)點成功接受并成功解析。
4 結(jié) 語
基于HLA高層體系結(jié)構(gòu)的分布式仿真系統(tǒng)中通過分布在不同物理點的分布式仿真節(jié)點,借助網(wǎng)絡(luò)進行數(shù)據(jù)報文交互、仿真同步、仿真協(xié)同完成對真實世界的模擬。作為仿真系統(tǒng)在必備的通信模塊,在頻繁地設(shè)計和不斷地重寫,在一個特定的仿真領(lǐng)域中需不同的仿真網(wǎng)絡(luò)通信模塊,重復(fù)的開發(fā)和設(shè)計使得各個仿真節(jié)點之間的交互需要不斷地協(xié)調(diào)協(xié)議接口;不統(tǒng)一的設(shè)計方案也同樣讓仿真開發(fā)人員陷入重復(fù)工作的泥潭中。本文針對以上的開發(fā)弊端,采用現(xiàn)代軟件設(shè)計思想,組件的開發(fā)設(shè)計模式,使得代碼得以最大程度上的共享,并易于調(diào)試。他使得仿真開發(fā)人員能夠花最小的時間和代價協(xié)調(diào)網(wǎng)絡(luò)通信模塊,從而集中精力在仿真主題功能的設(shè)計和實現(xiàn)上。在實際應(yīng)用中本仿真組件清晰、而又簡單的對外接口,對基于HLA分布式仿真應(yīng)用系統(tǒng)功能開發(fā)者基本上不需要了解他的設(shè)計和實現(xiàn),就能很好地使用本組件完成通信要求,從而將最大程度上為開發(fā)者節(jié)省項目時間、項目花費。
組件采用異步SOCKET套接字進行自封裝,隱藏了組件通信如何進行的過程,從而不必要求對HLA傳真系統(tǒng)功能開發(fā)者關(guān)心底層網(wǎng)絡(luò)通信是如何進行的。同時組件工作的異步模式下,對系統(tǒng)不會產(chǎn)生過大的資源浪費,同時也能很好地滿足HLA分布式仿真節(jié)點的實時性要求。
評論