馮旺 陳浩 楊亞莉 許莎
摘要:基于CAD和CAE軟件的集成設(shè)計(jì)是現(xiàn)代設(shè)計(jì)趨勢(shì)之一。如何將參數(shù)化CAD建模與有限元分析相結(jié)合是一項(xiàng)挑戰(zhàn)性工作。通過(guò)改變模型參數(shù)實(shí)現(xiàn)自動(dòng)建模和有限元分析的研究很少。探討基于SolidWorks尺寸驅(qū)動(dòng)的彈簧參數(shù)化建模與基于Python的ABAQUS二次開(kāi)發(fā)進(jìn)行有限元分析相結(jié)合的方法。在VB界面中,通過(guò)人機(jī)對(duì)話窗口對(duì)可變參數(shù)賦予不同的參數(shù)值,自動(dòng)生成一系列圓柱螺旋壓縮彈簧模型。將模型導(dǎo)入Abaqus有限元軟件,采用Python語(yǔ)言進(jìn)行CAE模塊編輯。將參數(shù)化技術(shù)與有限元計(jì)算有機(jī)結(jié)合,建立彈簧參數(shù)化設(shè)計(jì)與CAE分析系統(tǒng),實(shí)現(xiàn)CAE分析的自動(dòng)建模。實(shí)驗(yàn)結(jié)果表明,該方法可以得到合理的有限元分析結(jié)果。采用基于參數(shù)的設(shè)計(jì)與分析方法,可以縮短設(shè)計(jì)周期,得到合理準(zhǔn)確的結(jié)果,且成本較低,彈簧分析方法也適用于其它機(jī)械零件。
關(guān)鍵詞:集成設(shè)計(jì);參數(shù)化建模;二次開(kāi)發(fā);有限元分析;彈簧
DOI:10.11907/rjdk.192253 開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)006-0160-06
0 引言
彈簧是機(jī)械通用零件,具有夾緊、減震、復(fù)位、調(diào)節(jié)等多種功能,其中圓柱螺旋壓縮彈簧最為常見(jiàn)。隨著計(jì)算機(jī)技術(shù)、計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)和有限元分析技術(shù)的進(jìn)步,這些現(xiàn)代設(shè)計(jì)方法已經(jīng)在彈簧設(shè)計(jì)中得到越來(lái)越多的應(yīng)用。
研究表明,采用參數(shù)化建模方法可顯著提高復(fù)雜零件三維建模時(shí)的自動(dòng)化程度。李振華等利用VB對(duì)SolidWorks軟件進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)了高速動(dòng)車(chē)組彈簧三維幾何模型的參數(shù)化設(shè)計(jì),為螺旋類零件的三維實(shí)體建模提供了一種有效方法。但其只實(shí)現(xiàn)了彈簧的參數(shù)化建模,沒(méi)有考慮有限元分析;文獻(xiàn)對(duì)車(chē)輛圓柱壓縮彈簧的靜強(qiáng)度、剛度、疲勞壽命和模態(tài)進(jìn)行了有限元分析,得到了理想結(jié)果。但只對(duì)彈簧進(jìn)行有限元分析,沒(méi)有將二次開(kāi)發(fā)技術(shù)應(yīng)用到建模和有限元分析中,導(dǎo)致建模和有限元分析花費(fèi)大量時(shí)間;苗玉剛等建立了工裝彈簧的參數(shù)化三維實(shí)體模型,并且在SolidWorks Simulation中對(duì)圓柱螺旋壓縮彈簧進(jìn)行有限元?jiǎng)偠确治?,分析結(jié)果與理論計(jì)算結(jié)果基本一致,給彈簧剛度的測(cè)量帶來(lái)了方便。但沒(méi)有考慮將二次開(kāi)發(fā)應(yīng)用于建模與有限元分析的整個(gè)過(guò)程,同樣也不利于縮短彈簧設(shè)計(jì)周期。
本文將二次開(kāi)發(fā)技術(shù)應(yīng)用于螺旋壓縮彈簧建模以及有限元分析的整個(gè)過(guò)程。首先建立圓柱螺旋壓縮彈簧三維模型,將控制彈簧模型結(jié)構(gòu)的特征尺寸定義為變量。在VB界面中通過(guò)人機(jī)對(duì)話窗口,對(duì)變量參數(shù)賦予不同的數(shù)值,自動(dòng)生成圓柱螺旋壓縮彈簧的系列零件;然后將模型導(dǎo)人Abaqus有限元軟件中,利用Python進(jìn)行CAE模塊化編輯,參數(shù)化技術(shù)與有限元計(jì)算有機(jī)結(jié)合在一起,建立一個(gè)彈簧的參數(shù)化設(shè)計(jì)以及CAE分析系統(tǒng),實(shí)現(xiàn)從自動(dòng)建模到自動(dòng)CAE分析。本文結(jié)合具體應(yīng)用驗(yàn)證建模方法的正確性,降低了建模以及有限元分析過(guò)程中設(shè)計(jì)師的重復(fù)操作,縮短了彈簧設(shè)計(jì)周期。
1 系統(tǒng)開(kāi)發(fā)
1.1 開(kāi)發(fā)思路
Abaqus是一款功能強(qiáng)大的工程有限元模擬軟件,但由于彈簧結(jié)構(gòu)較為復(fù)雜,不便在Abaqus/CAE中直接建立三維模型,因此需要利用通用三維軟件先建立彈簧模型,然后將模型導(dǎo)人到Abaqus中進(jìn)行有限元分析。同時(shí)結(jié)合二次開(kāi)發(fā)技術(shù),將兩款軟件有效結(jié)合在一起,充分發(fā)揮各自的優(yōu)勢(shì),建立一個(gè)彈簧的參數(shù)化設(shè)計(jì)以及CAE分析系統(tǒng)。該系統(tǒng)能夠根據(jù)用戶輸入的參數(shù)驅(qū)動(dòng)模型重新建模,并且可以自動(dòng)實(shí)現(xiàn)彈簧的有限元分析,減少建模過(guò)程以及CAE參數(shù)設(shè)置所需時(shí)間。二次開(kāi)發(fā)過(guò)程如圖l所示。
1.2 基于VB.NET的SolidWorks二次開(kāi)發(fā)
SolidWorks軟件提供了一套完整的二次開(kāi)發(fā)接口-API,用戶可以用Visual Basic、Visual C或其它支持OLE的編程語(yǔ)言對(duì)SolidWorks進(jìn)行二次開(kāi)發(fā),建立自己的應(yīng)用系統(tǒng)。本文利用VB對(duì)SolidWorks進(jìn)行二次開(kāi)發(fā),常用的參數(shù)化建模實(shí)現(xiàn)主要有兩種方式:①完全用編程的方式完成參數(shù)化建模,用戶可根據(jù)需要直接通過(guò)程序建立模型,但是這種方法對(duì)程序的專業(yè)要求較高;②定制尺寸驅(qū)動(dòng)窗口。先在SolidWorks中繪制每個(gè)零件的三維模型,繪制過(guò)程中需要事先標(biāo)注好模型尺寸,通過(guò)程序識(shí)別尺寸數(shù)據(jù)名稱,然后為各個(gè)尺寸賦值,實(shí)現(xiàn)模型的重建。第②種方法雖然前期需要花費(fèi)一定的時(shí)間,但相對(duì)而言不容易出錯(cuò),并且對(duì)程序的專業(yè)要求相對(duì)較低,編寫(xiě)程序時(shí)只需改變零件的尺寸參數(shù),完成模型的更新即可,所以本文在建立彈簧零件庫(kù)時(shí),采用修改設(shè)計(jì)參數(shù)重新生成三維模型,稱為基于三維模型的參數(shù)化設(shè)計(jì)。三維模型的參數(shù)化設(shè)計(jì)過(guò)程如圖2所示。
1.2.1 確定基本參數(shù)
圓柱螺旋彈簧分為有效圈和左、右支撐圈,如圖3所示。有效圈是彈簧受力的主體部分,根據(jù)GB/T2089-2009,圓柱螺旋壓縮彈簧的有效圈數(shù)尾數(shù)推薦用1/2圈,只有在極個(gè)別的情況下才采用整數(shù)圈。圓柱螺旋壓縮彈簧幾何參數(shù)主要有:彈簧絲直徑d、彈簧外徑D2、彈簧內(nèi)徑D1,彈簧中經(jīng)D、彈簧有效圈數(shù)n、有效圈節(jié)距p、總?cè)?shù)n1、自由高度H0等,兩端為左右支撐圈,支撐圈數(shù)n2通常有1.5圈、2圈、2.5圈3種。影響圓柱螺旋壓縮彈簧結(jié)構(gòu)的主要特征尺寸是彈簧絲直徑d、彈簧中經(jīng)D、有效圈節(jié)距p、彈簧有效圈數(shù)n、總?cè)?shù)n1,本文選擇上述參數(shù)定義彈簧。
1.2.2 建立彈簧三維模型庫(kù)
每種截面類型的彈簧零件均建立一個(gè)模版零件,以該零件作為其它零件的母本,在模板零件中設(shè)置好零件的尺寸參數(shù)、基準(zhǔn),并且存放于固定路徑中供程序調(diào)用,形成彈簧三維模型庫(kù)。
在繪制過(guò)程中,SolidWorks軟件會(huì)自動(dòng)為所要標(biāo)注的尺寸命名,并且不同特征的尺寸名稱可以重復(fù),導(dǎo)致名稱命名很不規(guī)則,并且可以被多個(gè)特征尺寸共同使用,對(duì)后面編寫(xiě)程序造成極大不便,無(wú)法為單獨(dú)參數(shù)賦值。因此,需要按照一定的規(guī)則為變量參數(shù)重新命名,并且名稱應(yīng)盡可能接近國(guó)標(biāo)規(guī)定的尺寸名稱。本文修改后的尺寸名稱命名如表l所示。
1.2.3 設(shè)計(jì)界面
在Visual Basic6.0中建立一個(gè)用戶交互窗口,如圖4所示。在交互界面中加入圖片顯示窗口,讓用戶能夠直觀認(rèn)識(shí)所建立的彈簧造型及參數(shù)變量,同時(shí)加入用戶輸入窗口,讓用戶可以通過(guò)輸入相應(yīng)參量進(jìn)行尺寸約束,同時(shí)添加一個(gè)Combo控件,通過(guò)此控件選擇需要的彈簧截面形狀。添加“零件更新”與“退出”命令按鈕實(shí)現(xiàn)模型的更新及退出程序功能。
1.2.4 編寫(xiě)VB程序代碼并為參數(shù)變量賦值
以圓形截面彈簧為例,程序中關(guān)鍵代碼如下:
(1)建立VB6.0與SolidWorks之間的聯(lián)系。
Private Sub Commandl_Click()
單擊Cimmandl按鈕時(shí)執(zhí)行程序
Dim swApp As ObJect
(2)定義各變量。
Dim swPart As ObJect
Set swApp=CreateObJect(“SldWorks.Application”)
(3)創(chuàng)建SldWorks對(duì)象。
swap.Visible=True
(4)設(shè)置顯示SolidWorks程序界面。
strFileName=App.Path+“\”+“tanhuang.SLDPRT”
Set Part=swApp.OpenDoc4(strFileName,1,0,“”,longstatus)
Set Part=swApp.ActivateDoc(“tanhuang”)
(5)設(shè)置模型庫(kù)保存路徑。
p=Textl.Text
n=Text2.Text
D=Text3.Text
n1=Text4.Text
d=Text5.Text
n2=(n1-n)/2
(6)有效圈圈數(shù)。
n3=n2+n
(7)對(duì)變量參數(shù)賦予不同的數(shù)值。
以下是將變量參數(shù)值賦予彈簧的部分代碼,生成所需模型:
1.3 基于Python的Abaqus二次開(kāi)發(fā)
Abaqus軟件具有很強(qiáng)的通用性與模擬性能,其解決問(wèn)題的范圍從相對(duì)簡(jiǎn)單的線性分析到諸多復(fù)雜的非線性問(wèn)題,同時(shí)還為第三方軟件提供接口,包括SolidWorks和CATIA等三維建模軟件,增強(qiáng)了不同軟件的通用性,極大發(fā)揮了各種軟件的優(yōu)點(diǎn)。Abaqus同時(shí)為二次開(kāi)發(fā)用戶提供PYthon語(yǔ)言接口。Python是一種面向?qū)ο蟮哪_本語(yǔ)言,它有高級(jí)數(shù)據(jù)類型和簡(jiǎn)單有效的面向?qū)ο蟪绦蛟O(shè)計(jì)方法,功能強(qiáng)大、擴(kuò)展性強(qiáng),因而被廣泛應(yīng)用。Abaqus有限元程序通過(guò)集成Python腳本向二次開(kāi)發(fā)用戶提供豐富的庫(kù)函數(shù),可直接操控Abaqus內(nèi)核,實(shí)現(xiàn)模型的建立、指定材料屬性、設(shè)置分析步驟、施加約束條件、劃分網(wǎng)格、提交作業(yè)、后處理分析等一系列功能。
本文利用Python語(yǔ)言對(duì)ABAQUS進(jìn)行二次開(kāi)發(fā)。由于所建立的模型采用參數(shù)化設(shè)計(jì),針對(duì)不用的模型,在PYthon程序段需要定義分析參數(shù),便于用戶根據(jù)不同的材料以及工況等進(jìn)行有限元分析。
1.3.1 定義設(shè)計(jì)分析參數(shù)
根據(jù)設(shè)計(jì)分析要求,所要定義的參數(shù)主要分為模型參數(shù)、材料特性、邊界條件和荷載參數(shù)。
(1)模型參數(shù)。如彈簧絲半徑、彈簧中經(jīng)、節(jié)距等參數(shù),用來(lái)描述彈簧模型的結(jié)構(gòu)尺寸。幾何模型反映的是力學(xué)模型,它必須便于有限元分析計(jì)算。因此,幾何模型應(yīng)在充分反映零件實(shí)際幾何特征和受載的前提下合理簡(jiǎn)化。由于將彈簧兩端切平后會(huì)給后續(xù)網(wǎng)格劃分帶來(lái)不便,因此對(duì)模型進(jìn)行簡(jiǎn)化,不對(duì)彈簧兩端進(jìn)行切平處理。
(2)材料特性。材料特性參數(shù)主要包括材料密度、泊松比、彈性模量等,選取的材料不同,相應(yīng)材料特性參數(shù)的取值也不同,需要用戶根據(jù)實(shí)際材料輸入相應(yīng)的參數(shù)。
(3)邊界條件和荷載參數(shù)。本文螺旋壓縮彈簧主要設(shè)置一端施加固定約束,另一端施加向下的集中力,以此形式施加載荷,并且力的大小不隨時(shí)間和位置變化而變化,只需根據(jù)實(shí)際情況改變載荷值大小即可。
從SolidWorks中導(dǎo)人不同的彈簧模型,需要在Abaqus腳本程序中建立與模型相匹配的彈簧參量,變量名設(shè)置如表2所示。
將以上彈簧參數(shù)設(shè)置為變量,用戶需對(duì)這些變量進(jìn)行賦值,實(shí)現(xiàn)對(duì)不同模型的通用性,大大縮減設(shè)計(jì)人員時(shí)間,避免大量重復(fù)性勞動(dòng)。
1.3.2 二次開(kāi)發(fā)方法與流程
大多數(shù)情況下Abaqus/Python二次開(kāi)發(fā)就是對(duì)一個(gè)CAE分析過(guò)程的腳本化。Abaqus系統(tǒng)不僅提供給使用者一個(gè)CAE分析工具,還提供使用者自編程接口,幾乎每一步CAE操作都可以在執(zhí)行日志文件(.rpy)中找到對(duì)應(yīng)的語(yǔ)句。因此,可以先使用Abaqus進(jìn)行數(shù)值模擬。Abaqus/CAE在rpy文件中用Python腳本方式記錄所有操作命令,用記事本打開(kāi)rpy文件,然后根據(jù)需要修改相應(yīng)代碼,即可形成二次開(kāi)發(fā)的程序代碼,流程如圖5所示。
3 應(yīng)用結(jié)果
本文以圓柱螺旋壓縮彈簧(圓形截面)為例,從GB/T2089-2009中選取,尺寸參數(shù)如表3所示。彈簧材料為60Si2Mn,彈性模量為206Gpa,泊松比為0.29,材料密度為7740kg/m3。彈簧底部施加固定約束,頂部施加載荷,并設(shè)置8個(gè)分析步驟,分別加載100、200、400、600、800、1000、1200、1400N的軸向載荷。
首先在VB程序窗口中輸入相應(yīng)的彈簧參數(shù),在SolidWork。中完成彈簧模型構(gòu)建,如圖6所示。然后將模型導(dǎo)人到Abaqus中,在程序段對(duì)變量進(jìn)行賦值:WireR=8,SpringR=40,Young modulus=206000,Poissons ratio=0.29,Density=7.74x 10-9,運(yùn)行相應(yīng)程序段進(jìn)行CAE分析,模型結(jié)構(gòu)如圖6所示。