鄭向陽,張領科,符少波
(1.南京理工大學 能源與動力工程學院,江蘇 南京 210094;2.西安北方惠安化學工業有限公司,陜西 西安 710300)
火炮的內彈道設計是裝藥設計的核心,基本任務是根據內彈道設計所給定的彈道指標確定膛內構造參數和裝填條件等。發射藥是火炮的主要能量來源,也是火炮裝藥設計的關鍵元件,在裝藥設計中,選擇合適的發射藥及藥型,求解裝填條件、計算發射藥弧厚等是設計的主要任務[1]。隨著武器的發展以及武器性能要求的不斷提高,裝藥設計的重要性越來越突出。
在內彈道設計過程中,要考慮火炮膛內的實際最大裝填密度(極限裝填密度)Δj,設計方案的裝填密度Δ不能大于此數值[2]。Δj的確定會直接影響內彈道設計方案的優劣性和可行性,在發射藥密度、火炮藥室結構、裝填方式等參量確定以后,Δj的確定主要與發射藥的形狀和藥型參數有關,對于固體粒狀發射藥,在裝填時可將其視為顆粒物,顆粒的形狀大小將直接影響顆粒的堆積密度,從而影響Δj.目前對于不同形狀的發射藥,Δj是未知的,通常根據裝填經驗將Δj取一定的數值范圍,為了提高設計的可靠性,一般需要留出較大的設計余量,當弧厚等藥型參數改變時甚至忽略對Δj的影響。因此,在現代火炮所追求的機動性高、威力大、精確打擊等目標下,研究發射藥藥形對裝填密度的影響具有重要的意義,而這一研究需要以生成發射藥三維模型為前提,筆者根據發射藥的藥型參數來驅動結構建模方法的研究,并模擬了一種模塊裝藥的裝填過程,初步驗證了相同條件下不同藥形發射藥的裝填密度具有差異性。
目前多孔粒狀發射藥得到了廣泛的應用,其藥形主要包括圓柱形、梅花形等,以多孔粒狀發射藥的三維模型為顆粒離散元模型,運用離散單元法可進行裝填過程的仿真,來研究發射藥藥形對裝填密度的影響。因此,實現發射藥藥型參數驅動結構建模可為后續工作帶來極大的便捷。
SolidWorks API是基于COM組件技術構造的,通過COM技術為開發人員提供了強大的二次開發接口(API),凡是支持COM編程的開發工具均可用于SolidWorks二次開發[3]。常用的二次開發工具有Visual Basic、C++、VBA、C#等,各有優勢。
C#具有可視化操作和高效運行效率的優點,且在界面設計和數據庫編程等方面功能強大,同時支持.NET Framework技術,使其成為目前流行的開發工具之一[4-6]。此外,SolidWorks可通過宏錄制生成C#的*.csproj文件,可為二次開發提供便捷的參考代碼。筆者采用C#生成EXE文件的形式對SolidWorks進行二次開發。
目前對于小口徑自動炮、中小口徑加農炮、榴彈炮以及一些大口徑火炮都采用多孔粒狀火藥。這種形狀的火藥能方便地適應多種槍炮彈道性能的需要,且裝填密度大,能實行機械化裝填,藥形制造也不困難[7]。表1為部分單基藥藥形尺寸表[8]。

表1 部分單基藥藥形尺寸表
由表1可知,多孔粒狀火藥在各種火炮中得到了廣泛的應用。根據裝藥的應用情況,本文的發射藥藥形采用圓柱形和梅花形。
發射藥藥型參數驅動結構建模的設計思路,主要包括:操作界面設計、關聯Access藥型參數數據庫、分析發射藥藥型特征、編寫二次開發程序等。
發射藥實物模型如圖1所示,操作界面如圖2所示,界面上的數據庫窗口關聯藥型參數數據庫,顯示數據庫內容,并可通過窗口更新數據庫內參數。
二次開發流程圖如圖3所示。



建立的發射藥藥型參數數據庫,發射藥藥形包括圓柱形和梅花形,藥型特征如圖4所示, 圖中,e2為弧厚,d0為孔徑。

圓柱七孔藥型參數關系有:
D=4e2+3d0,
(1)
式中,D為外徑。
梅花十九孔藥型參數關系有:
D=6e2+5d0.
(2)
根據藥型參數關系,所建立的藥型數據庫包含的參數主要有藥型、孔數、孔徑、弧厚和長度。
運用DataGridView控件綁定數據庫,如下函數可將數據庫的內容顯示在窗口中:
tableAdapter.Fill(dataSet.dataTable).
如下函數可將顯示在窗口中的藥型參數更新到數據庫中:
tableAdapterManager.UpdateAll(dataSet).
通過對SolidWorks二次開發,實現發射藥藥型參數驅動結構建模,生成的發射藥三維模型如圖5所示,建模方法為分為兩步:
1)繪制發射藥徑向截面草圖。
2)拉伸特征。
重點在于草圖的繪制,以此體現發射藥的藥型特征。

由圖4可知,發射藥三維建模的難點在于確定發射藥徑向截面上藥孔位置以及梅花狀發射藥花邊的畫法。由圖4(a)可知,圓柱七孔的藥型特征比較簡單,草圖即繪制8個相對位置符合藥型特征的圓形。梅花十九孔的藥型特征較復雜,可利用其水平和垂直方向的對稱性,先繪制如圖6所示的四分之一草圖,包括7個孔和4條圓弧,然后再通過水平鏡像和垂直鏡像,得到圖4(b)所示完整的徑向截面草圖,重點在于確定孔與圓弧的坐標。

由梅花藥型特征可知弧1~4分別以孔3、5、7和6的圓心為弧心,以弧厚與孔半徑之和為弧半徑畫圓,交于點B、C、D和E后形成4條圓弧。以孔1圓心為原點,右方向為x軸,上方向為y軸建立直角坐標系。孔的坐標可通過圓心坐標來表示,弧的坐標通過弧心、弧起點坐標和弧終點坐標來表示。弧1~ 4的弧心坐標分別為孔3、5、7和6的圓心坐標,終點坐標分別為下一條弧的起點坐標,因此需確定孔1~ 7的圓心坐標和點A~E的坐標。
給出在圖6所示直角坐標系下孔與圓弧的坐標分別為:
孔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°).
點A:(0,2.5d0+3e2);
點B:((0.5d0+e2)cosα1,(0.5d0+e2)sinα1+
2(d0+e2));
點C:((0.5d0+e2)cosα2+(d0+e2)cos 30°,(0.5d0+e2)sinα2+(d0+e2)(sin 30°+1));
點D:((0.5d0+e2)cosβ1+2(d0+e2)cos 30°,(0.5d0+e2)sinβ1);
點E:(2(d0+e2)cos 30°+0.5d0+e2,0).
其中:
β2=60°-α2.
由孔3與孔5的相對位置和孔5與孔7的相對位置相同可知:
α1=α2.
由梅花十九孔發射藥藥型特征的對稱性可知:
β1=β2.
在編寫程序代碼前,需在項目中添加用于SolidWorks二次開發的插件引用,本例中需用到SolidWorks.Interop.sldworks.dll和SolidWorks.Interop.swconst.dll,可在SolidWorks的安裝目錄SolidWorksapi edistCLR2文件夾中找到該文件。
給出基于C#的主要二次開發程序:
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);
//創建SldWorks文件對象
bool boolstatus=swDoc.Extension.SelectByI
D2("前視基準面","PLANE", 0, 0, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
//選擇基準面并點擊"草圖繪制"(開始/結束)
所運用的草圖繪制方法主要有:繪制圓形方法、繪制圓弧方法、繪制中心線方法、鏡像實體方法等,相關API函數如表2所示。

表2 草圖繪制API函數
拉伸特征的API函數:
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進行草圖繪制時,開啟對象捕捉可以讓系統自動忽略點坐標誤差造成的微小尺寸間隙影響,使得兩點合并,輪廓形成閉環,有效地方便用戶對于草圖的繪制,但使用程序對如本例中的微小尺寸進行草圖繪制時,容易引起系統的錯誤捕捉導致草圖繪制失敗,因此需關閉該功能。為了不影響其后的草圖繪制和最后特征的生成,建議對象捕捉的關閉和開啟成對使用[9]。關閉和開啟對象捕捉功能的API函數為:
swApp.SetUserPreferenceToggle(((int)(swUser-PreferenceToggle_e.swSketchInference)), false/true).
對于尺寸較小的模型,還應運用自動縮放整屏方法,使界面自動以合理的比例顯示全圖,以此來保證程序對于點坐標有準確的定位。自動縮放整屏的API函數為swDoc.ViewZoomtofit2().
以122 mm模塊裝藥的裝填過程為例,選用不同藥形的發射藥,基于離散單元法模擬發射藥裝填過程,來研究發射藥藥形對于裝填密度的影響,驗證模擬效果。
EDEM為目前功能最為強大、應用最為廣泛的離散元建模仿真軟件[10],運用EDEM,導入SolidWorks所建立的發射藥三維模板,建立發射藥的離散元模型。發射藥選用17/7圓柱發射藥和14/19梅花發射藥,藥型參數如表3所示。

表3 所選發射藥藥型參數
建立的離散元顆粒模型如圖7所示。

目前EDEM是通過選用多個球形顆粒填充顆粒模板的方式來建立顆粒離散元模型,因此所建立的顆粒離散元模型與顆粒模板存在一定的差異,但顆粒模板對發射藥離散元模型的建立起著規劃和約束的作用。
為了驗證發射藥藥形對裝填密度的影響,兩種發射藥的密度、彈性模量、泊松比以及發射藥表面的摩擦系數等仿真參數均取值相同。
裝藥模塊選用122 mm模塊,經實驗測量,模塊為口徑122 mm,高度150 mm的圓柱狀容器,如圖8所示。 在EDEM中建立模塊的幾何體模型,并在模塊上方創建圓柱狀的顆粒工廠,生成發射藥顆粒模型,顆粒的重力的作用下落到模塊內,模擬模塊裝藥自然狀態下的裝填過程,如圖9所示。

當發射藥裝滿模塊時,結束仿真,如圖10所示。此時,計算兩種發射藥的裝藥量,與模塊容積的比值即為122 mm模塊下兩種發射藥的裝填密度。

經實驗測量,發射藥的密度約為1.574 g/cm3,EDEM中所建立的17/7圓柱發射藥和14/19梅花發射藥的模型體積分別為402 mm3和866 mm3,可得單個顆粒的質量分別為0.63 g和1.36 g .在圖10中生成的17/7圓柱發射藥和14/19梅花發射藥的數量分別約為2 790個和1 210個,可得裝藥量分別約為1 758 g和1 646 g .
122 mm模塊為圓柱狀容器,根據模塊尺寸可得模塊容積約為175.35 cm3.最終計算得出122 mm模塊下17/7圓柱發射藥和14/19梅花發射藥的裝填密度分別約為10 026 kg/m3和9 387 kg/m3,初步驗證了相同條件下不同藥形發射藥的裝填密度具有差異性。
筆者利用C#語言,連接發射藥藥型參數數據庫,對SolidWorks進行二次開發,并模擬了一種模塊裝藥的裝填過程,分析了常用藥形中圓柱七孔和梅花十九孔發射藥的藥型特征,得到了發射藥徑向截面上藥型參數的結構關系;提供了一種運用SolidWorks繪制發射藥徑向截面草圖的方法,繪制的徑向截面草圖符合發射藥的藥型特征;實現了以發射藥藥型參數為依據,程序驅動結構建模,生成的藥粒模型符合理論模型,為發射藥離散元模型的建立提供了模板。用EDEM軟件建立了發射藥的離散元模型,并模擬了兩種不同藥形的發射藥對于122 mm模塊的裝填過程,初步驗證了發射藥模板的實用性以及不同藥形發射藥裝填密度的差異性。