999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx

基于Matlab模型的HLA仿真系統設計

2020-02-14 06:03:57李占麗史曉萌高琳
科技創新與應用 2020年2期

李占麗 史曉萌 高琳

摘 ?要:文章介紹了基于HLA的仿真系統的開發過程,重點說明了基于VR-Link的聯邦成員的開發過程和開發過程中需要注意的問題。針對Matlab仿真模型,設計了適配器,實現了Matlab仿真模型與HLA/RTI的數據交互,可以對類似的HLA應用開發起到借鑒作用。

關鍵詞:HLA;VR-Link;Matlab適配器

中圖分類號:TP391.9 ? ? ?文獻標志碼:A ? ? ? ? 文章編號:2095-2945(2020)02-0085-03

Abstract: This paper introduces the development process of HLA-based simulation system, the development process of federate base on VR-Link and the problems are emphasized. For Matlab simulation model, the adapter is designed, to realized the data interaction between Matlab simulation model and HLA/RTI, It can be used for reference in similar HLA applications.

Keywords: HLA; VR-Link; Matlab adapter

1 概述

高層體系結構HLA(High Level Architecture)是美國國防部提出的一個分布式仿真技術框架,它的主要目的是解決仿真應用的互操作性和仿真資源的可重用性問題。它通過運行支撐環境RTI將具體的仿真功能實現、仿真運行管理和底層傳輸三者分離,隱蔽它們各自的實現細節,使各個部分可以相對獨立地開發,實現應用系統的即插即用。

VR-Link對RTI函數進行了封裝,提供了可以使聯邦成員創建工作更容易的高層功能,使開發人員重點專注于仿真模型的設計,大大減少他們的工作量。

Matlab是用以開發數值模型的強大建模和分析工具,但是Matlab本身并不支持HLA/RTI,設計Matlab適配器,使Matlab仿真模型能夠參與到基于HLA的協同仿真中來,可以提高系統開發的效率。

2 開發過程

2.1 聯邦概念模型(FCM)開發

聯邦的概念模型是對問題域的抽象,是在需求和實現之間架起的一座橋梁。主要任務是對系統的組成和行為進行宏觀的描述,包括仿真系統的構成和工作過程。

2.2 聯邦對象模型(FOM)設計

FOM的設計是整個仿真系統的開發過程中一個重要的部分,開發FOM的過程,是對仿真系統中的交互數據進行抽象和建模的過程,其一般步驟為:

(1)分解仿真任務,確定聯邦成員及其實體類型和事件;

(2)確定FOM中的對象類和交互類;

(3)確定對象類屬性和交互類參數的特性;

(4)生成仿真對象模型(SOM)表;

(5)綜合SOM表,生成FOM表。

2.3 生成FED(Federation Execution Data)文件

FED文件是FOM開發的結果,用于向RTI和VR-Link提供FOM表的信息。在開發時,可以根據FOM表對FED文件進行修改,以滿足系統的需求。

2.4 聯邦成員開發

聯邦成員需要與聯邦中的其他成員共同實現FCM中定義的聯邦需求。根據FCM映射到本聯邦成員需要實現的功能,開發聯邦成員。VR-Link的開發聯邦成員的過程為:

(1)創建并加入聯邦

仿真開始時,需要通過DtExerciseConn產生聯邦,如果聯邦已經產生,則加入聯邦。需要注意的是,構造DtExerciseConn時,必須提供聯邦執行名和聯邦成員名,并且同一聯邦的聯邦執行名和FED文件名必須相同。

DtExerciseConn exConn;

exConn = new DtExerciseConn(execName, fedName, DtRprFomMapper::create(0),"VR-Link.FED", 0 );

如果用戶不向DtExerciseConn構造函數提供FED文件的名稱,則假設FED文件名與聯邦執行的名稱相同,VR-Link會在運行的程序所在的目錄中尋找FED文件,要確保用戶正在DtExerciseConn中使用的FED文件在運行程序所在的目錄中。

(2)對象類的發布與訂閱

聯邦產生以后,需要發布和訂閱FOM中的對象類屬性。如果發布、訂閱的是對象類的全部屬性,需要構造對象發布器(DtEntityPublisher)和映射實體列表(DtReflected-EntityList);如果發布、訂閱的是對象類的部分屬性,可以使用DtObjClassDesc的成員函數publish( )/subscribe( )。

(3)屬性更新

在每一個仿真步長中,DtEntityPublisher通過調用tick()函數把更新的實體狀態發送出去。對DtExerciseConn::drainlnPut()接收到的遠程實體, DtReflectedEntityList會將其更新信息存放到與該映射實體對應的實體狀態庫中。

(4)交互類的發布和訂閱

HLA中使用交互來表示所發生的事件,VR-Link通過派生DtInteraction類來管理這些交互。交互類的發送是交互類實例在交互事件發生時進行發送的,發送交互的示例:

DtExamInteraction inter; ? //創建交互實例

inter. setPar1(par1); ? ? ? //設置參數1

inter. setPar2(par2); ? ? ? //設置參數2

inter. setPar3(par3); ? ? ? //設置參數3

exConn. sendStamped(inter); //發送交互

交互類的訂購需要交互接受方在仿真開始之前為交互類注冊一個回調函數,對接收到的交互進行響應。

DtExamInteraction:: addCallback(&exConn,theInteractionCb, this);

參數中,theInteractionCb為回調函數,當接受到交互后,調用此函數。因為回調函數是作為普通的VR-Link回調注冊函數指針傳入的,所以回調函數本身不能是非靜態成員函數,它可以是全局函數或靜態類成員。該函數原型為:

void

theInteractionCb(DtExamInteraction* inter, void*usr)

{ … …}

(5)交互處理

在回調函數中獲取交互數據后,要對數據進行處理,可在回調函數中設置事件,利用事件機制觸發處理過程。對于復雜的處理,事件發生后可利用消息機制發送消息,通知消息處理函數進行處理。

Handle hEvent;

SetEvent(hEvent);

if(WaitForSingleObject(hEvent) == WAIT_OBJECT_0)

{

::PostMessage(stsComponent->m_hWnd, MessageName, 0, 0);

}

需要注意的是,這里要利用PostMessage函數,而不能利用SendMessage函數。

3 Matlab適配器

由于仿真模型采用Matlab建立,而Matlab沒有提供HLA/RTI的接口,為了把這些模型集成到仿真系統,實現基于HLA的協同仿真,就需要采用一定的機制將RTI與這些模型連接起來,使這些模型能夠和RTI進行數據交換和時間同步。

3.1 設計思路

本文采用Matlab引擎的方式開發適配器,使Matlab作為一個聯邦成員加入聯邦,通過適配器發布和訂購所需要的對象類與交互類。

為實現Matlab仿真模型與RTI的數據交互,適配器將Matlab所需要的對象類和交互類映射為Matlab仿真模型中的輸入輸出變量,并根據仿真控制子系統的控制指令(如啟動、暫停、繼續和終止等),通過Matlab的API接口對Matlab引擎進行相應的控制,其實現機制如圖1所示。

3.2 適配器的實現

Matlab引擎采用客戶/服務器模式,利用ActiveX自動化和DDE技術,實現VC++與Matlab之間的動態數據交換。在VC++中使用Matlab引擎來編寫程序時,VC++作為客戶端,負責用戶接口并提出數據請求;Matlab作為服務器端,向客戶端提供數據服務。VC++通過調用Matlab引擎與Matlab服務器建立連接,實現動態通信。具體過程如圖 2所示。

上面的過程中包含了兩個重要問題,一個是引擎接口的設計與使用,VC++為Matlab引擎調用Matlab服務提供了應用程序接口,用于完成連接的建立與撤銷、數據的傳遞與接收,主要的引擎庫函數如表1所示。

另一個問題是數據組織,即VC++數據類型與mxArray矩陣的轉換問題,數據組織方式正確與否直接決定著VC++與Matlab服務器之間動態數據交換的有效性。

Matlab對VC++數據的組織利用mxArray矩陣結構和它的相關函數來實現。對于每種VC++數據類型,都有一個函數用于創建mxArray矩陣結構,如表2所示。

在VC++中對Matlab引擎的調用過程可用如下偽代碼實現:

IF engOpen ?//啟動引擎成功

BEGIN

//進行數據初始化;

mxCreatexxx(); //進行數據類型轉換;

engPutArray(); //向Matlab引擎發送數據;

engEvalString();//調用仿真模型,可以是M 函數;

engGetArray();//獲取仿真結果;

mxDestoryArray();//刪除矩陣;

engClose();// 關閉引擎;

END

利用Matlab適配器可以方便地將Matlab仿真模型轉化為一個HLA/RTI邦元,如圖3所示。

4 結束語

本文論述了利用VR-Link開發HLA應用的過程,設計了Matlab適配器,詳細說明了適配器的實現方法,利用適配器使Matlab仿真模型可以參與到HLA/RTI協同仿真中來,可以對類似的HLA應用起到借鑒作用。

參考文獻:

[1]王勃,艾祖亮.VR-Link開發[M].北京:國防工業出版社,2009.

[2]王凈,戰凱,吳朝暉.基于HLA的潛艦對抗模擬訓練系統的設計與實現[J].火力與指揮控制,2012,37(8):127-132.

[3]郝雁中,楊承志.基于HLA的電子戰飛機作戰仿真系統研究[J].指揮控制與仿真,2008,30(3):102-105.

[4]曾艷麗,李華.基于HLA的仿真應用成員的設計與實現[J].電子對抗技術,2004,19(4):16-18,23.

404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
404 Not Found

404 Not Found


nginx
主站蜘蛛池模板: 国产伦精品一区二区三区视频优播 | 人妻精品全国免费视频| 亚洲第一成年网| 国产乱人免费视频| 国产中文在线亚洲精品官网| 女人av社区男人的天堂| 成年看免费观看视频拍拍| 日韩高清成人| 免费啪啪网址| 国产欧美精品一区aⅴ影院| 国产一区二区三区在线观看免费| 黄色网站不卡无码| 亚洲色欲色欲www网| 国产乱子伦无码精品小说 | 幺女国产一级毛片| 精品福利网| 青青操国产视频| 国产一二三区在线| 全免费a级毛片免费看不卡| 国产在线日本| 国产又黄又硬又粗| 精品成人免费自拍视频| 五月激情综合网| 日韩麻豆小视频| 亚洲天堂色色人体| 亚洲av无码片一区二区三区| 三上悠亚在线精品二区| 54pao国产成人免费视频| 欧洲熟妇精品视频| 一本久道久久综合多人| 国产精品久久久久久影院| 成人夜夜嗨| 亚洲最大情网站在线观看| 97在线碰| 免费看a级毛片| 日韩精品一区二区三区中文无码| 91在线中文| 国产91色在线| 香蕉eeww99国产在线观看| 国产在线小视频| 美女毛片在线| 成人av专区精品无码国产 | 丁香婷婷激情网| 国产95在线 | 国产亚洲精品无码专| 中国国产高清免费AV片| 日本高清有码人妻| 国产一级片网址| 亚洲激情区| 99国产精品国产高清一区二区| 天堂网亚洲系列亚洲系列| 干中文字幕| 中文字幕欧美成人免费| 国产经典三级在线| 无码在线激情片| 亚洲高清日韩heyzo| 国产人前露出系列视频| www.狠狠| 久久精品丝袜| 伊人成人在线| 国产91色在线| 日本人又色又爽的视频| 色欲综合久久中文字幕网| 免费一级全黄少妇性色生活片| 伊人久热这里只有精品视频99| 在线国产资源| 国产福利微拍精品一区二区| 国产91蝌蚪窝| 超碰91免费人妻| a级毛片毛片免费观看久潮| 国产精品分类视频分类一区| 国产精品福利在线观看无码卡| 不卡视频国产| 91po国产在线精品免费观看| 色欲不卡无码一区二区| 四虎综合网| 成人一级免费视频| av天堂最新版在线| 色婷婷亚洲综合五月| 伊人色在线视频| 性色生活片在线观看| 亚洲第一在线播放|