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

基于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.

主站蜘蛛池模板: jizz在线观看| 亚洲第一区在线| 欧美国产视频| 婷婷开心中文字幕| 精品久久高清| 国产成人精品无码一区二| 国产精品视频3p| 欧美日韩91| 亚洲一区二区三区在线视频| 久久国产高清视频| 国产毛片片精品天天看视频| 国产精品私拍在线爆乳| 亚洲成年人片| 国产精品制服| 亚洲一区波多野结衣二区三区| 亚洲码在线中文在线观看| 亚洲国产精品成人久久综合影院| 精品一区二区三区视频免费观看| 在线毛片免费| 中国一级毛片免费观看| 国产成人1024精品| 午夜国产不卡在线观看视频| 中文字幕一区二区视频| 亚洲国产亚综合在线区| 露脸一二三区国语对白| 亚洲高清资源| 亚洲欧美一区二区三区图片| 亚洲AV人人澡人人双人| 欧美在线导航| 蜜臀AV在线播放| 超碰色了色| 国产成人久久综合777777麻豆 | 波多野结衣一区二区三区AV| 夜夜操天天摸| 国产成人综合日韩精品无码不卡| 亚洲全网成人资源在线观看| 亚洲AⅤ综合在线欧美一区| 国产精品妖精视频| 亚洲一区二区日韩欧美gif| 亚洲成av人无码综合在线观看| 中文字幕第4页| 国产亚洲精品97AA片在线播放| 怡红院美国分院一区二区| 成人永久免费A∨一级在线播放| 亚洲综合中文字幕国产精品欧美| 久久精品国产亚洲麻豆| 国产人妖视频一区在线观看| 欧美一级专区免费大片| 国产精品亚洲精品爽爽| 精品成人一区二区| 91精品国产情侣高潮露脸| 久久久久久国产精品mv| 国产H片无码不卡在线视频| 免费va国产在线观看| 国产精品yjizz视频网一二区| 亚洲AV人人澡人人双人| 国产主播在线观看| 在线视频97| 精品久久久久久中文字幕女| 久久精品波多野结衣| 看你懂的巨臀中文字幕一区二区| 日韩国产欧美精品在线| 久久99精品久久久大学生| 亚洲欧洲自拍拍偷午夜色无码| 欧美综合区自拍亚洲综合绿色| 国产人成午夜免费看| 色久综合在线| 国产精品永久在线| 亚洲乱码视频| 日韩一区精品视频一区二区| 99手机在线视频| 国产精品视频第一专区| 手机在线国产精品| 青青国产成人免费精品视频| 久久人搡人人玩人妻精品一| 精品无码日韩国产不卡av| 99热这里只有精品在线播放| 人妻精品久久无码区| 成年人午夜免费视频| 午夜免费小视频| 国产精品第三页在线看| 国产成人精品一区二区三在线观看|