APP下载

弹簧整体参数化设计与有限元分析

2020-07-24冯旺陈浩杨亚莉许莎

软件导刊 2020年6期
关键词:有限元分析二次开发弹簧

冯旺 陈浩 杨亚莉 许莎

摘要:基于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所示。

猜你喜欢

有限元分析二次开发弹簧
析弹簧模型 悟三个性质
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
自锚式悬索桥钢箱梁顶推施工阶段结构分析
随机振动载荷下发射装置尾罩疲劳寿命分析
有限元分析带沟槽平封头的应力集中
时间弹簧
基于Pro/E二次开发的推土铲参数化模块开发