鄭向陽(yáng),張領(lǐng)科,符少波
(1.南京理工大學(xué) 能源與動(dòng)力工程學(xué)院,江蘇 南京 210094;2.西安北方惠安化學(xué)工業(yè)有限公司,陜西 西安 710300)
火炮的內(nèi)彈道設(shè)計(jì)是裝藥設(shè)計(jì)的核心,基本任務(wù)是根據(jù)內(nèi)彈道設(shè)計(jì)所給定的彈道指標(biāo)確定膛內(nèi)構(gòu)造參數(shù)和裝填條件等。發(fā)射藥是火炮的主要能量來(lái)源,也是火炮裝藥設(shè)計(jì)的關(guān)鍵元件,在裝藥設(shè)計(jì)中,選擇合適的發(fā)射藥及藥型,求解裝填條件、計(jì)算發(fā)射藥弧厚等是設(shè)計(jì)的主要任務(wù)[1]。隨著武器的發(fā)展以及武器性能要求的不斷提高,裝藥設(shè)計(jì)的重要性越來(lái)越突出。
在內(nèi)彈道設(shè)計(jì)過(guò)程中,要考慮火炮膛內(nèi)的實(shí)際最大裝填密度(極限裝填密度)Δj,設(shè)計(jì)方案的裝填密度Δ不能大于此數(shù)值[2]。Δj的確定會(huì)直接影響內(nèi)彈道設(shè)計(jì)方案的優(yōu)劣性和可行性,在發(fā)射藥密度、火炮藥室結(jié)構(gòu)、裝填方式等參量確定以后,Δj的確定主要與發(fā)射藥的形狀和藥型參數(shù)有關(guān),對(duì)于固體粒狀發(fā)射藥,在裝填時(shí)可將其視為顆粒物,顆粒的形狀大小將直接影響顆粒的堆積密度,從而影響Δj.目前對(duì)于不同形狀的發(fā)射藥,Δj是未知的,通常根據(jù)裝填經(jīng)驗(yàn)將Δj取一定的數(shù)值范圍,為了提高設(shè)計(jì)的可靠性,一般需要留出較大的設(shè)計(jì)余量,當(dāng)弧厚等藥型參數(shù)改變時(shí)甚至忽略對(duì)Δj的影響。因此,在現(xiàn)代火炮所追求的機(jī)動(dòng)性高、威力大、精確打擊等目標(biāo)下,研究發(fā)射藥藥形對(duì)裝填密度的影響具有重要的意義,而這一研究需要以生成發(fā)射藥三維模型為前提,筆者根據(jù)發(fā)射藥的藥型參數(shù)來(lái)驅(qū)動(dòng)結(jié)構(gòu)建模方法的研究,并模擬了一種模塊裝藥的裝填過(guò)程,初步驗(yàn)證了相同條件下不同藥形發(fā)射藥的裝填密度具有差異性。
目前多孔粒狀發(fā)射藥得到了廣泛的應(yīng)用,其藥形主要包括圓柱形、梅花形等,以多孔粒狀發(fā)射藥的三維模型為顆粒離散元模型,運(yùn)用離散單元法可進(jìn)行裝填過(guò)程的仿真,來(lái)研究發(fā)射藥藥形對(duì)裝填密度的影響。因此,實(shí)現(xiàn)發(fā)射藥藥型參數(shù)驅(qū)動(dòng)結(jié)構(gòu)建模可為后續(xù)工作帶來(lái)極大的便捷。
SolidWorks API是基于COM組件技術(shù)構(gòu)造的,通過(guò)COM技術(shù)為開發(fā)人員提供了強(qiáng)大的二次開發(fā)接口(API),凡是支持COM編程的開發(fā)工具均可用于SolidWorks二次開發(fā)[3]。常用的二次開發(fā)工具有Visual Basic、C++、VBA、C#等,各有優(yōu)勢(shì)。
C#具有可視化操作和高效運(yùn)行效率的優(yōu)點(diǎn),且在界面設(shè)計(jì)和數(shù)據(jù)庫(kù)編程等方面功能強(qiáng)大,同時(shí)支持.NET Framework技術(shù),使其成為目前流行的開發(fā)工具之一[4-6]。此外,SolidWorks可通過(guò)宏錄制生成C#的*.csproj文件,可為二次開發(fā)提供便捷的參考代碼。筆者采用C#生成EXE文件的形式對(duì)SolidWorks進(jìn)行二次開發(fā)。
目前對(duì)于小口徑自動(dòng)炮、中小口徑加農(nóng)炮、榴彈炮以及一些大口徑火炮都采用多孔粒狀火藥。這種形狀的火藥能方便地適應(yīng)多種槍炮彈道性能的需要,且裝填密度大,能實(shí)行機(jī)械化裝填,藥形制造也不困難[7]。表1為部分單基藥藥形尺寸表[8]。
表1 部分單基藥藥形尺寸表
由表1可知,多孔粒狀火藥在各種火炮中得到了廣泛的應(yīng)用。根據(jù)裝藥的應(yīng)用情況,本文的發(fā)射藥藥形采用圓柱形和梅花形。
發(fā)射藥藥型參數(shù)驅(qū)動(dòng)結(jié)構(gòu)建模的設(shè)計(jì)思路,主要包括:操作界面設(shè)計(jì)、關(guān)聯(lián)Access藥型參數(shù)數(shù)據(jù)庫(kù)、分析發(fā)射藥藥型特征、編寫二次開發(fā)程序等。
發(fā)射藥實(shí)物模型如圖1所示,操作界面如圖2所示,界面上的數(shù)據(jù)庫(kù)窗口關(guān)聯(lián)藥型參數(shù)數(shù)據(jù)庫(kù),顯示數(shù)據(jù)庫(kù)內(nèi)容,并可通過(guò)窗口更新數(shù)據(jù)庫(kù)內(nèi)參數(shù)。
二次開發(fā)流程圖如圖3所示。
建立的發(fā)射藥藥型參數(shù)數(shù)據(jù)庫(kù),發(fā)射藥藥形包括圓柱形和梅花形,藥型特征如圖4所示, 圖中,e2為弧厚,d0為孔徑。
圓柱七孔藥型參數(shù)關(guān)系有:
D=4e2+3d0,
(1)
式中,D為外徑。
梅花十九孔藥型參數(shù)關(guān)系有:
D=6e2+5d0.
(2)
根據(jù)藥型參數(shù)關(guān)系,所建立的藥型數(shù)據(jù)庫(kù)包含的參數(shù)主要有藥型、孔數(shù)、孔徑、弧厚和長(zhǎng)度。
運(yùn)用DataGridView控件綁定數(shù)據(jù)庫(kù),如下函數(shù)可將數(shù)據(jù)庫(kù)的內(nèi)容顯示在窗口中:
tableAdapter.Fill(dataSet.dataTable).
如下函數(shù)可將顯示在窗口中的藥型參數(shù)更新到數(shù)據(jù)庫(kù)中:
tableAdapterManager.UpdateAll(dataSet).
通過(guò)對(duì)SolidWorks二次開發(fā),實(shí)現(xiàn)發(fā)射藥藥型參數(shù)驅(qū)動(dòng)結(jié)構(gòu)建模,生成的發(fā)射藥三維模型如圖5所示,建模方法為分為兩步:
1)繪制發(fā)射藥徑向截面草圖。
2)拉伸特征。
重點(diǎn)在于草圖的繪制,以此體現(xiàn)發(fā)射藥的藥型特征。
由圖4可知,發(fā)射藥三維建模的難點(diǎn)在于確定發(fā)射藥徑向截面上藥孔位置以及梅花狀發(fā)射藥花邊的畫法。由圖4(a)可知,圓柱七孔的藥型特征比較簡(jiǎn)單,草圖即繪制8個(gè)相對(duì)位置符合藥型特征的圓形。梅花十九孔的藥型特征較復(fù)雜,可利用其水平和垂直方向的對(duì)稱性,先繪制如圖6所示的四分之一草圖,包括7個(gè)孔和4條圓弧,然后再通過(guò)水平鏡像和垂直鏡像,得到圖4(b)所示完整的徑向截面草圖,重點(diǎn)在于確定孔與圓弧的坐標(biāo)。
由梅花藥型特征可知弧1~4分別以孔3、5、7和6的圓心為弧心,以弧厚與孔半徑之和為弧半徑畫圓,交于點(diǎn)B、C、D和E后形成4條圓弧。以孔1圓心為原點(diǎn),右方向?yàn)閤軸,上方向?yàn)閥軸建立直角坐標(biāo)系??椎淖鴺?biāo)可通過(guò)圓心坐標(biāo)來(lái)表示,弧的坐標(biāo)通過(guò)弧心、弧起點(diǎn)坐標(biāo)和弧終點(diǎn)坐標(biāo)來(lái)表示?;?~ 4的弧心坐標(biāo)分別為孔3、5、7和6的圓心坐標(biāo),終點(diǎn)坐標(biāo)分別為下一條弧的起點(diǎn)坐標(biāo),因此需確定孔1~ 7的圓心坐標(biāo)和點(diǎn)A~E的坐標(biāo)。
給出在圖6所示直角坐標(biāo)系下孔與圓弧的坐標(biāo)分別為:
孔1:(0,0) ;
孔2:(0,d0+e2);
孔3:(0,2(d0+e2));
孔4:((d0+e2)cos 30°,(d0+e2)sin 30°) ;
孔5:((d0+e2)cos 30°,(d0+e2)(sin 30°+1));
孔6:(2(d0+e2)cos 30°,0);
孔7:(2(d0+e0)cos 30°,2(d0+e2)sin 30°).
點(diǎn)A:(0,2.5d0+3e2);
點(diǎn)B:((0.5d0+e2)cosα1,(0.5d0+e2)sinα1+
2(d0+e2));
點(diǎn)C:((0.5d0+e2)cosα2+(d0+e2)cos 30°,(0.5d0+e2)sinα2+(d0+e2)(sin 30°+1));
點(diǎn)D:((0.5d0+e2)cosβ1+2(d0+e2)cos 30°,(0.5d0+e2)sinβ1);
點(diǎn)E:(2(d0+e2)cos 30°+0.5d0+e2,0).
其中:
β2=60°-α2.
由孔3與孔5的相對(duì)位置和孔5與孔7的相對(duì)位置相同可知:
α1=α2.
由梅花十九孔發(fā)射藥藥型特征的對(duì)稱性可知:
β1=β2.
在編寫程序代碼前,需在項(xiàng)目中添加用于SolidWorks二次開發(fā)的插件引用,本例中需用到SolidWorks.Interop.sldworks.dll和SolidWorks.Interop.swconst.dll,可在SolidWorks的安裝目錄SolidWorksapi edistCLR2文件夾中找到該文件。
給出基于C#的主要二次開發(fā)程序:
SldWorks swApp=new SldWorks();
swDoc=((ModelDoc2)(swApp.ActiveDoc));
string partTplt="D: SolidWorkslangchin
ese-simplifiedTutorialpart.prtdot";
ModelDoc2 swDoc=(ModelDoc2)swApp.NewDocument(partTplt,(int)swDwgPaperSizes_e.swDwgPaperA2size, 0.0, 0.0);
//創(chuàng)建SldWorks文件對(duì)象
bool boolstatus=swDoc.Extension.SelectByI
D2("前視基準(zhǔn)面","PLANE", 0, 0, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
//選擇基準(zhǔn)面并點(diǎn)擊"草圖繪制"(開始/結(jié)束)
所運(yùn)用的草圖繪制方法主要有:繪制圓形方法、繪制圓弧方法、繪制中心線方法、鏡像實(shí)體方法等,相關(guān)API函數(shù)如表2所示。
表2 草圖繪制API函數(shù)
拉伸特征的API函數(shù):
boolstatus=swDoc.Extension.SelectByID2("草圖1","SKETCH", 0, 0, 0, false, 0, null, 0);
FeaturemyFeature=swDoc.FeatureManager.F
eatureExtrusion(true, false, false, 0, 0, l_0, 0.0, false, false, false, false, 0.0, 0.0, false, false, false, false, true, false, false);//選擇草圖、拉伸
SolidWorks進(jìn)行草圖繪制時(shí),開啟對(duì)象捕捉可以讓系統(tǒng)自動(dòng)忽略點(diǎn)坐標(biāo)誤差造成的微小尺寸間隙影響,使得兩點(diǎn)合并,輪廓形成閉環(huán),有效地方便用戶對(duì)于草圖的繪制,但使用程序?qū)θ绫纠械奈⑿〕叽邕M(jìn)行草圖繪制時(shí),容易引起系統(tǒng)的錯(cuò)誤捕捉導(dǎo)致草圖繪制失敗,因此需關(guān)閉該功能。為了不影響其后的草圖繪制和最后特征的生成,建議對(duì)象捕捉的關(guān)閉和開啟成對(duì)使用[9]。關(guān)閉和開啟對(duì)象捕捉功能的API函數(shù)為:
swApp.SetUserPreferenceToggle(((int)(swUser-PreferenceToggle_e.swSketchInference)), false/true).
對(duì)于尺寸較小的模型,還應(yīng)運(yùn)用自動(dòng)縮放整屏方法,使界面自動(dòng)以合理的比例顯示全圖,以此來(lái)保證程序?qū)τ邳c(diǎn)坐標(biāo)有準(zhǔn)確的定位。自動(dòng)縮放整屏的API函數(shù)為swDoc.ViewZoomtofit2().
以122 mm模塊裝藥的裝填過(guò)程為例,選用不同藥形的發(fā)射藥,基于離散單元法模擬發(fā)射藥裝填過(guò)程,來(lái)研究發(fā)射藥藥形對(duì)于裝填密度的影響,驗(yàn)證模擬效果。
EDEM為目前功能最為強(qiáng)大、應(yīng)用最為廣泛的離散元建模仿真軟件[10],運(yùn)用EDEM,導(dǎo)入SolidWorks所建立的發(fā)射藥三維模板,建立發(fā)射藥的離散元模型。發(fā)射藥選用17/7圓柱發(fā)射藥和14/19梅花發(fā)射藥,藥型參數(shù)如表3所示。
表3 所選發(fā)射藥藥型參數(shù)
建立的離散元顆粒模型如圖7所示。
目前EDEM是通過(guò)選用多個(gè)球形顆粒填充顆粒模板的方式來(lái)建立顆粒離散元模型,因此所建立的顆粒離散元模型與顆粒模板存在一定的差異,但顆粒模板對(duì)發(fā)射藥離散元模型的建立起著規(guī)劃和約束的作用。
為了驗(yàn)證發(fā)射藥藥形對(duì)裝填密度的影響,兩種發(fā)射藥的密度、彈性模量、泊松比以及發(fā)射藥表面的摩擦系數(shù)等仿真參數(shù)均取值相同。
裝藥模塊選用122 mm模塊,經(jīng)實(shí)驗(yàn)測(cè)量,模塊為口徑122 mm,高度150 mm的圓柱狀容器,如圖8所示。 在EDEM中建立模塊的幾何體模型,并在模塊上方創(chuàng)建圓柱狀的顆粒工廠,生成發(fā)射藥顆粒模型,顆粒的重力的作用下落到模塊內(nèi),模擬模塊裝藥自然狀態(tài)下的裝填過(guò)程,如圖9所示。
當(dāng)發(fā)射藥裝滿模塊時(shí),結(jié)束仿真,如圖10所示。此時(shí),計(jì)算兩種發(fā)射藥的裝藥量,與模塊容積的比值即為122 mm模塊下兩種發(fā)射藥的裝填密度。
經(jīng)實(shí)驗(yàn)測(cè)量,發(fā)射藥的密度約為1.574 g/cm3,EDEM中所建立的17/7圓柱發(fā)射藥和14/19梅花發(fā)射藥的模型體積分別為402 mm3和866 mm3,可得單個(gè)顆粒的質(zhì)量分別為0.63 g和1.36 g .在圖10中生成的17/7圓柱發(fā)射藥和14/19梅花發(fā)射藥的數(shù)量分別約為2 790個(gè)和1 210個(gè),可得裝藥量分別約為1 758 g和1 646 g .
122 mm模塊為圓柱狀容器,根據(jù)模塊尺寸可得模塊容積約為175.35 cm3.最終計(jì)算得出122 mm模塊下17/7圓柱發(fā)射藥和14/19梅花發(fā)射藥的裝填密度分別約為10 026 kg/m3和9 387 kg/m3,初步驗(yàn)證了相同條件下不同藥形發(fā)射藥的裝填密度具有差異性。
筆者利用C#語(yǔ)言,連接發(fā)射藥藥型參數(shù)數(shù)據(jù)庫(kù),對(duì)SolidWorks進(jìn)行二次開發(fā),并模擬了一種模塊裝藥的裝填過(guò)程,分析了常用藥形中圓柱七孔和梅花十九孔發(fā)射藥的藥型特征,得到了發(fā)射藥徑向截面上藥型參數(shù)的結(jié)構(gòu)關(guān)系;提供了一種運(yùn)用SolidWorks繪制發(fā)射藥徑向截面草圖的方法,繪制的徑向截面草圖符合發(fā)射藥的藥型特征;實(shí)現(xiàn)了以發(fā)射藥藥型參數(shù)為依據(jù),程序驅(qū)動(dòng)結(jié)構(gòu)建模,生成的藥粒模型符合理論模型,為發(fā)射藥離散元模型的建立提供了模板。用EDEM軟件建立了發(fā)射藥的離散元模型,并模擬了兩種不同藥形的發(fā)射藥對(duì)于122 mm模塊的裝填過(guò)程,初步驗(yàn)證了發(fā)射藥模板的實(shí)用性以及不同藥形發(fā)射藥裝填密度的差異性。