毕业设计论文曲柄机构动力学仿真Word格式.docx
《毕业设计论文曲柄机构动力学仿真Word格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文曲柄机构动力学仿真Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
Thedesignmainlyresearchessingle-degreeoffreedommechanicalsystemdynamics.ItistakingcrankastheresearchobjectandestablishingthedynamicmodelforcalculatingandalsousingMicrosoftVisualC6.0asatooltoanalysisandmakingthemodelmodular.
Keywords:
dynamics;
emulation;
CrankMechanism;
Drawing
1前言
曲柄连杆机构是内燃机、压力机、冲床等机器设备的关键机构,在工业生产、日常生活中应用广泛。
机器的振动、噪声大部分来源于曲柄连杆机构,因此对其进行优化设计是提高机器性能的有效途径。
目前曲柄机构动力学仿真主要对特定型号的发动机进行模拟,利用三维软件做出模型,通过仿真分析软件做出分析。
但是其中涉及到的模型的计算过程和数据分析曲线并没有进行模块化。
本次设计目的是将曲柄机构简化为单自由度系统等效力学模型,借助于VisualC++将此模型中的计算过程模块化,并且能够将数据利用VC++显示为折线图。
最后将曲柄机构做成仿真动画形式,或者利用3D软件将其做出展示。
其意义是简化了曲柄机构研究中繁琐的计算过程,直接利用软件进行。
对曲柄机构以后的研究有借鉴意义
。
本设计在学习有关机械系统动力学和MicrosoftVisualC++6.0知识的前提下,实现曲柄机构运行状态参数分析计算,并且根据参数绘制状态图示。
机械系统动力学是本设计的理论基础,在此对机械系统动力学和MicrosoftVisualC++6.0的有关知识进行简要介绍。
1.1机械系统动力学
1.1.1机械系统动力学学科简介
机械动力学是应用理论力学基本理论解决机械系统中的动力学问题的一门学科,其核心问题是建立机械系统的运行状态与其内部参数、外界条件之间的关系,建立机械系统等效模型,从而找到解决问题的途径。
该学科是机械性能设计的重要部分,在高速机械和精密机械中,机械动力学性能的分析与设计中是不可缺少的,有时甚至是至关重要的。
机械动力学课程教学的目的就是使学生了解机械系统中动力学问题的类型和掌握应用力学的基础知识解决这些问题的基本方法和途径。
机械系统千变万化,但它们存在的动力学问题有一定规律性,解决这些问题的方法也有共性
1.1.2机械系统动力学的任务
随着现代化技术的发展,工、农业各部门都迫切需要大量的新的高速、高效、高精度、重载、大功率和高度自动化的机械,而我国机械工业的综合水平却落后于世界先进水平20—25年,其中,关键的是设计水平的落后。
要改变我们目前还处于以类比设计和静态设计为主的现状,急需建立一个能够指导设计过程的统一原则和方法体系的基础,其中首要的任务是必须由静态设计走向动态设计,对动态条件下工作系统的动力学作更精确的计算。
静态设计是指在设计机械和结构时,常常只考虑到静载荷和静特性,待产品试制出来之后再做动载荷和动特性的测试,发现有不合要求的,采用局部补救的措施,这种设计路线也可称为静态设计、动态校核补救。
这种方法虽然有时也能进行某些动力学特性的补救,但却是少慢差费,而且一些涉及全局的重大动力学问题往往是无法补救的,从而有可能造成重大的损失。
动态校核补救的主要办法是避开临界转速和调动平衡,这种静态设计、动态校核补救的技术路线,对于转速不十分高的机械有时是适用的。
但随着机械运动速度的不断提高和柔性转子的出现,这种静态设计的方法已愈来愈不能适应,人们不得不应用动态设计的思想,而且在全过程中也需要随时进行检测,发现事故苗头要及时检修,避免发生事故。
振动在大多数情况下是有害的,但有时也能被利用。
在一些机构中振动起着特有的作用。
在振动机械中,产生预定的振动则是它们的主要功能。
对于这类机械已不能应用静态设计、动态校核补救的技术路线了。
机械系统的动态设计必然涉及到机械系统动力学。
机械系统动力学的主要设计原则是在满足对设计对象所提出的要求和工作时具备安全可靠的性能的前提下,使所花费的设计、制造费用最低。
但是,通常机械产品并非仅仅是一个纯机械系统,而包括电气传动、液压传动、气动系统以及控制系统等装置。
因此,仅仅从机械动力学的观点来分析机械产品是不够的,必须从系统的观点来研究和分析机械产品。
整机是由零部件和机构组合而成的。
所以,零部件的强度和机构的运动弹性动力学的分析和综合,是机械动态设计中的两个基本类型的问题。
解决这两个问题应该从整机动态特性的研究入手。
其中关于机械主传动系统动力学,特别是有关振动的分析和综合是关键问题。
总之,机械系统动力学的主要任务是研究机械住传动系统的振动、机械结构动强度和机构动力学分析。
1.1.3机械系统动力学一般分类
为了分析建立模型方便,机械系统动力学根据系统特性一般将机械系统分为:
(1)刚性机械系统;
(2)刚性平面机构惯性力的平衡;
(3)含弹性构件的机械系统;
(4)挠性转子的系统振动与平衡;
(5)间隙运动副的机械系统;
(6)含变质量构件的机械系统。
1.1.4解决机械动力学问题的一般过程和方法
机械系统动力学分析求解一般是分一下几步:
(1)根据问题画出机构示意图;
(2)分析建立机构分析模型;
(3)根据模型建立动力学方程;
(4)求解动力学方程,得出结论。
1.2MicrosoftVisualC++6.0及C++语言简介
1.2.1MicrosoftVisualC++6.0简介
C++是一种使用非常广泛的计算机编程语言。
C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。
MicrosoftVisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。
VisualC++是一个功能强大的可视化软件开发工具,是程序开发首选的开发工具之一。
因为VisualC++6.0功能较大,所以现在将程序设计用到的部分知识做简单介绍。
C++语言知识将在以后课题程序段中作介绍
1.2.2MFC(MicrosoftFoundationClass)概述
MicrosoftFoundationClass意为“微软基本类库”,是使用VisualC++6.0语言进行程序设计的核心。
MFC封装了许多常用的WindowsAPI函数,为VisualC++6.0程序设计人员提供了面向对象程序设计的框架,绝大多数的VisualC++6.0应用程序都是在此基础上构建的。
使用VisualC++6.0进行Windows编程通常有如下两种方式:
一种是SDK(SoftwareDevelopersKit)编程,另一种是MFC编程。
1.2.3对话框
对话框(Dialog)是实现应用程序人机交互的重要组成部分。
它本身并不具有交互功能,负责实际用户和程序通信的是其中的控件。
在编辑对话框时,要插入控件一般调用Controls工具栏,Controls工具栏集成了大部分Windows标准控件。
1.2.4绘图
图形学一直是计算机科学中的一个重要分支,绘图也是VisualC++6.0编程实现过中经常用到的一项重要功能。
Windows区别于DOS的一个重要的特征就是它的图形界面。
从一定意义上讲,VisualC++6.0几乎可以操作任何图形(包括平面图形、立体图形以及图形动画等),尽管对于一些样式的图形其操作可能会很复杂
用MFC和Windows提供的绘图函数绘图,一般需进行一下四个步骤:
(1)生成设备情景对象;
(2)选择绘图工具;
(3)设置绘图属性;
(4)绘图。
2曲柄机构动力学分析
2.1曲柄滑块机构动力学分析
曲柄滑块机构是由平面四杆机构演化而来的,是一个单自由度机械系统。
对曲柄滑块机构进行动力学分析一般应用单自由度等效力学模型。
下面对单自由度机械系统做个简单的介绍。
2.1.1单自由度机械系统
对于单自由度机械系统,如果直接应用牛顿定律或达朗贝尔原理进行研究也是很复杂的。
例如一个由四个运动构件组成的单自由度系统,在研究其运动情况时,若列出各运动构件的运动方程进行研究,则必须联立求解众多的动力学微分方程式(对平面机构而言,一般每个运动构件有三个运动方程),显然这是十分麻烦的
由于单自由度机构的运动只决定于一个坐标(即参数),所以只要求出其中一个构件(如主动构件)的运动规律,则整个机构的运动就确定了。
因此,对于单自由度机构可以利用等效力学模型进行研究。
在等效力学模型中,将被研究系统的动力学问题转化为与其等效的一个等效构件的动力学问题,这样可以使问题的研究得到简化。
等效力和等效力矩可根据等效力或等效力矩所做的功与作用在机构上的所有外力与外力矩所做的功之和相等的原则来确定。
实际中为了方便,可以用他们对应的功率相等进行计算。
等效质量和等效转动惯量的转化是根据动能相等的原则将进行的,即应使等效构件具有的动能与机构中的各构件的动能之和相等
2.1.2曲柄滑块机构动力学分析部分
以曲柄滑块机构转速作为研究内容。
设计研究实例如下:
如图所示曲柄滑块机构中,若已知
=0.2m,
=0.5m,
=0.2m,e=0.05m,
试用数值方法计算曲柄滑块机构中曲柄速度随
的变化规律。
利用常规的数值方法列出方程:
(1)
由式
(1)得
(2)
式中
为曲柄与连杆的长度之比,
(3)
将式(3)对时间求导,并注意到假设条件(即
),就可以求出连杆BC对应的传动速比
(4)
当转角
由式
(2)求出后,就可用式(4)计算出传动速比
对式(4)再求导,即得连杆AB对应的传动速比
的导数为
(5)
将式(4)带入(5)得
(6)
求出
和
后,即可由式(6)的第一式对时间求导得出滑块C的传动速比及其导数为
(7)
连杆BC质心
对应的传动速比及其导数,可由
与B点的相对运动关系得
(8)
、
—分别为质心
对于B点的相对速度和相对加速度
将式(8)改写成坐标形式为
(9)
当
已计算出以后,公式(10)即可用来计算质心
对应的传动速比及其导数
求出了有关的传动速比及其导数后,就可方便地计算出等效转动惯量
及其导数
根据式(8)和式(9),
由下式确定
(10)
3曲柄机构动力学分析仿真
本设计仿真分析部分由MicrosoftVisualC++6.0实现,其中对话框作为人机交互界面,用绘图函数实现折线图的绘制。
用到的知识主要有对话框、绘图、类与对象。
3.1类与对象
类是C++语言中最重要、最基础的概念,是面向对象程序设计的核心,数据封装就是通过类来实现的。
类是对一组性质相同对象的描述。
基于MFC进行编程,首先要对C++类的基本知识有所了解,在此简要介绍一下C++类的重要概念。
3.1.1C++类的定义
C++语言的类是一种用户自己定义的数据类型,和其他的数据类型不同的地方是组成这种类型的不仅可以有数据还可以有对数据进行操作的函数,它们分别叫做类的数据成员和类的函数成员。
类的定义形式一般分为说明部分和实现部分。
说明部分是用来说明该类中的成员,实现部分是用来对成员函数的定义。
类的一般定义形式为:
class类名
{
public:
公有的数据和函数
protected:
保护的数据和函数
private:
私有的数据和函数
};
如下所示为CStudent类得一般形式:
classCStudent
CStudent();
~CStudent();
floatAverageScore(floatscore[],intk);
intm_nStudentNum;
};
其中,
(1)类定义以关键字class开始,其后跟类名,类名必须是一个有效的C++标识符。
类所说明的内容用花括号括起来,右花括号后的分号的作用是类说明语句的结束标志。
“{}”之间的内容称为类体。
(2)关键字private,public和protected称为访问权限修饰符或访问控制修饰符,它们用于限制类成员的控制访问范围,如果没有使用多,则所有成员默认定义为private权限。
这些关键字的声明顺序和次数都是任意的。
各个成员函数的实现是类定义中的实现部分,这部分包含所有在类体内说明的成员函数的定义。
各个成员函数的实体内类体内定义,又可以在类体外定义。
如果一个成员函数在类体内定义,实现部分将不出现;
如果所有的成员数都在类体内定义,则实现部分可以省略在类体内定义的成员函数都是内联函数。
(3)构造函数。
CStudent类中public关键词后面的CStudent函数为CStudent类的构造函数,构造函数是与类同名的特殊成员函数,当声明类的对象时,构造函数被自动调用已实现对象的厨师化。
因此构造函数也必须是公用的成员函数。
析构函数。
CStudent类中public关键词后的~CStudent()函数为CStudent类的析构函数,析构函数的功能与构造函数正好相反,构造函数是在创建类的对象时自动完成为内存空间及初始化的工作,而析构函数则是在类的对象被销毁(或者删除)时,自动完成该对象所占用的内存空间的释放功能。
3.1.2定义类的成员函数
C++类的成员函数的定义形式与C语言中的定义形式基本相同,但需要有类名和“:
:
”作用域操作符类知名所属类的名称,以便编译器能够正确识别。
如CStudent类的成员函数AverageScore()可定义如下:
floatCStudent:
:
AverageScore(floatscore[],intk)
floatm_fTotal=0.0;
floatm_fAverage=0.0;
for(inti=0;
i<
k;
i++)
m_m_fTotal+=score[i];
m_fAverage=float(m_fTotal/k);
returnm_fAverage;
}
定义类的数据成员应注意:
A、在类体中不允许对所定义的数据成员进行初始化;
B、类中的数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、 指针和引用等,也可以是对象。
另一个类的对象可以作为该类的成员,但是自身类的对象是不可以的,而自身类的指针或引用则是可以的。
当一个类的对象作为这个类的成员时,如果另一个类的定义在后,则需要提前说明;
C、函数成员实现对类中数据成员的操作,它描述了类的行为。
由于对象的封装性,类的函数成员是对类的私有数据成员进行操作的惟一途径。
类中所有的函数成员都必须在类体中说明,但函数成员的定义既可在类体内,也可在类体外。
D、在用VisualC++6.0进行Windows编程时,通常将类的定义内容放在以“.H为后缀的头文件中,而将类的成员函数的实现放在以“.CPP”为后缀的源文件中。
同时要注意,类的定义是以“;
”号结尾的。
3.1.3定义类的对象
C++类是一种特殊的自定义数据结构,在定义了类以后,要使用这个类必须先为该类声明一个对象(Object),声明对象的格式类似于声明一个类型的变量名。
对于CStudent类,可以声明类的对象为:
CStudentstu1;
或
CStudent*stu2;
对于上面类的对象的两种不同的声明方式,访问类的成员的一般格式为:
类对象名.类的成员
类对象名->
类的成员//若对象声明为指针
即
stu1.AverageScore();
stu2->
AverageScore();
一个类可以有多个对象,各对象具有相同的属性。
类的定义与类对象的声明不同。
类的对象占有一定的内存空间,用于数据的存储以及对数据惊醒操作。
与基本数据类型变量一样,类对象也只在定义范围内存在。
3.2对话框
对话框是实现人机交互的重要组成部分。
对话框实际上也是一个窗口,它不但可以实现数据的输入与输出,而且也可以移动和关闭对话框,甚至还可以进行图形的绘制和操作。
对话框有模式对话框和无模式对话框之分,并且在VisualC++6.0开发工具中集成了许多通用对话框。
3.2.1对话框的组成
在应用程序的框架中,对话框一般由两部分组成:
对话框模板资源和对话框类
对话框模板资源要创建一个对话框,首先要创建一个对话框模板资源。
当使用插入资源的方式来加入一个对话框时,加入的是预定义的对话框中添加各种控件,使之满足要求Windows将根据它来创建并显示对话框中各种控件的类型和位置。
对话框类在MFC中,Cdialog类是用来管理对话框的类。
创建了对话框资源以后,必须创建一个类来管理该对话框,通常这个类是Cdialog类的一个子类。
对话框类为管理对话框提供了一个编程接口。
我们可以通过对Cdialog类的编程类实现对话框的建立、显示、关闭和销毁。
3.2.2对话框控件
要建立对话框,还有一个重要的因素就是对话框中的控件。
对话框通常与控件联系在一起。
一般情况下,在使用对话框的时候,都需要加上对话框控件,如编辑框、组合框、按钮和单选框等。
在任何对话框中都要有自己的控件,从而使应用程序中的对话框各不相同,从程序员的角度看,最重要的一点就是要记住对话框和对话框的控件都是窗口,也就是说,对话框时一个窗口,它的控件如编辑框、按钮或组合框是窗口。
这就意味着,对窗口进行的任何操作都可以用在对话框和对话框的控件上。
例如窗口可以被移动、改变大小、显示、隐藏等,同样对对话框的控件也可以进行这些操作,借助于大量的窗口类的成员函数,我们可以用多种方式对对话框和对话框控进行操作。
同样,对话框和一些对话框控件也有自己相应的类,例如对话框由Cdialog类来广利,而对话框的控件,如编辑框由Cedit类来管理,列表框可以用ClistBox类来管理等。
3.2.3模态对话框和非模态对话框
模态对话框是指在程序继续之前需要用户对该对话框作出响应。
也就是说,在关闭这个对话框之前不能处理对话框意外的事情。
当显示一个模态对话框时,虽然能够看到应用程序的其他用户界面对象(主菜单、主窗口、工具栏等),但是如果用户没有处理对话框,就不能和这些对象进行通信。
非模态对话框是指对话框可以一直出现在屏幕上,随时可用,并且允许应用程序处理对话框意外的用户事件。
我们可以自由地同其他用户界面对象进行通信。
3.2.4对话框的创建
无论是模态对话框还是非模态对话框,用AppStudio和ClassWizard来创建它们的过程是一样的。
为应用程序创建对话框一般过程是这样的:
(1)利用AppStudio设计对话框并创建它的对话框模板资源,在对话框中添加控件
(2)利用ClassWizard创建Cdialog类的派生类
(3)创建一个对话框类的对象,然后调用对话框成员函数显示对话框
(4)利用ClassWizard项对话框类中加入数据成员,这些数据成员同对话框中的各种控件相联