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

?

基于MATLAB與VC的魚(yú)雷彈道三維可視化的實(shí)現(xiàn)*

2013-10-16 08:06:32苑秉成張宗波李瑞亮
艦船電子工程 2013年2期
關(guān)鍵詞:轉(zhuǎn)數(shù)魚(yú)雷階梯

陳 龍 苑秉成 謝 勇 張宗波 李瑞亮

(1.海軍工程大學(xué)兵器工程系 武漢 430033)(2.92840部隊(duì) 青島 266405)

1 引言

魚(yú)雷實(shí)航試驗(yàn)的水下彈道一般通過(guò)外場(chǎng)測(cè)量獲取,但是需要特定的水域,并在水下布放水聲彈道測(cè)量系統(tǒng)。本文以魚(yú)雷實(shí)航內(nèi)測(cè)記錄器采集記錄的相關(guān)數(shù)據(jù)為基礎(chǔ),綜合應(yīng)用計(jì)算機(jī)技術(shù),設(shè)計(jì)彈道可視化軟件。通過(guò)對(duì)魚(yú)雷航行時(shí)記錄在存儲(chǔ)器上的相關(guān)參數(shù)回放到計(jì)算機(jī)上,經(jīng)分析處理實(shí)現(xiàn)魚(yú)雷水下運(yùn)動(dòng)彈道的可視化,解決了無(wú)外場(chǎng)測(cè)量系統(tǒng)條件下水下運(yùn)動(dòng)彈道的難題。有效提高了魚(yú)雷實(shí)航彈道的分析效率,克服了特定水域及設(shè)備的制約[1]。利用VC和MATLAB混合編程開(kāi)發(fā),而MATLAB的圖形只能輸出在自己的Figure窗口上,無(wú)法嵌入到VC的程序界面中,給混合編程應(yīng)用造成了很大的障礙。利用COM組件技術(shù)的窗口嵌入方法,實(shí)現(xiàn)脫離MATLAB環(huán)境的應(yīng)用程序開(kāi)發(fā)。

2 魚(yú)雷內(nèi)測(cè)系統(tǒng)記錄的彈道相關(guān)參數(shù)

魚(yú)雷內(nèi)測(cè)系統(tǒng)記錄的參數(shù)主要包括:魚(yú)雷總體參數(shù)、動(dòng)力系統(tǒng)參數(shù)、控制系統(tǒng)參數(shù)、自導(dǎo)引信參數(shù),其中與魚(yú)雷水下運(yùn)動(dòng)彈道相關(guān)的參數(shù)有:

1)陀螺組件中的角度變換器的步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào)(MPP)

此信號(hào)代表了魚(yú)雷的轉(zhuǎn)向指令轉(zhuǎn)換產(chǎn)生的三相脈沖序列,由魚(yú)雷控制系輸出到步進(jìn)電機(jī)上,形成如圖1(a)所示的階梯型的信號(hào),階梯的傾斜方向表示魚(yú)雷的旋回方向,階梯的寬度表示旋回運(yùn)動(dòng)的回轉(zhuǎn)速率的大小,脈沖發(fā)生一次變化,就表示魚(yú)雷回轉(zhuǎn)a°。無(wú)疊加高頻信號(hào)的脈沖表示,魚(yú)雷無(wú)捕獲目標(biāo)時(shí)執(zhí)行的初始轉(zhuǎn)向或搜索指令如圖1(a)所示。當(dāng)魚(yú)雷處于追蹤目標(biāo)階段時(shí),脈沖信號(hào)有高頻信號(hào)疊加,如圖1(b)所示。

圖1 步進(jìn)電機(jī)信號(hào)

記錄的MPP信號(hào)中,沒(méi)有出現(xiàn)階梯型脈沖,則可認(rèn)為魚(yú)雷運(yùn)動(dòng)在水平面的投影是直航的;當(dāng)存在階梯脈沖時(shí),則魚(yú)雷發(fā)生了旋回運(yùn)動(dòng),旋回的速率與階梯脈沖的寬度有關(guān),旋回運(yùn)動(dòng)的方向與階梯信號(hào)的傾斜方向有關(guān)。直航運(yùn)動(dòng)就是旋回速率為零的運(yùn)動(dòng)。

2)推進(jìn)器轉(zhuǎn)數(shù)信號(hào)(GIE)

推進(jìn)器轉(zhuǎn)數(shù)信號(hào)是由轉(zhuǎn)數(shù)傳感器每n轉(zhuǎn)就輸出一個(gè)電壓脈沖,而魚(yú)雷的速度與脈沖的頻率成線性關(guān)系。如圖2所示。

圖2 推進(jìn)器轉(zhuǎn)數(shù)信號(hào)

3)壓力信號(hào)(PRESS)

由壓力傳感器測(cè)得的數(shù)據(jù),可轉(zhuǎn)換成魚(yú)雷航行深度數(shù)據(jù)。

3 魚(yú)雷三維彈道的可視化數(shù)學(xué)模型與方法

魚(yú)雷彈道是魚(yú)雷航行的軌跡,物理學(xué)上軌跡的計(jì)算就是取速度對(duì)時(shí)間的積分。但是在記錄的數(shù)據(jù)中,無(wú)法直接獲得速度矢量。魚(yú)雷速度的大小,可根據(jù)GIE數(shù)據(jù),根據(jù)式(1),可以得到魚(yú)雷航行速度的大小S,根據(jù)壓力數(shù)據(jù)可得到深度隨時(shí)間的變化,在時(shí)間的微分可得到速度在垂直方向的分量ST,這樣根據(jù)勾股定理可計(jì)算出魚(yú)雷的速度水平方向的分量So,根據(jù)式(2)可根據(jù)ST,S求出夾角θ,然后求出So。速度解算示意圖如圖3所示。速度公式如下:

其中N為一定時(shí)間內(nèi)的信號(hào)脈沖數(shù),n為出現(xiàn)一個(gè)脈沖代表推進(jìn)器轉(zhuǎn)n轉(zhuǎn),Δt為時(shí)間間隔,單位s,K為經(jīng)驗(yàn)常數(shù),S的單位為kn。

圖3 速度分解示意圖

由MPP信號(hào)得出魚(yú)雷水平的瞬時(shí)回轉(zhuǎn)速率βi,分為直航和旋向運(yùn)動(dòng),直航式(4),旋向運(yùn)動(dòng)式(5),水平航向角的計(jì)算公式如(3)

其中αi為某時(shí)刻的航向角,α0為初始航向角,單位:弧度;βn為回轉(zhuǎn)速率,單位:1/s。

其中Xi,Yi分別為某時(shí)刻的水平坐標(biāo),Xi+1,Yi+1分別為下一個(gè)時(shí)刻的水平坐標(biāo),Δt為時(shí)間間隔

其中Rm為瞬時(shí)曲率半徑。

利用VC編程實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)信號(hào)和推進(jìn)器轉(zhuǎn)數(shù)信號(hào)的轉(zhuǎn)換計(jì)算。由于魚(yú)雷記錄的是采樣后的離散數(shù)據(jù),且都不是連續(xù)變化的,在編程中對(duì)數(shù)據(jù)變化上升沿與下降沿的計(jì)數(shù),以及各沿之間的間隔,從而實(shí)現(xiàn)步進(jìn)電機(jī)信號(hào)轉(zhuǎn)換成魚(yú)雷的回轉(zhuǎn)速率,和推進(jìn)器轉(zhuǎn)數(shù)信號(hào)轉(zhuǎn)換成魚(yú)雷速度。

通過(guò)以上計(jì)算,依據(jù)彈道可視化模型,得到離散化的彈道坐標(biāo)點(diǎn) (Xi,Yi,Zi),生成數(shù)據(jù)文件。

4 混合編程

4.1 COM組件

組件對(duì)象模型(COM,Component Object Model)是微軟提出的以組件為發(fā)布單元的軟件開(kāi)發(fā)技術(shù)。COM對(duì)象用C/S的方式,提供一類應(yīng)用程序接口,允許任何符合標(biāo)準(zhǔn)的程序訪問(wèn)。COM對(duì)象是建立在二進(jìn)制可執(zhí)行代碼的基礎(chǔ)上,因此COM組件對(duì)象是語(yǔ)言無(wú)關(guān)的,這一特性使得用不同編程語(yǔ)言開(kāi)發(fā)的組件對(duì)象進(jìn)行交互成為可能。MATLAB可以通過(guò)MATLAB編譯器和MATLAB COM Builder將MATLAB程序轉(zhuǎn)換為動(dòng)態(tài)鏈接庫(kù)形式的COM組件,這些COM組件可以在其他程序中調(diào)用,這是VC和MATLAB混合編程的主要方式[2]。

4.2 混合編程的實(shí)現(xiàn)

4.2.1 實(shí)現(xiàn)混合編程的環(huán)境配置

要成功地實(shí)現(xiàn)混合編程,達(dá)到混合編程的要求并最終作為獨(dú)立的應(yīng)用程序發(fā)布,首先要對(duì)MATLAB及VC進(jìn)行環(huán)境的配置。

對(duì)MATLAB編譯環(huán)境進(jìn)行設(shè)置:在MATLAB環(huán)境中運(yùn)行mex setup命令,按屏幕提示選擇有關(guān)選項(xiàng),此處選編譯器為 Microsoft VisualC/C++Version6.0in C:\Program Files\Microsoft Visual Studio,路徑按實(shí)際路徑選擇。然后在MATLAB環(huán)境中運(yùn)行mbuild setup命令,設(shè)置方法同上[3~4]。

4.2.2 MATLAB中的實(shí)現(xiàn)

首先建立實(shí)現(xiàn)魚(yú)雷三維彈道可視化的M文件其中代碼如下:

在MATLAB下創(chuàng)建COM組件:

1)在matlab command window輸入如下命令:?deploytool;

2)建立deployment project:trshow.prj,確定安裝位置E:\matlab\trshow,選擇目標(biāo):Generic COM Component;

3)在deployment tool的Build下添加類,將trshow.m文件添加進(jìn)去;

4)點(diǎn)擊Build生成COM組件,至此COM組件已經(jīng)由MATLAB完成。

4.2.3 VC下調(diào)用COM組件

1)將 E:\matlab\trshow\src下的trshow_idl.h、trshow_idl_i.c和mwcomtypes.h文件拷貝到VC建立的工程目錄下。

2)選擇菜單Project-Settings-屬性頁(yè)Link-下拉列表中選擇Input,在“Object/Library modules”編輯框中輸入連接庫(kù)文件名:mclmcrrt.lib trshow.lib。

3)為程序添加頭文件trshow_idl.h、trshow_idl_i.c,mwcomtypes.h頭文件已經(jīng)在trshow_idl.h中有添加。

4)在按鈕響應(yīng)函數(shù)中添加COM組件的調(diào)用,主要代碼如下:

MATLAB圖像窗口在VC界面中顯示用函數(shù)Find-Window、SetWindowPos和SetParent,就可實(shí)現(xiàn),其中Find-Window尋找到Windows系統(tǒng)中指定名稱的窗口;SetWindowPos把窗口移動(dòng)到指定的位置;而SetParent函數(shù)改變窗口的父窗口。

5 實(shí)驗(yàn)結(jié)果

圖4 三維彈道顯示界面

通過(guò)對(duì)魚(yú)雷記錄的彈道相關(guān)參數(shù)的研究,建立了魚(yú)雷水下運(yùn)動(dòng)彈道可視化模型,并通過(guò)VC生成彈道坐標(biāo)文件,運(yùn)用COM組件技術(shù),實(shí)現(xiàn)MATLAB的三維彈道顯示窗口在VC界面中顯示,結(jié)果如圖4所示,此顯示程序保留了MATLAB圖形工具,可實(shí)現(xiàn)彈道的平面投影,如圖5~圖6所示。

圖5 彈道水平面投影(XOY平面)

圖6 彈道垂直面的投影(YOZ平面)

6 結(jié)語(yǔ)

利用COM組件技術(shù),VC編譯器調(diào)用MATLAB動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)脫離MATLAB環(huán)境的應(yīng)用程序開(kāi)發(fā),在很大程度上降低了軟件開(kāi)發(fā)的難度和編碼工作量。VC的文件處理功能強(qiáng)大,支持大量數(shù)據(jù)的分析處理,由MATLAB繪制的3D彈道效果好,將MATLAB圖形窗口嵌入到VC界面中,為彈道的繪制提供了方便,MATLAB的圖形工具為魚(yú)雷的彈道提供了便利,提高了編程效率及軟件的可靠性,此繪制方法可實(shí)現(xiàn)數(shù)據(jù)分析處理及數(shù)據(jù)可視化的效果,提高了效率。

[1]Yuan BingCheng.MODERN HOMINNG TORPEDO TECHNOLOGY.WuHan: NANAL UNIVERSITY OF ENGINEERING,2005.

[2]牟彧清,王汝霖,李國(guó)新.MATLAB與VC接口技術(shù)的研究[J].微計(jì)算機(jī)信息,2006,7(3):275-277.

[3]劉維.精通 Matlab與C/C++混合程序設(shè)計(jì)[M].2版.北京:北京航空航天大學(xué)出版社,2008.

[4]董維國(guó).深入淺出MATLAB 7.X混合編程[M].北京:機(jī)械工業(yè)出版社,2006.

猜你喜歡
轉(zhuǎn)數(shù)魚(yú)雷階梯
基于計(jì)轉(zhuǎn)數(shù)分辨率的計(jì)轉(zhuǎn)數(shù)引信精確定距方法
魚(yú)雷造反
軍事島 魚(yú)雷人
齒數(shù)與轉(zhuǎn)數(shù)的關(guān)系
魚(yú)雷也瘋狂
斜切尾翼彈引信外彈道計(jì)轉(zhuǎn)數(shù)定距原理可行性
爬階梯
時(shí)光階梯
幸福(2016年9期)2016-12-01 03:08:50
有趣的階梯
雙轉(zhuǎn)子臨界轉(zhuǎn)數(shù)系統(tǒng)建模與方程的建立
扎兰屯市| 庆云县| 南充市| 霍州市| 剑河县| 盐源县| 全椒县| 青海省| 马边| 资溪县| 贺兰县| 南乐县| 武汉市| 成武县| 会同县| 班玛县| 河津市| 海伦市| 前郭尔| 景泰县| 永胜县| 石棉县| 孝昌县| 仙居县| 集贤县| 日喀则市| 彭州市| 五台县| 甘洛县| 阳新县| 吴桥县| 化州市| 平乡县| 三门峡市| 吴忠市| 武乡县| 寻乌县| 德兴市| 修水县| 大安市| 无极县|