机械结构运动学动力学分析与模拟说明书.docx

机械结构运动学动力学分析与模拟含开题报告及文献综述、任务书

收藏

压缩包内文档预览:(预览前20页/共64页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:26932838    类型:共享资源    大小:6.63MB    格式:ZIP    上传时间:2019-11-26 上传人:QQ14****9609 IP属地:陕西
20
积分
关 键 词:
机械 结构 运动学 动力学 分析 模拟 开题 报告 文献 综述 任务书
资源描述:
机械结构运动学动力学分析与模拟含开题报告及文献综述、任务书,机械,结构,运动学,动力学,分析,模拟,开题,报告,文献,综述,任务书
内容简介:
任务书论文(设计)题目:机械结构运动学动力学分析与模拟工作日期:2016年12月12日 2017年05月19日1.选题依据:运动仿真分析是机构设计的重要组成部分。通过运动仿真可看出所设计机构是否能达到设计要求,若用动画模拟机构的运动轨迹可更加直观。用仿真技术代替物理样机的制作与实验可极大地缩短开发周期,降低工作成本。本题符合本专业的培养目标,同时有效地培养学生的分析问题、解决问题的能力及对所学专业知识的综合应用能力。2.论文要求(设计参数):1、学习理解机构仿真的意义及常用技术。2、针对若干典型机械结构进行模拟仿真,包括机构建模、仿真软件选择、仿真 程序编制等。3、针对仿真结果,完成相关机构的分析,要提供运行结果。4、书写设计说明书,不少于6000字;5、翻译一篇与设计内容相关的外文文献,不少于2000字。3.个人工作重点:1、学习理解机构仿真的意义及常用技术。2、针对若干典型机械结构进行模拟仿真,包括机构建模、仿真软件选择、仿真 程序编制等。3、针对仿真结果,完成相关机构的分析,展示运行结果。4.时间安排及应完成的工作:第1周:明确毕业设计任务,指导学生进行参考文献的查阅。 第2周:指导学生整理加工参考文献。第3周:指导学生如何撰写开题报告,并开始撰写。第4周:上交开题报告,提出修改意见,进行开题报告答辩。第5周:上交开题报告终稿,学习MATLAB软件,包括矩阵、向量及常微分方程求解等。第6周:学习MATLAB软件GUI及编程相关内容。第7周:选定机构,根据机构的几何条件,着手进行数学模型的建立。 第8周:建立仿真模型并开始进行系统仿真。第9周:编制程序对运动变量方程组进行数值求解。第10周:编制程序对求解结果的数据进行可视化。第11周:继续进行程序设计与编制调试,展示成果。第12周:根据机构的各个参数随时间变化特性对其进行仿真结果分析。 第13周:总结机构仿真的工作过程与意义,开始撰写说明书。第14周:归纳总结毕业设计工作,继续完善毕业设计说明书。第15周:完成毕业设计说明书,翻译与本设计相关的英文文献,准备毕业答辩。5.应阅读的基本文献:1杨基厚.机构运动学动力学M.北京.机械工业出版社.1987.2程燕平,程邺.MATLAB理论力学M.北京.高等教育出版社.2015.3刘瑞叶,任洪林,李志民.计算机仿真技术基础M.北京.电子工业出版社.2004.4周明,胡斌.计算机仿真原理及其应用M.武汉.华中科技大学出版社.2005.5王江,付文利.基于MATLAB/Simulink系统仿真权威指南M.北京.机械工业出版社.20136敖文刚.基于MATLAB的运动学动力学过程分析与模拟M.北京.科学出版社.2013.7吴旭光,杨慧珍,王新民.计算机仿真技术M.北京.化学工业出版社.2005.8黎明安.MATLAB/Simulink动力学系统建模与仿真M.北京.国防工业出版社.2015.9敖文刚,敖文芳.运用MATLAB对运动学、动力学问题进行过程分析J.重庆工商大学学报(自然科学版),2012,29(6):36-40.10向雪梅,马振利,等.基于Matlab四杆式液压起落机构运动学与动力学分析J.后勤工程学院学报,2013,29(4):80-85.11袁清珂.机械系统运动学/动力学分析软件J.汽车工程,1990,12(3):60-65.12乔英志,黄加亮.柴油机去柄连杆机构运动学与动力学仿真J.集美大学学报(自然科学版),2012,17(1):49-54.13叶素娣,徐敬华.插床六杆机构的运动学和动力学分析J.安徽工程大学学报,2014,29(4):27-31.14 Xiulong Chen, Xiaoxia Liang,et al. Rigid Dynamic Model and Analysis of 5-DOF ParallelMechanismJ. International Journal of Advanced Robotic Systems,2015,1-9.15Jianjun Qin,Xuguo He,et al.Four Degree of Freedom Manipulators Kinematics SimulinkAnalysis Based on MATLABJ.Information Technology.2013,12(19):5058-5063.指导教师签字:XX教研室主任意见:同意签字:XX 2016年12月08日教学指导分委会意见:同意签字:XX 2016年12月08日 学院公章进度检查表第-4周工作进展情况查找整理与论文题目相关的书籍、期刊文献、论文等参考资料,学习和阅读相关内容,进行开题报告的准备工作和初稿。2016年12月21日指导教师意见该生查阅了相关参考文献,对相关内容进行了阅读和学习,工作情况较好。指导教师(签字):XX 2017年03月14日第-1周工作进展情况整理查找到的参考文献,学习理解关于本设计的相关内容,了解其原理和方法以及意义,完成开题报告的相关内容。了解与设计相关的技术基本知识和研究方向,完成文献综述。整理完善开题报告,准备答辩。2016年12月28日指导教师意见该生基本完成了开题报告,基本明确了工作重点,工作进度安排较为合理,较好地完成了前期准备工作。继续按计划进行后续相关设计工作。指导教师(签字):XX 2017年03月14日第 1周工作进展情况根据学习和了解的内容,选定一种机构,根据该机构的结构特点建立数学模型,完善修改数学模型后在MATLAB上建立该机构的仿真模型进行仿真。2017年03月03日指导教师意见初步了解了编程软件的应用,并基本明确了工作内容。后续工作应继续深入学习MATLAB软件GUI及编程相关内容,同时根据机构的实际特点,完 成机构数学模型的建立。建立仿真模型并开始进行系统仿真。指导教师(签字):XX 2017年05月11日第 5周工作进展情况根据选定机构的数学模型编制程序对运动变量方程组进行数值求解,然后编制程序对求解结果的数据进行可视化处理,随后继续进行程序设计与编制调试,不断调试与完善展示成果。2017年04月01日指导教师意见编制了系统仿真程序,明确了工作重点,初步完成了对运动变量方程组的数值求解及对求解结果进行可视化处理。后续工作应进一步调试、完善程序,展示成果。指导教师(签字):XX 2017年05月11日第 12周工作进展情况经过不断调试与改进,得到完善的数据代码,然后根据机构的各个参数随时间变化特性对其进行仿真结果分析,根据结果分析得到的结论以及经验总结,整理整个设计思路,编写设计说明书并不断完善内容。2017年05月06日指导教师意见基本完成了设计所要求的工作。应进一步完善设计工作,完善说明书,并按学校要求进行查重等准备毕业答辩相关事宜。指导教师(签字):XX 2017年05月23日第周工作进展情况年月日指导教师意见指导教师(签字):年月日过程管理评价表评价内容具体要求总分评分工作态度态度认真,刻苦努力,作风严谨32遵守纪律自觉遵守学校有关规定,主动联系指导教师,接受指导32开题报告内容详实,符合规范要求54任务完成按时、圆满完成各项工作任务43过程管理评分合计11 过程管 理评语 该生在毕业设计工作中态度比较端正,工作过程中作风比较严谨,但刻苦努力程度仍需加强。在毕业设计工作过程中与指导老师有一定程度的互动,也能探讨相关的问题,但学习主动性不够。该生基本能自觉遵守学校有关管理规定,能接受指导教师的指导。开题报告内容基本符合规范要求,有一定的文献检索能力。工作过程中工作进度基本符合要求,本设计涉及系统的分析、建模、仿真等内容。需要学习的知识比较多。学生表达能力与知识的总结归纳能力略显欠缺,在说明书撰写过程中遇到了很多问题,但经过教师指导也基本按时地完成设计工作中所要求的各项工作任务。指导教师签字:XX日期:2017-05-23指导教师评价表评价内容具体要求总分评分选题质量符合培养目标要求,有一定的研究价值和实践意义,有一定的开拓性、创新性,深度、难度适宜,工作量饱满55能力水平有较强的综合运用知识能力、科研方法运用能力、中文表达与外语能力、文献资料检索能力、计算机应用能力53完成质量文题相符,概念准确,分析、论证、计算、设计、实验等正确合理,结论明确;论文结构、撰写格式、图表等符合基本规108指导教师评分合计16 指导教 师评语 运动仿真分析是机构设计的重要组成部分。通过运动仿真可看出所设计机构是否能达到设计要求,若用动画模拟机构的运动轨迹可更加直观。用仿真技术代替物理样机的制作与实验可极大地缩短开发周期,降低工作成本。本题符合本专业的培养目标,同时有效地培养学生的分析问题、解决问题的能力及对所学专业知识的综合应用能力。 学生有一定的知识综合运用能力与计算机应用能力,文献检索能力及表达能力还需进一步加强。本设计问题基本相符,概念基本准确,有相关的分析、论证与实验。论文结构及撰写格式等基本符合要求。指导教师签字:XX日期:2017-05-23评阅人评价表评价内容具体要求总分评分选题质量符合培养目标要求,有一定的研究价值和实践意义,有一定的开拓性、创新性,深度、难度适宜,工作量饱满54能力水平有较强的综合运用知识能力、科研方法运用能力、中文表达与外语能力、文献资料检索能力、计算机应用能力53完成质量文题相符,概念准确,分析、论证、计算、设计、实验等正确合理,结论明确;论文结构、撰写格式、图表等符合基本规107评阅人评分合计14 评阅人 评语 该设计通过对机构的运动学动力学求解,建立相关数学模型后运用MATLAB软件的GUIDE功能,通过运用ode函数队运动变量方 程组进行数值求解,使用MATLAB的作图功能将数值求解的结果进 行可视化处理,借住实际问题对理论分析内容进行验证,准确得出机构运行过程中各运动参数和运动图像并通过对仿真结果的分析得到对机械结构运动学动力学模拟分析。以往复活塞式内燃机机构分析、刨床的横向进給机构分析为典型,选题属机电控制范畴,具有一定的实际意义。设计方案,方案合理可行。分析计算结果正确。论文书写基本规范,内容符合设计要求,可以参加答辩。建议再加强实验验证方面内容和相关分析。评阅人签字:XX评阅人工作单位:XX日期:2017-05-24答辩纪录 学生姓名:XX专业班级:XX 毕业论文(设计)题目: 机械结构运动学动力学分析与模拟答辩时间:2017年05月25日 时 分 时 分答辩委员会(答 主任委员(组长): XX辩小组)成员委员(组员): XXXXX答辩委员会(答辩小组)提出的问题和答辩情况问题1:为什么选择matlab?回 答: 自带运动分析功能,对运动方程,用函数求解,位移、速度、矩阵运动问题2:主要做了什么?回 答: 机构分析、了解运动变量参数变化、受力分析。问题3:运动学、动力学做了?回 答: 动力学没做,主要做点合成、刚体平面问题4:实际中刀在走,运动方程不存在怎么办?回 答: 图形用户界面,是否simlink,没有数学模型做不了。问题5:如何实现可视化的?回 答: 通过方程,在图形界面中,软件自带记录人: 2017年05月25日答辩委员会评价表评价内容具体要求总分评分自述总结思路清晰,语言表达准确,概念清楚,论点正确,分析归纳合理109答辩过程能够正确回答所提出的问题,基本概念清楚,有理论根据109选题质量符合培养目标要求,有一定的研究价值和实践意义,有一定的开拓性、创新性,深度、难度适宜,工作量饱满54完成质量文题相符,概念准确,分析、论证、计算、设计、实验等正确合理,结论明确;论文结构、撰写格式、图表等符合基本规108能力水平有较强的综合运用知识能力、科研方法运用能力、中文表达与外语应用能力、文献资料检索能力、计算机应用能力109答辩委员会评分合计39 答辩委员会评语 XX同学在毕业设计工作期间,工作努力,态度认真,能遵守各项纪律,表现良好。 能按时、全面、独立地完成与毕业设计有关的各环节工作,具有一定的综合分析问题和解决问题的能力。 论文立论正确,理论分析得当,解决问题方案实用,结论正确。 论文使用的概念正确,语言表达准确,结构严谨,条理清楚。 论文中使用的图表,设计中的图纸在书写和制作时,能够执行国家相关标准,规范化较好。 具有一定的独立查阅文献资料及外语应用能力,原始数据搜集得当,实验或计算结论准确。 答辩过程中,能够简明和正确地阐述论文的主要内容,思路清晰,论点基本正确;回答问题准确,有应变力;有较好的语言表达能力。答辩成绩: 39答辩委员会主任:XX2017年06月01日成绩评定 项目分类成绩评定过程管理评分11指导教师评分16评阅人评分14答辩委员会评分39总分80成绩等级B成绩等级按“A、B、C、D、F”记载成绩审核人签章: XX审核人签章: XX一、选题依据1、研究领域机构学;计算机仿真2、论文(设计)工作的理论意义和应用价值机械制造业是国民经济的基础产业,它的发展直接影响到国民经济各部门的发展,也影响到国计民生和国防力量的加强。机械制造在国民经济中占有举足轻重的地位,各行各业都要应用到机械,可以说机械无处不在。而机械的正常运行是机械完成作业的保障,装配完成后的机械需要在各种环境下工作,保证其在相应的环境中正常运行才能保证机械准确的完成作业。在机械运行过程中,各种运动参数,例如速度、加速度、角速度、角加速度等都是时刻变化的,为了了解机械运行状态和及时避免机械出现故障,就需要对机械结构的运动学动力学进行分析,掌握其运动轨迹、方向、加速度及其受力与运动的关系等,从而能够得到机械结构在任意时刻的运动情况,便于分析解决相关问题。运动学仿真对于机构设计、分析、优化等问题有重要作用,对机构进行动力学分析可以得到各运动副中的约束反力和主动构件的驱动力或从动构件的阻力,以便对机械结构进行强度计算。利用软件进行仿真分析可以降低一款产品的生产周期,降低开发成本,提高产品质量。并且这种方法简单易行,操作方便,不需要投入很多人力物力和时间。而利用 MATLAB 对机械结构进行运动学动力学模拟仿真,可以分析整个运动过程中的各运动变量、约束力等,同时运用 MATLAB 的计算能力和图形处理能力, 可以直观的表示出各参数变量的变化。所以,结合计算机技术对机械结构进行运动学动力学仿真分析,不仅节约时间和成本,也能够为设计人员提供更好的解决方案,使设计出来的产品更加具有竞争力。3、目前研究的概况和发展趋势机构要能正常工作,一般必须具有确定的运动,因而必须知道机构的自由度及其具有确定运动的条件。不论是设计新的机械,还是了解现有机械的运动性能,对机构进行运动分析都是十分必要的。对于早期的机构运动分析来说,图解法和解析法应用较为广泛。当需要简洁直观的了解机构的某个或者某几个位置的运动特性时采用图解法比较方便,而且精度也能够满足正常实际问题的要求。当要求精确的知道或了解机构在整个运动循环过程中的运动特性时,就要运用到解析法求解。这种方法的关键是建立位移方程式,至于速度分析和加速度分析则是利用位移方程式对时间求导一次、二次而解线性方程的问题。在计算机功能不成熟的情况下,用解析法对机构求解动力学方程需要花费很长时间,不仅需要工作人员计算准确无误,还需要集中注意力,运用各个方程之间的关系,多次求解才能得到正确结果。随着计算机能力的提高,各种算法都可以在计算机中进行,而且计算机运算要比人脑计算快得多,所以应用计算机辅助计算就可以大大节约时间。机械结构的仿真分析在计算机技术迅速发展的基础上有了广泛的应用,用于机械结构运动学动力学分析的操作软件也发展的越来越多,功能越来越全面,操作越来越简便。目前,有许多国内外计算机辅助设计软件都包含了机械结构运动学动力学的仿真内容。其中,ADAMS 和 SIMPACK 是相对专业的运动仿真软件,SIMPACK 在算法方面比较强,但是不及 ADAMS 应用广泛,ADAMS 是虚拟样机分析的应用软件,自带三维建模系统,其运动分析模块可以做比较复杂的运动仿真。另外,Pro/E、UG、CATIA、SolidWorks 等软件也有运动仿真功能模块,CATIA 在复杂曲面、高阶曲面建模、运动分析方面做得比较好,其运动仿真可以实现运动副运动规律分析、运动参数测量、机构运动轨迹分析、包络体扫掠、空间的运动干涉分析等。UG 有很强的曲面建模功能, 具有自带的运动仿真功能,它能对任何二维或三维机构进行复杂的运动学分析、动力11分析和设计仿真。UG 的运动仿真功能可以对运动机构进行干涉检查、轨迹包络等运动合理性分析工作,得到运动机构的运动参数。Pro/E 和 SolidWorks 同样具有相似功能的运动仿真分析。除此之外,还可以利用编程语言编制仿真程序,例如利用 VB 对AutoCAD 进行二次开发、利用 C+等编程开发环境进行系统开发,利用 Simulink 工具或者直接利用 MATLAB 编制仿真程序得到相关的位置、速度、加速度等的仿真曲线。随着机械结构、机械系统的复杂化,机构分析软件也需要增加一些相关功能,比如增强灵敏度分析、柔性体分析功能,增加优化功能、综合设计能力、前后处理能力和反馈元件模块。同时,对机构的分析也要由简单的运动分析与综合向复杂的运动分析与综合方面发展,也由机构运动学向机构动力分析与综合方向发展。同时完善和发展典型机构的机构综合方法、建立基于功能需要的机构设计新方法,将大大有利于典型机构更加广泛的应用。二、论文(设计)研究的内容1.重点解决的问题(1)学习理解机构仿真的意义和常用技术(2)学习机构数学建模内容和软件程序的编制(3)对典型机械结构进行模拟仿真,熟悉机构建模、仿真编程等内容(4)完成所选机构仿真结果的分析,展示仿真结果2.拟开展研究的几个主要方面(论文写作大纲或设计思路)(1)学习理解机构运动学动力学内容,建立机构的数学模型(2)在 MATLAB 软件中建立仿真模型(3)在 MATLAB 软件中编制 M 文件和回调程序(4)运行程序,对运行结果进行分析整理3.本论文(设计)预期取得的成果通过学习 MATLAB 矩阵、向量和微分方程求解等问题和 GUI 功能以及编程,结合所学专业内容,利用 MATLAB 强大的计算能力和图形处理能力,准确的得出机构运行过程中各运动参数和运动图像并通过对仿真结果的分析得到对机械结构运动学动力学模拟分析的意义三、论文(设计)工作安排1.拟采用的主要研究方法(技术路线或设计参数);首先对选定的机构进行数学建模,对机构运动学动力学所求解以矩阵形式写入MATLAB 的 M 文件中,然后利用 MATLAB 的 GUIDE 功能建立机构的仿真模型,运用 ode 函数对运动变量方程组进行数值求解,运用 MATLAB 的作图功能将数值求解的结果以曲线、动画等形式表现出来,最后对仿真结果进行分析整理。2.论文(设计)进度计划第 1 周-第 2 周:查阅与本设计有关的书籍文献,整理加工资料,准备开题报告第 3 周-第 4 周:根据查阅整理的资料,完成开题报告以及开题报告的答辩第 5 周-第 6 周:学习 MATLAB 软件中矩阵、向量和微分方程求解等内容;学习MATLAB 软件的 GUIDE 功能用户界面的设计和程序的编制第 7 周-第 8 周:选定机构并建立数学模型,利用 MATLAB 的 GUIDE 功能,在用户界面中建立该机构的仿真模型第 9 周-第 10 周:利用 ode 函数对运动变量方程组进行数值求解,使用 MATLAB 作图功能将数值求解的结果可视化处理第 11 周-第 12 周:完善程序设计和编制,根据机构参数变化进行仿真结果分析第 13 周-第 15 周:总结机构仿真的工作过程和意义,归纳毕业设计工作,完成毕业设计说明书,翻译与本设计相关的英文文献,准备毕业答辩四、需要阅读的参考文献1杨基厚.机构运动学动力学M.北京.机械工业出版社.1987.2程燕平,程邺.MATLAB 理论力学M.北京.高等教育出版社.2015.3刘瑞叶,任洪林,李志民.计算机仿真技术基础M.北京.电子工业出版社.2004.4周明,胡斌.计算机仿真原理及其应用M.武汉.华中科技大学出版社.2005.5王江,付文利.基于 MATLAB/Simulink 系统仿真权威指南M.北京.机械工业出版社.20136敖文刚.基于 MATLAB 的运动学动力学过程分析与模拟M.北京.科学出版社.2013.7吴旭光,杨慧珍,王新民.计算机仿真技术M.北京.化学工业出版社.2005.8黎明安.MATLAB/Simulink 动力学系统建模与仿真M.北京.国防工业出版社.2015.9周凌.基于 MATLAB 的四杆机构的运动学动力学仿真J.高职教育,2011,(11):147-149.10敖文刚,敖文芳.运用 MATLAB 对运动学、动力学问题进行过程分析J.重庆工商大学学报(自然科学版),2012,29(6):36-40. 11向雪梅,马振利,等.基于 Matlab 四杆式液压起落机构运动学与动力学分析J. 后勤工程学院学报,2013,29(4):80-85.12袁清珂.机械系统运动学/动力学分析软件J.汽车工程,1990,12(3):60-65.13乔英志,黄加亮.柴油机去柄连杆机构运动学与动力学仿真J.集美大学学报(自然科学版),2012,17(1):49-54.14叶素娣,徐敬华.插床六杆机构的运动学和动力学分析J.安徽工程大学学报,2014,29(4):27-31.15刘勇,王卫华,等.基于 Simulink 的偏置曲柄滑块机构运动学和动力学分析J. 科学技术与工程,2014,14(1):186-191.16 Xiulong Chen, Xiaoxia Liang,et al. Rigid Dynamic Model and Analysis of 5-DOF Parallel MechanismJ. International Journal of Advanced Robotic Systems,2015,1-9.17 Jianjun Qin,Xuguo He,et al.Four Degree of Freedom Manipulators Kinematics Simulink Analysis Based on MATLABJ.Information Technology.2013,12(19):5058-5063.附:文献综述文献综述引言机构运动学动力学仿真是科技进步和生产发展共同促进的结果,传统运动学动力学求解方法已经不能够满足现今生产节奏和要求,借助计算机分析是现在机械产品设计的一大特点,计算机仿真可以有效地帮助工作人员进行产品模型的设计分析,直观的展现其运动情况,大大缩短了产品设计周期,节约成本。【1】计算机仿真软件有很多, 比如 ADAMS、SIMPACK、MATLAB、Pro/E、SolidWorks、CATIA、UG 等,其中 MATLAB 软件功能强大,广泛用于自动控制、系统工程、信息工程、机电工程等专业领域,其对机构运动学动力学仿真也有一定的优势,利用 MATLAB 的 M 函数对机构进行建模和仿真,方法简单直观,操作性较好。GUI(Graphical User Interface)是面向对象的语言,逻辑简单,对于非专业人员来说也可以很容易掌握。1.机构的运动学与动力学机构的本质是执行机械运动的装置,对机构的首要目标就是保证其能够完成预期的运动规律。随着社会的发展和科学技术的进步,现代机构日益向着高速度、高精度、高效率、低震动、低噪声的方向发展。要创造出大量的、种类繁多的、优良的、满足工程实际需要的机构,所涉及的专业知识和技能很多,如常见机构的工作原理和特点、机构的结构分析、机构的运动学分析、机构的动力学分析、机械系统设计、机构的优化等等,还包括各种计算机辅助技术的使用,其中机构的运动分析和动力分析是机构创新设计中一项重要的基础工作。为了得到机械结构的运动和作用于物体的力与物体运动之间的关系,对机构进行运动学和动力学分析非常重要。运动学主要是是研究机构的运动方程、轨迹、位移、速度、加速度等运动特征。机构运动分析的任务是在已知机构尺寸及原动件运动规律的情况下,确定机构中其他构件上某些点的轨迹、位移、速度及加速度和构件的角位移、角速度及角加速度。【2】这些内容无论是设计新的机械,还是为了了解现有机械的运动性能,都是十分必要的,而且他也是研究机械动力性能的必要前提。动力学的形成和发展是与生产的发展密切联系的,特别是在现在工业和科学技术迅速发展的今天,对动力学提出了更加复杂的课题,例如高速运转机械的动力计算、高层结构受风载及地震的影响、宇宙飞行及火箭推进技术,以及机器人的动态特性等,都需要应用动力学的理论。机构运动分析的方法主要有图解法、解析法、仿真法和实验法。当只需要简单的了解机构的某个或某几个位置的运动特性时,采用图解法比较方便,而且精度也能够满足实际问题的需要。而当需要精确的知道或要了解机构在整个运动循环过程中的运动特性时,就要采用解析法进行分析求解,并借助计算机分析,这样不仅可以获得很高的计算精度以及一系列位置的分析结果,还能绘制出机构相应的运动曲线,比较直观的展现出机构的运动,同时还可以把机构分析和机构综合问题联系起来,以便用于机构的优化设计。动力学研究物体的机械运动与作用力之间的关系,研究对象包括质点和质点系。动量定理、动量矩定理和动能定理是动力学三大定理,是求解动力学问题最基本、最常用的方法。【3】运动学研究有两类基本问题,一是已知物体的运动规律,求作用于物体上的力;另一种是已知作用于物体上的力,求物体的运动规律。解决这两类问题的基本方法就是根据经典力学的基本原理,对所研究的对象建立起将作用力与物体运动联系起来的运动微分方程。将已知物体的运动规律函数带入方程,可以求解未知的作用力;而当已知物体的作用力和运动起始条件时,可以在微分方程中求解得到物体的运动规律。2.计算机仿真软件简介随着科学技术的发展以及产品生产的要求,计算机辅助软件应运而生。计算机仿真技术是 20 世纪 80 年代迅速发展起来的一项技术,它在工程领域的运用极大地促进了工程技术的发展,使工作人员在设计、分析等阶段节约了很多时间。能够对机械结构仿真的软件有很多,其中 ADAMS、MATLAB、Pro/E、SolidWorks、CATIA、UG 等软件都可以对机械结构进行模拟仿真。ADAMS(Automatic Dynamic Analysis of Mechanical Systems)是美国MDI(Automatic Dynamic Analysis of Mechanical Systems)公司开发的一款机械系统动力学自动分析的虚拟样机分析软件。这个软件广泛应用于航空航天、汽车工程、工业机械、铁路车辆及装备等方面,它功能强大,资料齐全,集成了大部分机构运动学动力学内容,能够对机构进行静力学、运动学、动力学的分析。【4】它能够帮助工程师更好地理解系统的运动、解释其子系统或整个系统的设计特性,比较多个设计方案之间的工作性能,在运行仿真的同时也能够进行结构的优化设计,为机械结构的设计和分析带来极大便利,缩短了产品设计周期,加速产品投入市场。ADAMS 软件对机构的分析采用拉格朗日方程的方法,自带完整的零件库、力库、约束库,创建的机械模型完全参数化,利于修改。不过在产品三维建模方面它不如其他机械制图软件灵活,需要建立接口与 Pro/E、SolidWorks 等软件相连,将三维模型在制图软件中装配好后再转换到 ADAMS 中,这样增加了格式转换的内容,操作稍微复杂一些。而且对于初学者来说,全英文界面也有一定的挑战。SolidWorks 是法国达索(Dassault Systemes)公司的一款基于 Windows 开发的三维机械设计软件,它用途范围广,涉及航空航天、机车、食品、机械、国防、交通、模具、电子通讯、医疗器械、娱乐工业、日用品/消费品、离散制造等领域,其功能强大、易学易用和创新技术的三大特点令全球许多工程师青睐。SolidWorks 采用内嵌CAD 的 SolidWorks Simulation、SolidWorks Motion 和有限元分析(FEA)对机构进行仿真分析,SolidWorks 运动分析使用附带零件接触的装配体配合和可靠的物理解算器,准确地确定装配体在载荷下的物理移动。【5】通过计算装配体运动和作用力,可以执行零部件的结构分析,从而确保产品的性能。该软件环境友好,功能齐全,对于新手来说也很容易上手操作,对于机构运动学动力学仿真来说,只要三维模型创建的正确合理,得到预期的结果不成问题。但是其动力学分析内容不如 ADAMS 齐全,所以一般采用两者结合的方式对机构进行运动学动力学分析。Pre/E 软件是美国参数技术公司(PTC)的一款三维软件,现在 PTC 已经推出了集Pro/ENGINEER、CoCreate 和 ProductView 三大软件于一体的 Creo 软件。Pre/E 采用的模块化设计,能够分别进行草图绘制、零件制作、装配设计、钣金设计、加工处理等工作,随着模块的增加和不断完善,各种加工制造行业,汽车、轮船、航天、电子、模具等行业越来越多的应用该软件。【6】Pre/E 对机械结构进行运动分析也是建立在三维模型正确装配的基础之上的,对机构合理建模是一项重要的任务,通过对机构进行约束和加载力或者力矩,就可以得到机构的运动仿真图形以及运动参数。同样,其对于机构的动力学分析不如 ADAMS 软件强大,通常也是采用两者结合的方式对机构进行运动学动力学分析。UG(Unigraphics NX)是德国西门子 Siemens PLM Software 旗下的一款计算机辅助设计软件,在复杂实体的曲面造型方面功能强大,而且在数控加工方面能够完美的和西门子的数控系统结合,所以它在模具行业应用极其广泛。对于机构运动学仿真方面,NX CAE 的运动分析能够计算机械系统的作用力与反作用力、扭矩、速度、加速度等,在动力学分析方面同样不足。对于 MATLAB 来说,它不同于上述几个软件,MATLAB 是美国 MathWorks 公司出品的商业数学软件,主要包括 MATLAB 和 Simulink 两大部分。MATLAB 虽然主要是用于数值计算,但利用其众多的工具箱也能在工程领域发挥很大的作用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。MATLAB 用矩阵作为基本数据单位,它的指令表达式和工程中常用的形式类似,所以用 MATLAB 解决工程问题要比用其他语言更加方便简洁。3.MATLAB 仿真简介MATLAB 对机构进行运动学动力学分析有两种方式,一种是利用 Simulink 库,另外一种是利用 MATLAB 的 GUI 功能。Simulink 库功能非常强大,它提供一个动态系统建模、仿真和综合分析的集成环境。在这个环境下,可以进行多种仿真模拟,其中对于机构的仿真,有以下几个步骤:(1)建立数学模型,对机构进行运动学、动力学方程求解(2)建立机构的 Simulink 模型,正确构造和连接积分器(3)编写 M 文件,将积分器的输入和函数的输出联系起来(4)为积分器建立初始条件(5)编写程序,运行仿真其中正确构造积分器和编写程序占据了大部分工作量,相比直接运用 MATLAB 的 GUI 功能对机构进行仿真,GUI 功能不需要构件积分器,它是一个包含图形对象的用户界面,用于机构仿真的 GUIDE 功能给操作者提供了一系列创建用户图形界面的工具,应用这些工具可以大大简化 GUI 的设计和生成过程。利用 GUIDE 进行仿真,只需要建立M 文件和 FIG 文件,编写好程序之后就可以得到求解的运动参数以及运动仿真图像, 相比之下更加方便。对于应用 GUIDE 仿真,有以下几个步骤:(1)建立数学模型,对机构进行运动学、动力学方程求解(2)编写 M 文件(3)构建仿真模型(FIG 文件)(4)编写程序,运行程序4.总结对比使用 Simulink 对机构仿真,使用 MATLAB 的 GUI 功能更加简便,用户界面更加清晰和友好,不需要建立复杂的积分器,逻辑简单,对于初学者来说也能够很好地掌握。而对于其他软件,ADAMS 和 Pro/E 等这些软件是建立在正确的三维模型上对机构进行分析的,需要准确的建模技巧才能够实现,不过这些软件对机构的运动学动力学分析比较直观,但是相对 MATLAB 来说还是有一些复杂。根据所学理论力学的知识, 对机构的运动学动力学求解,数学建模之后就是在 MATLAB 软件的 GUIDE 功能上操作, 运用 ode 函数对运动变量方程组进行数值求解,使用 MATLAB 作图功能将数值求解的结果可视化处理,运行程序只需要点击相应按键,不仅操作简便,还能综合所学知识, 对机构仿真有一个全面地掌握。因此,基于上述优缺点的讨论,本次设计采用 MATLAB 的 GUIDE 功能对机构仿真。参考文献1敖文刚.基于MATLAB 的运动学动力学过程分析与模拟M.北京.科学出版社.2013.2杨基厚.机构运动学动力学M.北京.机械工业出版社.1987.3程燕平,程邺.MATLAB 理论力学M.北京.高等教育出版社.2015.4高光娣.典型机械结构 ADAMS 仿真应用M.北京.电子工业出版社.2013.5陈超祥.SolidWorksSimulation 基础教程M.北京.机械工业出版社.20126廖秋凉,谭永康.基于 ProE 及 Mastercam 的 CAD/CAM 应用技术M.北京.北京理工出版社.2009.10机械结构运动学动力学分析与模拟摘要在机械运行过程中,各种运动参数例如速度、加速度、角速度、角加速度等都是时刻变化的,为了了解机械运行状态和及时避免机械出现故障,就需要对机械结构的运动学动力学进行分析,掌握其运动轨迹、方向、加速度及其受力与运动的关系等,从而得到机械结构在任意时刻的运动情况,便于分析解决相关设计、分析、优化等问题。利用 MATLAB 对机械结构进行运动学动力学模拟仿真,可以分析整个运动过程中的各运动变量、约束力等,同时运用 MATLAB 的计算能力和图形处理能力,可以直观的表示出各参数变量的变化。根据所学理论知识,对机构的运动学动力学求解,建立数学模型之后在MATLAB 软件的 GUIDE 功能上操作,运用 ode 函数对运动变量方程组进行数值求解,使用 MATLAB 作图功能将数值求解的结果可视化处理。最后借助实际问题对理论分析内容进行验证,用 MATLAB 软件将实际问题的相关运动问题展现出来, 准确的得出机构运行过程中各运动参数和运动图像并通过对仿真结果的分析得到对机械结构运动学动力学模拟分析的意义。关键词:机构运动学、机构动力学、MATLAB 仿真模拟IIAbstractIn the process of mechanical movement, various kinematic parameters such as speed, acceleration, angular velocity and angular acceleration are all changing. In order to understand the mechanical running state and to avoid the mechanical failure in time, we need to analyze the kinematics and dynamics of mechanical structures. To grasp the movement trajectory, direction, acceleration and its relationship between force and movement, etc., to get the motion of mechanical structure at any time, in order to analyze and solve the relevant design, analysis, optimization and other issues easily. The kinematic dynamics simulation of the mechanical structure can be carried out by using MATLAB to analyze the motion variables and the binding force in the whole process. At the same time, the computational power and graphics processing ability of MATLAB can be used to express the change of each parameter variable intuitively.According to the knowledge of theoretical mechanics, the kinematics dynamics of the mechanism is solved. After the mathematical model is established, the function of the ode function of MATLAB software is used to solve the motion variable equations. The MATLAB function is used to solve the numerical solution and the results are visualized. Finally, with the help of practical problems to verify the content of the theoretical analysis, show the practical problems related to the movement of the problem with MATLAB. And we can obtain the motion parameters and motion images of the mechanism during the process of mechanical movement. Through the analysis of the simulation results, the significance of the dynamic simulation analysis of mechanical structure is obtained.Key Words: Mechanism kinematics; Mechanism dynamics; MATLAB simulation目录摘要I ABSTRACTII1 绪论11.1 选题目的及意义11.2 研究背景和现状11.3 研究主要工作及内容22 机械结构的运动学动力学分析32.1 机械结构种类及应用32.2 机械结构的分析方法33 运动学动力学仿真软件53.1 机构仿真软件简介53.2 MATLAB 仿真及特点54 MATLAB 仿真基础64.1 MATLAB 基础知识64.2 MATLAB 的 M 文件64.3 MATLAB 图形用户界面75 MATLAB 仿真过程95.1 建立 M 文件95.2 设置图形用户界面95.3 运行程序126 机构的分析内容 146.1 点的运动学分析146.2 点的合成运动分析196.3 刚体平面运动分析 257 实例分析327.1 往复活塞式内燃机机构分析327.2 刨床的横向进给机构分析348 结论38 参考文献39 附录:程序代码52 致谢68机械结构运动学动力学分析与模拟1 绪论1.1 选题目的及意义机械的正常运行是机械完成作业的保障,装配完成后的机械需要在各种环境下工作,保证其在相应的环境中正常运行才能保证机械准确的完成作业。在机械运行过程中各种运动的参数,例如位移、速度、加速度、角速度、角加速度等,都是时刻在变化的,为了了解机械运行状态和及时避免机械出现故障,就需要应用人员对机械结构的运动学动力学进行分析,掌握其运动轨迹、方向、加速度及其受力与运动的关系等,从而能够得到机械结构在任意时刻的运动情况,便于分析解决相关问题。机构的运动学仿真在机构设计、分析、优化等方面有重要作用,而对机构进行动力学分析可以得到各运动副中的约束反力和主动构件的驱动力或从动构件的阻 力,以便对机械结构进行强度计算。在没有计算机帮助的情况下,可以用图解法或者解析法求解机械结构运动学和动力学问题。在计算机功能不成熟的情况下,用传统方法求解机构运动学方程需要花费很长时间,不仅要计算的准确无误,还需要集中注意力,运用各个方程之间的关系,多次求解才能得到正确结果。随着计算机能力的提高,各种算法都可以在计算机中进行,而且计算机运算要比人脑计算快得 多,所以应用计算机辅助计算就可以大大节约时间。相对图解法和解析法的计算来说,利用计算机分析软件辅助分析能够节约时 间,使产品的生产周期下降,提高产品的质量。而且这种方法简单易行,操作方 便,不需要投入过多的人力物力和时间,开发成本低。结合计算机仿真技术对机械结构进行运动学仿真分析,不仅节约时间和成本,也能够为设计人员提供更好的解决方案,使设计出来的产品更加具有竞争力。1.2 研究背景和现状随着计算机技术的不断发展,为了满足快速的生产节奏和更优化的设计方案, 计算机仿真技术也不断被更新和使用。利用计算机仿真的技术是 20 世纪 80 年代迅速发展起来的一项技术,它在工程领域的运用极大地促进了工程技术的发展,使工作人员在设计、分析等阶段节约了很多时间。对机械系统进行运动学分析是最早的分析软件研究产生的目的,如 IBM 公司最早推出的 KAM 软件,它只能对单运动单自由度的机构进行机构的运动学分析,不能对其他动力学内容进行分析。之后,机械系统运动学动力学分析软件的功能在多刚体系统动力学的发展下有了迅速的提高。美国的几个大学相继开发了多款软件,这其中就有 ADAMS 软件,它能解决复杂的动力学问题。随着生产节奏的加快和高质量的要求,机构仿真也需要拥有更加复杂44的、具体的功能。随后不断出现了多款能够对机械结构进行仿真的软件,其中有ADAMS、Pro/E、SolidWorks、CATIA、UG 等专业软件,也有像 MATLAB 这样的数学软件。计算机辅助软件有很多,能够对机构进行运动学分析的也数量庞大,根据建立的模型不同可以分为数学模型和物理模型两类,数学模型是建立机构运动微分方程的矩阵,通过计算矩阵得到解析;物理模型则是在软件中按照实物一比一构建立体模型,将零件体装配好之后,施加约束和约束力,然后根据软件中提供的运动分析模块来对该机构进行运动分析仿真。ADAMS 是美国 MDI 公司开发的虚拟样机分析软件,集成了大部分机构运动学和动力学内容。ADAMS 采用拉格朗日方程的方法分析机构,自带完整的零件库、力库、约束库,功能强大,资料齐全,创建的机械模型完全参数化,利于修改。SolidWorks 是法国达索公司开发的三维设计软件,它采用内嵌 CAD 的 SolidWorks 仿真、SolidWorks 运动和有限元分析对机构进行仿真分析,SolidWorks 的运动分析使用物理解算器分析其配合好的装配体,能够准确地确定装配体在载荷下的运动变量。其他的三维辅助软件同样需要建立三维模型,然后再对其机械结构进行分 析。MATLAB 主要用于数值计算,但它内部自带的工具箱也包含工程领域的内容, 所以利用它丰富的工具箱也能在工程领域发挥作用。工程中的计算要使用大量的矩阵运算,因此相比用其他语言,用 MATLAB 解决工程问题要更加便捷。机构分析的知识很多,袁清珂1介绍了一些机械系统动力学和运动学的分析软件,程燕平2等人介绍了在 MATLAB 中如何应用理论力学求解机构运动学动力学的内容,并举例说明了理论力学在 MATLAB 中的运算过程,杨宗明,马哲树3等人针对 280 柴油机做了曲轴连杆活塞机构的运动学动力学仿真,曾德惠4介绍了 MATLAB 辅助机构的运动学分析内容,陈德为5利用 MATLAB 对曲柄滑块机构进行了仿真, 崔利杰,龚小平6等人给出了基于 MATLAB 运动仿真的平面多连杆机构优化设计内容,乔英志7-11等人则是在不同软件下分别对柴油机曲柄连杆机构、插床六杆机构等机械结构进行了运动学与动力学分析。1.3 研究主要工作及内容此次研究题目为机械结构运动学动力学分析与模拟,首先要学习了解对机械结构进行运动学动力学分析模拟的意义及目的,了解典型机械结构的分析方法,并学习能够对机构仿真的常用技术;了解 MATLAB 仿真的过程和操作,介绍 MATLAB 在仿真方面的优势,学习 MATLAB 在机构仿真方面的使用;针对典型的机械结构进行仿真模拟,准确的得出仿真结果;针对仿真结果,分析相关机构的运动,总结分析整个仿真过程。2 机构运动学动力学分析2.1 机械结构种类及应用机构主要是由多个构件组成,单一的构件不能形成有效的运动,拥有运动副才能显示出构件做出的动作,两个或多个构件连接起来就形成了运动链,形成了运动链,构件就能够做出以定的运动,将其中的某一个杆件固定起来,这个运动链就变成了能够稳定运动的机构。机构主要是用来传递或者变换运动和力的装置,根据运动副的不同,有高副机构和低副机构之分;根据机构的运动情况不同,又有空间机构和平面机构之分;此外,根据组称机构的构件性质还可以区分出刚性机构、柔性机构、挠性传动机构等机构;而生活中采用分类方法最多的是根据机构的工作原理和组成机构的构件不同而进行分类,有连杆机构、齿轮机构、带传动机构、链传动机构、摩擦传动机构、凸轮机构等众多的种类12。在人们的生产生活中,运用到的机械结构多种多样,例如,自行车的车铃用到了齿轮机构和连杆机构,拨动连杆装置,使连接在上面的齿轮转动,与齿轮连接的拨片就会连续敲击车铃盖,发出声音;在石油行业,用到最多的采油机就是典型的连杆机构;在一种蜂窝煤加工机器中用到了齿轮结构、带传动机构等多种机构,通过带传动给齿轮提供动力,齿轮转动使制作好的蜂窝煤移向另外的方向,通过棘轮机构控制工作节奏;在汽车上机构更是无处不在,雨刮器就用到了曲柄摇杆机构, 变速箱操纵机构属于多杆铰链机构。2.2 机械结构的分析方法机械结构在运行中,各个运动参数都是时刻在变化的,为了了解机械结构的运动性能或者设计一种新的机械结构,分析其运动和受力情况是十分重要的。对一个机构进行分析,首先应该从最简单的一点开始,先分析其主要点的运动情况和受力,再分析与之相关的组件的运动和受力,最后综合分析点和构件就能够得到整个机械结构的运动和动力分析结果。机构的分析方法有多种,解析法获得的数据更加精确,所以应用解析法求解的分析方法最多,除此之外还有图解法,图解法求解的方式比较方便,但是其精度不是很高。同时还有实验法等方法可以对机构进行仿真分析。1 运动学分析图解法分析主要分析机构的位置、速度及加速度等1。对于点来说,运动分析有矢量法求解,直角坐标法和自然法13,将点的速度方向和移动轨迹画出来,就能够利用方程得到结果。对运动刚体来说,按照刚体的形状,等比例的画出其结构简图,列出刚体上点的运动矢量方程,根据简图分别分析计算得出其运动情况。求解机构的运动,有速度瞬心法、基点法和综合法等方式13。解析法求解运动学内容时,是先建立机构的位置方程,将方程对时间求导数, 就能够得到机构的速度,二次求导就能够得到机构的加速度1。根据使用的数学工具不同,解析法也有很多种类,其中有采用矩阵求解的方法,也有采用复数矢量法求解的类型,归结起来都要建立机构的运动方程组,这种方式求解的结果要比图解法更加准确。2 动力学分析作用在机械上的力既有驱动力,也有阻抗力,对机构进行受力分析,可以确定机械上的平衡力,有利于挖掘现有机械的生产潜力13。对机构的力学求解主要是根据牛顿力学的几个公式和动量定理及动能定理求 解,其中还要应用到达朗贝尔原理13。低速机械的惯性力由于过小不在考虑范围之内,只需要做静力分析,而高速运动的机械惯性力大,就要对其进行动态静力分析13。分析出来的受力情况,同样也可以用矩阵法或者复数矢量发求得结果。3 运动学动力学仿真软件3.1 机构仿真软件简介有许多国内外仿真软件能对机构进行分析,其中,ADAMS 和 SIMPACK 是相对专业的运动仿真软件,ADAMS 是虚拟样机分析的应用软件,自带三维建模系统,其运动分析模块可以做比较复杂的运动仿真。另外,Pro/E、UG、CATIA、SolidWorks 等软件也有运动仿真功能模块,CATIA 在运动分析等方面做得比较好,其运动仿真可以实现运动副运动规律分析、运动参数测量、机构运动轨迹分析、空间的运动干涉分析等。UG 有很强的曲面建模功能,具有自带的运动仿真功能,它能对任何二维或三维机构进行复杂的运动学分析、动力分析和设计仿真。UG 的运动仿真功能可以对运动机构进行干涉检查、轨迹包络等运动合理性分析工作,得到运动机构的运动参数。Pro/E 和 SolidWorks 同样具有相似功能的运动仿真分析。除此之外,还可以利用编程语言编制仿真程序,例如利用 VB 对 CAD 进行二次开发、利用 C 语言进行系统开发,利用 MATLAB 及其 Simulink 工具箱进行仿真分析等。3.2 MATLAB 仿真及特点虽然 MATLAB 主要是用于数值运算,但还是可以借助它庞大的附加工具箱,应用到很多行业中,比如金融学、工程学、生物学、通讯控制系统、运筹学等学科。MATLAB 仿真可以使用 Simulink 仿真,也可以使用 GUI 设计图形用户界面仿真。MATLAB 的运动仿真,可以分析机构运动过程中的各运动变量,位移、速度、加速度、角速度等,还能够分析约束力、约束反力等,同时运用 MATLAB 的计算能力和图形处理能力,可以直观的表示出各参数变量的变化4。MATLAB 的主要特点有:计算功能效率很高,不论是数值计算还是字符计算;图形处理功能完整齐全,可以用图像的形式将计算结果表现出来;用户界面非常友 好,在界面操作容易上手,其语言和数学表达式类似,语言表达自然化,学习的用户能够容易的学习和掌握;具有涵盖多种学科的应用工具箱,用途非常广泛,用户在各个领域使用时可以直接使用,非常方便2。MATLAB 软件的主要优势有:编程环境简洁,各个状态栏布置合理,操作简单; 操作界面的人机交互性强,编程语言和数学语言相似,编写起来简单,可移植性 好;拥有非常强大的计算处理能力;图形处理功能完善,既能绘制二维曲线、三维曲面,还能对图形进行光照处理、色度处理等2。4 MATLAB 仿真基础4.1 MATLAB 基础知识1 建立矩阵在 MATLAB 中创建的矩阵要遵循三个原则:使用符号构建矩阵,矩阵的元素都要包含在其中;使用逗号或者空格来把矩阵的列分隔开;利用分号或者回车键把矩阵的行分隔开。2 MATLAB 变量变量是 MATLAB 中各种程序结构的基础,其中有全局变量和局部变量两种变量类型可以在 MATLAB 中定义,这两种变量类型在程序设计中有不同的应用范围和工作原理。全局变量用 global 来定义,global 要放在变量名前面,在 MATLAB 整个工作空间中使用到的变量是全局变量2。局部变量的工作空间独立于 MATLAB 的基本工作空间和其他函数的工作空间,使用局部变量可以使不同工作空间的变量互相独立。为了减少参数的定义,要将变量设置为全局变量,而且有效的利用全局变量可以使程序的执行效率得到提高。4.2 MATLAB 的 M 文件作为一种广泛应用的科学计算软件,MATLAB 不仅能够根据自己的语法规则来自己设计程序,就像其他的高级编程语言一样,还能够通过直接的命令操作进行强大的数值计算、绘图等2。M 文件就是 MATLAB 中保存程序的文件,其后缀扩展名“.m”,如图 1 所示。用户编写 M 文件,能够将 MATLAB 的许多命令集中起来操作,在 M 文件中存在的命令都可以任意调用和修改,这样对编程人员来说可以节约很多时间,提高工作效率。M 文件由以下四部分组成: 函数定义行;帮助信息行:代表帮助信息的第一行; 帮助文件文本;函数体:实现函数功能的部分。M 文件分为两种:脚本文件和函数文件,它们的扩展名都是“.m”。在 MATLAB 语言环境中任意输入一个 M 脚本文件的名称,这个 M 文件的各条语句就会被 MATLAB 自动执行,并且在 MATLAB 的工作空间中显示出运行结果。脚本文件常用于需要多次执行的一系列命令中,既不接收输入参数也不返回输出参数,它处理的是工作空间中的变量,在工作空间之外的变量与之无关。M 函数文件有注释信息和函数定义行,它能够接收输入参数,也能够返回参数,所以函数文件多用在需要多次执行且需要输入输出参数的命令中,在函数文件的内部变量中,变量被默认设置为局部变量操作。图 1M 文件编辑器4.3 MATLAB 图形用户界面MATLAB 中的图形用户界面是以窗口、按键、光标等对象构成的界面。在 MATLAB 中一共有四种 GUI 模板,分别是空白模板 Blank GUI、带控件对象的GUI 模板 GUI with Uicontrols、带坐标轴与菜单的 GUI 模板 GUI with Axes andMenu 和模式问题对话框的 GUI 模板 Modal Question Dialog。GUI 设计模板不同, 其中的图像窗口和具体的控件也不同,如图 2 所示。图形用户界面中的基本元素:组件:GUI 中的各个结构,有:图形控件(按钮、列表、编辑框等)、静态元素、菜单和坐标系;图像窗口:操作控件的窗口;响应:激活控件发生的动作或变化。要想令操作的控件能够实现预期的效果,就要对控件进行设置操作。GUI 中的控件大致分为两种,一种是动作控件,另一种是静态控件。动作控件用鼠标点击就会产生相应的相应,静态控件不产生响应,比如静态文本等。控件的属性类别有很多,有字体颜色、大小等,其中有字符串属性 String 和标签属性 Tag,String 属性是改变静态文本控件显示出来的名称,Tag 属性是更改控件被调用时函数内部提取的一个标记,更改这两项能够使操作者更加方便快速的对控件进行修改和操作2。每个控件都要有自己独立的名称,不管是字符串属性还是标签属性都不能重复,那样计算机就会出现识别错误,从而导致程序出现问题不能正常运行。图 3 表示的是图形用户界面的创建窗口。图 2GUI 模板图 3图形用户界面5 MATLAB 仿真过程5.1 建立 M 文件进入 MATLAB 环境,点击 MATLAB 的 New Script 按钮,创建一个新的 M 文件, 如图 4。在 M 文件编辑器中,可以编写程序代码,将需要用到的函数语句输入到 M 文件编辑器中,就能够在 MATLAB 的环境下随时调用。M 文件的保存操作简单,点击菜单栏的 Save 按钮即可将写好的程序语言保存在相应的文件夹中,在保存文件的同时,还可以改变 M 文件的名称。图 4编写 M 文件5.2 设置图形用户界面MATLAB 的图形用户界面的清晰简要,各个选用的控件都排列在界面的左端, 用户可以根据不同的需求排列安放各个控件的位置,调整大小以及形状,使其符合用户的要求。按照功能可以把要设计的用户图形界面分为大致以下几个区域:一个是应用编辑文本控件 Edit Text 输入机构的运动参数和其他初始条件;然后应用Axes 控件来绘制曲线,用来表示机构上某一点或某一部分的位移、速度以及加速度等的变化;加入几个 Push Button 按钮用来分别实现数据计算、绘制曲线、演示动画等功能;同时还要用 Axes 控件显示相关的动画,用来模拟机构的运行情况, 观察分析其运动状态;最后还要应用一个 Panel 控件和几个 Radio Button、EditText 控件来实现根据某一特定时间或者空间位置进行查询机构的运动情况。图 5安装控件的图形用户界面选择和放置完控件之后,就要对控件的属性进行修改,以便在之后的函数运算过程中容易赋值和提取。首先对每个静态文本控件设置属性,对于 Static Text 文件只需要修改其String 属性,赋予各个控件对应的名称,这样在模拟之前就能知道每个控件代表的运动参数;而对于每个编辑文本来说,其标签属性的名称应该和与之对应的静态文本控件的字符串属性名称相同,字符串属性的设置要使编辑文本在没有输入之前不显示内容,输入的内容要和对应的静态文本表示的参数相同,如图 6 和图 7 所示。更改设置静态文本控件和编辑文本控件的属性,就可以在编程和函数运算中直接输入其现在的名称进行赋值和运算。接下来要设置按钮 Push Button 控件的属性,对按钮控件来说,需要设置两方面的内容,一是其代表的功能,即设置其 String 属性和 Tag 属性,第二个要设置的就是编写该按钮控件的回调程序,使得这个控件在激活的状态下能够得到用户想要的变化或结果。要想按下一个按钮使其产生用户期望看到的结果,就需要对该按钮的属性进行设置,编写回调函数,回调函数就是用来实现这一操作的。如图 8 和图 9 所示。图 6String 属性图 7Tag 属性图 8设置按钮控件回调程序图 9回调程序编辑窗口5.3 运行程序在设计好的 GUI 用户界面中点击运行程序,显示出一个独立的程序窗口,可以在空白文本处填写内容,每个按钮都可以被激活,如图 10 所示。图 10执行程序在编辑文本控件中输入相应的数值,用鼠标分别点击计算按钮、曲线按钮和动画按钮使之处于激活状态,MATLAB 后台就会计算矩阵,并且在坐标轴 Axes1 控件中就会显示 BC 杆的转角、角速度、角加速度,在坐标轴 Axes2 控件中显示 C 点的位移、速度和加速度的变化情况,在坐标轴 Axes3 控件中显示模拟刨床运动的仿真图像。同时在查询条件对应的控件中输入在模拟时间范围内任意的时间点,激活查询按钮,就可以在余下的编辑文本控件中看到该时刻 BC 杆和 C 点的各个运动参数。6 机构的分析内容6.1 点的运动学分析在各个机构中都存在着点,对点的运动研究分析是研究一般物体运动的基础。研究点的运动学内容,就是研究该点的空间位置随时间的变化规律,包括运动轨 迹、速度和加速度等内容13。对点的运动学研究主要有以下几种方法:矢量法、直角坐标法和自然法等13。因为点的速度是矢量,以矢量表示出点的运动方程,动点的速度矢就是其矢径对时间的一阶导数,加速度矢就是该点的速度矢对时间的一阶导数13。利用矢量法主要是理论推导,具体分析问题用到的运算方法主要有直角坐标法和自然法。直角坐标法首先要建立运动点所在的直角坐标系,根据建立的直角坐标系列出点在该坐标系中的位置方程,从而得到速度和加速度方程。速度在坐标轴上的投影等于动点对应坐标对时间的一阶导数,加速度在坐标轴上的投影等于点所对应坐标对时间的二阶导数13。该方法在求解点的速度、加速度等内容中使用广泛,且计算准确。而自然法则是建立弧坐标及自然轴系,其求解方式与直角坐标法的方式类 似。对于一些简单的点的运动,例如物体的平抛运动,通过简单的直角坐标法就能求解得到运动轨迹,而对于复杂的点的运动,比如滚动圆环边缘点的运动、凸轮上顶杆运动等,使用传统的计算方法就很难看到这些点的运动轨迹的变化规律,借助计算机软件辅助计算,利用 MATLAB 的作图功能和计算能力不仅能够得到这些复杂运动的点的运动情况,还能模拟出该点的运动轨迹,直观的看到这些点的运动。以一个滚动圆环为例,对其边缘点的运动进行分析与模拟。如图 11 所示,圆环的半径为 R,沿轨道做纯滚动运动,设中心点 A 的初速度是V0,加速度为 a0。图 11圆环上 M 点运动首先要建立 x、y 坐标轴,设 M 点绕 A 点转动的转角为,初始位置 M 点与坐标轴 O 点重合,对 M 点求解运动方程:x = R( );y = R(1 );得到其速度为: = (1 ); = ;其加速度为: = (1 ) + 2; = + 2;其中, = 0(), = 0得到运动点的速度和加速度方程之后,要想将其应用在 MATLAB 中,就要构建微分方程组。设1 = , 2 = , 3 = , 4 = , 5 = , 6 = , 7 = 0,8 = 0,然后定义出一个具有八个列向量的矩阵y = 1, 2, 3, 4, 5, 6, 7, 8,用来分别保存上面八个运动变量在个时间点的取值。用 ode 函数求解,要得到微分方程组,方程组如2 1 = 0565 2 = (1 ) + 4 3 = 0565 4 = + 下:6 5 = 6 = 0,其初值 = 0,0,0,0,0, 0 , 0, 008 7 = 0 8 = 根据上面的方程组定义的ode函数在M文件中为: function ydot=ydx1fun(t,y,flag,r,a) ydot=y(2);a*(1-cos(y(5)+r*y(6)2*sin(y(5); y(4);a*sin(y(5)+r*y(6)2*cos(y(5); y(6);a/r; y(8);a;有了ode函数,就能在MATLAB中对该动点进行分析和模拟了。1 建立MATLAB的M文件打开 MATLAB,点击 New Script,在打开的 M 文件编辑器中输入 ode 函数。点击菜单栏中的 Save 命令,保存该函数语句。2 创建图形用户界面根据上述得到的计算公式和初始条件,需要设置半径、圆心的加速度、圆心初始速度 V0 和模拟的时间作为输入,在图像窗口中还要设置几个坐标轴控件,用来显示点的运动情况和模拟该点的运动过程。最后设置按钮控件和查询控件,使得激活按钮能实现相应的运动或变化。3 设置各个控件的属性对文本属性来说,不管是静态文本还是编辑文本,都要更改其名称,名称的更改要用到字符串 String 属性,编辑文本还要比静态文本多设置一个属性,即标签Tag 属性,更改标签属性可以在编写程序的时候更容易调用和修改控件。其中编辑文本的标签属性设置要与对应的文本属性的字符串属性相同,这样在输入内容使才能正确的表示各个变量的数值。 4 编写回调程序设置按钮的功能,使激活按钮能产生相应的变化或运动。右键单击按钮控件, 出现一列菜单,选择 Callback 选项,进行按钮控件的回调函数的编写。分别编写计算、曲线、动画、查询和清除按钮的回调程序,例如:计算按钮:function jisuan_Callback(hObject, eventdata, handles) global v a y r t x1 y1 x0首先将使用到的变量定义为全局变量。set(handles.quxian,enable,off); set(handles.donghua,enable,off);设置曲线和动画两个按钮显示灰色,使之为不可用的状态。r=str2num(get(handles.r,string); v=str2num(get(handles.v,string); a=str2num(get(handles.a,string);将半径、圆心速度和圆心加速度的运动参数赋值给对应的变量。tfinal=str2num(get(handles.tfinal,string);将模拟时间赋值给tfinal。y0=0,0,0,0,0,v/r,0,v确定运动变量的初始值。t,y=ode45(ydx1fun,0:0.1:tfinal,y0,r,a); 求解运动变量矩阵y,同时返回时间t向量。ax=a*(1-cos(y(:,5)+r*y(:,6).2.*sin(y(:,5)ay=a*sin(y(:,5)+r*y(:,6).2.*sin(y(:,5); 求解M点的加速度。y=y,ax,ay将矩阵运动变量拼接起来。set(handles.quxian,enable,on); set(handles.donghua,enable,on);计算完成,将曲线和动画按钮设为可用状态。x1=y(:,1);y1=y(:,3);将M点的坐标赋给x1和y1向量,为模拟M点的动画做准备。x0=y(:,7);将圆心的横坐标赋给x0向量,为模拟园的动画做准备。曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t将使用的变量设置为全局变量。set(handles.axes1,unit,normalized,visible,on) 设置坐标轴1的属性,使之可以显示图像。axes(handles.axes1);将坐标轴1设置为当前活动的坐标轴。plot(t,y(:,1),g,t,y(:,2),g-,t,y(:,4),r-);以时间为横坐标,x、y位移和水平、竖直方向速度为纵坐标画曲线。xlabel(时间/s);标记横坐标为时间/s。 ylabel(位移(m),速度(m/s);标记纵坐标为位移(m)和速度(m/s)。 legend(X方向位移,Y方向位移,X方向速度,Y方向速度); 在图中显示这四条曲线。set(handles.axes2,unit,normalized,visible,on)设置坐标轴2的属性,使之可以显示图像。axes(handles.axes2);将坐标轴2设置为当前活动的坐标轴。plot(t,y(:,9),r,t,y(:,10),g);以时间为横坐标,Vx和Vy为纵坐标画曲线。xlabel(时间/s); 标记横坐标为时间/sylabel(位移(m),速度(m/s);标记纵坐标为位移(m),速度(m/s)。legend(X方向加速度,Y方向加速度); 在图中显示这两条曲线。5 运行程序编写好回调程序,保存设置的图形用户界面,点击 Run Figure 按钮或者按快捷键 Ctrl+T 运行设计好的程序,显示的界面如图 12 所示。给半径、初始速度、加速度和模拟时间输入具体的数值,假设半径为 2,初始速度设为 0.1m/s,加速度为 0 的情况下,模拟时间 60s,分别用鼠标点击计算、曲线、动画按钮得到图 13 的显示结果。从显示的结果图中可以看到,当圆环半径为 2,初始速度为 0.1m/s,加速度为0,模拟时间为 60s 时,其沿水平方向运动了 6m 的距离,其中,M 点的竖直位移 y 为时间的余弦函数,x 方向的位移是一个递增函数;M 点的 y 方向上的速度也是时间的弦函数。以时间 t=10 为查询条件,点击查询按钮得到图 18 所示结果。图 12运行程序图 13分析结果6 总结在 MATLAB 中对点进行仿真,运用 ode 函数求解运动点的运动微分方程,在分析结果中可以看到其位移、速度和加速度的曲线变化2,这比传统计算方式更加直观,而且能够任意改变运动点的初始条件,点击按钮就会出现运动结果,而不需要重复计算,这对运动点的分析更加方便。而且使用 MATLAB 还能够得到运动点的动作过程,能直观的看到运动点从初始位置到模拟时间结束的运动过程,从而使运动点的运动形象化,有利于分析运动点的运动轨迹。除此之外,使用查询按钮,输入在模拟时间内的任意时刻点,还可以得到这一时刻该运动点的 x、y 方向的位移和速度大小,相比传统的计算方法不仅得到了准确的数值,还节约了计算时间。6.2 点的合成运动分析相对于不同的参考系,物体的运动也是不同的。例如车床在工作时,其车刀刀尖相对于地面来说是水平运动,但是对于旋转的工件来说,刀尖的运动是螺旋运动13。在刨床中,其曲柄和摇杆的连接块对不同的参考系来说,做出的运动也是不同的,对于曲柄来说,它跟随摇杆做圆周运动,对连接杆来说,它做的运动是往复水平运动。机构中有许多构件的连接点存在合成运动的形式,研究点的合成运动,能够使我们更好的理解该点的实际运动情况,掌握其运动规律。对于点的合成运动,要应用到点的速度合成定理和加速度合成定理13。在分析速度和加速度之前,同样要使用直角坐标法得到点的几何关系,然后再使用速度合成定理和加速度合成定理求解。在使用速度合成定理时,要先选取出动点、动参考系和定参考系,正确分析出其绝对速度、相对速度和牵连速度,然后运用速度合成定理画出速度平行四边形,得到速度关系式,根据其中的几何关系求解出未知数。运用加速度合成定理时,在选定动点和动参考系后,要考虑动参考系有没有转动的情况,以确定是否有科氏加速度。对加速度合成定理,要正确的分析其大小和方 向,正确的选取动点和动系,这样才能保证求解的加速度矢正确的。对于求解点的合成运动,按照公式求解的方式用时较长,而且还需要对速度的合成分析准确,这些都加大了计算难度。利用 MATLAB 强大的计算功能来代替手工计算,大大减少了计算时间,节约人力,同时利用 MATLAB 的图像处理能力,在其图形用户界面中仿真出点合成运动的图像,能够帮助我们更加形象具体的观察到该运动点的运动情况。在此以一个曲柄导杆为例,在 MATLAB 中分析点的合成运动。已知图 14 所示曲柄连杆机构,O1A 为曲柄,O2B 为导杆,曲柄 O1A 是原动件,以角速度1 匀速转动,通过滑块带动导杆 O2B 转动,当 O1O2=O1A=a,O2B=2a 时分析机构的运动。图 14运动示意图采用速度合成定理,以点 A 为动点,O2B 为动系分析,得到图 15 所示的运动分析图。图 15A 点速度分析由图 20 得到速度关系式: = + , = ( ),将 = 1、 = 422 ( ) 2,带入上式中,得到:2 = 1。422得到运动点的速度和加速度方程之后,要想将其应用在 MATLAB 中,就要构建微分方程组。设1 = , 2 = , 3 = , 4 = ,定义一个含有 4 个列向量的矩阵y =1, 2, 3, 4分别保存这四个运动变量在各时间点上的取值。用 ode 函数求解,要1 1 = 2 = 0得到微分方程组,方程组为 3 = 12 4 = 0根据上式,将ode函数在M文件中为: function ydot=ydx4fun(t,y,flag,l ,omega)ydot=omega;0;omega/2 0;1 建立 M 文件打开 MATLAB,点击 New Script,在打开的 M 文件编辑器中输入 ode 函数。点击菜单栏中的 Save 命令,保存该函数语句。2 创建图形用户界面根据上述得到的计算公式和初始条件,需要设置杆长、角速度和模拟的时间作为输入,在图像窗口中还要设置几个坐标轴控件,用来显示点的运动情况和模拟该点的运动过程。最后设置按钮控件和查询控件,使得激活按钮能实现相应的运动或变化。3 设置各个控件的属性分别更改各个控件的 String 属性和 Tag 属性,使得每个静态文本与编辑文本一一对应,更改标签属性可以在编写程序的时候更容易调用和修改控件。其中编辑文本的标签属性设置要与对应的文本属性的字符串属性相同,这样在输入内容使才能正确的表示各个变量的数值。4 编写回调程序设置按钮的功能,使激活按钮能产生相应的变化或运动。右键单击按钮控件, 出现一列菜单,选择 Callback 选项,进行按钮控件的回调函数的编写。分别编写计算、曲线、动画、查询和清除按钮的回调程序,例如:计算按钮:function jisuan_Callback(hObject, eventdata, handles) global y t a omega x1 y1 x2 y2 x3 y3 x4 y4 x5 y5首先将使用到的变量定义为全局变量。set(handles.quxian,enable,off); set(handles.donghua,enable,off); 设置曲线和动画按钮为不可用的状态。a=str2num(get(handles.a,string);omega=str2num(get(handles.omega,string); 将杆长和角速度读入变量。tfinal=str2num(get(handles.tfinal,string); 将模拟时间读入变量。y0=-(pi/2),omega,0,(omega/2); 确定运动变量的初始值。t,y=ode45(ydx4fun,0:0.05:tfinal,y0,a,omega); 求解运动变量矩阵y,同时返回时间向量t。x1=a*cos(y(:,1);y1=a+a*sin(y(:,1);x2=2*a*cos(y(:,3);y2=2*a*sin(y(:,3);x3=-2*a*cos(y(:,3);y3=-2*a*sin(y(:,3); x4=a*cos(y(:,1)+0.1*a*cos(y(:,3);y4=a+a*sin(y(:,1)+0.1*a*sin(y(:,3);x5=a*cos(y(:,1)-0.1*a*cos(y(:,3);y5=a+a*sin(y(:,1)-0.1*a*sin(y(:,3);确定机构中相关点的横纵坐标,为模拟动画做准备。set(handles.quxian,enable,on); set(handles.donghua,enable,on);计算完成后,设置曲线和动画按钮为可用状态。曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t设置变量为全局变量。set(handles.axes1,unit,normalized,visible,on) 设置坐标轴1属性,使之可以显示图像。axes(handles.axes1);设置坐标轴1为当前活动坐标轴。plot(t,y(:,1),g,t,y(:,3),b); 以时间为横坐标,转角为纵坐标画图。xlabel(时间/s);ylabel(转角(rad);横纵坐标分别显示时间/s和转角(rad)。legend(O1A的转角,O2B的转角); 在图中显示这两条曲线。set(handles.axes2,unit,normalized,visible,on) 设置坐标轴2属性,使之可以显示图像。axes(handles.axes2);设置坐标轴2为当前活动坐标轴plot(t,y(:,2),g,t,y(:,4),b);以时间为横坐标,角速度为纵坐标画图。xlabel(时间/s);ylabel(角速度(rad/s);横纵坐标分别显示为时间/s和角速度(rad/s)。legend(O1A的角速度,O2B的角速度);在图中显示这两条曲线。5 运行程序编写好回调程序,保存设置的图形用户界面,点击 Run Figure 按钮或者按快捷键 Ctrl+T 运行设计好的程序,显示的界面如图 16 所示。给杆长、角速度和模拟时间输入具体的数值,假设杆长为 2m,角速度为0.5rad/s 的情况下,模拟时间 60s,分别用鼠标点击计算、曲线、动画按钮得到图17 的显示结果。222从图中可以看到,O1A 的转角斜率比 O2B 的转角斜率明显高很多,O1A 的角速度是 0.5rad/s,O2B 的角速度是 0.25rad/s;在其动画图像中能够看到不同时间区间, 滑块的运动轨迹不同,滑块的轨迹由 O 到点 B,再从点 B 到 O ,从 O 到 B点,再从2B点到 O 的运动过程完成了一个周期运动。图中以时间 t=10s 的时刻查询了当前时刻机构的运动情况,从图中数据可以看到,在 t=10s 时,O1A 的角速度和 O2B 的角速度是保持不变的,分别是 0.5rad/s 和0.25rad/s,其中 O1A 杆转过的角度是 3.4292 度,O2B 杆转过的角度为 2.5 度。图 16运行程序图 17仿真结果6 总结在 MATLAB 中对点的合成运动进行仿真,运用 ode 函数求解运动点的合成运动微分方程,在分析结果中可以看到其位移、速度和加速度的曲线变化2,这比传统计算方式更加直观,而且能够任意改变运动点的初始条件,点击按钮就会出现运动结果,而不需要重复计算,这对运动点的分析更加方便。而且使用 MATLAB 还能够得到运动点的动作过程,能直观的看到运动点从初始位置到模拟时间结束的运动过程, 从而使运动点的运动形象化,有利于分析运动点的运动轨迹。除此之外,使用查询按钮,输入在模拟时间内的任意时刻点,还可以得到这一时刻该运动点的 x、y 方向的位移和速度大小,相比传统的计算方法不仅得到了准确的数值,还节约了计算时间。6.3 刚体平面运动分析在机械结构中,不仅仅有点的运动及点合成运动,还有多种刚体运动,在工程中较为常见的一种刚体运动就是刚体的平面运动。刚体的平面运动就是刚体上任意一点与某一固定平面始终保持相同的距离。刚体的平面运动可以分成平移和转动, 选择不同的参考点,其运动的参考系也不一样,因而平移时运动的速度和加速度等变量也是不一样的;但是刚体围绕基点转动的角速度和角加速度是一定的,与参考点的选择无关13。对刚体的平面运动分析有基点法和顺心法13。借助速度合成定理,使用基点法求解刚体平面运动时也要画出速度的平行四边形,通过几何关系得到速度的关系式,然后再根据刚体转动的关系式,得到速度与角速度的关系,从而求出刚体平面运动中的未知量13。对于刚体平面运动,要先分析其中哪些物体做移动,哪些物体做转动,然后根据已知速度或角速度的具体的点分析选定基点,然后使用基点法求解。顺心法依据的是平面图形中速度为零的一点,根据该点建立速度关系式。对于刚体平面运动的加速度求解,也使用基点法,首先分析出物体的运动情况,根据已知加速度或角加速度确定的点确定基点,写出点的加速度合成公式,依次求解方 程。对于求解刚体的平面运动,按照公式求解的方式用时较长,而且还需要对速度、加速度的合成分析准确,这些都加大了计算难度。利用 MATLAB 强大的计算功能来代替手工计算,大大减少了计算时间,节约人力,同时利用 MATLAB 的图像处理能力,在其图形用户界面中仿真出点合成运动的图像,能够帮助我们更加形象具体的观察到该刚体在平面内的运动情况2。在此以一个曲柄滑块机构为例,在 MATLAB 中分析刚体的平面运动。已知条件:曲柄滑块机构如图 18 所示,OA=l1,AB=l2,OA 角速度为匀速转动,带动 AB 做平面运动,滑块 B 沿水平方向移动图 18运动示意图以 AB 为研究对象,将点 A 设为基点、点 B 为动点,使用刚体平面运动的基点法,得到如图 19 所示的速度分解图。图 19速度分解图根据基点法的速度合成定理,得到: = + ,将该式在 x、y 方向投影得21到: = 1 , = ,对时间求导得: =21 12,= 1 ( ( )。其中, =221, = 2 。2根据上式得到的速度加速度方程,设1 = , 2 = , 3 = , 4 = , 5 =, 6 = ,定义出一个含有这六个列向量的矩阵y = 1, 2, 3, 4, 5, 6分别用来保存这六个运动变量在各时间上的数值。用 ode 函数求解,要得到微分方程组,方2 1 = 2 = 0 3 = 4程组: 4 = 1(134 1132)223 5 = 6 6 = 1 (41 3(1 3)23根据上式,将ode函数在M文件中为:function ydot=ydx7fun(t,y,flag,l1,l2,omega) ydot=y(2);0; y(4);(l1*omega/l2)*(cos(y(1)*sin(y(3)*y(4)-sin(y(1)*cos(y(3)*omega)/(cos(y(3)2); y(6);(l1*omega/(cos(y(3)2)*(cos(y(1)*y(4)-cos(y(3)- y(1)*cos(y(3)*omega);1 建立 M 文件打开 MATLAB,点击 New Script,在打开的 M 文件编辑器中输入 ode 函数。点击菜单栏中的 Save 命令,保存该函数语句。2 创建图形用户界面根据上述得到的计算公式和初始条件,需要设置 OA 杆长、AB 杆长、角速度和模拟的时间作为输入,在图像窗口中还要设置几个坐标轴控件,用来显示点的运动情况和模拟该点的运动过程。最后设置按钮控件和查询控件,使得激活按钮能实现相应的运动或变化。如图所示,分别在图形窗口中设置各个控件,控件的设置主要根据机构的已知条件和要分析的运动变量来设置,用静态文本和编辑文本来控制数据的显示和输 出,用坐标轴控件显示机构各参数的变化曲线和模拟机构运动的图像,按钮控件用来激活计算、曲线和动画等的操作。3 设置各个控件的属性分别更改各个控件的 String 属性和 Tag 属性,使得每个静态文本与编辑文本一一对应,更改标签属性可以在编写程序的时候更容易调用和修改控件。其中编辑文本的标签属性设置要与对应的文本属性的字符串属性相同,这样在输入内容使才能正确的表示各个变量的数值。4 编写回调程序设置按钮的功能,使激活按钮能产生相应的变化或运动。右键单击按钮控件, 出现一列菜单,选择 Callback 选项,进行按钮控件的回调函数的编写。分别编写计算、曲线、动画、查询和清除按钮的回调程序,例如:计算按钮:function jisuan_Callback(hObject, eventdata, handles) global y t l1 l2 omega x1 y1 x2将用到的变量设置为全局变量。set(handles.quxian,enable,off); set(handles.donghua,enable,off); 设置曲线和动画按钮为不可用状态。l1=str2num(get(handles.l1,string); l2=str2num(get(handles.l2,string); 将杆长的参数分别赋给l1和l2变量tfinal=str2num(get(handles.tfinal,string); 将模拟时间读入变量tfinal。omega=str2num(get(handles.omega,string); 将角速度的参数赋给变量omega。y0=0,omega,pi,(-omega*l1)/l2,l1+l2,0;确定运动变量的初始值。t,y=ode45(ydx7fun,0:0.01:tfinal,y0,l1,l2,omega); 求解运动变量矩阵y,同时返回时间变量t。arfa=(l1*cos(y(:,1).*sin(y(:,3).*y(:,4)*omega-l1*omega2.*sin(y(:,1).*cos(y(:,3)./(l2*cos(y(:,3).2)计算角加速度。ab=l1*omega*(cos(y(:,1).*y(:,4)-cos(y(:,3).*cos(y(:,1)- y(:,3)*omega)./(cos(y(:,3).2)y=y,arfa,ab拼接运动变量矩阵。x1=l1*cos(y(:,1);y1=l1*sin(y(:,1);x2=y(:,5);分别将A点的坐标赋给x1和y1,将B点的横坐标赋给x2,为模拟动画做准备。set(handles.quxian,enable,on); set(handles.donghua,enable,on);计算完成后,设置曲线和动画按钮为可用状态。曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t设置使用到的变量为全局变量。set(handles.axes1,unit,normalized,visible,on) 设置坐标轴1的属性,使之可以显示图像。axes(handles.axes1);设置坐标轴1位当前活动的坐标轴。plot(t,y(:,3),g,t,y(:,4),r,t,y(:,7),b);以时间为横坐标,转角、角速度和角加速度为纵坐标画图。xlabel(时间/s);设置横坐标显示为时间/s。 ylabel(转角(rad)角速度(rad/s)角加速度(rad/s2);设置y坐标显示为转件(rad)、角速度(rad/s)、角加速度(rad/s2)。legend(seta角,seta角速度,seta角加速度);在图中显示这三条曲线。set(handles.axes2,unit,normalized,visible,on) 设置坐标轴2的属性,使之可以显示图像。axes(handles.axes2);设置坐标轴2位当前活动的坐标轴。plot(t,y(:,5),g,t,y(:,6),r,t,y(:,8),b);以时间为横坐标,以位移、速度和加速度为纵坐标画图。xlabel(时间/s)ylabel(位移(m)速度(m/s)加速度(m/s2);横纵坐标分别显示为时间/s、位移(m)、速度(m/s)、加速度(m/s2)legend(B点位移,B点速度,B点加速度); 在图中显示这三条曲线。5 运行仿真编写好回调程序,保存设置的图形用户界面,点击 Run Figure 按钮或者按快捷键 Ctrl+T 运行设计好的程序,显示的界面如图 35 所示。给 OA 杆、AB 杆、角速度和模拟时间输入具体的数值,假设 OA 杆长为 1,AB 杆长为 3,加速度设为 0.5rad/s 的情况下,模拟时间 60s,分别用鼠标点击计算、曲线、动画按钮得到图 35 的显示结果。输入相应条件,在仿真结果中看到 B 点的运动状态和 OA 杆的运动都是有规律的周期性变化的,OA 杆的转角和角速度是时间的弦函数,点 B 在水平方向的位移、速度和加速度都是呈弦函数变化的。其中,OA 杆的角速度维持在-0.2 至 0.2 的区间内,角加速度在-0.1 到 0.1 范围内变化;B 点做的是周期运动,其位移图像是关于时间的弦函数,B 点的速度也是关于时间的弦函数,变化范围在-0.5 至 0.5,其加速度变化是周期变化图中以时间 t=10s 的时刻查询了当前时刻机构的运动情况,从图中数据可以看到,在 t=10s 时,角速度为 0.5rad/s 与输入值相同,角加速度为 3.4663rad/s2,此时滑块的位置位于距初始位置 3.1261m 点处,当前的速度为 0.52696m/s,其加速度是 0.0019257m/s2。图 20仿真结果6 总结在 MATLAB 中对点的合成运动进行仿真,运用 ode 函数求解运动点的合成运动微分方程,在分析结果中可以看到其位移、速度和加速度的曲线变化,这比传统计算方式更加直观,而且能够任意改变运动点的初始条件,点击按钮就会出现运动结果,而不需要重复计算,这对运动点的分析更加方便。而且使用 MATLAB 还能够得到运动点的动作过程,能直观的看到运动点从初始位置到模拟时间结束的运动过程, 从而使运动点的运动形象化,有利于分析运动点的运动轨迹。除此之外,使用查询按钮,输入在模拟时间内的任意时刻点,还可以得到这一时刻该运动点的位移和速度大小,相比传统的计算方法不仅得到了准确的数值,还节约了计算时间。7 实例分析7.1 往复活塞式内燃机的分析在日常生活中,应用到机构的场合非常的多,以最普遍的交通工具汽车为例, 汽车的零部件有上万个之多,各种机构也有不同的组合方式。汽车运动是靠内燃机提供的动力,在往复活塞式内燃机中,基本的构件有机 壳、曲轴、连杆和活塞,燃烧后的空气产生的压力推动活塞,使活塞做直线运动, 活塞连接着连杆,连杆的另一端和曲轴相连,利用曲轴将活塞的直线运动转化成回转运动,从而使发动机转动,其组成如图 21 所示。图 21往复式内燃机构造汽车内燃机的运动情况影响着汽车的动力,在气缸中,通过进气、压缩、做功和排气四个工作过程来回往复运动,内燃机才能给发动机持续的输入动力。在进气行程中,进气门开启,排气门关闭,曲轴带动活塞从上止点向下止点运动;压缩行程是进气门和排气门都关闭,在活塞向上止点运动的过程中,压缩气缸内的可燃气体;在压缩行程末,火花塞点火点燃气体,气体燃烧使气缸温度上升压力上升,从而使火花塞运动,通过连杆和曲轴将动力输出;做功行程结束时,排气门打开,进气门关闭,活塞由下止点向上止点运动,燃烧后的废气在活塞的推动下被排除气缸12。在该往复式活塞内燃机中,产生的主要运动是活塞的往复运动和曲轴的回转运动,因此要研究活塞和曲轴的运动情况,掌握活塞和曲轴在内燃机中的运动形式, 才能够合理设计内燃机的内部结构,使内燃机能够良好的实现其功能。建立该往复式活塞内燃机的结构简图,如图 22 所示,从图中可以看到,此往复式内燃机的运动形式与曲柄滑块机构的运动形式相同,因此可以将分析往复式活塞内燃机的内部结构转化为对曲柄连杆机构的分析,最终简化后如图 23 所示。图 22结构简图图 23最终简化图据此结构简图,结合前面章节介绍内容,利用 MATLAB 对往复式活塞内燃机进行分析。1 建立该机构的 M 文件,将建立好的 M 文件保存起来,用于后续使用。2 设置图形用户界面,根据已知条件和求解的未知函数,在图形窗口中加入若干控件,应含有:静态文本、编辑文本、坐标轴、按键、查询条件等控件。设置好图形窗口后要更改控件的属性,给按钮控件输入相应的回调程序,以及设置查询条件的命令。3 运行程序点击 Run Figure 按钮运行该程序,在编辑文本中输入相应数值,分别点击激活计算、曲线和动画按钮,在坐标轴中得到机构运行结果。给 OA 杆、AB 杆、角速度和模拟时间输入具体的数值,假设 OA 杆长为 0.5,AB 杆长为 2,加速度设为 0.5rad/s 的情况下,模拟时间 60s,分别用鼠标点击计算、曲线、动画按钮得到图 24 的显示结果。如图所示,在仿真结果中看到 B 点的运动状态和 OA 杆的运动都是有规律的周期性变化的,OA 杆的转角、角速度和角加速度是时间的弦函数,点 B 在水平方向的位移和速度都是呈弦函数变化的。图中以时间 t=10s 的时刻查询了当前时刻机构的运动情况,从图中数据可以看到,在 t=10s 时,角速度为 0.5rad/s 与输入值相同,角加速度为 3.3835rad/s2,此时滑块的位置位于距初始位置 2.0836m 点处,当前的速度为 0.25726m/s,其加速度是-0.0086182m/s2。图 24模拟仿真结果通过简化往复活塞式内燃机的结构,利用 MATLAB 对其结构进行仿真和模拟,分别得到了曲轴和活塞的运动规律,同时还看到了活塞在工作行程中的动作过程。通过分析得到的数据和图像,在设计该内燃机内部结构例如曲轴长度,活塞大小等内容时,就可以随时的对数据进行修改,随时得到修改后的结果;根据查询条件还可以得到内燃机工作过程中任意时刻的运动情况,这对内燃机的行程分析有很大帮助;同时,利用整个模拟程序,还可以合理的优化该往复活塞式内燃机的机构,有利于提高该内燃机的工作可靠性和经济性。7.2 刨床的横向进给机构分析在生产和生活中要用到多种多样形状不同的零件,对零件的加工要使用到各种各样的机床,例如使用车床对棒状类零件进行外圆加工,使用钻床加工孔类的零 件,使用刨床对零件表面进行平整加工等。众多零件都需要进行平面加工,利用刨床对零件进行加工操作简单,便于使 用。刨床可以加工水平面、垂直面、台阶面、T 形槽等平面和凹槽,依靠其结构简单,成本低,大平面和小平面都可以加工,刀具结构简单,易于拆卸加工产品等优点,刨床的使用非常广泛12。如图 25 所示,为刨床模型。图 25刨床模型刨床加工零件时的主要运动是横向进给的往复运动,电机的转动使曲轴发生转动,曲轴与连杆连接,连杆的一端与滑枕相连,通过连杆的传递,将曲轴的回转运动转化成滑枕的往复运动,滑枕带动刨刀做直线往复运动,从而对零件进行加工。在刨床做往复的横向进给运动中,参与的零部件主要有滑枕、曲轴,连杆等,其中滑枕做的是往复运动,曲轴做回转运动。因此要研究刨床横向进给机构的运动情况,了解其工作行程,从而能够合理的设计刨床横向进给机构,提高刨床工作的可靠性和稳定性。分析刨床的横向进给机构,要建立它的结构简图,如图 26 所示,从图中可以看到刨床横向进给机构的运动形式与曲柄摇杆机构的运动形式相同,因此可以将分析该横向进给机构转化为对曲柄摇杆机构的分析,最终简化图如图 27 所示。图 26 结构简图图 27 最终简化图据此结构简图,结合前面章节介绍内容,利用 MATLAB 对刨床横向进给机构进行分析。1 建立该机构的 M 文件,将建立好的 M 文件保存起来,用于后续使用。2 设置图形用户界面,根据已知条件和求解的未知函数,在图形窗口中加入若干控件,应含有:静态文本、编辑文本、坐标轴、按键、查询条件等控件。设置好图形窗口后要更改控件的属性,给按钮控件输入相应的回调程序,以及设置查询条件的命令。 3 运行程序点击 Run Figure 按钮运行该程序,在编辑文本中输入相应数值,分别点击激活计算、曲线和动画按钮,在坐标轴中得到机构运行的结果。给曲轴长度、角速度和模拟时间输入具体的数值,假设曲轴长度 r 为 1m,加速度设为 0.5rad/s 的情况下,模拟时间 60s,分别用鼠标点击计算、曲线、动画按钮得到图 28 的显示结果。如图所示,在仿真结果中看到 C 点的运动状态和 BC 杆的运动都是有规律的。其中,BC 杆转角在 1 至 2 的范围内变化,角速度的变化范围是 0 至-0.8,角加速度变化范围是-0.5 至 0.5;C 点的位移在-3 至 3 区间内变化,加速度在-2 至 2 之间变化。同时还能观察到 C 点和 BC 杆的运动规律曲线是相反的。图 28仿真结果图中以时间 t=20s 的时刻查询了当前时刻机构的运动情况,从图中数据可以看到,在 t=20s 时,BC 杆的转角为 2.1857,角速度是 0.0137rad/s,C 点的水平位移为-2.8264m,此时的速度为-0.0838m/s,加速度为 0.971m/s2。通过简化刨床横向进给机构的结构,利用 MATLAB 对其进行仿真和模拟,分别得到了曲轴和滑枕的运动规律,同时还看到了滑枕在工作行程中的动作过程。通过分析得到的数据和图像,在设计该刨床横向进给机构例如曲轴长度,滑枕行程等内容时,就可以随时的对数据进行修改,随时得到修改后的结果;根据查询条件还可以得到横向进给机构工作过程中任意时刻的运动情况,这对滑枕的行程分析有很大帮助;同时,利用整个模拟程序,还可以合理的优化该刨床横向进给机构,有利于提高该机构的工作可靠性和稳定性。利用 MATLAB 的 GUI 功能,以几种常用的机构为模型,对机构进行运动学分析。完成机构的理论分析后,把运动方程组写成矩阵形式,将其写入到 MATLAB 语言中, 使用 ode 函数求解方程组得到计算结果,然后开始构建 MATLAB 的图形用户界面,使界面能够显示出机构的运动情况和运动参数。在该界面上设置了多个控件,主要有静态文本控件、编辑文本控件和坐标轴图形控件,一般类的控件只需要修改字符串属性和标签属性,对于按钮控件来说,还要对其编写回调函数。图形用户界面构建完成以后,在相应的位置输入查询条件就可以看到机构相应的运动情况和运动参数。其中,运用 MATLAB 不仅计算出了机构在各个时刻的运行参数,还能够实时的观测到机构在运行中所有运动参数的变化情况,这比解析法计算更加具体形象,能够直观的表达机构的动作。利用实验得到的图像和数据,在对机构进行参数设计、结构优化等操作时,可以避免运动部件发生干涉等情况,对结构进行检查,还可以检查出理论分析和实际操作出现的差别,为机构的维护和保养做出相应的提示。采用 MATLAB 对机构进行仿真,其图形用户界面简洁友好,不需要运用复杂的函数结构,也不需要构建和实物一样的三维模型,操作起来方便易行。利用软件对机构进行仿真分析,对机械结构的设计、分析和优化有很大帮助。上述仿真实验得到了预期的实验效果,准确的模拟出了机构的运动过程,而且进行函数编程能够得到机构任意时刻的运动参数,这相比图解法和解析法求解得到的结果来说,更加准确而且形象具体,对结构的运动了解更加详细。8 结论在机械运行过程中,各种运动参数都是时刻变化的,为了了解机械运行状态和及时避免机械出现故障,就需要对机械结构的运动学动力学进行分析,掌握其运动轨迹、方向、加速度及其受力与运动的关系等,从而得到机械结构在任意时刻的运动情况,便于分析解决相关设计、分析、优化等问题。对比众多仿真软件,本设计利用 MATLAB 对机械结构进行运动学动力学模拟仿真,不仅可以分析整个运动过程中的各运动变量、约束力等,同时运用 MATLAB 的计算能力和图形处理能力,还可以直观的表示出各参数变量的变化。本文通过分析研究一般机械结构的分析方法,根据运动学定理,建立起一般条件下机构的数学模型和运动方程组,结合使用 MATLAB 软件,对一般机构的运动学内容进行了仿真模拟。首先对机构的运动学动力学求解,建立数学模型之后在 MATLAB 软件的 GUIDE 功能上操作,运用 ode 函数对运动变量方程组进行数值求解,然后使用 MATLAB 作图功能将数值求解的结果可视化处理。文中列举出两种生活中常见的机构的实际应用,根据分析得到的理论知识,将现实生活中用到的机构进行仿真分析,形象具体的展现了对机械结构的分析。本文在参考许多书籍,期刊等文献的基础上完成,由于本人能力有限,对机械结构的综合分析还没有做到位,分析内容的广度和深度不够。对于本次分析采用的软件,相较于其他机构仿真软件,本次设计利用的 MATLAB 软件计算功能强大,图形处理能力较好,在实时对机构进行设计和分析有很大优势。但是在模拟机构方面, 它不如计算机三维辅助设计软件全面,构造与实物完全相同的复杂机构比较困难。此次研究过程不免存在一些错误,望各位老师批评指正。参考文献1 袁清珂.机械系统运动学/动力学分析软件J.汽车工程,1990,12(3):60-65.2 程燕平,程邺.MATLAB 理论力学M.北京.高等教育出版社.2015.3 杨宗明,马哲树.280 柴油机曲轴连杆活塞机构的运动学动力学仿真J.机械设计与制造,2005,12(12):79-80.4 曾德惠.Matlab 辅助机构运动学分析J.湖北民族学院学报(自然科学版),2010,4(12):454-457.5 陈德为.曲柄滑块机构的 MATLAB 仿真J.太原科技大学学报,2005,3(9):172-175.6 崔利杰,龚小平.基于 MATLAB 运动仿真的平面多连杆机构优化设计J.机械设计与制造,2007,2(2):40-42.7 乔英志,黄加亮.柴油机曲柄连杆机构运动学与动力学仿真J.集美大学学报(自然科学版),2012,17(1):49-54.8 叶素娣,徐敬华.插床六杆机构的运动学和动力学分析J.安徽工程大学学报,2014,29(4):27-31.9 刘勇,王卫华,等.基于 Simulink 的偏置曲柄滑块机构运动学和动力学分析J.科学技术与工程,2014,14(1):186-191.10 胡朝斌,王伟,黄鹏.基于 SolidWorks 的提花机运动学和动力学分析J.重庆科技学院学报(自然科学版),2014,16(6):122-124.11 王凯,曹西京.基于 Pro/e 的机械产品机构运动的仿真设计J.轻工机械,2006,24(1):62- 64.12 孙桓,陈作模等.机械原理M.北京.高等教育出版社.2013.13 哈尔滨工业大学理论力学教研室.理论力学M.北京.高等教育出版社.2009.附录3:程序代码6.1 点的运动学分析M文件:function ydot=ydx1fun(t,y,flag,r,a,v) ydot=y(2);a*(1-cos(y(5)+r*y(6)2*sin(y(5); y(4);a*sin(y(5)+r*y(6)2*cos(y(5); y(6);a/r; y(8);a;回调程序:function jisuan_Callback(hObject, eventdata, handles) global v a y r t x1 y1 x0 set(handles.quxian,enable,off); set(handles.donghua,enable,off); r=str2num(get(handles.r,string); v=str2num(get(handles.v,string); a=str2num(get(handles.a,string); tfinal=str2num(get(handles.tfinal,string); y0=0,0,0,0,0,v/r,0,vt,y=ode45(ydx1fun,0:0.1:tfinal,y0,r,a);ax=a*(1-cos(y(:,5)+r*y(:,6).2.*sin(y(:,5)ay=a*sin(y(:,5)+r*y(:,6).2.*sin(y(:,5); y=y,ax,ay set(handles.quxian,enable,on); set(handles.donghua,enable,on); x1=y(:,1);y1=y(:,3);x0=y(:,7);function quxian_Callback(hObject, eventdata, handles) global y t set(handles.axes1,unit,normalized,visible,on) axes(handles.axes1);plot(t,y(:,1),g,t,y(:,3),r,t,y(:,2),g-,t,y(:,4),r-);xlabel(时间/s);ylabel(位移(m),速度(m/s);legend(X方向位移,Y方向位移,X方向位移,Y方向位移);52set(handles.axes2,unit,normalized,visible,on) axes(handles.axes2); plot(t,y(:,9),r,t,y(:,10),g); xlabel(时间/s);ylabel(位移(m),速度(m/s);legend(X方向加速度,Y方向加速度);function donghua_Callback(hObject, eventdata, handles) global y r t x1 y1 x0axes(handles.axes3); set(gca,unit,normalized,visible,on)axis(-r y(end,1)+2*r 0 0.52*y(end,1)+r) hold on;a=x2+(y- b=num2str(r); c=)2-;d=num2str(r2); e=a,b,c,d h=ezplot(e);set(h,color,b,linewidth,1,erasemode,xor) xx=get(h,xdata);yy=get(h,ydata); ballla=line(x1(1),y1(1),color,k,linestyle,-,linewidth,10,erasemode,none); ball1=line(x1(1),y1(1),color,r,marker,.,markersize,20,eras emode,xor);plot(y(:,1),y(:,3); n=length(y);for i=1:nset(ballla,xdata,x1(i),ydata,y1(i);set(ball1,xdata,x1(i),ydata,y1(i);set(h,xdata,xx+x0(i),ydata,yy); drawnowendfunction chaxun_Callback(hObject, eventdata, handles) globalt ytt=str2num(get(handles.cxt,string); i=find(t=tt) set(handles.cxx,string,num2str(y(i,1);set(handles.cxy,string,num2str(y(i,3);set(handles.cxvx,string,num2str(y(i,2);set(handles.cxvy,string,num2str(y(i,4);53set(handles.cxjsd,string,num2str(y(i,6);function qingchu_Callback(hObject, eventdata, handles) set(handles.cxx,string,);set(handles.cxy,string,);set(handles.cxvx,string,);set(handles.cxvy,string,);set(handles.cxjsd,string,);set(handles.cxt,string,);function uipanel1_SelectionChangeFcn(hObject, eventdata, handles) global fswitch get(hObject,Tag) case 1f=1;set(handles.cxt,enable,on); otherwiseend6.2 点的合成运动分析M 文件:function ydot=ydx4fun(t,y,flag,l ,omega) ydot=omega;0;omega/2 0;回调程序:function jisuan_Callback(hObject, eventdata, handles) global y t a omega x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 set(handles.quxian,enable,off); set(handles.donghua,enable,off); a=str2num(get(handles.a,string); omega=str2num(get(handles.omega,string); tfinal=str2num(get(handles.tfinal,string);y0=-(pi/2),omega,0,(omega/2); t,y=ode45(ydx4fun,0:0.05:tfinal,y0,a,omega); x1=a*cos(y(:,1);y1=a+a*sin(y(:,1);54x2=2*a*cos(y(:,3);y2=2*a*sin(y(:,3);x3=-2*a*cos(y(:,3);y3=-2*a*sin(y(:,3); x4=a*cos(y(:,1)+0.1*a*cos(y(:,3);y4=a+a*sin(y(:,1)+0.1*a*sin(y(:,3);x5=a*cos(y(:,1)-0.1*a*cos(y(:,3);y5=a+a*sin(y(:,1)-0.1*a*sin(y(:,3); set(handles.quxian,enable,on); set(handles.donghua,enable,on);动画按钮:function donghua_Callback(hObject, eventdata, handles) global y t a x1 y1 x2 y2 x3 y3 x4 y4 x5 y5axes(handles.axes3); set(gca,unit,normalized,visible,on) cla;axis(-2.5*1 2.5*1 -2.5*1 2.5*1);line(0,a,color,r,marker,.,markersize,20,erasemode,xor);line(0,0,color,r,marker,.,markersize,20,erasemode,xor);ball=line(x1(1),y1(1),color,r,marker,.,markersize,10,erase mode,xor); gan1=line(0,x1(1),a,y1(1),color,g,linewidth,6,erasemode, xor); gan2=line(x3(1),x2(1),y3(1),y2(1),color,g,linewidth,6,eras emode,xor); gan3=line(x4(1),x5(1),y4(1),y5(1),color,g,linewidth,12,era semode,xor);n=length(y) for i=1:nset(ball,xdata,x1(i),ydata,y1(i);set(gan1,xdata,0,x1(i),ydata,a,y1(i);set(gan2,xdata,x3(i),x2(i),ydata,y3(i),y2(i);set(gan3,xdata,x4(i),x5(i),ydata,y4(i),y5(i); drawnowend55曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t set(handles.axes1,unit,normalized,visible,on) axes(handles.axes1);plot(t,y(:,1),g,t,y(:,3),b);xlabel(时间/s);ylabel(转角(rad);legend(O1A 的 转 角 ,O2B 的 转 角 ); set(handles.axes2,unit,normalized,visible,on) axes(handles.axes2); plot(t,y(:,2),g,t,y(:,4),b);xlabel(时间/s);ylabel(角速度(rad/s);legend(O1A的角速度,O2B的角速度);查询按钮:function chaxun_Callback(hObject, eventdata, handles) global y ttt=str2num(get(handles.cxt,string); a=find(t=tt)i=a(1) set(handles.cxseta,string,num2str(y(i,1); set(handles.cxf1,string,num2str(y(i,3); set(handles.cxomega1,string,num2str(y(i,2); set(handles.cxomega2,string,num2str(y(i,4);清除按钮:function qingchu_Callback(hObject, eventdata, handles) set(handles.cxt,string,);set(handles.cxseta,string,);set(handles.cxf1,string,); set(handles.cxomega1,string,); set(handles.cxomega2,string,);查询条件: functionuipanel1_SelectionChangeFcn(hObject,eventdata, handles)global fswitch get(hObject,Tag) casedx1f=1;set(handles.cxt,enable,on);set(handles.cxf1,enable,off); set(handles.cxseta,enable,off);casedx2f=2;56endset(handles.cxt,enable,off); set(handles.cxseta,enable,on); set(handles.cxf1,enable,off);casedx3f=3;set(handles.cxt,enable,off); set(handles.cxseta,enable,off); set(handles.cxf1,enable,on);otherwise576.3 刚体平面运动分析M 文件:function ydot=ydx7fun(t,y,flag,l1,l2,omega) ydot=y(2);0; y(4);(l1*omega/l2)*(cos(y(1)*sin(y(3)*y(4)-sin(y(1)*cos(y(3)*omega)/(cos(y(3)2); y(6);(l1*omega/(cos(y(3)2)*(cos(y(1)*y(4)-cos(y(3)- y(1)*cos(y(3)*omega);回调程序:function jisuan_Callback(hObject, eventdata, handles) global y t l1 l2 omega x1 y1 x2 set(handles.quxian,enable,off); set(handles.donghua,enable,off); l1=str2num(get(handles.l1,string); l2=str2num(get(handles.l2,string); tfinal=str2num(get(handles.tfinal,string); omega=str2num(get(handles.omega,string); y0=0,omega,pi,(-omega*l1)/l2,l1+l2,0; t,y=ode45(ydx7fun,0:0.01:tfinal,y0,l1,l2,omega);arfa=(l1*cos(y(:,1).*sin(y(:,3).*y(:,4)*omega-l1*omega2.*sin(y(:,1).*cos(y(:,3)./(l2*cos(y(:,3).2)ab=l1*omega*(cos(y(:,1).*y(:,4)-cos(y(:,3).*cos(y(:,1)- y(:,3)*omega)./(cos(y(:,3).2)y=y,arfa,ab x1=l1*cos(y(:,1);y1=l1*sin(y(:,1);x2=y(:,5);set(handles.quxian,enable,on); set(handles.donghua,enable,on);曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t set(handles.axes1,unit,normalized,visible,on) axes(handles.axes1); plot(t,y(:,3),g,t,y(:,4),r,t,y(:,7),b);xlabel(时间/s);ylabel(转角(rad)角速度(rad/s)角加速度(rad/s2);legend(seta角,seta角速度,seta角加速度); set(handles.axes2,unit,normalized,visible,on) axes(handles.axes2); plot(t,y(:,5),g,t,y(:,6),r,t,y(:,8),b);xlabel(时间/s)ylabel(位移(m)速度(m/s)加速度(m/s2);legend(B点位移,B点速度,B点加速度);动画按钮:function donghua_Callback(hObject, eventdata, handles) global t y l1 l2 omega x1 y1 x2axes(handles.axes3); set(gca,unit,normalized,visible,on) cla;axis(-1.1*1 1.1*5 -1.1*1 1.1*1)hold ona10=line(-l1/5,l1/5,0,0,color,k,linewidth,3.5); a20=linspace(-0.2*l1,0.2*l1,10);for i =1:9a30=(a20(i)+a20(i+1)/2;plot(a20(i),a30,0,-0.04*l1,color,b,linestyle,- ,linewidth,1);end58a11=line(l2-1.1*l1,l2+l1,0,0,color,k,linewidth,3.5); a21=linspace(l2-1.1*l1,l2+l1,50);for i=1:49a31=(a21(i)+a21(i+1)/2;plot(a21(i),a31,0,-0.04*l1,color,b,linestyle,- ,linewidth,1);end ball1=line(x1(1),y1(1),color,r,marker,.,markersize,20,eras emode,xor); ball2=line(x2(1),0,color,r,marker,s,markersize,20,erasemod e,xor); line(0,0,color,r,marker,.,markersize,30,erasemode,xor);gan1=line(0,x1(1),0,y1(1),color,g,linewidth,6,erasemode, xor); gan2=line(x1(1),x2(1),y1(1),0,color,g,linewidth,6,erasemod e,xor);n=length(y) for i=1:nset(ball1,xdata,x1(i),ydata,y1(i);set(ball2,xdata,x2(i),ydata,0); set(gan1,xdata,0,x1(i),ydata,0,y1(i);set(gan2,xdata,x1(i),x2(i),ydata,y1(i),0); drawnowend查询按钮:function chaxun_Callback(hObject, eventdata, handles) global f t yswitch fcase 1tt=str2num(get(handles.cxt,string); a=find(t=tt);i=a(1);ii=a(1)-1;m=(tt-t(ii)/(t(i)-t(ii); n=1-mset(handles.cxphi,string,num2str(m*t(i,1)+n*t(ii,1); set(handles.cxseta,string,num2str(m*t(i,3)+n*t(ii,3); set(handles.cxphijsd,string,num2str(m*t(i,2)+n*t(ii,2);59endset(handles.cxsetajsd,string,num2str(m*t(i,4)+n*t(ii,4); set(handles.cxarfa,string,num2str(m*t(i,7)+n*t(ii,7);set (handles.cxxb,string,num2str(m*t(i,5)+n*t(ii,5); set(handles.cxvb,string,num2str(m*t(i,6)+n*t(ii,6); set(handles.cxab,string,num2str(m*t(i,8)+n*t(ii,8);case 2 phi=str2num(get(handles.cxphi,string); a=find(y(:,1)=phi);i=a(1);ii=a(1)-1;m=(phi-y(ii,1)/(y(i,1)-y(ii,1); n=1-mset(handles.cxt,string,num2str(m*y(i)+n*y(ii); set(handles.cxseta,string,num2str(m*y(i,3)+n*y(ii,3);set (handles.cxphijsd,string,num2str(m*y(i,2)+n*y(ii,2);set (handles.cxsetajsd,string,num2str(m*y(i,4)+n*y(ii,4);set (handles.cxarfa,string,num2str(m*y(i,7)+n*y(ii,7);set (handles.cxxb,string,num2str(m*y(i,5)+n*y(ii,5); set(handles.cxvb,string,num2str(m*y(i,6)+n*y(ii,6); set(handles.cxab,string,num2str(m*y(i,8)+n*y(ii,8);otherwise60清除按钮:function qingchu_Callback(hObject, eventdata, handles) set(handles.cxt,string,);set(handles.cxseta,string,);set(handles.cxt,string,);set(handles.cxphi,string,); set(handles.cxsetajsd,string,); set(handles.cxarfa,string,); set(handles.cxphijsd,string,); set(handles.cxxb,string,);set(handles.cxvb,string,);set(handles.cxab,string,);7.1 往复活塞式内燃机机构分析M文件:function ydot=ydx7fun(t,y,flag,l1,l2,omega) ydot=y(2);0; y(4);(l1*omega/l2)*(cos(y(1)*sin(y(3)*y(4)-sin(y(1)*cos(y(3)*omega)/(cos(y(3)2); y(6);(l1*omega/(cos(y(3)2)*(cos(y(1)*y(4)-cos(y(3)- y(1)*cos(y(3)*omega);回调程序:function jisuan_Callback(hObject, eventdata, handles) global y t l1 l2 omega x1 y1 x2 set(handles.quxian,enable,off); set(handles.donghua,enable,off); l1=str2num(get(handles.l1,string); l2=str2num(get(handles.l2,string); tfinal=str2num(get(handles.tfinal,string); omega=str2num(get(handles.omega,string); y0=0,omega,pi,(-omega*l1)/l2,l1+l2,0; t,y=ode45(ydx7fun,0:0.01:tfinal,y0,l1,l2,omega);arfa=(l1*cos(y(:,1).*sin(y(:,3).*y(:,4)*omega-l1*omega2.*sin(y(:,1).*cos(y(:,3)./(l2*cos(y(:,3).2)ab=l1*omega*(cos(y(:,1).*y(:,4)-cos(y(:,3).*cos(y(:,1)- y(:,3)*omega)./(cos(y(:,3).2)y=y,arfa,ab x1=l1*cos(y(:,1);y1=l1*sin(y(:,1);x2=y(:,5);set(handles.quxian,enable,on); set(handles.donghua,enable,on);曲线按钮:function quxian_Callback(hObject, eventdata, handles) global y t set(handles.axes1,unit,normalized,visible,on) axes(handles.axes1); plot(t,y(:,3),g,t,y(:,4),r,t,y(:,7),b);xlabel( 时 间 /s); ylabel(转角(rad)角速度(rad/s)角加速度(rad/s2); legend(seta角,seta角速度,seta角加速度);61set(handles.axes2,unit,normalized,visible,on) axes(handles.axes2); plot(t,y(:,5),g,t,y(:,6),r,t,y(:,8),b);xlabel(时间/s)ylabel(位移(m)速度(m/s)加速度(m/s2);legend(B点位移,B点速度,B点加速度);动画按钮:function donghua_Callback(hObject, eventdata, handles) global t y l1 l2 omega x1 y1 x2axes(handles.axes3); set(gca,unit,normalized,visible,on) cla;axis(-1.1*1 1.1*5 -1.1*1 1.1*1)hold ona10=line(-l1/5,l1/5,0,0,color,k,linewidth,3.5); a20=linspace(-0.2*l1,0.2*l1,10);for i =1:9a30=(a20(i)+a20(i+1)/2;plot(a20(i),a30,0,-0.04*l1,color,b,linestyle,- ,linewidth,1);enda11=line(l2-1.1*l1,l2+l1,0,0,color,k,linewidth,3.5); a21=linspace(l2-1.1*l1,l2+l1,50);for i=1:49a31=(a21(i)+a21(i+1)/2;plot(a21(i),a31,0,-0.04*l1,color,b,linestyle,- ,linewidth,1);end ball1=line(x1(1),y1(1),color,r,marker,.,markersize,20,eras emode,xor); ball2=line(x2(1),0,color,r,marker,s,markersize,20,erasemod e,xor); line(0,0,color,r,marker,.,markersize,30,erasemode,xor);gan1=line(0,x1(1),0,y1(1),color,g,linewidth,6,erasemode, xor);62gan2=line(x1(1),x2(1),y1(1),0,color,g,linewidth,6,erasemod e,xor);n=length(y) for i=1:nset(ball1,xdata,x1(i),ydata,y1(i);set(ball2,xdata,x2(i),ydata,0); set(gan1,xdata,0,x1(i),ydata,0,y1(i);set(gan2,xdata,x1(i),x2(i),ydata,y1(i),0); drawnowend查询按钮:function chaxun_Callback(hObject, eventdata, handles) global f t yswitch fcase 1tt=str2num(get(handles.cxt,string); a=find(t=tt);i=a(1);ii=a(1)-1;m=(tt-t(ii)/(t(i)-t(ii); n=1-mset(handles.cxphi,string,num2str(m*t(i,1)+n*t(ii,1); set(handles.cxseta,string,n
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:机械结构运动学动力学分析与模拟含开题报告及文献综述、任务书
链接地址:https://www.renrendoc.com/p-26932838.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!