基于matlab的四杆机构运动分析

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

基于matlab的四杆机构运动分析

石河子大学毕业设计(论文)题目:基于MATLAB的四杆机构运动分析与动画模拟系统院(系):机械电气工程学院专业:机械设计制造及其自动化学号:2002071189姓名:娄元建指导教师:葛建兵完成日期:二零零六年五月i\n基于MATLAB的四杆机构运动分析与动画模拟系统[摘要]本文介绍MATLAB开发机构运动分析和动画模拟系统的方法,并且利用MATLAB软件实现平面四杆机构的运动仿真。以MATLAB程序设计语言为平台,将参数化设计与交互式相结合,设计出四杆机构仿真系统,能够实现四杆机构的参数化设计,并且能够进行机构的速度和加速度分析。系统具有方便用户的良好界面,并给出界面设计程序,从而使机构分析更加方便、快捷、直观和形象,设计者只需输几参数就可得到仿真结果,为平面四杆机构的设计与分析提供一条便捷的途径。[关键词]机构;运动分析;动画模拟;仿真;参数化;MATLABAbstract:ThekinematicalanalysisandanimationmethodofthemechanismusingMATLABwasdiscussedinthepaper,andthekinematicsimulationofplanarfour—barmechanismwithsoftwareMATLAB.Andemulationalsystemwasdeveloped,thesystemadoptedMatlabasadesign,Itcombinedparameticdesignwithinteractivedesignandhadgoodinterfaceforuser,thatcanrealizeparameticdesignoffour-barmechanism,alsotomakerealspeedandaccelerationofmechanism.Theemulationalresutwasobtainedassoonasinputparameterswasimportedandthedeviserscanmakedecision–makingofmodificationbythecomparingemulationalresultwithdesigndemand,whichgiveanotherefficaciouswayforthedesignandanalysisofplanarfour—barmechanism.Keywords:Mechanism;Kenimaticalanalysis;Animation;Emulation;parametic;MATLABi\n目   录第一章绪论11.1本论文的研究意义11.2本文的研究任务2第二章四杆机构运动学32.1四杆机构简介32.2四杆机构的综合概述4第三章软件介绍63.1MATLAB的简介63.2Matlab/Simulink63.3SimMechanics机构系统应用7第四章 机构运动分析的实现过程84.1机构简图的参数化绘制方法84.2平面图形运动的动画模拟方法94.3机构运动的数学模型104.4用户界面设计114.5程序运行12第五章连杆机构的运动仿真165.1平面连杆机构的运动分析165.2几种仿真软件的探索175.2.1MATLAB的图象处理功能175.2.2基于PRO/M的四杆机构的仿真195.3用SimMechanics来实现的仿真19第六章运算程序226.1四杆机构位置问题的Matlab求解226.2四杆机构的位移、速度、加速度的求解程序236.3定义求解方程的程序256.4四杆机构的绘制及其动画程序256.5绘制三条曲线的命令276.6参数调整的程序27第七章 结论28参考文献:29i\n第一章绪论1.1本论文的研究意义随着计算机、智能材料等科学技术的飞速发展,人类正在经理一场新的产业革命。许多自动化系统正在部分地代替人类的脑力劳动,并且不断地与各行业、各领域的科学技术创造性地结合起来,从而为社会的发展注入勃勃生机,也使古老而年轻的机构学发生着深刻的变化。近年来机构学研究的深度和广度在不断地延伸,新的理论和方法不断地涌现出来,尤其是随着计算机应用的逐渐普及,为机构学研究向智能化发展创造了条件,使机构学的研究进发出新的活力。机构学主要研究以下两个方面的问题:一是机构分析,即根据给定的机构简图,研究机构的运动特性和动力特性,为机构综合提供理论依据;二是机构综合,即根据预期的运动特性和动力特性设计机构的运动简图。其中平面四杆机构在工程实际中获得了广泛的应用,其设计问题一般归结为下面四类问题:(1)按给定的行程速比系数K设计四杆机构;(2)按给定的连杆位置设计四杆机构;(3)按给定的两连架杆的对应位置设计四杆机构;(4)按给定点的运动轨迹设计四杆机构。在此次设计中我们只是做满足其中的一部分功能的系统设计。连杆机构是一种常用的传动机构,是机械传动中不可少的部件,广泛应用于拖拉机悬挂机构、工程机械工作装置等各种机械装置中。但是,在连杆机构的设计过程中需要大量的数据计算,靠人工计算非常烦琐而且容易出错,并且难以达到所要求的设计精度,同时在设计过程中无法完成对设计机构的性能分析和动态模拟仿真。目前,MALTAB已经不再是“矩阵实验室”,而成为国际上最流行的科学与工程计算的软件工具,以及一种具有广泛应用前景的全新的计算机高级编程语言,它在国内外高校和科研部门正扮演着越来越重要的角色,功能也越来越大,不断适应新的要求提出新的解决办法可以预见,在科学运算与科学绘图领域,MATLAB语言将长期保持其独一无二的地位。四杆机构是机械设备中最基本的机构类型之一。编制相应的分析与综合软件很有意义,它可以使工程师方便地设计出符合要求的四杆机构并进行相应的运动学分析以检验设计出的机构是否符合运动学要求。其优点可分为以下几点:(1)软件能综合出多种类型的四杆机构,并可对其进行运动学分析。(2)29\n应用面向对象技术,开发效率高,程序的可移植性、可扩展性强。(3)软件操作简单,交互性强,通用性好,并实现机构的参数。所以,基于MATLAB的机构运动分析和动画模拟系统的研究具有重要现实意义。1.2本文的研究任务(1)机构运动的数学模型的构建。对于数学模型建立的过程其实也就是对机构进行详细分析的过程,比如:几何位置的分析,速度的分析,加速度的分析以及矩阵模型的建立。用数学方法来推出其他参数的值。(2)Matlab参数化绘图方法与动画的实现。利用Matlab提供的线型绘图命令、图形填充命令和函数文件编程,用户可以创建自己的参数化图形绘制函数,从而实现特殊图形的参数化绘图。然后根据用户的需要还可以选择电影动画或者实时动画两种不同的方法来制作动画。(3)机构运动的位移分析、速度分析、加速度分析。(4)四杆机构运动分析动画模拟系统的界面设计。它包括界面设计和程序设计两个方面。为了实现友好的人机交互功能,可以用Matlab图形用户界面(GUI)功能做出直观易懂的用户界面;而程序设计就是当图形界面的外观设计完成之后,就要编写代码用来实现图形界面的功能,通常是利用调用程序来实现的。29\n第二章四杆机构运动学2.1四杆机构简介在中国早在几千多年前,人们就发明创造了许多简单实用劳动机械。大约四千六百年前人们利用杠杆的原理发明了踏雅,这是人类历史上最初的连杆机构的应用。周朝末年公输班创造出了许多例如云梯等农用以及军事用的机械。根据刘仙洲教授的考证,远在2000多年前便发明了利用曲柄连杆机构作为机械。东汉时期,也就是距今约一千八百多年前(公元117年),一台利用水力推动自动运转的大型天文仪器“水运浑象”(连接到科学里程碑漏水转浑天仪)在东汉的京都洛阳制造成功了。仅仅相隔了二十年(公元138年),安置在京都洛阳的又一台仪器“候风地动仪”准确地报告了西方千里之外发生的地震。这标志着人类己经有了制造高精度、高难度机构的能力。这两台著名仪器的发明者就是我国东汉时期伟大的科学家、文学家张衡。他对中国古代的天文学、地震学和机械力学做出了杰出的贡献。在这之后连杆机构在中国更是得到了广泛的应用。对于机构运动的自觉要求是蒸汽机的发明者瓦特提出来的。那还是在创造蒸汽机的阶段,因为当时的金属加工还不发达,所以导轨的加工精度上不去,润滑技术也不行,所以他想用连杆和销子来代替导轨来做直线运动。但是怎么实现呢?这个问题难坏了他,于是请一个格拉斯哥大学的数学家帮忙,问题还是解决不了,后来这事传开了,才知道这个问题是全世界公认的难题。这个困扰全世界科学家的问题直到瓦特死后十几年才被解决,但那时的润滑技术和金属加工技术已经成熟了。到了近代,随着工业革命的兴起,连杆机构成了机械中不可缺少的一个部分。随便一个反映当时生活的电影中,满目都是轰鸣的机器。其中的机器大部分连接靠的是连杆机构。连杆机构确实推动了人类的机械化进程。连杆机构的概念:若干个构件通过低副(转动副、移动副、球面副、球销副、圆柱副及螺旋副等)联结所组成的机构,叫做连杆机构。因为每个构件间通过低副联结,所以也叫低副机构。连杆机构的应用非常的广泛,其种类也是多种多样,所以分类的标准也是很多。一般作为研究来讲,可以按下面几个标准来划分:根据连杆机构的各构件的相对运动形式来分:如果每个构件的运动平面平行于同一平面,这样的连杆机构叫做平面连杆机构;如果不平行于同一平面,就叫做空间机构。29\n组成连杆机构的构件数是不同的,我们定义由四个构件组成的连杆机构,叫做四杆机构;依此类推,叫做五杆机构、六杆机构等。一般我们把五杆或者五杆以上的连杆机构叫做多杆机构。对于空间连杆机构来讲,构成单闭环的构件至少是三个,所以空间连杆机构中有空间三杆机构;而对于平面连杆机构则至少是四个构件,所以只有平面四杆机构,没有比它的构件更少的平面机构了。在平面四杆机构中,如果每个构件都是通过铰链联结而成的,那么我们叫它铰链四杆机构,它是我们生活中应用最为广泛的一种机构。连杆机构中固定不动的一个杆叫做机架,不与机架相连的一个构件叫做连杆(连杆机构的名称也是由此而来的),它是研究连杆机构中最重要的一个构件,一般我们把连杆扩展成一个平面(连杆平面),连接机架和连杆的两个构件叫做连架杆。铰链四杆机构的连架杆中,如果能绕其轴线旋转360度的,叫做曲柄;如果只能绕轴线做往复摆动的,叫做摇杆。铰链四杆机构是最为简单、最为基本、应用最为广泛的机构,它是构成和研究多杆机构的基础。铰链四杆机构,之所以应用如此广泛,是与它的独特的优势分不开的,主要的优点有以下几点:1.由于运动副元素为圆柱面或平面而易于加工、安装并能保证精度要求;2.因各构件之间为面接触而压强小,便于润滑,故其磨损小且承载能力大;3.两构件间的接触靠其本身的几何锁合来实现,而无须增加其它装置便能保证其接触;4.当主动件的运动规律不变时,每一机构中构件的相对长度有所改变,则可使从动件得到多种不同的运动规律;另外,也可以利用连杆曲线的多样性来满足工程上的各种轨迹要求。由于铰链四杆机构的本身结构原因,如果做变速运动的话,那么各构件的惯性力难以平衡;虽然连杆曲线多种多样,但是对于给定的一条任意曲线,设计一个铰链四杆机构来拟合这条曲线,这个工作是非常困难的,一般只是采用近似的逼近法。2.2四杆机构的综合概述在平面连杆机构分析与综合方面有巨大贡献的两个国家是德国和苏联,德国是以运动几何学为基本理论进行平面连杆机构分析与综合的研究,而苏联在代数方法解决平面连杆机构综合问题方面是有很大成就的。美国、英国、日本、澳大利亚、加拿大等在机器和机构理论的研究方面也有了飞跃的发展。美国在机构结构理论、平面与空间连杆的分析与综合、运动弹性机构动力学以及机械动力学方面的应用取得了很大的进步。英国在机构学与机械动力学也加快了研究步伐,在平面与空间连杆机构和机械动力学等方面取得很大的成绩。29\n平面四杆机构的运动学综合的基本问题,是根据工程实际要求,首先选定合适的机构型式,并依据其运动条件确定出机构中各构件与运动有关的尺度参数。这些尺度参数包括各转动副间的相对尺寸、移动副位置尺寸以及连杆平面上描绘连杆曲线的点的位置尺寸等。当以上尺寸确定之后就可以绘制出该机构的运动简图。虽然工程实际所提出的综合条件是多种多样的,但是经过归类总结可以分为三个基本问题:刚体导引问题:刚体引导机构能使机构中不与机架相连的机件通过一系列给定的有限相离位置,或使其中某些位置具有给定的速度、加速度。一般只限于讨论给定连杆位置的导引机构。函数综合问题:函数机构是指输出连杆架和输入连杆架之间的运动能实现某种给定的函数关系的连杆机架。它大部分是近似综合的,所以实现的函数与给定函数之间会出现一定的偏差。轨迹综合问题:实现轨迹机构是指能使连杆上某点沿着空间某一给定轨迹运动的连杆机构。实际实现轨迹机构的任务就在于使所设计机构的连杆上某点能通过一系列给定的有序设计点。29\n第三章软件介绍3.1MATLAB的简介Matlab起源于美国学者CleveMoler博士在教授线性代数领域的早期工作。CleveMoler博士在NewMexico大学讲授线性代数课程时构思开发了Matlab软件,并由MathWorks公司于20世纪80年代初期将Matlab推向市场,Matlab的出现标志着科学计算新时代的到来。Matlab的主要特点:(1)语句简单,编程效率高Matlab语言类似于数学符号,用它编程犹如在演算纸上列出公式直接求解一样。(2)高效方便的矩阵和数组运算Matlab基于复数向量、矩阵的高级计算语言,内置众多高精度、高可靠性的矩阵、数值运算函数、数值计算方法,这使得Matlab语言在矩阵运算方面比其它高级语言更方便、更快捷。(3)强大数据可视化、绘图功能Matlab可以将计算,仿真或测试得到的数据方便的绘制成2维或3维图形,用户还可以方便的选取各类坐标系,可以在屏幕上加注释,说明等功能。(4)工具箱软件包Matlab针对某一领域的问题编制了许多M文件,形成了面向该领域的工具箱。因而它具有兼高级语言开发平台和专业应用环境,能全面的解决科学和工程领域内的复杂问题。(5)强大的非线性动态建模、仿真能力Matlab提供了交互式图形建模的环境Simulink,利用它可以方便的搭建起控制方框图,完成连续、离散及两者混合的线性和非线性的设计和仿真。但Matalb是一种解释性的语言,因而执行起来比较慢。3.2Matlab/SimulinkMatlab是由Matlab主包、功能各异的工具箱和面向结构图的系统分析平台Simulink组成。Simulink是Matlab29\n的扩展,是一个用于对系统进行建模、仿真和综合分析的软件包,所选用的系统非常广泛,支持连续、离散及二者混合的线性和非线性系统。也支持具有多种采样速率的多速率系统。Simulink与用户交互接口是基于Windows的图形的编程方法。用户要建立自己的控制系统框图。只需把要用到的模犁库打开,进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。其外表以方块图形式呈现,FL采用分层结构。Simulink模型库包含:Sources(信号源库)、Sinks(输出方式库)、Discrete(离散模型库).Linear(线性环节库)、Nonlinear(非线性环节库)、Connections(连接及接口库)、Blocksetsandtoolboxes(模块建立和工具箱库)和Demos(示例库)。Simulink的优点就在于它在原来的Matlab的基础上不增加任何新的函数,使用的语法也都是原来的语法,这增加了其界面的友好性。Simulink本来是为控制系统的仿真而开发的,后来在应用中发现它有如此多的优点,能解决许多Matlab代码编程不好解决的问题,于是许多领域都针对本领域的特点开发了各自的功能模块作为子工具箱加到Simulink里来。Matlab和Simulink的完美结合使其顺理成章的成为科研及设计人员的最爱,因为它可以很轻松地解决我们在学习和设计中的疑难问题,如用MatlabwithSimulink计算机仿真语言实现多维插值。3.3SimMechanics机构系统应用SimMechanics是TheMathWork公司于近期推出的机构系统模块集,它是物理建模的一部分,利用物理原理来对系统进行建模和设计。实际建模是在Simulink环境当中,可以和Simulink中的其他工具箱实现无缝结合。不像Simulink中的其他模块,SimMechanics是直接通过模块对实际构件和构件之间的关系进行建模。它提供了一个可以在Simulink环境下直接使用的模块集,可以将表示各种机构的模块在普通Simulink窗口中绘制出来,并通过它自己提供的检测与驱动模块和普通Simulink模块连接起来,获得整个系统的仿真结果。该模块组中包含下面几个子模块组:(1)刚体子模块组(Bodies):有三个模块,机械环境、机架和刚体,机械环境是为仿真定义一个环境,和它相连的有重力、维数、分析模式、约束求解器、误差、线性化和可视化。刚体由两个连接端,其中一端为主动端,另一端为从动端。使用刚体时,可以定义质量、惯性矩、坐标原点,还可以设定刚体的初始位置和角度。(2)约束与驱动模块组(Constraints&Drivers):DistanceDriver:设定两个刚体坐标原点的距离;AngleDriver:设定两个刚体坐标见的角度;LinearDriver:确定两个刚体间的向量差;VelocityDriver:确定两个刚体坐标间的相对线速度和角速度;Point-Curve29\nConstaint:曲线约束;ParallelConstraint:平行约束;GearConstrain:齿轮约束。(3)辅助工具模块组(Utilities):包括ConnectionPort、ContinuousAngle和MechanicalBranchingBar等。这里的模块允许在其他模块中添加节点,或将信息转换成虚拟现实工具箱用的数据。(4)运动铰模块组(Joints):提供了各种运动铰,如单自由度运动铰、单自由度转动铰、平面铰、自定义铰、刚结点等,可以用这些运动副来连接刚体,构造所需的机构。(5)传感器和作动器模块组(Sensors&Actuators):该模块用来和普通的Simulink模块交换信息。驱动模块用来给机构添加Simulink输入量。例如,用户可以用普通的。Simulink模块搭建一个力信号,然后通过刚体动模块将该力信号施加到相应的刚体上。要想使得SimMechanics模块和普通Simulink模块进行数据交换,就必须用这样的中间环节。(6)力单元模块组(ForceElement):它包括BodySpring&Damper和JiontSpring&Damper两个模块。SimMechanics模块库中的模块都是建立机构系统所必须的,无论机构中有几个刚体,联接和自由度,SimMechanics都能够通过库中的模块有组织的联接来表示实际系统,其具体的操作步骤如下:1、确定构件的固有属性,自由度数,约束以及坐标系统。2、装配传感器和作动器,用来记录和初始化刚体运动,以及施加力或力矩。3、开始仿真,调试Simulink的求解器来计算系统的运动并保持约束不变。4、在建模和仿真过程中,利用SimMechanics可视化窗口进行机械系统可视化。29\n第四章 机构运动分析的实现4.1机构简图的参数化绘制方法利用MATLAB提供的线型绘图命令、图形填充命令和函数文件编程,用户可以创建自己的参数化图形绘制函数,从而实现特殊图形的参数化绘图。以曲柄摇杆机构为例,设曲柄长度为L1,初始位置角为theta21=π/3,连杆长度为L2,摇杆长度为L3,机架长度为L4和theta确定。编写文件名为four_barmechanism(L0,L1,L2,L3,theta3).m的函数文件,将其存入MATLAB工作路径,然后在MATLAB命令窗口输入以下命令:>>four_barmechanism(30,10,25,20,7,2.5)即可得到图(1)所示的机构简图。(1)四杆机构简图绘制图4.2平面图形运动的动画模拟方法动画是图像从静态到动态的飞跃,是科学与艺术的结合。它能使用户更直观地了解运动系统的变化过程。从人体学的角度来讲,要想达到让人感到动作不停顿的连贯效果,连续的画面必须达到24帧/s以上,这样才能使动画逼真。由此看来,29\n动画的实质是快速地播放连贯的静态画面。在计算机上实现动画的道理也是这样的。在MATLAB中,可以根据用户的需要选择两种不同的方法来制作动画:一种是将不同的图形存储起来,然后按照播放电影的方式将它们按顺序播放出来,称为电影动画;另一种是连续不断地擦除并且重画图形中的更新对象,使得每次重画过程都是连续的,称为实时动画。(1)电影动画:连续帧存储方式。这种方法是指预先把连续帧(图像)做好,并加载到图形缓冲区中,运行时则一帧一帧地播放。该方式可以实现非常复杂的动画效果,一些影片动画效果即是采用此种方法。(2)实时动画(擦图方式):几乎所有的电脑游戏都是用这种方法实现动画的。该法是指保持画面的背景不变,只更新变化部分,以加快整幅图像的实时生成速度,也称为实时动画。动画效果愈逼真,对计算机硬件资源的要求也就越高。所以,在画面背景不变的情况下常用这种方法。这也在SIMULINK环境中实现实时动画的方法。擦图方式实现步骤:(1)在新位置上显示活动的对象。(2)擦除原有位置上的图像。快速地重复第1步与第2步便可以得到动画效果。为了实现动画,MATLAB还提供了刷新屏幕命令(drawnow)。刷新屏幕指令向MATLAB发出一个中断信号,迫使MATLAB暂停当前的任务而去刷新屏幕。如果不用该指令,则MATLAB会在完成当前指令队列后再刷新屏幕。制作实时动画的一个典型的方案是首先绘制一个图形,然后利用循环结构将它的位置属性进行微小的改变,最后按照改变后的属性重新绘图。对曲柄摇杆机构,设曲柄匀速转动的角速度为omiga,转动周数为time,可采用实时动画的方法编写文件名为:four_bar_move(L1,L2,L3,L4,theta3,omiga,time)。m的函数文件,并将其存入MATLAB工作路径,然后在MATLAB命令窗口输入以下命令:>>four_bar_move(8,13,18,20,7,2.5,100,10)即可在MATLAB图形窗口得到曲柄摇杆机构运动的动画。4.3机构运动的数学模型平面四杆机构结构简图不妨假设L1为原动件、L3为从动件、L2为连杆、L0为机架,设各杆长分别为L1,L2,L3,L0。原动件L1以角速度w1匀速运动,求从动件L3的角位移方程。将平面四杆机构看成1个封闭矢量多边形,用复数表示各个杆矢量,得到矢量方程为:Ll*exp(θ1)+L2*exp(θ2)=L0+L3*exp(θ3)(1)29\n由上式区分出实部和虚部,可以得到:L1*cos(θl)+L2*cos(θ2)-L3*cos(θ3)一L0=0(2)L1*sin(θ1)+L2*sin(θ2)-L3*sin(θ3)=0(3)从上述两个方程中消去θ2,便可化成一个只包括θ1和θ3的方程,给定θ1,可求出满足此方程的θ3。由(2)得:sin(θ2)=(L3*sin(θ3)-Ll*sin(θ1))/L2(4)将(4)式及cos(θ2)=qrt(1-(sin(θ2))^2)代人(2)式,得:f(θ1,θ3)=L1*cos(θ1)+L2*qrt{1-[(L3*sin(θ3)-L1*sin(θ1))/L2]-L3*cos(θ3)-L0}=0(5)在a1给定时,求能使f(θ3)=0的θ3值即可。θ3确定后,对其求一阶导数,则可确定从动件L3的角速度方程:w3=dθ3/dt(6)对(6)式再求一阶导数,则可确定从动件的角加速度方程:ε3=dw3/dt这些方程作为约束条件在系统中是通过Matab自带的编辑函数来实现的,本设计主要用到的有这么两个函数:(1)diff(f,‘var’,n)求f对变量var的n阶导数,缺省n时为求一阶导数缺省变量'var'时,默认变量为x;可用来求单变量函数导数;多变量函数的偏导数;还可以求抽象函数的导数。(2)X=fzero(fun,X0)它是用来求解一般方程F(X)=0的函数。4.4用户界面设计MATLAB就提供了一个实用的用户图形界面开发程序Guide。它完全支持可视化编程,其方便程度类似于Visualbasic。利用Guide提供的方法,用户可以十分方便地设计出高质量的应用软件用户界面。将四杆机构运动分析与动画模拟系统程序文件取名为:four_barmechanism.fig,利用Guide设计其主界面如图:,4.5程序运行(1)启动MATLAB后,运行four_barmechanism.fig29\n文件,弹出图2所示主界面,首先显示按预置参数绘制的曲柄摇杆机构简图;(2)主界面(2)点击“参数调整”按钮,弹出图3所示参数调整界面,调整机构几何与运动参数,再点击“OK”按钮,关闭参数调整界面,从新打开一个窗口显示按调整参数绘制的机构简图,此界面是用inputdlg完成的。(3)参数调整界面29\n如果你在上面的运行界面里输入的四杆机构的各个杆长不符合四杆机构的杆长条件要求,就会提示你的输入有错让你从新输入,所以你只有输入正确的杆长才能生成四杆机构。按调整参数绘制的机构简图(1)点击“动画”按钮,显示机构运动动画,在这里看不到它的动画效果。四杆机构的动画界面(3)点击“位移分析”按钮,将弹出“位移分析”的界面,显示出从动件的位移曲线,观察完毕之后关闭即可。横坐标表示时间T,纵坐标表示位移S。图形窗口是用figure命令来创建的,位移曲线就是用plot命令画出来的。29\n(4)位移分析界面(1)点击“速度分析”按钮,将弹出“速度分析”界面,显示出从动件的速度曲线。横坐标表示时间T,纵坐标表示速度W。图形窗口是用figure命令来创建的,速度曲线是用comet命令画出来的。(5)速度分析界面点击“加速度分析按”按钮,将弹出“加速度分析按”界面,显示出从动件的加速度曲线。横坐标表示时间T,纵坐标表示加速度a。图形窗口是用figure命令29\n来创建的,加速度曲线是用comet命令画出来的。(6)加速度分析界面(5)最后点击主界面上的“关闭”按钮,就会关闭整个系统。29\n第五章连杆机构的运动仿真5.1平面连杆机构的运动分析进行机构的运动分析时,首先应对机构进行结构分析。对于多杆机构来说,一般从离开给定运动的主动件最远处开始拆杆组,将机构的从动系统分解成若干个杆组,然后根据曲柄和各杆组运动分析的方法进行运动分析。运动分析包括位移、速度和加速度分析。其中以位移分析最为关键,涉及非线性方程组的求解,一般比较困难。速度分析和加速度分析,只是利用位移分析得到的位移方程式对时间求导,只需解线性方程组,因此相对简单。位移分析要建立各构件的位移关系式。建立这些关系式的方法很多,但主要的有两大类型:一种是把平面连杆机构视为一个或几个独立的闭环(或成为封闭向量多边形),据此建立位移关系式,我们称为“闭环法”;另外一种是将机构中的闭环从某个环节(运动副或构件)上拆开,利用机构运动的几何等同性条件建立关系式,此法称为“开环法”。我们下面以闭环法,来进行一个平面四杆机构的运动分析。如图6.1所示,平面四杆机构ABCD的各杆长为:L1,L2,L3,L4,连架杆与x轴的夹角为:φ1,φ3,连杆与x轴的夹角为φ2。我们把心与x轴重合的情况进行分析,写出各杆向量在x轴和Y轴上的投影方程式如下:L1*COS(φ1)+L2*COS(φ2)=L4+L3*COS(φ3)6.1.1L1*SIN(φ1)+L2*SIN(φ2)=L3*SIN(φ3)6.1.2我们利用正旋和余旋的平方和等于1,这一条件,可消去上式中的φ2,求得关于φ3的方程式,得:A*COS(φ3)+B*SIN(φ3)+C=0其中:A=L4-L1*COS(φ1)B=-L1*SIN(φ1)29\nC=(A^2+B^2+C^2)/2*L3令:x=tan(φ/2),则有:sin(φ3)=2*tan(φ3/2)/{1+[tan(φ3/2)]^2}=2*x/(1+x^2)cos(φ3)={1-[tan(φ3/2)]^2}/{1-[tan(φ3/2)]^2}=(1-x^2)/(1+x^2)把sin(φ3),cos(φ3)代入上式经过整理与求解就可以得到φ3的解:φ3=2*a*tan(x)我们把求出的φ3代入(6.1)可以得到φ2的解:φ2=a*sin{[L3*sin(φ3)-L1*sin(φ1)]/L2}知道了φ2,φ3的值,一个机构的位移分析就完成了。如果想要得到速度和加速度分析的话,还要对上面的位移方程式对时间求导数,接下来就是类似的就不一一写出。在论文后面的部分利用MATLAB软件编程实现了平面四杆机构的连杆曲线分析,给出了连杆机构的轨迹曲线。5.2几种仿真软件的探索5.2.1MATLAB的图象处理功能作为一个优秀的科技应用软件,MATLAB不仅在数值和符号运算方面有着无与伦比的优势,而且在数据可视化方面也有上佳表现。本课题中就通过编程实现了一部分连杆机构的连杆曲线可视化。总体感觉很好,编程的风格与C语言没有太大区别。MATLAB可以给计算数据以二维、三维乃至四维的图形表现。通过对图形线型、立面、色彩、光线、视角等品质的处理,可把计算数据的特征表现得淋漓尽致。MATLAB的图形系统的这种能力是建立在一组“图形对(GraphicsObjects)"基础上的。它的核心是图形的句柄(GraphicsHandle)操作。MATLAB有两个层次的绘图指令:一组是直接对句柄指令操作的底层(Low-level)绘图指令:另一组是在底层指令基础上建立起来的高层(High-level)绘图指令。高层绘图指令简单明了。它不仅容易为用户掌握,而且也是今后最常用的。我们后面用到的指令部分即为高层绘图指令。最常用的指令包括以下几个:(1)plot(X,Y)说明:若X,Y是同维向量,则绘制以X,Y元素为横纵坐标的连线图。若X是向量,Y是有一维与X等维的矩阵,则绘出多根不同色彩的连线图,连线根数等于Y的另一维数,X被做为这些曲线的共同横坐标。若X是矩阵,Y是29\n向量,情况与上相同,只是曲线都以Y为共同的纵坐标。若X,Y是同维矩阵,则以X,Y对应列元素为横纵坐标绘制曲线,曲线条数等于矩阵的行数。这个命令是绘图的主要使用命令。其他相关用法有:plot(y):相当于x=[1,2,…,length(y)]时情形;plot(x,[y1;y2;…]),x是横坐标向量,[y1;y2;…]是由若干函数的纵坐标拼成的矩阵。plot(x,y1),holdon,plot(x,y2),holdoffplot(x,y1,x,y2,…)plotyy两个坐标系,用于绘制不同尺度的函数plot(x,y,‘颜色+线型+点形’)plot(x,y,‘颜色+线型+点形’,x,y,‘颜色+线型+点形’,…)句柄图形和set命令改变属性值,可套用:h=plot(x,y),set(h,‘属性’,属性值,‘属性’,属性值,…)也可用plot(x,y,'属性','属性值')设置图形对象的属性。(2)gtext(`string')说明:当这个命令输入以后,会在当前图形上出现一个十字叉,等待用户选定标定位置。移动鼠标到所需位置按下鼠标按钮,MATLAB就在选定位置标上文字,文字标注常用符号:\pi(π);\alpha(α);\beta(β);\leftarrow(左箭头)\rightarrow(右箭头);\bullet(点号)。(3)axis([xmin,xmax,ymin,ymax])说明:图形是多种多样的,统一坐标模式不可能总是有效的表现出所绘图形的特征。于是,MATLAB设计了操纵坐标性质的axis指令。它的主要常用的调用格式如下:axis([xmin,xmax,ymin,ymax])指定二维图形X轴和Y轴的刻度范围。axis([xmin,xmax,ymin,ymax,zmin,zmax])指定三维图形三个坐标轴的刻度围。axis(`auto')返回坐标轴的缺省状态。axis(`axis')保持刻度范围不变。(4)figure(n):打开第n个图形窗口。下面这条命令是它的具体用法:figure(‘name’,’foue_bar_movie……’,’numbertitle’,’0ff’,’position’,[232199617479]);后面的一维数组是用来控制图形窗口的大小的。(5)comet():它的用法和plot命令的格式是一样的,但是它是用于不同矢量的曲线绘制的。(6)surf(X,Y,z):n也是三维绘图指令,与mesh的区别在于mesh绘出彩色的线,surf绘出彩色的面,(7)set(gca,‘属性’,属性值,…)可改变字体大小、坐标刻度等轴对象的内容。如:set(gca,'ytick',[-1-0。500。51])将Y轴坐标按向量[-1-0。500。51]将刻度分成4格;29\nset(gca,'yticklabel','a|b|c|d|e')改变y坐标。5.2.2基于PRO/M的四杆机构的仿真大型软件Pro/E下的Motion模块来对四杆机构进行运动分析,省去了大量繁琐的计算,而且可以形象直观看到四杆机构的逼真模型,和运动轨迹,方便的求出四杆机构各点的位置、速度、加速度以及各铰链出受力。实现方法:(1)通过Pr0/E软件,建盘四杆机掏备部分的三维立体模型,按照西杆机构设计R寸建立帆架、曲柄、连杆、摇杆模型。(2)把建好的四杆机构模型进行驻配,装配以后的四杆机构。(3)机架与曲柄,曲柄与连杆、连杆与摇杆、摇杆与机架连接处定义为饺链,机架定义为地。(4)曲柄、连杆、摇杆被添为steel材料属性。(5)曲柄被施加30rpm的驱动速度,即驱动窗口中输入314rad/s的角速度。(6)模型运动时问设定为20s,时间增量为0.1S。用Pro/Motion来进行仿真不但能够绘制建度、加速度曲线,还能够保存其对应的数据提供给设计者使用。通过Pro/Motion来实行四杆机构的运动分析仿真是一种很好的方法,能够使分析者快速地得到形象直观且精确的解。但是要实现对机构设计的系统开发和可变的参数化设置就不那么容易了,这点也就成为不用它来做的重要原因之一。5.3用SimMechanics来实现的仿真SimMechanics动态仿真工具,提出了运用仿真技术对平面四杆机构进行运动分析的方法。用它来进行对四杆机构的运动仿真与动画模拟不需要进行编程,只需要根据物理模型来设置你所需要的模块即可。下面是四杆机构的仿真示例:首先是建立四杆机构的仿真框图如下:29\n仿真框图然后根据正确的数据来对框图里的每个功能模块进行配置,检测运动,运行模型便能进行仿真与分析,下图是四杆机构的仿真界面。动画界面29\nRevolute2和Revolute3的转角时程曲线用它来实现速度、加速度分析也很方便只接往仿真框图里加模块进行配置就可以啦!通过实例得出:它具有系统建模方便直观,仿真功能强大,自动模型分析等强大优势,可很好地对机械系统的各种运动进行分析,从而可为机械系统的建模仿真提供一个强大而方便的工具。它与前面的编程方法相比各有其优缺点,用SimMechanics来实现仿真的话最大的方便是不用考虑机构建模以及机构之间的约束条件,但是在配置各个功能模块的时候需要用到质量、惯性矩、坐标原点,刚体的初始位置和角度等一些预知的数据,也就是说这些数据需要你预先正确的算出,如果数据不匹配将不会出现仿真界面。29\n第六章运算程序6.1四杆机构位置问题的Matlab求解function[th3,th4]=possol(th,rs)%possol4Positionsolutionofa4-barmechanism%%ScriptusedtoimplementNewton-Raphson%methodforsolvingnonlinear%positionproblemofa4-barmechanism%%Copyright2001%JohnF。Gardner%%%inputsoffunction%%th(1)=theta-2%th(2)=theta-3-bar(startingguess)%th(3)=theta-4-bar(startingguess)%%rs(1)=r-1%rs(2)=r-2%rs(3)=r-3%rs(4)=r-4%th2=th(1);th3bar=th(2);th4bar=th(3);%29\n%setconditionforconvergence%epsilon=1.0E-6;%Intializethef-vector%%Computethefunctionsasatwo-elementvector:%f=[rs(3)*cos(th3bar)-rs(4)*cos(th4bar)+rs(2)*cos(th2)-rs(1);rs(3)*sin(th3bar)-rs(4)*sin(th4bar)+rs(2)*sin(th2)];%%Repeatedlycomputethecorrectionfactors%asperequation(3-11)%whilenorm(f)>epsilonJ=[-rs(3)*sin(th3bar)rs(4)*sin(th4bar);rs(3)*cos(th3bar)-rs(4)*cos(th4bar)];dth=inv(J)*(-1。0*f);th3bar=th3bar+dth(1);th4bar=th4bar+dth(2);f=[rs(3)*cos(th3bar)-rs(4)*cos(th4bar)+rs(2)*cos(th2)-rs(1);rs(3)*sin(th3bar)-rs(4)*sin(th4bar)+rs(2)*sin(th2)];norm(f)end;th3=th3bar;th4=th4bar;%%6.2四杆机构的位移、速度、加速度的求解程序globalL0L1L2L3thl29\nLO=str2num(str{1});L1=str2num(str{2});L2=str2num(str{3});L3=str2num(str{4});wl=str2num(str{5});m=str2num(str{6});theta3=str2num(str{7});t=linspace(0,2*pi/w1,181);dt=2*pi/180/w1;thetal=w1*t;thl=thetal(1);theta3(1)=fzero(‘four-bar_equation’,theta3);x_a=0;y_a=0;x_b=x_a+L1*COS(thetal(1));y_b=y_a+L1*sin(thetal(1));x_d=x_a+L0;y_d=y_a;x_c=x_d+L3*cos(theta3(1));y_c=y_d+L3*cos(theta3(1));figure(‘name’,’foue_bar_movie……’,’numbertitle’,’0ff’,’position’,[232199617479]);axis([-L1-L0/3L2+L3-L0/3-L1L3]);axisequal;forI=1:mforj=2:181thl=thetal(j);theta3(j)=fzero(’four—bar—equation’,theta3(j-1));x_b=x_a+L1*COS(th1);y_b=y_a+L1*sin(th1);x_b_c1(j,1)=x_b;y_b_c1(j,1)=y_b;x_c=x_d+L3*cos(theta3(j));y_c=y_d+L3*sin(theta3(j));x_c_c1(j,1)=x_c;y_c_c1(j,1)=y_c;drawnow;end29\nendw3=dif(theta3)/dr;a3=dif(w3)/dr;%6.3定义求解方程的程序%functionY=four_bar_equation(x)globalL0L1L2L3thlY=L1*COS(th1)+L2*sqrt(1一(L3*sin(x)-L1*sin(th1))^2/L2/L2)-L3*COS(X)-L0;%6.4四杆机构的绘制及其动画程序%globalL0L1L2L3thlLO=str2num(str{1});L1=str2num(str{2});L2=str2num(str{3});L3=str2num(str{4});wl=str2num(str{5});m=str2num(str{6});theta3=str2num(str{7});t=linspace(0,2*pi/w1,181);dt=2*pi/180/w1;thetal=w1*t;thl=thetal(1);theta3(1)=fzero(‘four-bar_equation’,theta3);x_a=0;y_a=0;x_b=x_a+L1*COS(thetal(1));y_b=y_a+L1*sin(thetal(1));29\nx_d=x_a+L0;y_d=y_a;x_c=x_d+L3*cos(theta3(1));y_c=y_d+L3*cos(theta3(1));figure(‘name’,’foue_bar_movie……’,’numbertitle’,’0ff’,’position’,[232199617479]);line([x_a;x_d],[y_a;y_d],’color’,’m’,’linestyle’,’-’,‘linewidth’,3,’erasemode’,’none’);line(x_a,Y_a,’color’,’b’,’linestyle’,’.’,’erase—mode’,’none’,‘markersize’,40);line(x_d,Y_d,’color’,’b’,’linestyle’,’.’,’erase—mode’,’none’,’markersize’,40);dot_b=line(x_d,Y_d,’color’,’b’,’linestyle’,’.’erasemode’,’xor’,’markersize’,15);dot_c=line(x_c,Y_c,’color’,’b’,’linestyle’,’.’erasemode’,’xor’,’markersize’,15);line_ab=line([x_a;x_b],[y_b;y_c],’color’,’r’,’lin-estyle’,’-’,’erasemode’,’xor’);line_bc=line([x_b;x_c],[y_b;y_c],’color’,’g’,’lin-estyle’,’-’,’erasemode’,xor’);line_cd=line([x_c;x_d],[y_c;y_d],’color’,’b’,’lin-estyle’,’-’,’erasemode’,xor’);axis([-L1-L0/3L2+L3-L0/3-L1L3]);axisequal;forI=1:mforj=2:181thl=thetal(j);theta3(j)=fzero(’four—bar—equation’,theta3(j-1));x_b=x_a+L1*COS(th1);y_b=y_a+L1*sin(th1);x_b_c1(j,1)=x_b;y_b_c1(j,1)=y_b;x_c=x_d+L3*cos(theta3(j));y_c=y_d+L3*sin(theta3(j));x_c_c1(j,1)=x_c;y_c_c1(j,1)=y_c;29\nset(dot_b,’xclata’,x_b,ydata’,y_b);set(dot_c,’xclata’,x_c,ydata’,y_c);set(1ine_ab,’xclata’,[x_a;x_b],ydata’,[Y_a;Y_b]);set(1ine_bc,’xclata’,[x_b;x_c],’ydata’,[y_b;y_c]);set(1ine_cd,’xclata’,[x_c;x_d],’ydata’,[Y_c;Y_d]);drawnow;endendw3=dif(theta3)/dr;a3=dif(w3)/dr;%6.5绘制三条曲线的命令plot(t,theta3,’b’)%comet(t,w3,’m’)comet(t,a3,’g’)%6.6参数调整的程序%str=inputdlg({Pleaseinput机架长(rack—length)LO:’,’Pleaseinputcrank_lengthL1:’,’Pleaseinputlinkage_lengthL2:’,’Pleaseinputrock_lengthL3(13
查看更多

相关文章