馮旺 陳浩 楊亞莉 許莎



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