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

        ?

        C#MATLAB混合編程在汽車性能仿真平臺開發(fā)的應(yīng)用

        2018-03-06 04:28:12劉杰暢黃兵鋒羅永革李崢盛俏楊蕓蕓
        汽車實用技術(shù) 2018年3期
        關(guān)鍵詞:內(nèi)核調(diào)用編程

        劉杰暢,黃兵鋒,羅永革,李崢,盛俏,楊蕓蕓

        (1.湖北汽車工業(yè)學(xué)院汽車工程學(xué)院 汽車動力傳動與電子控制湖北省重點實驗室,湖北 十堰 442002;2.東風(fēng)汽車集團(tuán)股份有限公司技術(shù)中心,湖北 武漢 430056)

        前言

        在汽車V型開發(fā)模式中,動力性和經(jīng)濟(jì)性計算是整車設(shè)計及總成、零部件匹配的重要一環(huán)。目前,針對傳統(tǒng)車、純電動、混合動力及燃料電池等車型的計算理論和仿真平臺較為完善,其中使用最廣的是ADVISOR和AVL Cruise。前者可自由配置計算任務(wù),后者可從汽車建模開始,參數(shù)配置精細(xì)到零部件,軟件的仿真自由度更大,但同時降低了便捷性。企業(yè)中,通常需要對大量車型進(jìn)行動力性經(jīng)濟(jì)性指標(biāo)驗證,每次仿真前重新對每一款車型進(jìn)行細(xì)致的參數(shù)配置會降低工作效率。為在滿足功能的前提下提高仿真便捷性,Excel成為企業(yè)中較為普遍的計算平臺[1],但其無法避免人工輸入導(dǎo)致容易出錯且精度不高。本文結(jié)合Matlab強(qiáng)大的計算性能和C#友好的人機(jī)交互特性,以Simulink為仿真內(nèi)核,Winform應(yīng)用窗體為仿真界面,平臺繼承了ADVISOR和Cruise的仿真對象的通用性、動力總成的可調(diào)性、計算指標(biāo)的可自定義性。并以數(shù)據(jù)庫提取整車參數(shù)的方式作為創(chuàng)新點,避免了繁雜的參數(shù)設(shè)置,實現(xiàn)了工程實用性與功能性的平衡。

        1 C#與MATLAB混合編程技術(shù)

        1.1 C#與Matlab的簡介

        Microsoft Visual C# 是 Microsoft 專門為. NET 平臺而開發(fā)的一種強(qiáng)大的、面向?qū)ο蟮恼Z言,可方便快捷的在. NET公共語言運行庫 ( common language runtime, CLR) 上創(chuàng)建Windows應(yīng)用 程序[2]。C# 簡單、功能強(qiáng)大、類型安全,可縮短軟件開發(fā)周期,但是在數(shù)值計算分析和曲線繪圖方面的操作繁瑣,功能薄弱。

        將數(shù)據(jù)可視化和數(shù)值計算功能集成在一起的 Matlab軟件被廣泛地應(yīng)用于圖像處理、控制系統(tǒng)、數(shù)學(xué)建模等領(lǐng)域,具有強(qiáng)大精準(zhǔn)的仿真計算能力。Maltab的函數(shù)庫種類豐富,且接口設(shè)計完善,結(jié)構(gòu)開放易于擴(kuò)充,但Matlab軟件在用戶界面上的開發(fā)功能比較簡單、執(zhí)行效率低,難以實現(xiàn)底層數(shù)據(jù)輸入輸出的管理。Matlab軟件在用戶界面的功能上的開發(fā)還比較簡單,執(zhí)行效率低,難以實現(xiàn)底層的數(shù)據(jù)輸入輸出的管理[3]。

        為保證軟件的便捷性和工程實用性并兼顧軟件開發(fā)周期和成本,利用Matlab提供的API接口和C#COM組件將兩者聯(lián)合,充分發(fā)揮各自優(yōu)勢,同時將主程序與仿真內(nèi)核隔離開來,方便了后續(xù)的代碼修改和升級。

        1.2 混合編程的實現(xiàn)

        Matlab軟件提供了三種應(yīng)用程序接口(API)方式[4]:1)調(diào)用Matlab模塊所生成的動態(tài)鏈接庫(DLL)。2)通過引用Matlab COM組件,訪問Matlab內(nèi)置函數(shù)。3)利用 Matlab 編譯器來創(chuàng)建 C #語言共享庫,創(chuàng)建一個能提供方法入口的包裝類[5]。其中,方法一的編程接口和編程方式較特殊,需另外學(xué)習(xí),降低了開發(fā)周期。方法三使用的函數(shù)有一定局限性,僅限于數(shù)學(xué)函數(shù)庫且無法使用 Matlab強(qiáng)大的圖形處理功能[6]。而方法二是嵌入式編程,調(diào)試簡單方便,不需要進(jìn)行復(fù)雜的接口設(shè)計,并能執(zhí)行所有Matlab命令,因此本文選用第二種方式, 結(jié)果證明此方法能在縮短開發(fā)周期的同時充分發(fā)揮Matlab強(qiáng)大函數(shù)庫的優(yōu)勢。

        方法二的調(diào)用原理如下:利用.NET 環(huán)境的運算庫可調(diào)用包裝(Runtime Callable Wrapperm, RCW),將 COM 組件提供的 COM 接口轉(zhuǎn)換為與.NET 框架兼容的接口,使托管客戶端(C#)在調(diào)用一個 COM 組件時認(rèn)為是在自身的環(huán)境中調(diào)用對象,而不需要處理 COM 特性。通過 RCW,C#可以在.NET 環(huán)境下作為一個 COM 應(yīng)用的客戶端訪問 COM組件,提出數(shù)據(jù)請求。實現(xiàn)步驟如下:

        1)添加 COM(Matlab Application(Version7.11) Type Library)引用。加入對程序集文件“MWArray.dll”的引用,并加入命名空間:

        usingMathWorks.Matlab.NET.Arrays;

        using MathWorks.Matlab.NET.Utility

        2)在Main函數(shù)中添加如下代碼:

        MLApp.MLAppClass matlab = new MLApp. MLApp Class();

        利用Matlab com組件中的函數(shù)執(zhí)行Matlab命令,所調(diào)用的函數(shù)及功能如下表1所示:

        表1 Matlab com組件調(diào)用函數(shù)

        2 軟件設(shè)計

        圖1 軟件架構(gòu)設(shè)計

        平臺的仿真對象涵蓋傳統(tǒng)汽車、混合動力、純電動汽車、燃料電池汽車四大類型。為提高工程實用性,避免繁雜的參數(shù)設(shè)置,平臺需支持Excel格式和數(shù)據(jù)庫格式的參數(shù)導(dǎo)入導(dǎo)出功能。平臺以C#應(yīng)用窗體(Winform)作為人機(jī)交互界面,以Simulink程序作為仿真內(nèi)核,并將指標(biāo)計算的函數(shù)封裝,通過Matlab的COM組件執(zhí)行運算。軟件架構(gòu)設(shè)計如圖1所示:

        2.1 流程設(shè)計

        根據(jù)軟件的需求定義,采用 “自上而下”的模塊式開發(fā)流程完成各個子系統(tǒng)架構(gòu),模塊設(shè)計、數(shù)據(jù)流和接口設(shè)計。軟件的流程圖如圖2所示:

        圖2 軟件流程圖

        2.2 界面設(shè)計

        指標(biāo)的仿真分三個過程:1.汽車配置。2.計算指標(biāo)配置.3.執(zhí)行運算顯示結(jié)果??紤]到界面的友好性,將主界面針對過程1和2分為兩個窗口。如圖3所示。建模部分可從外部導(dǎo)入數(shù)據(jù)也可手動填寫,計算指標(biāo)根據(jù)汽車類型的選擇而變化,通過工具欄中的Matlab按鈕調(diào)用仿真內(nèi)核開始計算。整個界面主體突出,交互友好,使用方便。

        圖3 軟件主界面

        3 批量數(shù)據(jù)傳輸

        平臺的計算對象涉及傳統(tǒng)車、純電動、混合動力、燃料電池汽車,因此仿真內(nèi)核的參數(shù)高達(dá) 470個。為實現(xiàn) C#與matlab平臺的大量數(shù)據(jù)傳輸,采用C#類屬性反射遍歷技術(shù)。

        反射是C#.NET的一種重要機(jī)制,它表示在程序運行時對一個程序集的類型元數(shù)據(jù)的使用,好比我們可以將一個程序集進(jìn)行映像,在此映像中我們可以從中獲取需要的類型元數(shù)據(jù),從而完成相應(yīng)的功能[7]。

        對應(yīng)某個類的實例化的對象采用遍歷反射技術(shù),可以動態(tài)地取得類的成員:類、接口、結(jié)構(gòu)、枚舉和委托等。建立變量類,通過反射技術(shù)訪問變量的get、set屬性,獲取變量名和相應(yīng)的值,便可進(jìn)行跨平臺傳輸。關(guān)鍵代碼如下:

        4 數(shù)據(jù)管理

        數(shù)據(jù)管理涉及用戶登錄,文件新建、打開、保存。歷史記錄存儲、對比等。仿真過程中,車輛的輸入?yún)?shù)及結(jié)果狀態(tài)如圖4所示。

        圖4 窗體切換時的數(shù)據(jù)狀態(tài)圖

        狀態(tài)圖中的變量定義如下表:

        表2

        對于非靜態(tài)變量,每一次狀態(tài)的轉(zhuǎn)換,都需要實例化一個新的變量類,而變量類中的數(shù)據(jù)量龐大,結(jié)構(gòu)復(fù)雜, C#提供的淺拷貝函數(shù)只對頂級對象進(jìn)行復(fù)制,不足以滿足克隆全部數(shù)據(jù)的要求,但深拷貝技術(shù)術(shù)不僅可以復(fù)制對象,還可以復(fù)制其子對象。

        利用這一技術(shù)編寫拷貝構(gòu)造函數(shù),實現(xiàn)基于同一類的其他對象的構(gòu)造和初始化,從而將同類變量在不同窗體和不同狀態(tài)之間完整傳遞。代碼應(yīng)用序列化和反序列化的思路將變量逐個檢索并復(fù)制。

        5 計算分析實例

        軟件對一輛EV汽車進(jìn)行了動力經(jīng)濟(jì)性仿真,配置了車型參數(shù),定制了計算任務(wù)。在參數(shù)、計算任務(wù)均相同的情況下,將采用了混合編程技術(shù)的仿真平臺計算結(jié)果與仿真內(nèi)核獨立運行的結(jié)果進(jìn)行對比,如表3:

        表3 平臺與仿真內(nèi)核結(jié)果對比

        結(jié)果表明采用C#調(diào)用Matlab的混合編程方式對計算結(jié)果不會產(chǎn)生影響。并且,良好的人機(jī)交互界面使仿真更為簡單,同時與Excel數(shù)據(jù)的交互避免了繁雜的參數(shù)設(shè)置,增強(qiáng)了工程實用性,說明C#與Matlab混合編程技術(shù)在整車動力性經(jīng)濟(jì)性仿真中的應(yīng)用是切實可行的。

        6 結(jié)論

        系統(tǒng)以人機(jī)交互界面調(diào)用仿真內(nèi)核的形式將車型及任務(wù)配置程序與動力性經(jīng)濟(jì)性計算模型隔離開來,通過嚴(yán)格定義的接口相連,降低了代碼耦合性,從而提升了功能擴(kuò)展性。仿真內(nèi)核以Simulink作為建模平臺,可充分發(fā)揮matlab強(qiáng)大的計算性能。界面采用C#winform應(yīng)用窗體,利用C#COM組件調(diào)用matlab運行仿真內(nèi)核,將matlab強(qiáng)大的仿真性能和c#友好的人機(jī)交互界面統(tǒng)一起來,揚長避短,在有限的開發(fā)周期內(nèi)充分發(fā)揮兩者的優(yōu)勢。

        通過C#調(diào)用Matlab進(jìn)行的性能仿真與Matlab單獨仿真的計算結(jié)果完全一致,證明了本文的方法可行,且為整車性能仿真平臺的開發(fā)提供了新思路。

        [1] 謝衛(wèi)兵. MATLAB在汽車動力性、經(jīng)濟(jì)性仿真中的應(yīng)用[A]. 全國各省區(qū)市機(jī)械工程學(xué)會、云南省機(jī)械工程學(xué)會.2015年第五屆全國地方機(jī)械工程學(xué)會學(xué)術(shù)年會暨中國制造2025發(fā)展論壇論文集[C].全國各省區(qū)市機(jī)械工程學(xué)會、云南省機(jī)械工程學(xué)會:2015:18.

        [2] 馬煜,陳海軍.Visual C#.NET 案例開發(fā)集錦[M].北京:電子工業(yè)出版社, 2008.

        [3] 柯彪,高躍飛,羅炳華,徐鳳軍.C#與MATLAB混合編程在內(nèi)彈道設(shè)計中的應(yīng)用[J].彈箭與制導(dǎo)學(xué)報,2013,(05):129-132.

        [4] 秦春影,喻曉鋒,仝海燕,唐淑萍. C#與Matlab集成方式的比較研究[J].洛陽理工學(xué)院學(xué)報(自然科學(xué)版),2011,21(04):42-46.

        [5] 張望.一種基于COM的改進(jìn)組件創(chuàng)建的研究[D].西南大學(xué),2010.

        [6] 楊成,申麗然,李雪耀. Matlab引擎的VC++6.0接口調(diào)用及其面向?qū)ο缶幊蘙J].應(yīng)用科技,2001,(11):41-44.

        [7] 斯梅切爾.C#和.NET2.0實戰(zhàn):平臺.語言與框架[M].施凡.人民郵電出版社.2008.168-169.

        猜你喜歡
        內(nèi)核調(diào)用編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        核電項目物項調(diào)用管理的應(yīng)用研究
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        国农村精品国产自线拍| 性感人妻av在线播放| 字幕网中文字幕精品一区| 亚洲av中文无码乱人伦在线观看| 亚洲成a人片在线观看无码专区| 久久不见久久见免费影院www| 久久99精品国产99久久| 最新亚洲无码网站| 日本一区二区三级免费| 亚洲av日韩av女同同性| 中文字幕一区二区三区精华液| 免费啪啪视频一区| 野外三级国产在线观看| 国产偷国产偷亚洲高清| 色窝窝亚洲av网在线观看| 人妻少妇精品视频三区二区一区| 夜夜揉揉日日人人| 久久99久久99精品观看| 91九色视频在线国产| 疯狂添女人下部视频免费| 最近高清中文在线字幕观看| 精品国产91久久综合| 亚洲桃色蜜桃av影院| 人妻精品久久久久中文字幕| 久久亚洲av成人无码国产| 黑人一区二区三区在线| 人妻丰满精品一区二区| 亚洲色偷偷偷综合网| 欧美巨大xxxx做受l| 区无码字幕中文色| 日本顶级片一区二区三区| 给你免费播放的视频| 熟妇人妻无码中文字幕| 亚洲av永久无码精品成人| 日韩精品在线观看在线| 日韩欧美亚洲综合久久影院ds| 国产亚洲精品第一综合麻豆| 亚洲国产日韩av一区二区| 男人的天堂一区二av| 欧美巨大巨粗黑人性aaaaaa| 天堂Av无码Av一区二区三区 |