阶梯轴的有限元分析及其优化 - 图文

更新时间:2024-05-26 03:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学校代号 学 号 分 类 号 密 级

HUNAN UNIVERSITY

硕士学位论文

阶梯轴的有限元分析及其优化

专用软件的开发

学位申请人姓名 李 实 培 养 单 位 机械与汽车工程学院 导师姓名及职称 陈芳祖 副教授 学 科 专 业 机械电子工程 研 究 方 向 机械制造自动化及有限元分析 论文提交日期 2008年4月

摘 要

轴是组成机械的重要零件之一,它用来安装各种传动零件,使之绕其轴线旋转,传递转矩或回转运动,并通过轴承与机架或机座相联结。其结构参数和加工工艺水平不仅影响着整个机械的尺寸和重量,也在很大程度上影响着机械的可靠性与寿命。因此阶梯轴的设计研究是机械设计必不可少的重要组成部分。

ANSYS是一个功能十分强大的、通用性很强的有限元分析软件,本文采用ANSYS的参数化设计语言APDL与VISUAL C++结合起来进行开发阶梯轴的有限元分析及其优化专用软件。

该系统共包括四个部分:用户界面模块、ANSYS计算模块、VC调用接口模块和后处理模块。用VC的对话框编程来编制用户界面模块,用ANSYS的参数化设计语言APDL编写ANSYS计算模块,并通过VC调用接口模块,将VC与APDL编写的命令流嵌套起来:用VC将APDL命令流写入指定的文本文件中,并提取对话框控件中的数据赋给APDL中的数据变量,然后通过批处理方式启动ANSYS调用APDL命令流进行建模、网格划分、载荷施加以及计算等有限元分析过程,计算完毕之后针对阶梯轴现有结构的薄弱环节,进行优化设计。以阶梯轴为优化对象,以提高性能和节约成本为优化目标。利用ANSYS的APDL参数化设计语言,选用ANSYS自带的优化工具完成阶梯轴的优化,使阶梯轴结构重量最轻,并具有良好的强度性能。最后通过将该系统应用于六阶阶梯轴的实例,并将该实例的理论计算值与有限元分析值进行比较,验证了该系统的可行性和计算结果的可参考性。

实践证明,采用大型有限元分析软件ANSYS的二次开发语言APDL和VISUAL C++ 6.0的界面开发技术,研究开发阶梯轴的有限元分析及其优化专用软件系统,实现了阶梯轴建模和分析计算的自动化、智能化,大大减小阶梯轴建模与分析的工作量,提高了新产品研发效率。 关键词:阶梯轴、有限元分析、参数化用户界面、重量优化、APDL

ABSTRACT

Axis is an important component parts of machinery, It used to install a variety of transmission parts, so that the rotation around its axis, transmission torque or rotary movement, and through the bearing and a rack or frame of the association. The structure parameters and the level of processing technology not only affects the entire machinery of the size and weight, are largely affect the reliability of machinery and life. Therefore stepped shaft on the design of mechanical design is essential for an important component part.

ANSYS is a function of very powerful, very strong universal finite element analysis software, Based on APDL of the current finite element analysis software ANSYS and the object-oriented programming language Visual C++,the parameterized finite element analysis system of multidiameter is developed.

There are four major parts of this system:the user interface

part,ANSYS analysis part,VC interface part and the post processor part,Using dialogue box programming of VC to make user face,using APDL to realize the ANSYS parameterized finite element analysis process,then the APDL order and VC code:writing APDL order to appointed text file,then run ANSYS through batch file to call APDL order and realize the finite element analysis.When solving is ended,user can check and deal with the result through the post processor part.Aiming at improving the

performance of the product and retrenching the cost,the optimization of multidiameter is realized. Parameterizing the multidiameter model using APDL and adopting the design optimization tool in ANSYS,the optimum structure of this multidiameter is obtained,with better torsional fatigue strength.Finally, the system used in the six bands

multidiameter.The feasibility and the credibility of this system are proved,by using this system to a case and comparing the finite element analysis results and the theoretical results of the case.

Practice proved that multidiameter of finite element analysis and optimization system is developed by utilizing VC and APDL which is a secondary development language of ANSYS in this thesis.It can create and analysis the multidiameter automatically and intelligently.So it can reduce the multidiameter design load and advance Efficiency.

Key words:finite element method, multidiameter,parametrical,ANSYS,APDL

目 录

摘要

ABSTRACT 第1章 绪论

1.1 本文研究的目的和意义 1.1.1 本文研究的目的 1.1.2 国内外的研究现状 1.1.3 本文的研究意义 1.2 本文研究的主要内容

1.3 阶梯轴结构参数化有限元分析系统的方法 1.3.1系统要实现的目标 1.3.2 ANSYS二次开发技术

1.3.2.1 参数化技术和参数化设计语言APDL 1.3.2.2 用户界面设计语言UIDL 1.3.2.3 用户程序特性UPFs 1.3.2.4 ANSYS数据接口 1.3.3 面向对象编程技术 1.3.3.1 面向对象方法 1.3.3.2 面向对象程序设计

1.3.3.3 面向对象程序设计语言VISUAL C++ 1.4 本章小结

第2章 有限单元法和有限元分析软件ANSYS 2.1 弹性力学基本方程 2.1.1 弹性力学的基本量

2.1.2 外力与内力的关系——静力平衡方程 2.1.3 位移与应变的关系——几何方程 2.1.4 应力与应变的关系——物理方程 2.2 有限元原理 2.3 ANSYS软件简介

2.3.1 ANSYS软件基本构架 2.3.2 ANSYS的典型分析过程

2.4 ANSYS参数化设计语言APDL及ANSYS命令流 2.5 本章小结

第3章 轴分析算法思想 3.1 阶梯轴简介 3.2 阶梯轴的设计 3.2.1 阶梯轴的材料 3.2.2 阶梯轴的设计内容 3.2.3 轴的结构设计

3.2.4 提高轴的疲劳强度的结构措施 3.3 轴的强度计算

3.3.1 按扭转强度或刚度计算 3.3.2 按弯扭合成强度计算 3.4 轴的刚度校核 3.4.1 轴的扭转刚度 3.4.2 轴的弯曲刚度

3.5 疲劳强度的基本理论

3.5.1 影响疲劳强度的主要因素 3.5.2 轴的疲劳强度计算 3.6 本章小结

第4章 VISUAL C++与APDL相互嵌套的实现 4.1 VISUAL C++与APDL的相互嵌套 4.1.1 VISUAL C++对话框编程

4.1.2 VISUAL C++中文本文件的读写

4.1.3 VISUAL C++中APDL命令流文件读写的实现 4.2 VISUAL C++调用ANSYS以批处理方式运行的实现 4.2.1 进程和线程

4.2.2 ANSYS批处理方式运行的程序实现 4.3 本章小结

第5章 用户界面模块的实现 5.1 软件编写思想

5.2 阶梯轴有限元模型的规范化 5.2.1几何模型的选取 5.2.2 参数化建模 5.2.3网格单元的选择 5.2.3.1网格类型

5.2.3.2定义单元属性 5.2.2 加载情况的规范化 5.3 阶梯轴有限元分析的参数化

5.4 参数化阶梯轴有限元分析系统的开发

5.4.1 参数化阶梯轴有限元分析系统的工作流程和原理 5.4.2 参数化阶梯轴有限元分析系统功能介绍 5.5 本章小结

第6章阶梯轴优化设计 6.1 ANSYS优化概述 6.1.1基本概念

6.1.2 优化设计的步骤 6.2 阶梯轴的优化

6.2.1 主轴的优化数学模型 6.2.2 主轴优化的实现 6.3 本章小结

第7章 阶梯轴分析示例 7.1 参数化设计流程

7.2 有限元模型的自动生成 7.3 网格划分 7.4 载荷的计算 7.5 运行结果 7.6 优化结果 7.7 本章小结 第8章 结论与展望 8.1 结论 8.2 展望 参考文献 致谢

第1章 绪论

1.1 本文研究的目的和意义

1.1.1 本文研究的目的

轴系零件是机械产品中的通用零件,应用非常广泛。轴系零部件的设计效率直接影响了机械产品的设计效率。轴是组成机械结构的重要零件之一。它是轴系零件中的主要零件, 也是支撑轴上零件、传递运动和动力的关键部件。机器的工作能力和工作质量在很大程度上都与轴有关, 轴一旦失效, 有可能造成严重后果。轴的设计不同于一般零部件的设计。它包含两个主要内容: 强度设计和结构设计。为了保证其足够的工作能力, 必须对轴进行强度计算, 必要时还要做刚度计算、振动稳定性计算等。为了保证安装在轴上的零件能正确地定位和固定, 满足轴的加工和装配的要求, 必须合理地定出轴各部分形状和结构尺寸, 也即进行结构设计。实际设计中,强度计算和结构设计互相关联、互相影响, 需要不断地交互进行[1]。有限元技术的出现,为工程设计领域提供了一个强有力的计算工具,经过迄今约半个世纪的发展,它已日趋成熟实用,在近乎所有的工程设计领域发挥着越来越重要的作用。有限元技术的应用,使得几何形状复杂的零件,其强度和刚度等计算能够实现,且其精度满足工程实际需要;同时提高了机械零部件设计的可靠性,缩短了设计周期,大大推动了机械工业的发展。本课题的设计思想是通过面向对象的方法,实现自动计算阶梯轴精确强度及其优化分析的有限元软件的开发。

1.1.2 国内外的研究现状

有限元方法的发展,其基本思想的提出可以追溯到上世纪40年代初。1956年,美国波音

飞机制造公司M.J.Tuner和R.W.Clough等人[2]分析大型飞机结构时,第一次采用了直接刚度法,给出了用三角形单元求解平面应力问题的正确解答,从而开创了利用电子计算机求解复杂弹性平面问题的新局面。有限元或有限单元 (Finite Element)这一术语,是R.W.Clough

[3]

于1960年在一篇论文中首次提出的。随着计算机的飞速发展和广泛应用,有限单元法得到了巨大的发展,成为在计算数学、计算力学和工程科学领域的最有效的计算方法。它己成为科学研究和工程设计必不可少的数值分析工具。随之出现了很多通用和专用的有限元计算软件,著名的有ANSYS、ABAQUS、Ideas、Marc等,其中ANSYS的应用最为广泛。经过30多年的发展,它已经成为一个功能强大的,灵活的设计分析及优化的软件系统。

在机械工程中,小到螺栓、轴承等通用零件,大到机床、汽车、飞机等复杂结构的应力

和应变分析,采用有限元法计算均可以获得一个足够精确的近似解来满足工程实际上的要求。目前,国内外机床厂家已经在机床设计中广泛地应用有限元分析方法,并在机床基础件(如床身、立柱、框架等)和主轴部件等的静、动态特性分析计算中取得成就。在国外Velagala R.Reddy[4]等人利用有限元法对车床主轴建模,并以轴承间隙,轴承刚度以及工件直径大小为设计参数,对其进行静、动态分析。A.M.Sharan[5]对实际车床的主轴进行动态分析。K.W.Wang和C.H.Chen[6]对高速主轴一轴承系统的动力学特性进行了详细研究,指出在高速条件下滚动轴承的刚度随转速的升高而降低,导致主轴系统的固有频率随之下降。

在国内,西安交通大学张波、陈天宁[7]等在ANSYS环境中建立了机床主轴部件的有限元动力学模型,并对主轴部件进行了静、动态特性的计算和动态优化设计。他们在对某型数控车床进行空运转、切削及模态试验的基础上,确定了机床主轴部件动刚度薄弱是引起机床切削的结构颤振方面的原因。据此建立了简化的有限元动力学模型,在ANSYS中分析其前8阶的模态频率,确定动态优化设计的目标,然后设计和修改主轴的结构使之达到预期的动态特性。武汉理工大学陈龙、文湘隆[8]等人以ANSYS为基础对各类轴进行了分析与优化设计。他们先用ANSYS校核普通圆轴的强度、刚度和临界速度,并给出在满足要求情况下轴的优化设计方法。优化设计时,以轴的直径作为设计变量,应力、应变、临界转速作为状态变量,轴的总重作为目标函数,在ANSYS中进行参数定义,优化设计。

随着CAD/CAM/CAE技术的不断发展,有限元分析、优化设计方法等现代机床设计方法的发展与推广运用,将对我国机床制造业发展起着重要的促进作用。

1.1.3 本文的研究意义

在产品设计和开发过程中,零、部件的标准化、通用化和系列化是提高产品设计质量、缩短产品开发周期的有效途径。参数化设计方法作为一种灵活多变的CAD方法,采用参数化模型,通过调整参数来修改和控制几何形状,进行产品的造型。它将图形尺寸与一定的设计参数相关联,即将图形尺寸看成是设计参数的函数,当设计条件发生变化时,图形尺寸便会作相应的变化,是实现标准化、通用化和系列化的重要途径。

APDL是ANSYS参数化设计语言,提供一般程序语言的功能,如参数、标量、向量及矩阵运算、宏、分支、循环、重复以及访问ANSYS 有限元数据库等。利用APDL 语言编制宏文件,即可实现参数化建模分析,大大提高工作效率。另外,参数化建模也是进行产品优化设计的要求。因为在优化设计的迭代中需要不断地变更设计变量,故建模中有关设计变量数值应该以参数化的形式输入。

在此基础上,利用Visual C ++语言开发出用户操作界面,实现参数化分析,即使用户对ANSYS软件不熟悉,也可以轻松对结构相同、尺寸相异的机构进行分析。

1.2 本文研究的主要内容

本文在系统开发的过程中,主要将整个系统分成四个模块:用户界面模块、ANSYS计算模块、VISUAL C++调用接口模块和后处理模块,因此本文研究的主要内容就是这四个模块的实现。如图1.1为整个系统的一个框架图。

用户界面模块 接受输入 调用 VC调用接口模块 ANSYS计算模块 计算结束 用户界面模块 图1.1 系统框架图

用户界面模块用VISUAL C++编制输入参数对话框,同时起到一个向导的作用,使设计者在对话框的指引下输入需要的参数,按一定的顺序完成有限元分析和后处理。ANSYS计算模块由APDL语言编写,完全实现有限元建模、求解和后处理的参数化,并按照需要将不同的功能部分保存成不同的模块。

VISUAL C++调用模块在本系统中起着接受用户界面输入、创建进程调用ANSYS进行计算的重要作用。因此在VISUAL C++调用模块中主要有两方面的工作需要做:一是要使接口程序可以修改ANSYS命令流文件的保存路径和文件名称,二是要能够在接口程序中实现ANSYS以批处理方式运行。

最后一个模块为后处理模块,在这个模块中,有两种方案可以采用:一种是用APDL编写命令流将需要的结果保存成图片文件的形式,不用启动ANSYS,直接通过VISUAL C++调用显示这些图片:另一种方案是将不同工况计算结束后的结果模型保存成不同的数据文件,然后针对每一种工况的数据文件,用APDL编写一个调用宏文件,在ANSYS中加载这些宏文件形成一系列工

具条。要查看的时候,就用VISUAL C++将ANSYS启动(当然要出现ANSYS界面),设计者可以根据自己的需要在ANSYS中查看相应的结果情况。

在以后的章节中,将分别对这几个模块功能的实现进行详细的介绍。首先在第4章介绍面向对象技术和VISUAL C++调用模块的实现;第5章介绍用户界面模块,并结合实例说明整个系统的运作流程;第7章结合实例介绍进行后处理的模块,并将理论计算的实例的计算结果与利用该系统计算得出的结果进行比较,证明该系统的可行性;第8章对本文所做的工作进行总结,并展望未来要做的工作。

课题所做的主要工作有下列几个方面:。 ①、在有限元软件ANSYS中实现阶梯轴的精确建模

课题研究了利用ANSYS软件自身的建模功能建立较精确的阶梯轴模型的方法,减少了资源浪费,软件投入,避免了在CAD软件(PRO/E, SOLIDWORK等)中建模后导入ANSYS时引起的数据流失。

②、阶梯轴受力情况的分析

课题着重探讨了以阶梯轴为实例,利用ANSYS现有的接触分析功能来实现机构的整体分析的方法。并且,在接触分析后期比较了不同的加载方式和实常数取值对分析结果产生的影响,最终确定了合理的加载方式和实常数取值,为下一步建立参数化分析命令流打好基础。

③、参数化

本课题在ANSYS软件传统的GUI操作方式的基础上,结合上一部分的建模、加载等方法,利用APDL语言对菜单操作的过程中的各项命令进行修改,形成了可直接调用的参数化命令流文件,为下一步的软件开发提供了最重要的帮助。

④、软件开发

用Visual C++语言编制相应的软件,集成ANSYS有限元分析的全部功能。以此为平台,根据用户输入的参数,自动写入ANSYS命令流文件,实现参数在软件中自动传递,计算完成后可方便调用仿真动画和应力云图。

1.3 阶梯轴结构参数化有限元分析系统的方法

1.3.1系统要实现的目标

首先,从易用性方面考虑,该系统应具有良好的用户界面。系统的前台设计要采用Windows提供的标准图形用户界面,用户不需要接受专门训练就可以使用;

第二,在功能上,允许用户输入计算所需要的各种参数,可以进行工况选择,用户通过

界面调用后台的程序进行计算后,能够得到最后的计算结果文件,供用户进行后处理和结果分析;

第三,从通用性考虑,要在各种计算机系统中都可以使用,且程序代码具有开放性和可重用性,这样,在进一步的设计中,可以允许设计者对代码进行修改和扩充,满足不同的需要。

基于上述三种考虑,选用VISUAL C++和ANSYS作为系统的开发工具。

前面己经介绍过ANSYS是目前最通用的有限元分析软件,其强大的功能完全可以满足本系统分析计算的需要。并且它提供的二次开发语言APDL(ANSYS Parametric Design Language)可以将ANSYS封装起来。参数化设计语言APDL是一种高效的参数化建模手段,使用APDL语言进行封装以后的ANSYS系统,可以只要求操作人员输入前处理参数,然后自动运行ANSYS进行计算求解。

但完全使用APDL编写的宏还存在弱点,比如用APDL语言较难控制程序的进程,虽然它提供了循环语句和条件判断语句,但总的来说还是难以用来编写结构清晰的程序,虽然它提供了参数的界面输入,但功能还不是太强,交互性不够流畅,而VISUAL C++可以弥补这种缺陷。目前也有很多人在尝试用VISUAL C++与ANSYS结合起来开发通用的有限元分析系统,因此本文采用ANSYS的参数化设计语言APDL与VISUAL C++结合起来进行开发:用VISUAL C++开发前台界面,后台用APDL语言编写有限元分析程序,并将两者嵌套起来,通过VISUAL C++创建进程,调用ANSYS以批处理方式后台运行APDL编写的宏命令文件,来实现前处理有限元建模和求解分析的过程。

1.3.2 ANSYS二次开发技术

由于使用ANSYS解决的问题是具有复杂的科学和工程背景的难题,而且ANSYS又是一个知

识和智慧密集的复杂高科技产品,它对用户的力学、有限元理论和数学的等知识有较高的要求,所以对ANSYS进行二次开发是很有意义的。前面介绍过,ANSYS提供的二次开发接口和语言主要由参数化设计语言APDL,用户界面设计与语言UIDL(User Interface Design Language),用户程序特性UPFs(User Program Features)和ANSYS数据接口四部分组成。本文在系统开发中使用了ANSYS的参数化设计语言APDL,这里就对ANSYS的二次开发工具做一个简单的介绍。

1.3.2.1 参数化技术和参数化设计语言APDL

随着现代化工业的高速发展,产品的功能、结构的日趋复杂,新产品更新换代周期的不断缩短,设计在产品的整个生命周期中占据了越来越重要的地位。因此随着CAD/CAE软件的进

一步发展,为了将设计师们从反复的设计工作中解放出来,提高设计的效率和质量,一个最好的办法就是实现产品设计的参数化。一般来说,参数化设计是指通过改动模型某一部分或几部分的尺寸,自动完成模型中其它相关部分的改动,从而实现尺寸对模型的驱动。

ANSYS作为功能强大的通用有限元分析软件,也提供了它自身的参数化设计语言APDL。APDL实质上是由类似于FORTRAN77的程序设计语言部分和1000多条ANSYS命令组成[9]。

其中,程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、流程控制(循环与分支)、重复执行命令、缩写、宏以及用户程序等。APDL不仅是设计优化和自适应网格划分等经典特性的实现基础,而且它也为日常分析提供了很多的便利[10]。

标准的ANSYS程序运行是由1000多条命令驱动的。从ANSYS命令的功能上讲,APDL语言分别对应ANSYS分析过程中的定义几何模型、划分单元网格、材料定义、添加载荷和边界条件、控制和执行求解以及后处理计算结果等指令。用户可以利用APDL语言将ANSYS命令组织起来,编写出参数化的用户程序,从而实现有限元分析的全过程,即建立参数化的CAD模型、参数化的网格划分与控制、参数化的材料定义、参数化的载荷和边界条件定义、参数化的分析控制和求解以及参数化的后处理。

另外,还可以用APDL语言编写宏。宏是具有某种特殊功能的命令组合,实质上是参数化的用户小程序,可以当作ANSYS的命令处理。如果把宏编写成一个便于记忆和比较通用的宏,还可以在ANSYS的工具条上当作命令来使用。

利用APDL语言进行编程和调试都比较容易。随便打开一种文本编辑器,如写字板,记事本等,用户就可以直接进行参数化命令流的编写。对于不熟悉APDL语言的用户,也可以采取从日志文件中提取命令流的方式进行APDL编程。因为一般利用GUI方式进行有限元分析时,ANSYS会自动将每一步GUI操作对应的命令流记录在LOG文件里。用户可以用文本编辑器打开LOG文件,然后提取有用的APDL命令流。一般在编程的过程中,可以将两者结合起来。 1.3.2.2 用户界面设计语言UIDL

UIDL(User Interface Design Lauguage)是编写或改造ANSYS图形界面的专用设计语言,GUI方面几乎全部的二次开发功能都依靠它来完成。它主要完成以下三种图形界面的设计:主菜单系统、菜单项对话框和拾取对话框帮助系统。

UIDL主要具有以下的功能:

①具有组织强大的菜单系统,即使在ANSYS中也能做成可以和VC、VB之类主流GUI开发工具媲美的菜单响应效果;

②能够构建功能丰富的对话框;

③建立自己的联机帮助;

通过用户界面设计语言(UIDL),用户可以在扩充ANSYS功能的同时建立起对应的图形驱动界面,如在主菜单的某位置增加菜单项,设计对应的对话框、拾取对话框,实现参数的输入和其它程序运行的控制,同时提供相应的联机帮助,使操作者能方便地获取系统帮助等。 1.3.2.3 用户程序特性UPFs

用户程序特性(UPFs)向用户提供丰富的FORTRAN77用户程序开发的子程序和函数,用户利用它们从开发程序源代码的级别上扩充ANSYS的功能。使用这些子程序和函数,编写用户功能的源代码程序,在与ANSYS版本要求匹配的FORTRAN或C++编译器上重新编译和连接,生成用户版本的ANSYS程序。另外,还提供了外部命令功能,允许用户创建ANSYS可以利用的共享库。

用户可以开发下列方面的功能程序:

开发用户子程序,实现从ANSYS数据库中提取数据或将数据写入ANSYS数据库。该种子程序可以编译连接到ANSYS中,此时ANSYS提供了10个数据库操作命令。

如果作为外部命令处理,可以在ANSYS的任何模块中运行;利用ANSYS提供的子程序定义各种类型的载荷,其中包括BF或BEF载荷、压力载荷、对流载荷、热通量和电荷密度等;利用ANSYS提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;利用ANSYS提供的子程序定义新单元和调整节点方向矩阵;利用ANSYS提供的子程序修改或控制ANSYS单元库中的单元;利用UEROP创建用户优化程序;ANSYS程序作为子程序在用户程序中调用。

1.3.2.4 ANSYS数据接口

ANSYS程序在分析过程中存在大量的设计分析数据,一部分在运行时置于计算机的内存之中,一部分以文件的形式存放在工作目录中。除LOG文件和出错文件等文本文件之外,其它文件都是二进制文件,分别以不同的格式进行写入,如:数据库文件、结果文件、模态结果文件、单元矩阵文件、子结构矩阵文件、对角化刚度矩阵文件、缩减位移矩阵文件、缩减频率矩阵文件和完整的刚度—质量矩阵文件等等。

ANSYS数据接口详细地阐述每种二进制文件的格式,然后介绍从这些数据文件提取各种数据的子程序或函数,从而实现对二进制数据的读写和修改。它满足了用户以下三种基本需要:检查或观察过程数据或结果数据;通过修改ANSYS的数据文件达到控制或修正计算;提取结果数据进行分析处理。

ANSYS数据接口提供了两条模型和数据库信息的转换和传递命令,即CDREAD和CDWRTIE,前者将一个符合ANSYS读入或写出格式的模型和数据库文件信息读入到ANSYS数据库中,后者

的作用正好相反。

ANSYS数据接口还阐述了图形文件的格式,帮助用户将ANSYS图形文件转换成其它格式。

1.3.3 面向对象编程技术

1.3.3.1 面向对象方法

面向对象方法是20世纪90年代计算机研究领域中广泛应用的技术,它既是一种软件开发方法,也可以作为一种建立系统的基础结构。

采用面向对象的分析和设计方法,可以将一个问题分解成若干小问题,每个小问题又可以分解成更小的问题。而每个小问题都是一个独立的模块,并且具有一个清晰的抽象界面,它只说明做什么,不必说明如何去做。这种基于数据抽象的模块,又可以引入继承性、多态性等机制产生新的模块,最后再使用动态链接技术将这些模块组装成大型的程序[11]。 1.3.3.2 面向对象程序设计

面向对象程序设计(Object—Oriented Programming,简称OOP)是以对象为中心的程序设计方法,它包括对象、类、继承、消息几个基本概念[12]。

在面向对象的程序中,程序=对象+消息传递,对象是组成程序的基本单位,我们可以通过向对象发送消息的方式来驱动对象的行为,每个对象根据所收到消息的性质来选择所需要采取的行为,以响应这个消息。面向对象的程序设计还具有封装、继承和多态三个重要特性。 1.3.3.3 面向对象程序设计语言VISUAL C++

面向对象程序设计的实质是要选用一种面向对象的设计语言,采用面向对象的方法进行程序设计。Visua1 C++ 6.0是Microsoft公司最新推出的面向对象的程序开发工具,它在计算机领域中被公认为最优秀的专业化应用开发工具之一。Visua1 C++作为一个集成开发工具,为编程工作者提供了程序框架代码自动生成和可视化的资源编辑功能,从而使编程工作变得更为简单。Microsoft为Visua1 C++提供了强大的基本类库MFC(Microsoft Fundation Classes),它包含了很多微软公司已经定义好的程序开发过程中最常用到的对象。可以说Visua1 C++在引入了MFC以后,便使Windows程序设计彻底实现了模板化,从而大大降低了程序设计的复杂性[13]。

1.4 本章小结

本章介绍了本文研究的目的和意义、本文研究的现状、采用ANSYS的有限元分析模块进行阶梯轴有限元分析方法的综述以及ANSYS二次开发技术等方面的内容上涵盖了本文的全部内容,统领全文。

第2章 有限单元法和有限元分析软件ANSYS

有限单元法是在六七十年代发展起来的强有力的数值分析方法,它使许多复杂的工程分析问题迎刃而解,而且由于前、后处理技术的发展,大型有限元分析软件逐步商业化,使得有限单元法和有限元分析软件的计算效率非常高,实际应用越来越广泛。为应用有限单元法和ANSYS软件对阶梯轴进行分析,本章对有限单元法的相关理论和ANSYS软件进行介绍。

2.1 弹性力学基本方程

弹性力学是研究弹性体在外力作用或温度变化条件下所产生的应力和变形的一门科学,比材料力学具有更高的严密性。在有限单元法中,经常要用到弹性力学的基本方程。有限单元法是与弹性力学密不可分的,弹性力学是弹性体的力学问题的解析解法,而有限单元法是弹性体力学问题的数值解法之一,且应用灵活方便,适用范围广泛。弹性力学也是有限单元法的基础理论之一,在推导有限单元法过程中经常要用到弹性力学的基本方程[14]。

2.1.1 弹性力学的基本量

弹性体在载荷作用下,体内任意一点的应力状态可由6个应力分量来表示。弹性体还将产生位移和变形,即弹性体位置的移动和形状的改变。

位移列阵 ?V???? ? ??

T?????x ?y ?z ?xy ?yz ?zx? 应力列阵 ?T应变列阵 ??????x ?y ?z ?xy ?yz ?zx?

T2.1.2 外力与内力的关系——静力平衡方程

弹性体V域内任一点沿坐标轴x,y,z方向的平衡方程为

??x??yz??zx???fx?0?x?y?z??y??xy??zy???fy?0?y?x?z ??z??yz??zx???fz?0?z?y?x其中fx,fy,fz为单元体积的体积力在x,y,z方向的分量。

2.1.3 位移与应变的关系——几何方程

在微小位移和微小变形的情况下,略去位移导数的高次幂,则应变向量和位移向量间的几何关系有

?u?v?w,?y?,?z?,?x?y?z?u?v?v?w?u?w?xy????yz,?yz????zy,?zx????xz,?y?x?z?y?z?x?x?

2.1.4 应力与应变的关系——物理方程

弹性力学中应力与应变之间的转换关系也称弹性关系。对于各向同性的线弹性材料,应力通过应变的表达式可用矩阵形式表示:

其中

?????D????

000000????0??0??0???0??1?2v?2?1?v???0vv?1?1?v1?v?vv?11?v?1?vv?v1??D??E?1?v??1?v1?v?1?v??1?2v??000??00?0??000??1?2v02?1?v?1?2v02?1?v?00称为弹性矩阵.它完全取决于弹性体材料的弹性模量E和泊松比?。

表征弹性体的弹性,也可用拉梅(Lam’e)常数G和?:

G?EEv,???1?v??1?2v?2?1?v?G也称为剪切弹性模量。注意到

??2G?

E?1?v??1?v??1?2v?物理方程中的弹性矩阵?D?也可表示为

???2G??????D????0?0???0

??0??2G?0???2G00000000?00??00??G00?0G0??00G??0物理方程的另一种形式是

?????C????

?1其中?C?为柔度矩阵。?C???D?,它和弹性矩阵是互逆关系。

2.2 有限元原理

有限单元法(Finite Element Method,缩写为:FEM),也称为有限元法或有限元素法,是将所探讨的工程系统(Engineering System)转化为一个有限元系统(Finite Element System),有限元系统由节点(node)及单元(element)组合而成,组合成的系统模型取代原有的工程系统。目前在工程领域内常用的数值模拟方法有:有限单元法、边界元法、离散单元法和有限差分法,但就其广泛性而言主要还是有限单元法。有限元法用于求解复杂的弹性力学和结构力学方程,对于这些问题它已经基本上代替了有限差分法。

有限元法在工程分析中的地位是不可替代的,它的基本思想是将求解区域离散为一组有限个、且按一定方式相互连接在一起的单元的组合体,单元之间通过节点相连,每个单元被看作是一个整体。单元内部任意位置的待求量只能够由单元节点上的求解值通过形函数插值得到。由于设定的单元形状简单,因此易于从平衡关系和能量关系建立节点量的方程式,通过求解所有这些单元方程组合成的一个总体代数平衡方程组,最终获得复杂模型的近似数值解。显然,单元越小结果也接近实际,但是同时计算量就大了,计算时间也长了,所以要根据具体情况划分合适的单元数。这是随着电子计算机的发展而迅速发展起来的一种现代计算方法。有限元法主要是根据变分原理求解数学物理问题的数值计算方法,是工程方法和数学方法相结合的产物,可以求解许多过去用解析方法无法求解的问题,它对于解决复杂几何结构和边界问题更具优势,而且结果更接近真实情况。它能准确地反映计算对象的实际受力情况,在设计中节约材料,使结构更合理,确保部件(特别是高速运动部件)的安全性,是一

[15]

种先进的方法[16-23]。

有限元法步骤如下:

①连续体的离散化;也就是将给定的物理系统分割成等价的有限单元系统。

②选择位移模型;假设的位移函数或模型只是近似的表示了真实位移分布。通常假设位移函数为多项式,其中最简单的情况为线性多项式。我们所要做的是选择多项式的阶次,以使其在可以接受的计算时间内达到足够的精度。

③用变分原理推导单元刚度矩阵:刚度矩阵K、节点矢量f和节点位移矢量u的平衡关系表示为线性代数方程组:?ke??ue???fe???Ke??Ue???Fe? 局部坐标系下→整体坐标系下;

④整合整个离散化连续体的代数方程,即把各个单元的刚度矩阵集合成整个连续体的刚度矩阵,把各个单元的节点力矢量集合为总的力和载荷矢量:?K??U???F?

⑤施加位移约束;

⑥求解位移矢量;即求解上述代数方程,在求解的每一步都要修正刚度矩阵和载荷矢量。 ⑦由节点位移计算出单元的应变和应力。

在实际工作中,上述有限元分析只是在计算机软件处理中的步骤,要完成工程分析,还

开 始 决 定 分 析 项 目 决定分析项目的几何结构 及边界条件,获取材料性质 建立有限元模型包括单元类型、材料性质、有限元网格 加载并求解 输出结果 否 结果是否合理 是 问题解决或得到最佳设计 进行改进处理 图2.1 有限元分析流程图

需要更多的前处理和后处理,完整的有限元分析流程图如图2.1所示。

2.3 ANSYS软件简介

ANSYS作为大型通用有限元计算软件,是一个融结构、热、流体、电、磁、声学于一体的大型通用有限元软件。作为目前最流行的有限元软件之一,它具备功能强大、兼容性好、使用方便、计算速度快等优点,广泛用于核工业、铁道、石油化工、航天航空、机械制造、能源汽车交通、国防军工、电子、土木工程、生物医学、水利、日用家电等一般工业及科学领域。

2.3.1 ANSYS软件基本构架

ANSYS软件主要包括三个部分:前处理模块、分析计算模块和后处理模块。能够进行结构静力分析、结构动力学分析、结构非线性分析、运动学分析、热分析、电磁场分析、流体力学分析、声场分析、压电分析、多物理场耦合分析等[23]。

ANSYS构架分为两层,一层是起始层(begin level),二层是处理层(processor level)。当一个操作命令输入时,通过起始层过滤和分流,进入到处理层中不同的求解器。

求解器可视为解决问题步骤中的组合代码,执行特定的命令,解决问题的一个部分。包括前处理器、求解器、后处理器。ANSYS中的这三类求解器在分析使用流程如图2.2所示[23]。

在分析的不同阶段,需要进入不同的求解器进行操作。既可以通过菜单选项进入,也可以通过输入命令进入。例如,可以通过斜杠“/”加处理器的名称进入到相应的求解器,如/prep7进入前处理器,/solu进入求解器,而/post1命令则进入后处理器。

退出处理器,进行处理器之间的转换,可以通过finish命令或fini命令先回到起始层,然后进入想到达的求解器位置。

进入ANSYS 退出ANSYS 起始层begin level finish /prep7 /solu finish /post26 finish /post1 finish 前处理器prep7 processor 求解器solution processor 时间历程后处理器post26 processor 后处理器post1 processor 图2.2 ANSYS三类求解器使用流程图

2.3.2 ANSYS的典型分析过程

进行有限元分析的最终目的是要将一个实际工程系统的数学模型还原,也就是分析必须是针对一个物理原型的数学模型。模型包括所有的节点、单元、材料属性、实常数、边界条件,以及它用来表现这个物理系统的特性[24]。

ANSYS分析过程中包含以下3个主要的步骤。 ①创建有限元模型

1)创建或输入几何模型并进行布尔运算

ANSYS软件同很多CAD软件都有接口,可以在其他的CAD软件中建立好模型后通过这些接口导入ANSYS进行分析,这样就可以利用建模能力相对ANSYS较强的CAD软件建模,但是从CAD软件导入ANSYS的模型有时需要大量的修补工作才能进行网格划分。所以也可以直接在ANSYS软件环境中建模。

2)单元类型及材料属性的选择

在有限元分析中,单元类型选择正确与否将决定其最后的分析结果。ANSYS提供了120多种不同性质与类别的单元,每一个单元都有其固定的编号。如link180是第180号单元,通过每个单元前的名称就可以判断该单元的使用范围及形状。单元类别可以分为一维线性单元、二维平面单元和三维立体单元。不同的材料,不同的模型,就应该选择不同的单元类型和材料属性。

3)将不同材料属性的实体赋予不同的属性

4)选择合适的单元大小,划分网格(产生节点和单元) ②根据具体的受力和约束情况施加约束和载荷 ③求解并查看结果

2.4 ANSYS参数化设计语言APDL及ANSYS命令流

进行有限元分析的标准过程包括:定义模型及其载荷,求解和解释结果,假如求解结果表明要修改设计,那么就必须改变模型的几何形状并重复上述步骤;或者当结构状态改变,命令后的参数也会有所改变,因此必须重新编写程序,这对设计者而言相当不方便,特别当模型较复杂或修改较多时,这个过程就很复杂和费时,而且还不能保证修改的完全性[25]。

ANSYS参数化设计语言APDL(ANSYS Parametric Design Language)是一种解释性语言,它用建立智能分析的手段为用户提供了自动完成上述循环的功能,以更方便的方式进行程序编辑,也就是说程序的输入可设定为根据指定的函数、变量以及选出的分析标准作决定,可以帮助我们更加有效地进行分析计算,是一种高效的参数化建模手段,而且允许复杂的数据输

入,使用户实际上对任何设计或分析属性有控制权,例如尺寸、材料、载荷、约束位置和网格密度等[26]。

APDL实际上由类似FORTRAN77的程序设计语言部分和大量的ANSYS命令组成。它的程序设计语言部分与其它编程语言一样,具有参数、数组表达式、函数、宏以及流程控制(循环与分支)等。 例如: /PREP7

YS=2.1e5 !设置杨氏弹性模量 Length=100 !设置参数Length Width=10 !设置参数Width Thick=1 !设置参数Thick ET,1,SHELL63 !定义单元类型

R,1,Thick,Thick,Thick,Thick,0,0, !定义实常数 MP,EX,1,YS !定义材料属性 MP,NUXY,1,0.3 !定义泊松比

RECTNG,0,Length,0,Width, !建立面

当模型或材料变化时,只要改变上述参数即可。

APDL是用来自动完成某些功能或建模的一种脚本语言。它也包含了一系列其他特征,如命令的复制、宏、if-then-else分支、do循环以及标量、矢量和矩阵的操作。其“参量”兼有其他程序设计语言中变量和参数两种意义,但是并不明确区分。APDL语言是ANSYS高级应用的基础,如优化设计、自适应网格等。但对一般用户来说,掌握了APDL也会使分析更为简单有效。随着用户对它越来越熟悉,它将会逐渐体会到其强大无比的功能。

APDL有下列功能: 参数 数组参数 分支和循环 重复功能和缩写 宏

这些功能可以根据需要单独或同时使用,尽管多数APDL语言可以从菜单方式获得,但是也有一些不能;且APDL作为一种脚本语言,用命令方式输入更为方便,要获得一个命令对应

一个布尔型参数,它决定了数据传送的方向。当参数为TRUE时,将数据从对话框的控件传送到对应的数据成员中,当参数为FALSE时则将数据从数据成员中传给对应的控件。

4.1.2 VISUAL C++中文本文件的读写

在开发软件的过程中,程序员经常同文件系统打交道,读写各种文件。在VISUAL C++6.0环境下,程序员可以使用ANSI C/C++提供的标准文件操作方式,也可以使用Win32 API进行文件操作,更为简单的方法是利用MFC已经封装好的CFile系列的文件操作类来进行文件的读写操作[29]。

本文主要使用ANSI C/C++提供的标准文件操作方式,采用这种方式进行开发的优点是通用性,因此必然会无法利用特定操作系统的某些特性,例如Windows操作系统下的异步操作特性。

ANSI C/C++提供的标准文件操作函数有fopen、fclose、fgetc、fputc、fread、fwrite、feof、ferror等,本文用到的函数主要是[30]

1、fopen函数原型

FILE*fopen(const char*filename,const char*mode);

该函数的功能是打开一个文件,如果成功调用,返回一个文件指针;否则,返回NULL。 ● filename 参数 要打开的文件名称 ● mode 参数

文件打开的模式。可以使用的数值有r、w、a、r+、w+、a+,分别表示读文件、写文件、在文件尾部写、读写文件、打开空文件进行读写、在文件尾部读写。 2、fcolse函数原型

int fclose(FILE*stream);

该函数的功能是关闭一个文件,返回0表示成功,否则失败。 ● stream 参数

由fopen打开的文件指针。

ANSI C还提供了一个比较有用的关闭文件函数——_fcloseall,这个函数可以关闭所有打开的文件,但是不包括几个标准的输入、输出设备,即stdin、stdout、stderr。 下面一段代码演示了fopen、fclose、_closeall函数的用法。 /*FOPEN.C:这段程序打开了data,data2两个文件,

利用fclose关闭了data,利用_fcloseall关闭了其他的文件*/

#include FILE*stream,*stream2; Void main(void) {

int numclosed; //打开文件,进行读

if((stream =fopen(“data”,“r”))==NULL) printf(“The file ‘data’was not opened\\n”); else

printf(“The file ‘data’was opened\\n”); //打开文件,进行写

if((stream2 =fopen(“data2”,“w+”))==NULL)

printf(“The file ‘data2’was not opened\\n”); else

printf(“The file ‘data2’was opened\\n”); //关闭文件

if(fclose(stream))

printf(“The file ‘data’was not opened\\n”); //关闭其他的文件

Numclosed =_fcloseall();

printf(“Number of files closed by _fcloseall:%u\\n”,numclosed); }

这段程序的输出结果为: The file ‘data’was opened The file ‘data2’was opened

Number of files closed by _fcloseall:1 3、fread函数原型

size_t fread(void*buffer,size_t size,size_t count,FILE*stream); ●buffer 参数

接受读入数据的缓冲区。 ●size 参数

打算读取的数据长度。 4、fwrite函数原型

size_t fwrite(const void*buffer,size_t size,size_t count, FILE*stream); 参数同fread。

下面这段代码演示了fread、fwrite的使用方法。 /*FREAD.C:

这段程序首先写入25个字符,然后读入25个字符 并且显示出读取字符的个数 */

#include void main(void) {

FILE*stream; char list[30];

int i,numread,numwritten; //打开文件

if((stream = fopen(“fread.out”,”w+t”))!=NULL) {

for(i=0;i<25;i++)

list[i]=(char)(‘z’-i); //写入字符

Numwritten=fwrite(list,sizeof(char),25,stream); printf(“Wrote %d items\\n”,numwritten);

fclose(stream);

} else

printf(“Problem opening the file\\n”);

if((stream =fopen(“fread.out”,”r+t”))!=NULL)

{ //读取字符

printf(“Number of items read = %d\\n”,numread); printf(“Contents of buffer = %.25s\\n”,list); fclose(stream); } else

printf(“File could not be opened\\n”); }

5、fprintf 函数原型

int fprintf( FILE *stream, const char *format [, argument ]...); 是用于文件操作的,printf就是在屏幕打印出一段字符串,是标准输出。

举例用法:

#include #include FILE *stream; void main( void ) {

int i = 10; double fp = 1.5;

char s[] = \char c = '\\n';

stream = fopen( \fprintf( stream, \fprintf( stream, \fprintf( stream, \fclose( stream );

system( \}

屏幕输出: this is a string 10 1.500000

4.1.3 VISUAL C++中APDL命令流文件读写的实现

在4.1.1和4.1.2中分别介绍了对话框编程中数据的提取和使用ANSI C/C++提供的标准文件进行操作,在本节中就将介绍利用这些方法来实现将APDL编写的命令流在VISUAL C++中写到文本文件中去。首先将APDL写的命令流生成一个LeaderAxis.txt文件,然后采用ANSI C/C++的fwrite函数将输入的参数写到创建的文本文件中,下面就以在VISUAL C++中,将阶梯轴有限元建模和网格划分的APDL命令流文件写入到指定的文本文件中为例,说明具体的实现过程,其用VISUAL C++编写的部分主要实现代码如下:

4.2 VISUAL C++调用ANSYS以批处理方式运行的实现

本文在VISUAL C++平台上对ANSYS进行封装,希望可以在前台处理系统和用户之间的交换,后台完成ANSYS的计算,这可以通过创建进程的方式来实现。

4.2.1 进程和线程

进程是正在执行的程序,程序是静态的代码和数据。同一个程序,可由多个进程执行。在操作系统内部,进程是位于核心区的一块内存结构,其中包含了虚拟地址空间、可执行代码、数据、对象句柄、环境变量、基本优先级、最小和最大工作集等有关信息。

线程是程序中的一个执行路径,它在进程上下文中执行。进程中的每个线程都独立运行。它们共享进程提供的各种资源:如代码、数据、虚拟地址空间等。每个线程可以执行进程中的不同代码,进程中的同一段代码也可以由多个线程执行。

操作系统创建了进程后,会创建一个线程执行进程中的代码。通常把这个线程成为该进程的主线程。主线程在执行过程中,可能会创建其它线程

[31]

在VISUAL C++中可以通过API函数CreateProcess创建进程去执行其它的程序,而且可以设置该进程的优先级。CreateProcess的函数原型是这样的:

BOOL CreateProcess(

LPCTSTR lpApplicationName,//应用程序名 LPTSTR lpCommandLine,//命令行

LPSECURITY_ATTRIBUTES lpProcessAttributes,//进程安全属性

LPSECURITY_ATTRIBUTES lpThreadAttributes,//线程安全属性 BOOL bInheritHandles,//是否继承父进程的句柄 DW0RD dwCreationFlags,//创建标志 LPVOID lpEnvironment,//新的环境变量块 LPCTSTR lpCurrentDirectory,//当前目录 LPSTARTUPINFO lpStartupInfo,//启动信息

LPPROCESS_INFORMATION lpProcessInformation //进程信息

);

当系统调用CreateProcess时,会创建一个进程内核对象,其初始使用计数是1。该进程内核对象不是进程本身,而是操作系统管理进程时使用的一个较小的数据结构。然后,系统为新进程创建一个虚拟地址空间,并将可执行文件或任何必要的DLL文件的代码和数据加载到该进程的地址空间中。接着,系统为新进程的主线程创建一个线程内核对象(其使用计数为1)。与进程内核对象一样,线程内核对象也是操作系统用来关系线程的小型数据结构。通过执行C/C++运行其启动代码,该主线程便开始运行,它最终调用WinMain、wWinMain、main或wmain函数。如果系统成功创建了新进程和主线程,CreateProcess便返回True。

4.2.2 ANSYS批处理方式运行的程序实现

在本文中通过创建一个进程运行ANSYS批处理程序,来实现ANSYS的建模和求解计算,以下是程序实现的主要代码:

PROCESS_INFORMATION Pi;//记录进程返回信息 STARTUPINFO si;//记录程序初始信息

memset(&si,0,sizeof(si));//初始化变量Startuplnfo si.cb=sizeof(si):

si.dwFlags=STARTF_USESHOWWINDOW;//设置ansys批处理程序以窗口形式运行 si.wShowWindow=SW_SHOWMINIMIZED://设置ansys批处理程序以窗口最小化形式运行; char AnsysCommand[MAX_PATH]:

//记录ANSYS的路径以及批处理时所带的参数 ::WinExec(\

Inc\\\\v100\\\\ANSYS\\\\bin\\\\intel\\\\ANSYS100.exe -b -p anfl -i .\\\\LeaderAxis.txt -o .\\\\LeaderAxis.out\

//记录ANSYS批处理的文件名

::strcpy(AnsysCommand,AnsysFile): //创建“ANSYS”子进程 B00L ret=CreateProcess(NULL, AnsysCommand, ?? &si, &pi): if(!ret) {

TRACE(“CreateProeess 失败!”); }

WaitForSingleObject(pi.hProcess,INFINITE); AfxMessageBox(“计算结束! ”); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); ??

4.3 本章小结

在本章主要研究整个系统开发过程中VISUAL C++调用模块的实现,在这个模块中应用面向对象的编程技术VISUAL C++来实现VISUAL C++与APDL的相互嵌套,以及批处理方式运行ANSYS。在本章重点介绍在系统开发过程所用到的面向对象编程的一些关键技术和利用这些技术来实现需要功能的过程。

第5章 用户界面模块的实现

在本章中主要研究利用VISUAL C++编制可视化参数界面,由于阶梯轴部分参数较多,设计人员在参数设置的时候弄清某个参数的具体位置比较困难,所以若是能实现可视化参数设计,就会使得设计人员在设置参数的时候思路更清晰,也不容易出错。已有的阶梯轴有限元分析的研究对象都是针对某种具体型号阶梯轴,而且从模型和边界条件的处理上存在较大的差别。本软件以VISUAL C++程序强大的可视化功能,弥补了APDL及ANSYS命令流的直观性不强的缺点。同时以“最符合实际工况、最少量简化”为原则,以提高阶梯轴有限元分析的效率、精度和可靠性为目标,在对以往研究归纳、整理、改进的基础上,对阶梯轴有限元模型规范化进行了研究,并借助大型有限元分析软件ANSYS的二次开发语言APDL和VISUAL C++6.0的界面开发技术,研究开发了参数化的阶梯轴有限元分析系统,实现了阶梯轴建模和分析计算的自动化、智能化,大大减小了阶梯轴建模与分析的工作量,提高了新产品研发效率。

5.1 软件编写思想

在程序编制方面,开发工具采用微软公司的VISUAL C++ 6.0。软件框架为MFCAppWized单文档结构。MFCAppWizard帮助程序员快速生成应用程序框架,这在一定程度上实现了软件的自动生成和可视化编程。最基本的MFC应用程序框架由CXApp、CMainFrame、CXDoc和CXView类组成(X代表工程名称)。AppWizard是面向对象程序设计发展和工业化的产物。

MFC(Microsoft Foundation Class,微软基础类库)封装了大部分Windows API(Application Programming Interface)函数,大大简化了程序开发者的工作量,充分的重用代码,提高了程序开发效率。在VISUAL C++中还提供了ClassWizard,它利用Application Framework技术调用MFC库来建立程序需要新类、添加、修改各种消息和消息映射。

软件的7个数据输入框为FormView类型,其属性为无标题栏的Child类型。响应按钮动作转换输入界面的功能在CMainframe中实现,通过CCreateContext类的属性RUNTIME_CLASS操作完成界面之间的跳转。

5.2 阶梯轴有限元模型的规范化

5.2.1几何模型的选取

由于阶梯轴结构形式比较多,而且各种应用需求都不尽相同。本文只考虑十阶以内的阶梯轴建模和分析,对于十阶以上的阶梯轴本文不做分析。根据阶梯轴的阶数,我们对阶梯轴进行建模。将阶梯轴划分为10种形式,通过分类大致可以分成一阶阶梯轴、二阶阶梯轴、三

阶阶梯轴??如此类推,直至十阶阶梯轴。对应10个独立的有限元分析模块,每个模块对应一个用APDL语言编写的*.txt文件,如图5-1所示。根据面向对象的软件设计思想,对模块文件进行了封装,按照模块文件的形成过程,利用VISUAL C++制作了友好的类型导航界面,根据用户阶梯轴的结构参数自动选择分析模块并引导用户输入相应的模块参数,这样不仅精度最高,而且载荷和约束条件的处理也相对简单。

5.2.2 参数化建模

通过输入阶梯轴的各部分的参数进行建模。首先输入各阶梯轴的直径,然后输入各阶梯轴的长度,最后输入阶梯轴键槽的基本参数(长、宽、高)。参数化建模方法工作量小且方便快捷,计算机经过五代演进发展到现在,硬件计算能力己发展到很高的水平,基于以上考虑,三维整体模型参数化建模是科学、合理、可行的。

1、输入阶梯轴各段直径

void CPage1::DoDataExchange(CDataExchange* pDX) {

CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPage1)

DDX_Text(pDX, IDC_EDIT_D1, m_d1); DDX_Text(pDX, IDC_EDIT_D2, m_d2); DDX_Text(pDX, IDC_EDIT_D3, m_d3); DDX_Text(pDX, IDC_EDIT_D4, m_d4); DDX_Text(pDX, IDC_EDIT_D5, m_d5); DDX_Text(pDX, IDC_EDIT_D6, m_d6); //}}AFX_DATA_MAP

}

2、将阶梯轴各段直径写入LeaderAxis.txt文件 LRESULT CPage1::OnWizardNext() {

// TODO: Add your specialized code here and/or call the base class UpdateData();

FILE* pFile=fopen(\fprintf(pFile,\fwrite(\fprintf(pFile,\

fwrite(\fprintf(pFile,\

fwrite(\fprintf(pFile,\

fwrite(\fprintf(pFile,\

fwrite(\fprintf(pFile,\

\

fwrite(\

n(\

fprintf(pFile,\

\

fclose(pFile); return

CPropertyPage::OnWizardNext();

}

3、输入阶梯轴各段长度

void CPage2::DoDataExchange(CDataExchange* pDX)

本文来源:https://www.bwwdw.com/article/dx87.html

Top