亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Simulink模型接入運(yùn)行支撐系統(tǒng)的插件式技術(shù)

        2021-05-31 10:25:30金雪松申立群
        關(guān)鍵詞:次序插件數(shù)值

        胡 濤,金雪松,申立群+,劉 磊

        (1.哈爾濱工業(yè)大學(xué) 儀器科學(xué)與工程學(xué)院,黑龍江 哈爾濱 150001;2.哈爾濱商業(yè)大學(xué) 計算機(jī)與信息工程學(xué)院,黑龍江 哈爾濱 150028)

        0 引言

        Simulink是MATLAB提供的建模、分析和仿真工具,其支持可視化建模的特點(diǎn)降低了仿真模型的開發(fā)難度,從而得到了廣泛應(yīng)用[1]。然而Simulink本身運(yùn)行在單機(jī)環(huán)境,若將其應(yīng)用到多機(jī)參與的分布式仿真系統(tǒng)中,則需開發(fā)仿真模型間的通信功能,而高層體系結(jié)構(gòu)(High Level Architecture, HLA)提供了一套標(biāo)準(zhǔn)的分布式仿真系統(tǒng)構(gòu)建規(guī)范,開發(fā)人員可依此對仿真網(wǎng)絡(luò)通信部分進(jìn)行開發(fā)[2-3]。另一方面,在分布式仿真系統(tǒng)中,使用Simulink搭建數(shù)值計算模型比手寫代碼更加簡單和高效,可以節(jié)約開發(fā)時間。因此,將Simulink模型接入HLA仿真系統(tǒng)的核心組件運(yùn)行支撐系統(tǒng)(Run-Time Infrastructure, RTI),參與HLA分布式仿真,具有很強(qiáng)的現(xiàn)實(shí)意義[4]?,F(xiàn)有的Simulink模型接入方法使用起來比較繁瑣,而且隨著需要接入Simulink模型數(shù)目的增加,仿真系統(tǒng)的開發(fā)效率越來越低。

        插件技術(shù)不用在開發(fā)設(shè)計過程中修改主體軟件程序源代碼,就可以有效擴(kuò)展軟件程序功能。結(jié)合不同需求,選擇載入不同的功能插件,能夠加快軟件程序的開發(fā)進(jìn)度,從而方便、輕松地使軟件具備新功能,節(jié)省開發(fā)成本[5]。動態(tài)鏈接庫是一種常見的插件技術(shù)[6],本文將動態(tài)鏈接庫插件技術(shù)應(yīng)用于Simulink模型接入RTI方法,對基于插件的接入方法進(jìn)行了研究。該方法將數(shù)值計算模塊作為單獨(dú)的功能模塊提取出來,以動態(tài)鏈接庫插件的形式載入,邦員程序調(diào)用流程時只需約定的接口規(guī)范,無需考慮實(shí)現(xiàn)細(xì)節(jié),因此可以滿足不同Simulink模型的接入需求,具有較好的通用性。與其他接入方法相比,該方法兼顧避免重復(fù)開發(fā)、不需要MATLAB運(yùn)行環(huán)境、模型運(yùn)行效率高和實(shí)現(xiàn)簡單等需求,用戶可以在不手動修改數(shù)值計算程序源碼的情況下進(jìn)行Simulink模型的接入工作,有效提高了HLA仿真聯(lián)邦的開發(fā)效率。

        1 接入方案設(shè)計

        MATLAB提供的RTW(real-time workshop)工具可以將Simulink模型轉(zhuǎn)化為C++代碼程序[7],由RTW生成C++代碼程序是Simulink模型接入RTI工作的起點(diǎn)和基礎(chǔ)。

        1.1 現(xiàn)有接入方法分析

        現(xiàn)有的3種接入方法分別為在RTW生成C++代碼中嵌入RTI編程接口、在邦員程序中調(diào)用MATLAB引擎、使用S-Function編寫RTI通信模塊[8-10]。3種接入方法的原理如圖1所示。

        如圖1所示,方法1對RTW生成的C++代碼進(jìn)行分析,并在合適的位置手工編寫符合HLA協(xié)議規(guī)范的RTI通信接口,缺點(diǎn)是接入不同模型時需要重復(fù)全部開發(fā)流程,接入效率較低;方法2在邦員程序中調(diào)用MATLAB引擎接口驅(qū)動Simulink模型來計算仿真數(shù)值,缺點(diǎn)是仿真系統(tǒng)運(yùn)行在MATLAB環(huán)境下,且與MATLAB進(jìn)程間通信,導(dǎo)致運(yùn)行效率不高;方法3采用S-Function語法編寫嵌入RTI接口的仿真數(shù)據(jù)通信模型,通過RTW直接生成邦員程序代碼,缺點(diǎn)是使用S-Function語法開發(fā)滿足HLA技術(shù)規(guī)范的接口難度較大,方法實(shí)現(xiàn)比較困難。這些方法均未將仿真計算模塊從邦員程序中進(jìn)行外部抽離,編譯生成邦員程序后無法替換Simulink模型,而且不同的Simulink模型接入RTI均需重新修改源碼、編譯鏈接生成邦員程序,其步驟繁瑣,影響開發(fā)效率。

        1.2 基于插件的接入方案設(shè)計

        結(jié)合常見的3種接入方法的缺點(diǎn),對基于插件的Simulink模型接入RTI方法進(jìn)行研究。該方法充分利用插件技術(shù)的優(yōu)勢,將Simulink模型轉(zhuǎn)換為動態(tài)鏈接庫,仿真初始化時由邦員程序載入,不同Simulink模型接入RTI時無需手動修改任何源代碼,其原理如圖2所示。

        方法流程描述如下:首先將RTW生成C++源文件中的接口進(jìn)行包裝,編譯生成動態(tài)鏈接庫插件;然后在邦員程序初始化時載入該插件,并進(jìn)行數(shù)據(jù)綁定及仿真數(shù)據(jù)更新,完成接入仿真聯(lián)邦工作。在該方法中,邦員程序的通信模塊與數(shù)值計算模塊耦合度低,數(shù)值計算模塊以獨(dú)立的模塊形式存在,運(yùn)行時以動態(tài)鏈接庫插件的形式載入,邦員程序采用約定的接口規(guī)范進(jìn)行調(diào)用,因?yàn)榭梢詫⑼话顔T程序接入滿足接口的不同Simulink模型,所以插件方法的通用性較好。該方法可以避免重復(fù)開發(fā),而且不需要MATLAB運(yùn)行環(huán)境,所采用的動態(tài)鏈接庫插件形式還可以達(dá)到模型運(yùn)行效率高和實(shí)現(xiàn)簡單的目的。

        1.3 插件方法和其他常用方法的對比分析

        從前面的分析可見,插件方法具有優(yōu)越性,與其他方法的對比總結(jié)如表1所示。

        表1 幾種接入方法的對比

        由表1可以看出,其他幾種常用方法都有明顯的缺陷,而基于插件的接入方法集合各種方法的優(yōu)點(diǎn),通過載入數(shù)值模型動態(tài)鏈接庫,使運(yùn)行時計算模塊和通信模塊處于同一進(jìn)程,相比調(diào)用MATLAB引擎的接入方式具有更高的運(yùn)行效率,而且通過進(jìn)行統(tǒng)一的接口適配包裝和數(shù)據(jù)綁定,編寫統(tǒng)一的調(diào)用流程,相比修改Simulink生成源文件的方法具有更強(qiáng)的通用性;另外,由于S-Function語法復(fù)雜,該接入方法具有更高的開發(fā)效率。

        2 接入實(shí)現(xiàn)步驟

        基于插件的Simulink模型接入RTI方法的關(guān)鍵步驟包括:①對RTW生成C++源文件的接口適配包裝;②仿真數(shù)據(jù)綁定;③仿真運(yùn)行時的數(shù)據(jù)更新。

        2.1 接口適配包裝

        由RTW生成的代碼需要根據(jù)約定的接口規(guī)則進(jìn)行接口適配包裝操作,使其能夠被邦員程序正確調(diào)用,完成仿真數(shù)值計算。對仿真推進(jìn)過程進(jìn)行抽象后可知,為滿足數(shù)值計算功能,需提供模型初始化、模型停止運(yùn)行、模型單步推進(jìn)、獲取模型輸入數(shù)據(jù)指針、獲取模型輸出數(shù)據(jù)指針、查詢模型狀態(tài)6個關(guān)鍵接口。約定調(diào)用規(guī)范如圖3所示。

        分析RTW生成的C++源代碼,在Simulink中所定義模型名的基礎(chǔ)上,對相應(yīng)模型的對象類、輸入數(shù)據(jù)結(jié)構(gòu)體、輸出數(shù)據(jù)結(jié)構(gòu)體和單步推進(jìn)接口進(jìn)行規(guī)范命名,然后基于該命名規(guī)則,通過宏定義進(jìn)行字符串替換,以滿足接口規(guī)范的要求。在對不同數(shù)值模型進(jìn)行接口適配時,只需采用統(tǒng)一的包裝接口文件對不同的模型名稱進(jìn)行宏定義即可。接口適配包裝完畢后,調(diào)用C++編譯器對源文件進(jìn)行編譯鏈接生成模型計算動態(tài)鏈接庫,邦員程序初始化時載入動態(tài)鏈接庫插件,按照約定的調(diào)用規(guī)范調(diào)用接口,即可使用Simulink模型的計算功能。

        2.2 仿真數(shù)據(jù)綁定

        在邦員程序中,將仿真通信模塊的輸入和輸出與數(shù)值計算模塊的輸入和輸出對應(yīng)綁定,實(shí)現(xiàn)邦員程序中通信模塊與計算模塊的數(shù)據(jù)共享。以火箭飛行仿真中六自由度Simulink模型為例進(jìn)行分析,封裝后的模型如圖4所示,采用RTW對該六自由度模型生成代碼中的輸入、輸出結(jié)構(gòu)體的定義如圖5與圖6所示。

        由圖4~圖6可知,模型圖中輸入、輸出的參數(shù)定義排布次序與生成代碼結(jié)構(gòu)體中的參數(shù)排布次序相同,模型圖中對應(yīng)的參數(shù)維數(shù)體現(xiàn)在生成代碼結(jié)構(gòu)體中參數(shù)數(shù)組的維數(shù)上。由C++內(nèi)存模型可知,當(dāng)結(jié)構(gòu)體中的參數(shù)數(shù)據(jù)類型相同時,參數(shù)在結(jié)構(gòu)體內(nèi)存中按定義順序依次排布[11-12],因此相等的Simulink模型圖中屬性的排布次序,與生成代碼結(jié)構(gòu)體中屬性的定義次序,對應(yīng)同一屬性參數(shù)。例如圖4輸入的第2次序?qū)傩詤?shù),與生成代碼結(jié)構(gòu)體中第2次序?qū)?yīng)的屬性參數(shù)相同,均為火箭受到的合力矩參數(shù)。根據(jù)以上分析,可以以同樣的方式對數(shù)據(jù)進(jìn)行綁定,以達(dá)到接口兼容的目的。

        基于上述方法對仿真數(shù)據(jù)進(jìn)行綁定,在存儲構(gòu)造的映射關(guān)系時常選用map數(shù)據(jù)結(jié)構(gòu)[13]。從RTI接收數(shù)據(jù)的回調(diào)函數(shù)參數(shù)出發(fā),參數(shù)包括接收數(shù)據(jù)的對象句柄,具體映射關(guān)系為由屬性句柄作為鍵,屬性值作為值。用數(shù)據(jù)源對象句柄和屬性句柄構(gòu)造唯一的屬性標(biāo)識,將唯一的屬性標(biāo)識與該屬性在Simulink模型中的輸入數(shù)據(jù)排序次序進(jìn)行綁定,構(gòu)造映射關(guān)系并采用map數(shù)據(jù)結(jié)構(gòu)保存,即完成輸入數(shù)據(jù)綁定。輸出數(shù)據(jù)綁定原理類似,不再贅述。綁定流程如圖7所示。

        在訂閱數(shù)據(jù)綁定流程中,s_map1為邦員程序中數(shù)值計算模塊的各輸入屬性在Simulink中的排序次序和訂閱屬性名的映射集;s_map2為訂閱屬性名與由RTI分配的訂閱屬性句柄的映射集;s_map3為屬性標(biāo)識及其對應(yīng)Simulink計算模型中的排序次序的映射集。在發(fā)布數(shù)據(jù)綁定流程中,p_map1為邦員程序中數(shù)值計算模塊各輸出屬性在Simulink中的排序次序和發(fā)布屬性名的映射集;p_map2為發(fā)布屬性名與由RTI分配的發(fā)布屬性句柄的映射集;p_map3為發(fā)布屬性標(biāo)識及其對應(yīng)Simulink計算模型中的排序次序的映射集。數(shù)據(jù)綁定為仿真數(shù)據(jù)更新提供了映射依據(jù)。

        2.3 仿真數(shù)據(jù)更新

        當(dāng)從RTI中獲取仿真數(shù)據(jù)時,在更新數(shù)據(jù)回調(diào)中得到數(shù)據(jù)源的屬性句柄和對象句柄,通過仿真數(shù)據(jù)綁定過程構(gòu)造的映射關(guān)系,得到該更新屬性在Simulink模型中輸入的排序次序,由上述分析可知,該排序次序與更新屬性在RTW生成代碼的輸入數(shù)據(jù)結(jié)構(gòu)體中定義的排布次序相同,即可由次序值與數(shù)據(jù)類型長度的乘積得到該屬性參數(shù)在數(shù)值模型輸入結(jié)構(gòu)體內(nèi)存中的偏移量,然后用結(jié)構(gòu)體首地址加偏移的方式得到指向該更新屬性的指針,進(jìn)行數(shù)據(jù)更新工作。更新本地數(shù)據(jù)至RTI的原理類似,不再贅述。仿真數(shù)據(jù)更新流程如圖8所示,仿真運(yùn)行時依據(jù)該流程進(jìn)行數(shù)據(jù)更新,實(shí)現(xiàn)將Simulink模型接入RTI,參與HLA分布式仿真的目標(biāo)。

        3 應(yīng)用實(shí)例

        對本文的接口適配方法編寫使用操作界面如圖9所示。用戶采用該方法操作界面將Simulink模型接入RTI過程的用例描述如下:①在該方法操作界面載入RTW生成的Simulink模型C++項(xiàng)目文件;②點(diǎn)擊開始進(jìn)行轉(zhuǎn)換,等待輸出界面顯示動態(tài)鏈接生成成功;③啟動HLA邦員程序載入生成的動態(tài)鏈接。通過上述幾個簡單步驟,用戶就完成了將Simulink模型接入RTI。

        采用該方法構(gòu)建小型固體火箭分布式飛行仿真系統(tǒng),對小型固體火箭進(jìn)行飛行仿真實(shí)驗(yàn),仿真系統(tǒng)組成如圖10所示。通過Simulink進(jìn)行數(shù)值建模,其中六自由度Simulink模型的具體實(shí)現(xiàn)如圖11所示。采用本文接入方法將所有Simulink模型接入RTI,所構(gòu)建的仿真聯(lián)邦如圖12所示,其中仿真數(shù)值計算模型集為用本文方法接入的計算邦員,通過載入構(gòu)建的數(shù)值計算動態(tài)鏈接庫插件,具備了仿真計算功能;仿真支撐組件提供了相關(guān)的HLA仿真服務(wù)。采用所構(gòu)建的HLA仿真系統(tǒng)對意大利ROCKSANNE 2-ALPHA小型固體火箭進(jìn)行仿真,該型號火箭箭長4.4 m,直徑0.174 m,發(fā)動機(jī)由Cesaroni Technology Inc.公司生產(chǎn),型號為O4900-BS,設(shè)計最高點(diǎn)高度為10 km?;鸺w行軌跡仿真結(jié)果如圖13所示。

        由圖13可知,仿真飛行高度與預(yù)期的10 km射高相符,驗(yàn)證了由該方法構(gòu)建的HLA仿真聯(lián)邦的正確性,因此仿真過程中的各個仿真邦員能夠正確地收發(fā)數(shù)據(jù),證明該方法已成功地將Simulink模型接入RTI,使其可以參與分布式仿真,并實(shí)現(xiàn)不同Simulink模型間的仿真數(shù)據(jù)通信。

        對于有6個Simulink模型接入的小型固體火箭飛行仿真系統(tǒng),本文方法的優(yōu)越性得到了充分體現(xiàn)。若采用現(xiàn)有方法,則由于開發(fā)人員需要熟悉RTI編程接口或S-Function語法,且接入較繁瑣,其將在HLA系統(tǒng)的搭建上耗費(fèi)大量時間。本文方法在仿真系統(tǒng)構(gòu)建過程中未修改邦員程序,邦員程序可一直使用,接入不同Simulink模型只需替換不同的動態(tài)鏈接庫插件,整個接入過程簡單高效,開發(fā)人員可以快速、正確地搭建HLA仿真聯(lián)邦,進(jìn)行分布式仿真。本文方法適用于需要將大量Simulink模型接入RTI,構(gòu)建HLA仿真聯(lián)邦的情況。

        4 結(jié)束語

        本文從Simulink模型接入RTI,參與HLA分布式仿真的實(shí)際出發(fā),針對現(xiàn)有接入方法的不足,基于RTW提供的將Simulink模型生成C++源代碼的功能,將仿真計算模塊從邦員程序中獨(dú)立提取出來,然后基于插件方式將Simulink模型接入RTI。論文闡述了實(shí)現(xiàn)該方法涉及的關(guān)鍵流程,并采用該方法將Simulink模型接入RTI,構(gòu)建了小型固體火箭飛行仿真系統(tǒng)應(yīng)用實(shí)例,驗(yàn)證了該方法的可行性與正確性。應(yīng)用實(shí)例的構(gòu)建過程簡單快捷,充分體現(xiàn)了所提方法能夠有效提高模型的接入效率,降低分布式仿真聯(lián)邦的開發(fā)成本,具有較好的工程實(shí)用價值。本文主要側(cè)重小型固體火箭動力學(xué)的分析建模,下一步將對控制、導(dǎo)航與制導(dǎo)系統(tǒng)等進(jìn)行建模和接入。

        猜你喜歡
        次序插件數(shù)值
        《漢紀(jì)》對漢帝功業(yè)次序的重構(gòu)及其意義
        用固定數(shù)值計算
        數(shù)值大小比較“招招鮮”
        自編插件完善App Inventor與樂高機(jī)器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        生日謎題
        基于Fluent的GTAW數(shù)值模擬
        焊接(2016年2期)2016-02-27 13:01:02
        MapWindowGIS插件機(jī)制及應(yīng)用
        基于Revit MEP的插件制作探討
        放假一年
        淺談交換積分次序
        河南科技(2013年18期)2013-11-07 07:47:14
        伊人亚洲综合网色AV另类| 亚洲精品中文字幕乱码三区99| 日本va中文字幕亚洲久伊人| 亚洲成在人线视av| 国产肥熟女视频一区二区三区| 最新国产一区二区精品久久| 国产高清一区在线观看| 黄页国产精品一区二区免费| 日韩一区二区中文天堂| 精品无人区无码乱码毛片国产| 麻豆精品久久久久久久99蜜桃| 国产在线不卡AV观看| 国产精品99久久精品女同| 亚洲av区,一区二区三区色婷婷 | 国产成人亚洲综合| 天堂网在线最新版www| 国产suv精品一区二区883| 国产一区二区激情对白在线| 久久夜色精品国产亚洲av老牛 | 国产精品美女久久久浪潮av| 国产福利小视频91| 国产片在线一区二区三区| 日日碰狠狠添天天爽超碰97久久 | 久久综合99re88久久爱| 明星性猛交ⅹxxx乱大交| 精品视频一区二区三三区四区| 99久久国语露脸国产精品| 午夜亚洲精品视频在线| 久久久久久久综合综合狠狠| 牲欲强的熟妇农村老妇女| 精品久久综合一区二区| 加勒比亚洲视频在线播放| 一区二区三区免费看日本| 国产如狼似虎富婆找强壮黑人| 久久久久亚洲AV无码专区喷| a级三级三级三级在线视频| 日本人妻伦理在线播放| 色偷偷亚洲第一成人综合网址| 亚洲饱满人妻视频| 人妻尤物娇呻雪白丰挺| 国产精品日日做人人爱|