国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于網(wǎng)絡(luò)接口的HLA軟件開發(fā)環(huán)境研究

2010-07-16 07:35翟永翠
指揮控制與仿真 2010年3期
關(guān)鍵詞:聯(lián)邦成員設(shè)置

翟永翠

(中國船舶重工集團(tuán)公司江蘇自動化研究所,江蘇 連云港 222006)

1 問題的提出

目前,HLA 帶給建模與仿真界的資源重用及仿真系統(tǒng)互操作的好處已成為現(xiàn)實(shí),從基于資源重用的角度出發(fā),如何將現(xiàn)有的仿真系統(tǒng)轉(zhuǎn)換成HLA兼容的聯(lián)邦成員,如何實(shí)現(xiàn)新開發(fā)的仿真系統(tǒng)聯(lián)邦成員軟件的快速開發(fā)及其重用,對于仿真系統(tǒng)的重用性具有重要意義。美國防部建模與仿真辦公室(DMSO)總結(jié)了HLA開發(fā)的經(jīng)驗(yàn),并結(jié)合軟件工程的要求,頒發(fā)了聯(lián)邦開發(fā)與運(yùn)行過程(FEDEP)規(guī)范。HLA聯(lián)邦成員軟件的開發(fā)需要通過調(diào)用RTI的編程接口(API)來完成,基于RTI API進(jìn)行聯(lián)邦成員軟件的開發(fā)過程是一個(gè)繁瑣、枯燥而且容易出錯的過程,RTI雖然提供了HLA接口規(guī)范的所有功能,但是它把聯(lián)邦成員狀態(tài)管理的職責(zé)留給了開發(fā)者,也沒有提供可以使聯(lián)邦成員開發(fā)工作更容易完成的高層功能。這樣,聯(lián)邦中各聯(lián)邦成員狀態(tài)的管理中存在大量的通用功能都需要在各聯(lián)邦成員的代碼中重復(fù)實(shí)現(xiàn),不僅浪費(fèi)了大量的時(shí)間,還將導(dǎo)致系統(tǒng)移植性或互操作性的問題,對于錯誤的糾正也帶來了困難;同時(shí),大量的底層接口編程使聯(lián)邦開發(fā)者不得不在與RTI功能相關(guān)的函數(shù)調(diào)用上花費(fèi)精力,分散了本該集中到仿真功能實(shí)現(xiàn)上的精力。此外,程序的管理和維護(hù)也對用戶提出了很高的要求。

解決以上問題的方法就是提供一種高層的集成開發(fā)環(huán)境(IDE),支持HLA兼容的聯(lián)邦成員軟件快速開發(fā)。目前已有的HLA聯(lián)邦開發(fā)工具基本都是基于MFC框架結(jié)構(gòu)的,并且固定了其結(jié)構(gòu)和內(nèi)部調(diào)用流程,如果使用這些工具必須要遵循他們的框架結(jié)構(gòu)和規(guī)則,這將導(dǎo)致許多已經(jīng)開發(fā)好的仿真應(yīng)用必須重新開發(fā)。為了將那些已經(jīng)存在的、可以重用的、適合作為聯(lián)邦成員的仿真應(yīng)用改造成為與HLA兼容的聯(lián)邦成員,就必須對這些仿真應(yīng)用的軟件接口進(jìn)行修改,通過RTI完成系統(tǒng)的集成和交互。

本文基于網(wǎng)絡(luò)接口的HLA軟件開發(fā)環(huán)境(HLAComGenCode),將那些已經(jīng)存在的、可以重用的仿真應(yīng)用改造成為與HLA兼容的聯(lián)邦成員。為了方便系統(tǒng)中各臺位代碼的易于維護(hù)性,對整個(gè)聯(lián)邦的Rti交互部分代碼進(jìn)行統(tǒng)一設(shè)計(jì),由系統(tǒng)中各臺位之間的接口文件,自動生成一個(gè)聯(lián)邦的Fed文件和各聯(lián)邦成員的Rti交互代碼文件。

2 系統(tǒng)設(shè)計(jì)

開展HLA軟件環(huán)境的設(shè)計(jì),必需先明確其目標(biāo)和功能,設(shè)計(jì)聯(lián)邦成員調(diào)度的通用框架,再針對此通用框架開展通用模塊代碼生成軟件的設(shè)計(jì)。

2.1 系統(tǒng)功能設(shè)計(jì)

HLA通用模塊代碼生成軟件是針對目前所建立的一些仿真系統(tǒng)中采用HLA方式進(jìn)行通信,由于系統(tǒng)總體詳細(xì)設(shè)計(jì)中已經(jīng)提供了系統(tǒng)中各臺位之間的接口關(guān)系,為了方便系統(tǒng)中各臺位代碼的維護(hù),從而使用HLAComGenCode來生成一個(gè)仿真測試系統(tǒng)的Fed文件和各個(gè)臺位通信需要嵌入的HLA代碼文件。

HLA通用模塊代碼生成軟件應(yīng)具有Fed文件自動生成功能、HLA通用模塊源代碼文件自動生成功能和系統(tǒng)聯(lián)邦信息存儲功能。

1)Fed文件自動生成功能

能根據(jù)系統(tǒng)定義的接口報(bào)文,自動生成系統(tǒng)構(gòu)成的聯(lián)邦運(yùn)行過程中需要的Fed文件。

2)HLA通用模塊源代碼文件自動生成功能

該功能的主要任務(wù)是能夠根據(jù)系統(tǒng)已經(jīng)定義好的接口文件(包括文件名稱、接口的結(jié)構(gòu)定義、系統(tǒng)中各臺位名稱及各臺位之間信息交互關(guān)系等),自動生成系統(tǒng)各個(gè)臺位可以共同使用的通用通信模塊,即各臺位的開發(fā)者可以通過通用的接口調(diào)用規(guī)則就可以完成數(shù)據(jù)的收發(fā)。

3)系統(tǒng)設(shè)置信息存儲功能

可以將用戶通過界面設(shè)置的系統(tǒng)的基本信息保存在設(shè)置文件中,需要時(shí)可以打開原有的設(shè)置文件,對其進(jìn)行編輯,重新生成系統(tǒng)的HLA通用模塊代碼。

2.2 聯(lián)邦成員通用框架設(shè)計(jì)

為了實(shí)現(xiàn)聯(lián)邦成員代碼的通用化設(shè)計(jì),必須設(shè)計(jì)一個(gè)通用的HLA聯(lián)邦成員調(diào)度框架,來實(shí)現(xiàn)頂層應(yīng)用與HLA代碼之間的通信,設(shè)計(jì)的聯(lián)邦成員通用框架如圖1所示。

圖1 HLA聯(lián)邦成員通用框架的組成圖

HLA聯(lián)邦成員接口部分代碼以構(gòu)件形式開發(fā),主要完成HLA體系結(jié)構(gòu)下聯(lián)邦中各聯(lián)邦成員之間的數(shù)據(jù)接收、發(fā)送和時(shí)間推進(jìn)等功能,實(shí)現(xiàn)從創(chuàng)建聯(lián)邦、加入聯(lián)邦、接收/發(fā)送數(shù)據(jù)、退出撤銷聯(lián)邦的全生命周期的聯(lián)邦管理,主要由成員初始化、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、時(shí)間推進(jìn)、成員結(jié)束組成,各構(gòu)件的主要功能及接口形式如下。

1)成員初始化

創(chuàng)建RTI管理線程,在沒有聯(lián)邦存在前提下的,完成各聯(lián)邦成員創(chuàng)建和加入聯(lián)邦、初始化成員數(shù)據(jù)、成員數(shù)據(jù)公布和訂購關(guān)系的建立、時(shí)間管理策略的設(shè)置。接口函數(shù)的調(diào)用形式為:

void HLAInit(int sendEquipment);

其中,sendEquipment為系統(tǒng)中的臺位編號。

2)數(shù)據(jù)發(fā)送

根據(jù)數(shù)據(jù)的類型完成對已公布對象類和交互類數(shù)據(jù)的發(fā)送過程。接口函數(shù)的調(diào)用形式為:

void HLAUpdate(int MessageType, void *prt);

其中,MessageType為接收數(shù)據(jù)的類型,prt為接收到數(shù)據(jù)的內(nèi)容。

3)數(shù)據(jù)接收

提供根據(jù)數(shù)據(jù)類型接收數(shù)據(jù)的回調(diào)函數(shù),用戶可以在其中接收已經(jīng)訂購的對象類和交互類數(shù)據(jù)的接口。接口函數(shù)的調(diào)用形式為:

extern void DoReceive(int MessageType, char*prt);

其中,MessageType為接收數(shù)據(jù)的類型,prt為接收到數(shù)據(jù)的內(nèi)容。

4)時(shí)間推進(jìn)

根據(jù)聯(lián)邦成員的時(shí)間推進(jìn)請求完成各聯(lián)邦成員的仿真時(shí)間的協(xié)同推進(jìn),并保證正確地實(shí)現(xiàn)聯(lián)邦成員間仿真時(shí)間的協(xié)調(diào)推進(jìn)和數(shù)據(jù)交換。

void HLAAdvanceTime(double advTime);

其中,advTime為成員要推進(jìn)到的仿真時(shí)間。

5)成員退出

完成聯(lián)邦成員在仿真結(jié)束時(shí)退出和撤銷聯(lián)邦執(zhí)行。

void HLAClose()。

2.3 HLA通用模塊代碼生成軟件設(shè)計(jì)

HLA通用模塊代碼生成軟件應(yīng)由聯(lián)邦信息管理、Fed文件生成、HLA代碼生成、加載存儲等幾部分組成。其中,聯(lián)邦信息管理主要是完成聯(lián)邦、聯(lián)邦成員的信息設(shè)置和管理,聯(lián)邦信息包括系統(tǒng)的名稱、系統(tǒng)中對象類/交互類信息,聯(lián)邦成員信息包括聯(lián)邦成員的名稱、時(shí)間管理策略、時(shí)間步長、成員公布/訂購關(guān)系,成員公布/訂購關(guān)系完成每個(gè)成員公布對象類、交互類,訂購對象類、交互類的設(shè)置。

Fed文件生成部分主要根據(jù)HLA1.3的聯(lián)邦執(zhí)行數(shù)據(jù)文件的結(jié)構(gòu)、語法規(guī)則,將在聯(lián)邦信息管理中用戶設(shè)置的信息存儲為Fed文件,包括:聯(lián)邦名稱、RTI版本號信息、對象類信息、交互類信息。

HLA代碼生成部分主要完成獲取聯(lián)邦的設(shè)置信息,生成聯(lián)邦成員接口文件,包括HLAMaro.h,HLACommLib.h, HLACommLib.cpp, RtiAmbManage.h,RtiAmbManage.cpp, RtiManageTread.cpp, RtiManage FederateAmbassador.h,RtiManageFederateAmbassador.cpp, DoReceive.cpp九個(gè)文件。其中,HLAMaro.h包含聯(lián)邦中對象類、交互類的標(biāo)識,每個(gè)對象類的屬性個(gè)數(shù)、交互類的參數(shù)個(gè)數(shù)信息;HLACommLib.h 、HLACommLib.lib完成成員初始化、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收、時(shí)間推進(jìn)、成員結(jié)束的接口(2.2中介紹的五個(gè)頂層接口);RtiAmbManage.h、RtiAmbManage.cpp完成聯(lián)邦成員調(diào)用Rti服務(wù)的定義,聯(lián)邦成員初始化、創(chuàng)建和加入聯(lián)邦、設(shè)置時(shí)間管理策略、設(shè)置公布和訂購關(guān)系、注冊對象實(shí)例、更新屬性、發(fā)送交互、反射屬性、發(fā)現(xiàn)對象實(shí)例、接收交互、時(shí)間推進(jìn)、退出和撤銷聯(lián)邦(2.2中介紹的十二個(gè)底層接口);RtiManageTread.cpp完成RtiAmbManage提供的接口的調(diào)度;RtiManageFederateAmbassador.h、RtiManageFederateAmbassador.cpp定義回調(diào)函數(shù)的原型;DoReceive.cpp根據(jù)用戶定義的接口文件,將用戶接收的對象屬性和交互參數(shù)發(fā)送給用戶。因此,生成的文件中與用戶直接交互的只有HLACommLib.h和DoReceive.cpp兩個(gè)文件,其中,用戶需要調(diào)用的接口在HLACommLib.h文件中定義,用戶接收的信息在DoReceive.cpp文件中處理。此外,生成的代碼也可以使用動態(tài)鏈接庫的形式,即提供HLACommLib.h和HLACommLib.lib文件,用戶需要重載DoReceive函數(shù)即可。

加載存儲部分主要文件對用戶設(shè)置的聯(lián)邦信息進(jìn)行有效性檢測,并存儲到用戶指定位置,在以后系統(tǒng)運(yùn)行時(shí)可以自動加載,存儲的信息包括聯(lián)邦設(shè)置信息和聯(lián)邦成員設(shè)置信息。

3 軟件實(shí)現(xiàn)及應(yīng)用

3.1 軟件實(shí)現(xiàn)

1)聯(lián)邦信息管理

開發(fā)用戶輸入系統(tǒng)信息的界面,完成聯(lián)邦信息的設(shè)置和管理。用戶在聯(lián)邦信息設(shè)置中輸入系統(tǒng)的名稱、接口定義文件名稱、接口類型定義文件名稱、臺位信息定義文件名稱(這些文件可以不止一個(gè),總數(shù)目<10),在對象類/交互類信息列表中輸入對象類/交互類的結(jié)構(gòu)名、結(jié)構(gòu)內(nèi)容、對應(yīng)的報(bào)文類型定義,在臺位信息設(shè)置中可以輸入臺位的名稱、臺位的時(shí)間策略、臺位的推進(jìn)時(shí)間步長、臺位發(fā)送/接收的對象類/交互類名稱,利用這些信息來生成系統(tǒng)的HLA通用模塊需要的源文件,聯(lián)邦信息設(shè)置和聯(lián)邦成員公布訂購信息設(shè)置的界面如圖2、圖3所示。

2)Fed文件生成實(shí)現(xiàn)

Fed文件生成主要是根據(jù)用戶在上面設(shè)置的聯(lián)邦信息,生成聯(lián)邦交互過程中的執(zhí)行數(shù)據(jù)文件,圖4為用記事本打開的生成后的Fed文件。

圖2 聯(lián)邦信息設(shè)置界面

圖3 聯(lián)邦成員公布訂購信息設(shè)置界面

圖4 使用記事本打開的生成后fed文件

3)HLA代碼生成實(shí)現(xiàn)

HLA代碼生成部分主要代碼如下:

4)加載存儲實(shí)現(xiàn)

系統(tǒng)信息存儲調(diào)用系統(tǒng)的CFileDialog的功能,將HLA聯(lián)邦信息存儲為*.hsf文件。其中存儲的信息包括系統(tǒng)名稱、接口文件名稱、對象類公布訂購設(shè)置信息、交互類公布訂購設(shè)置信息、聯(lián)邦成員設(shè)置信息,聯(lián)邦成員設(shè)置信息包括每個(gè)成員名稱、時(shí)間策略、時(shí)間步長和公布訂購關(guān)系。

3.2 系統(tǒng)應(yīng)用

基于網(wǎng)絡(luò)的HLA軟件開發(fā)環(huán)境可有效解決仿真模型、仿真系統(tǒng)之間的互操作和可重用等問題,既可用其對已有開發(fā)的仿真軟件和仿真系統(tǒng)進(jìn)行HLA改造,也可用于對新的仿真系統(tǒng)的開發(fā)。使用HLA軟件開發(fā)環(huán)境開發(fā)聯(lián)邦成員軟件,使得開發(fā)者不必要理解HLA/RTI的實(shí)現(xiàn)機(jī)制和API編程,就能夠進(jìn)行成員軟件的開發(fā),極大降低了聯(lián)邦成員軟件的開發(fā)難度,提高開發(fā)效率,使成員軟件開發(fā)者把精力集中于仿真功能的開發(fā)和實(shí)現(xiàn)。使用該軟件生成的HLA代碼,在航空、航天、船舶、兵器及核工業(yè)等領(lǐng)域的仿真系統(tǒng)中得到了廣泛的應(yīng)用,如在多項(xiàng)水面、水下仿真系統(tǒng)和仿真測試系統(tǒng)研究與應(yīng)用周,就采用了HLA和DIS兩種體系結(jié)構(gòu)。

4 結(jié)束語

本文在分析了HLA外聯(lián)邦成員開發(fā)工具的基礎(chǔ)上對HLA軟件開發(fā)環(huán)境展開深入研究,提出了基于網(wǎng)絡(luò)接口進(jìn)行HLA改造的方法,并詳細(xì)描述了聯(lián)邦成員通用框架和HLA通用模塊代碼生成軟件的設(shè)計(jì),在此基礎(chǔ)上介紹了軟件實(shí)現(xiàn)的方法和部分代碼,簡要概括了該軟件的應(yīng)用情況。

目前,HLA正在向HLA evolve發(fā)展,其接口規(guī)范與現(xiàn)有的HLA1.3和HLA1516都有一定的修改,并且HLA evolve必將成為HLA未來的標(biāo)準(zhǔn)。因此,在HLA evolve的接口規(guī)范的標(biāo)準(zhǔn)公布后,本文介紹HLA軟件開發(fā)環(huán)境也將根據(jù)其標(biāo)準(zhǔn)進(jìn)行適應(yīng)性修改,支持HLA evolve的標(biāo)準(zhǔn)。

[1]DMSO. High-Level Architecture Rules(Version 1.3)[S]. 5 February ,1998.

[2]DMSO. High-Level Architecture Interface Specification(Version 1.3)[S]. 2 April ,1998.

[3]周彥,戴劍偉. HLA仿真程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,1993.

[4]馮潤明. HLA聯(lián)邦成員軟件開發(fā)環(huán)境研究[J].系統(tǒng)仿真學(xué)報(bào),2002,13(3):267-270.

[5]樊巍. 基于HLA/RTI盟員開發(fā)環(huán)境的研究[J].計(jì)算機(jī)仿真,2005,22(12):245-247.

猜你喜歡
聯(lián)邦成員設(shè)置
主編及編委會成員簡介
聯(lián)邦學(xué)習(xí)在金融數(shù)據(jù)安全領(lǐng)域的研究與應(yīng)用
主編及編委會成員簡介
主編及編委會成員簡介
主編及編委會成員簡介
中隊(duì)崗位該如何設(shè)置
一“炮”而紅 音聯(lián)邦SVSound 2000 Pro品鑒會完滿舉行
船舶防火結(jié)構(gòu)及設(shè)置的缺陷與整改
303A深圳市音聯(lián)邦電氣有限公司
7招教你手動設(shè)置參數(shù)
阿图什市| 仁化县| 拜泉县| 金门县| 吉林省| 唐山市| 桑植县| 四子王旗| 贵阳市| 镇平县| 塔城市| 邯郸市| 金湖县| 泉州市| 莱阳市| 莲花县| 六盘水市| 峨眉山市| 阜新市| 阿拉善右旗| 巴南区| 贺州市| 邹城市| 沂南县| 云安县| 新化县| 衢州市| 靖宇县| 武胜县| 大安市| 阳朔县| 浦东新区| 永登县| 长海县| 海南省| 军事| 横峰县| 三原县| 塘沽区| 桐梓县| 上思县|