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

C#與MATLAB混合編程在內彈道設計中的應用*

2013-12-10 06:40:30高躍飛羅炳華徐鳳軍
彈箭與制導學報 2013年5期
關鍵詞:功能設計

柯 彪,高躍飛,羅炳華,徐鳳軍

(1中北大學機電工程學院,太原 030051;2四川九洲電器集團有限責任公司,四川綿陽 621000)

0 引言

早期的內彈道設計是把內彈道設計的相關函數關系在給定一些條件下編成內彈道設計表,然后通過查表來解決實際的內彈道設計問題。目前,隨著計算機技術的快速發展,人們開始編制了多種內彈道設計軟件,可以快速進行內彈道計算和方案設計,但還是受開發語言的限制,軟件人機交互性差,專業性強,不易于集成。為此,文中結合C#和MATLAB各自的優點,利用其混合編程技術,開發了界面友好、操作簡單、圖形和數據管理方便的內彈道設計軟件,利用該軟件根據設計評價標準最終可以選出最佳性能的內彈道方案,為后續的炮身、炮架以及彈藥設計提供了依據,也為未來火炮設計軟件系統的開發提供了基礎。

1 C#與MATLAB混合編程技術

1.1 C#與 MATLAB的簡介

Microsoft Visual C#是 Microsoft專門為使用.NET平臺而開發的一種強大的、面向組件的語言,可用于方便快捷的創建運行在.NET公共語言運行庫(common language runtime,CLR)上的Windows應用程序[1]。但是其在數值計算分析和曲線繪圖方面的操作繁瑣,功能薄弱。

MATLAB是一種用于數值計算、可視化及編程的高級語言和交互式環境,可以分析數據,開發算法,創建模型和應用程序。借助其語言、工具和內置數學函數,可以快速簡潔的編制所有的各類計算程序和輸出相應數據。但是MATLAB在用戶界面上的開發功能還比較簡單,執行效率低,難以實現底層的數據輸入 輸出的管理。

1.2 C#與MATLAB混合編程的實現

文中以 Visual Studio.Net 2010與 MATLAB R2009a為例,混合編程實現的步驟如下:

1)安裝完Matlab之后,在路徑:Matlab的安裝目錄 oolboxcompilerdeploywin32 下找到 MCRInstall.exe進行安裝;然后點擊:我的電腦 -屬性 -高級 -環境變量-系統變量-PATH-編輯,在變量值輸入框中,不要刪除以前的字符串,在最前面加入MCR的安裝路徑,然后確定、保存、重啟電腦。否者C#創建Matlab的訪問對象時,出現“xxx的類型初始值設定項引發異常。”的錯誤警告。

2)在MATLAB的命令窗口直接輸入“deploytool”或者單擊 MATLAB中“Start”按鈕,依次展開MATLAB?MATLAB Builder NE?Deployment Tool,即可使用 MATLAB 的.NET 組件生成功能[2]。

3)使用Deployment Tool新建一個類型為MATLAB Builder NE的工程project,命名為IBdesign.prj,工程名就相當于C#中的命名空間,確定后系統自動在工程下生成同名的文件夾,為了與工程名區分,最好將文件名改為IBdesignclass,該文件名相當于C#中的類名,再向該文件夾下添加已經成功編制的一個或多個*m函數文件,如 IBmixed.m文件,IBmixed類似于C#中類下的方法名。最后就可完成對工程的編譯和打包,只需到工程相應的目錄下(..src)就可以找到 dll動態鏈接庫文件[3]。

4)C#新建項目并完成界面開發后,須對剛編譯的dll文件和MWArray.dll文件(在MATLAB安裝目錄 oolboxdotnetbuilderinwin32v2.0文件夾下)進行引用[4],另外還需將位于上路徑下的ManagedCPPAPI.netmodule文件拷貝至C#項目目錄inDebug文件夾下。

5)完成混合編程的前期準備后,即可在C#代碼區開始編程實現對剛引用的dll進行調用,混合編程成功的關鍵是C#與MATLAB的.NET FrameWork框架版本要相適應,以及它們之間傳輸參數個數的匹配和數據類型之間的恰當轉換。

2 軟件設計

典型的內彈道設計問題可以歸納為在已知的火炮口徑d、彈丸質量m和彈丸初速v0的條件下,選擇適當的最大壓力pm、藥室擴大系數χK以及火藥品種,然后計算出能滿足上述條件的膛內構造諸元和裝藥條件等眾多未知量,將是一個多解的問題,但是保證武器能夠具有規定的初速是內彈道設計的根本要求。

根據內彈道設計的思路,采用C#與MATLAB混合編程技術,開發了內彈道設計軟件,實現了權限管理、內彈道設計計算、數值數據與圖形處理的功能,具有一定的通用性、可擴展性和可集成的特點。該軟件設計計算部分的核心框架見圖1。

圖1 內彈道設計計算的核心框架示意圖

2.1 開發環境與安裝要求

內彈道設計軟件在 Windows操作系統下的Visual Studio 2010集成開發環境下開發,根據用戶需要可以很方便的確定軟件所支持的操作系統位數,數據庫采用的是 SQL Server 2008,軟件的.Net Framework框架版本根據C#與MATLAB的版本要求確定。只需將應用程序、數據庫安裝包、相同MATLAB版本的MCR運行庫及所需要的.Net Framework獨立安裝包一同打包,通過編寫相應的安裝腳本控制順序安裝,就可以使軟件安裝不依賴客戶端的配置,移植性強。

2.2 軟件功能設計

根據一般工程設計軟件的要求,內彈道設計軟件的功能設計有:權限管理、內彈道設計計算、數據管理和圖形處理、歷史記錄、意見反饋以及窗體換膚功能。

1)權限管理功能。將軟件使用人員分為系統管理員和一般設計計算員。根據內彈道設計所采用的裝藥類型給不同設計計算員分配各自內彈道設計所需權限和自身用戶信息管理權限,彼此獨立,而系統管理員具有查詢、添加、刪除及導出用戶信息和進行所有設計計算的權限。

2)內彈道設計計算功能。將以經典內彈道模型為基礎,適用于簡單形狀火藥(如管狀、帶狀、方片狀等幾種)、多孔火藥(常用的圓柱形七孔、花邊形七孔、花邊形十四孔等幾種)、混合裝藥(以簡單形狀火藥和多孔火藥的混合為例)及鈍感火藥[5]的內彈道設計計算的MATLAB程序修改為m函數文件,另外編程時也考慮了不同火藥對計算參數的選取要求。其中多孔火藥在減面燃燒階段用來計算與碎粒斷面相當的內切圓半徑ρ的計算系數與藥形的關系如表1所示。

3)數據管理功能。主要利用SQL Server 2008完成用戶信息的查詢、添加和刪除操作,以及用戶歷史操作的記錄和意見反饋的管理,這樣就控制軟件的用戶登錄權限,也為軟件功能的完善提供了基礎,同時特別實現對內彈道方案參數和內彈道計算結果數據的備份。

4)圖形處理功能。借助MATLAB強大的圖形處理功能,內彈道計算時可以對需要曲線進行實時顯示,計算后分類保存,同時利用C#還特別定制了內彈道曲線處理界面,主要實現曲線查看、格式轉換、復制與刪除、另存與打印等基本功能。

5)窗體換膚功能。主要考慮了軟件的外觀與用戶使用舒適性,軟件集成了現有56種皮膚外觀。同時用戶自己也可以開發.*ssk(窗體皮膚文件),并將該文件拷貝至程序當前目錄下DebugSkins文件夾下,即可完成窗體皮膚功能的擴展。

2.3 軟件界面設計

內彈道設計軟件主界面(見圖2)以內彈道參數錄入、方案評價部分和計算結果數據顯示部分為主體,通過各功能按鈕完成對相應子模塊功能的調用,整個界面布置整潔、緊湊,操作方便。

表1 藥形和的對照表

表1 藥形和的對照表

藥形 ρ 0.5d0+e1圓柱形七孔 0.2956花邊形七孔 0.1547花邊形十四孔 0.1547花邊形十九孔 0.1547圓柱形十九孔 0.3559正六邊形十九孔 0.1864等圓角六邊形十九孔 0.1977

3 關鍵技術及代碼

3.1 .NET程序集的生成

圖2 內彈道設計計算軟件的主界面

編寫相應彈道程序并成功調式運行后,再將原計算程序中的關鍵常數均替換為變量,作為Function函數的輸入參數,這樣通過MATLAB Builder NE即可將彈道核心計算部分的程序編譯生成dll動態鏈接庫文件,也就是C#與MATLAB之間通信的接口。另外只需在保證文件名和輸入輸出參數不變的條件下將修改后的計算程序重新編譯成dll,并在C#中重新引用,不必修改任何C#語言代碼,即可完成.Net程序的升級更新。

3.2 C#調用 MATLAB

用C#實例化某類型火藥的內彈道設計計算類的對象,通過對象來調用實現計算的方法,在保證計算函數成功引用和C#與MATLAB之間數據恰當轉換的前提下,使用C#編寫內彈道設計計算部分的功能代碼。(雙斜杠"http://"后的文字為解釋性內容和行號,調試時都不被編譯;“……”號代表省略了不重要或類似的代碼)部分代碼:

①using MathWorks.MATLAB.NET.Arrays;

②using MathWorks.MATLAB.NET.Utility;

③using IBsimplepowderNet;

④……

⑤private void btn內彈道計算_Click(object sender,EventArgs e)

⑥{……

⑦switch(裝藥comboBox.SelectedItem.ToString())

⑧{

⑨case"簡單形狀火藥":

⑩try

?{//實例化計算簡單火藥內彈道的類

?IBsimplepowderClass simplepowder=new IBsimple powderClass();

?MWArray[]result1=simplepowder.IBsimple

(16,(MWNumericArray)d,(MWNumericArray)v0,……);

?MWNumericArray pm=(MWNumericArray)result1[0];

?pm_txt.Text=pm.ToScalarDouble(). ToString();

?……

?MWNumericArray t=(MWNumericArray)result1[8];

//將matlab輸出列向量轉換到C#中

?double[]loc_t=null;

?loc_t=(double[])t.ToVector(MWArray

Component.Real);

?catch(Exception)

?{MessageBox.Show("請檢查輸入參數是否匹配?",……);}

?break;

?case"多孔火藥": //多孔火藥計算部分

?……

?break;

?省略混合、鈍感火藥內彈道設計的代碼……

其中第1~2行為C#與MATLAB混合編程必須引用的命名空間,第3行為引用MATLAB編譯了的簡單火藥(其他火藥類似)內彈道設計計算程序集,第7行switch語句選擇裝藥類型及藥形,第13行調用計算簡單火藥內彈道的方法,第14~15行取出計算結果的每個值,并轉化為string類型,顯示在窗口中顯示出來,第19行將結算結果中的列向量轉化為C#中的數據類型。程序中try{}catch{}代碼捕獲程序突發異常和參數輸入不當異常。

3.3 數據管理

該軟件涉及到的數據管理有:用戶信息、歷史記錄與意見反饋,計算數值結果與曲線。在軟件底層利用C#編寫連接字符串來連接SQL Server數據庫,通過C#開發的用戶界面即可方便快速的完成數據的查詢、添加、刪除、導出與打印等功能,同時直接利用MATLAB強大的繪圖功能和C#強大的文件輸入輸出功能,就可完全的完成計算數據的管理。

4 計算分析實例

軟件對100mm加農炮(其采用單一管狀藥)、85mm加農炮(其采用圓柱形七孔火藥)[6]、122mm榴彈炮(其采用管狀藥和圓柱形七孔火藥的混合裝藥)及35mm高炮(其采用鈍感火藥)的內彈道設計計算進行了算例的定制。

下面以采用圓柱七孔火藥的85mm加農炮內彈道設計計算為例,計算結果如表2所示,和現有制式同類火炮的評價標準接近,說明 C#與MATLAB混合編程技術在內彈道設計計算中應用是可行的。

表2 85mm加農炮多孔火藥內彈道設計計算評價標準

5 結論

通過對C#與MATLAB混合編程技術的研究,完成了不同類型火藥的內彈道設計計算軟件的開發。該軟件操作方便快捷,具有良好的人機交互性和集成性,可以為未來火炮設計軟件的開發提供基礎,另外文中采用的經典內彈道模型可進一步拓展至其改進型和考慮兩相流的內彈道模型,還有該混編技術也可以在外彈道、身管設計計算、炮口制退器、反后坐裝置等火炮常規計算中推廣使用,為火炮的現代計算機輔助設計提供了一種思路。

[1]馬煜,陳海軍.Visual C#.NET案例開發集綿[M].北京:電子工業出版社,2008.

[2]羅炳華,高躍飛,劉榮華,等.基于MATLAB與C#的火炮CAD系統開發和優化設計[J].火炮發射與控制學報,2010(2):44-47.

[3]鄭暉,王勇.C#與Matlab混合編程技術在數字地震信號處理軟件中的應用[J].地震地磁觀測與研究,2011,32(2):101-105.

[4]張燕,馬永杰.Visual C#與MATLAB混合編程方法及其實現[J].西北師范大學學報,2008,44(6):34 -37.

[5]劉雙杰,郝永乎.35mm高射炮鈍感發射藥的內彈道仿真[J].彈箭與制導學報,2010,30(1):170 -172.

[6]金志明.槍炮內彈道學[M].北京:北京理工大學出版社,2004.

猜你喜歡
功能設計
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
關于非首都功能疏解的幾點思考
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 久久精品中文字幕免费| 欧美中文字幕在线二区| 精品无码国产一区二区三区AV| 亚洲成人网在线播放| 国产h视频免费观看| 国产精品美女自慰喷水| 亚洲最大综合网| 国产亚洲高清在线精品99| 国产黄色爱视频| 免费在线色| 久久久久青草线综合超碰| 专干老肥熟女视频网站| 国产凹凸视频在线观看 | 成年人国产视频| 美女国内精品自产拍在线播放| 日本高清有码人妻| 亚洲AV无码乱码在线观看裸奔| 熟女日韩精品2区| 亚洲欧美日韩另类| 亚洲国产精品国自产拍A| 亚洲aaa视频| 麻豆精品国产自产在线| 999在线免费视频| 亚洲av日韩综合一区尤物| 亚洲精品国产精品乱码不卞| 国产欧美日韩91| 97se亚洲综合在线| 亚洲精品无码久久毛片波多野吉| 免费a级毛片视频| 中国一级毛片免费观看| 精品国产美女福到在线不卡f| 国产制服丝袜91在线| 国产极品美女在线播放| 在线毛片网站| 国产精品白浆无码流出在线看| 婷婷亚洲天堂| 第一页亚洲| 亚洲人成网站日本片| 玖玖精品视频在线观看| 无码av免费不卡在线观看| jijzzizz老师出水喷水喷出| 欧美一级特黄aaaaaa在线看片| 国产尹人香蕉综合在线电影 | 女人18毛片一级毛片在线 | 五月天久久婷婷| 国产精品福利在线观看无码卡| 色综合中文综合网| 久久香蕉国产线看观看亚洲片| 中文纯内无码H| 乱码国产乱码精品精在线播放| 色婷婷亚洲十月十月色天| 欧美性色综合网| 欧美在线天堂| 制服丝袜亚洲| 高清国产va日韩亚洲免费午夜电影| 国产精品无码AⅤ在线观看播放| 亚洲男人的天堂久久香蕉| 色哟哟国产精品| 日韩人妻无码制服丝袜视频| 5555国产在线观看| 国产美女精品一区二区| 91久久夜色精品国产网站| 丰满人妻中出白浆| 日本草草视频在线观看| 亚洲日产2021三区在线| 国产一二视频| 国产免费福利网站| 日韩av在线直播| 久热这里只有精品6| 97在线视频免费观看| 女人18毛片一级毛片在线 | 18禁高潮出水呻吟娇喘蜜芽| 精品视频第一页| 伊人五月丁香综合AⅤ| 九九视频在线免费观看| 激情六月丁香婷婷| 亚洲成人免费看| 一本大道东京热无码av| 国产精女同一区二区三区久| 欧美色视频在线| 国产精品久久精品| 国产精品免费福利久久播放|