牛头刨床六杆机构运动分析程序设计毕业论文.doc_第1页
牛头刨床六杆机构运动分析程序设计毕业论文.doc_第2页
牛头刨床六杆机构运动分析程序设计毕业论文.doc_第3页
牛头刨床六杆机构运动分析程序设计毕业论文.doc_第4页
牛头刨床六杆机构运动分析程序设计毕业论文.doc_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

牛头刨床六杆机构运动分析程序设计毕业论文1 绪论1.1本课题的意义 机构运动分析是不考虑引起机构运动的外力的影响,而仅从几何角度出发,根据已知的原动件的运动规律(通常假设为匀速运动),确定机构其它构件上各点的位移、速度、加速度,或构件的角位移、角速度、角加速度等运动参数。无论是分析研究现有机械的工作性能,还是优化综合新机械,机构运动分析都是十分重要的。 通过对机构的位移和轨迹分析,可以考察某构件能否实现预定的位置、构件上某点能否实现预定的轨迹要求,可以确定从动件的行程或所需的运动空间,据此判断运动中是否发生碰撞干涉或确定机构的外形轮廓尺寸。 通过速度和加速度分析可以了解机构从动件的速度、加速度的变化规律能否达到工作要求。 而在本设计课题中通过对机构的加速度和速度分析,就可以在设计牛头刨床的导杆机构时保证刨刀在切削过程中接近于等速运动,从而保证加工质量和延长刀具寿命;此外还保证了刀具的急回性能,从而提高了生产率。1.2 六杆机构的研究现状: 以机电一体化为核心的现代机械系统不断创新,推动着现代机构学不断发展。平面连杆机构运动综合在工程应用中有重要的意义,一直为机构学领域的经典课题之一。较早时人们主要用几何图解法,但是其求解精度和适用范围都受到了极大的限制。随着计算机技术的发展,在轨迹综合中引入了计算机,并开始出现代数法和优化法,把机构学问题转化为数学问题。1.3本课题的目的 本课题的目的是通过编制MATLAB程序,从而设计出一个用户界面,用户可以通过对界面上面参数的操作而实现对牛头刨床运动分析和运动仿真,以此观察牛头刨床的运动特性是否合乎要求。2 MATLAB软件介绍2.1 MATLAB软件介绍 如今,计算机技术已经被应用于各行各业,科研和工程计算领域也不例外。对于经常需要大量数据进行分析处理或者对复杂问题进行计算求解的科研工作者来说,计算机技术的引入大大的降低了工作强度,是原本复杂的工作变得简单,从而极大的提高了工作效率。 随着科学研究的不断深入,以及工程应用不断朝着专业化、精确化方向发展,科研工作者以及工程技术人员对计算机技术的要求也越来越高。面对越来越繁重的科学以及工程计算任务,虽然用传统的c或Fortran语言也能完成任务,但是程序设计者所承担的编程工作是极为繁重的,而且要求程序设计者对算法有比较深入的理解,这就使工作人员不得不将大量的时间和精力放在与研究课题关系不大的计算编程上来。为了减轻科技工作者的压力,使工作人员将时间和精力更多的放在建立模型等关键性的工作中,许多公司相继开发了一系列的数学应用软件,如MATHEMATICA、Maple、MATHCAD以及MATLAB等,其中MATLAB以其强大的功能和极高的编程效率吸引了众多的用户。MATLAB 是MATRIX LABORATORY(“矩阵实验室”)的缩写,是由美国MATHWORKS 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。1984年,Cleve Moler与John Little等正式成立了MATHWORKS公司,把MATLAB语言推向市场,并开始了对MATLAB工具箱等的开发设计。1993年,MATHWORKS公司推出了基于个人计算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12),如今,MATLAB7.0已经问世。现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。特别是最近几年,MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。2.2 MATLAB软件的特点 MATLAB是一种高度集成化的科学计算环境,是集数值计算和图形处理等功能于一体的工程计算应用软件。MATLAB不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理和仿真模拟等功能。MATLAB能够很好的帮助工程师及科学家解决实际问题,它经过20多年来的不断完善和改进,已经成为公认的优秀的数学应用软件之一。概括地讲,整个MATLAB系统由两部分组成,即MATLAB内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点:1)MATLAB的程序设计语言编程效率较高,运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能,从而极大的简化了线性运算,而线性运算是整个数值计算的基础,所以以矩阵作为基本语言要素可以提高数值计算的编程效率。MATLAB本身拥有丰富的库函数,并具有结构化的流程控制语句和运算符,用户可以在使用的过程中方便自如的使用。2)既具有结构化的控制语句(如for循环、while循环、break语句、if语句和switch语句),又有面向对象的编程特性。3)图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。4)功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、小波工具箱、图象处理工具箱、通信工具箱等。5)易于扩充。除内部函数外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可修改源文件和加入自己的文件,它们可以与库函数一样被调用。当然,任何事物都不是十全十美的。与C、Fortran等传统的程序设计语言相比,MATLAB的程序设计语言的一个显著缺点即使循环代码执行效率较低,这是与其执行方式直接相关的。MATLAB编写的程序在应用的过程中为解释执行,既不需要编译生成也不生成可执行文件,而是解释一句,执行一句,其速度是可想而知的了。当然这个问题也不是不可以解决的,由于MATLAB以矩阵作为基本的程序设计语言要素,对于在c、Fortran的那个编程语言中需要使用循环来解决的问题,MATLAB程序设计语言中巧妙的利用矩阵的特点,就可以避免使用循环代码。所以,通过对MATLAB的深入学习,提高编程技巧,完全可以做到扬长避短,并充分发挥MATLAB语言的强大功能。 目前,MATLAB已经成为国际上公认的优秀数学应用软件之一。2.3 用MATLAB处理工程问题优缺点MATLAB是MATHWOTKS公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。它还包括了TOOLBOX(工具箱)的各类问题的求解工具,可用来求解特定学科的问题。其特点是: (1)可扩展性:MATLAB最重要的特点是易于扩展,它允许用户自行建立指定功能的M文件。对于一个从事特定领域的工程师来说,不仅可利用MATLAB所提供的函数及基本工具箱函数,还可方便地构造出专用的函数,从而大大扩展了其应用范围。当前支持MATLAB的商用Toolbox(工具箱)有数百种之多。而由个人开发的Toolbox则不可计数。 (2)易学易用性:MATLAB不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。 (3)高效性:MATLAB语句功能十分强大,一条语句可完成十分复杂的任务。如FFT语句可完成对指定数据的快速傅立叶变换,这相当于上百条C语言语句的功能。它大大加快了工程技术人员从事软件开发的效率。据MATHWOKS公司声称,MATLAB软件中所包含的MATLAB源代码相当于70万行C代码。 由于MATLAB具有如此之多的特点,在欧美高等院校,MATLAB已成为应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;在研究单位、工业部门,MATLAB也被广泛用于研究和解决各种工程问题。当前在全世界有超过40万工程师和科学家使用它来分析和解决问题。然而MATLAB自身所存在的某些缺点限制了它的应用范围。(1) MATLAB是一种解释性语言,因此它的实时效率是相当差的。(2) MATLAB程序不能脱离其环境运行,因为MATLAB不是计算机语言,虽然如今它已经可以进行编译,但是还不太方便。3 牛头刨床运动分析的模型3.1 基本概念与原理 机构运动分析的任务是在已知机构尺寸及原动件运动规律的情况下,确定机构中其他构件上某些点的轨迹、位移、速度、加速度和构件的角位移、角速度及角加速度。上述这些内容,不论是设计新的机器,还是为了了解现有机械的运动性能,都是十分必要的,而且它还是研究机械动力性能的必要基础和前提。 对于牛头刨床来说,其刨刀在工作行程中应该接近等速,而回程速度却应高于前者速度,从而提高效率。为了确定牛头刨床的设计是否满足要求,就必须对其进行运动分析。机构运动分析的方法很多,主要有图解法和解析法。当需要简捷直观地了解机构的某个或某几个位置的运动特性时,采用图解法比较方便,而且精度也能满足实际问题的要求。而当需要精确地知道或要了解机构在整个运动循环过程中的运动特性时,采用解析法并借助于计算机,不仅可以获得很高的计算精度及一系列位置的分析结果,并能绘出机构相应的运动线图,同时还可以把机构分析和机构综合问题联系起来,以便于机构的优化设计。本设计正是基于这些用MATLAB编程实现牛头刨床的运动分析以及图解法无法实现的运动仿真。3.2 牛头刨床的数学模型如下图所示为牛头刨床的机构简图。设已知结构参数为:L1,L3,L5,G,H,原动件的转角1和转速n1。解:如图,先建立一个直角坐标系,并标出各杆矢及其方位角。其中有四个未知变量3,5,P及S。为求解需建立两个封闭矢量方程,为此需利用两个封闭图形ABDA及DEFD。1)求3、3及3由封闭形ABDA可得 (1) 分别用i和j点积上式两端,有 联解上面两个式子可得: 图 31 牛头刨床结构模型式(1)对时间t求导数,注意P为变量,有 (2)可用点积上式两端以消去,并利用矢量方程解析法,有 用点积(2)两端可消去,并注意到,则 再将式(2)对时间t求导,则有 可分别用和点积上式两端,以消去和,注意,则 得 = 2) 求s、 由封闭图形DEFAD可得 (3)分别用i和j点积上面的式子两端,有 有上面第二个式子可得由上面第一个式子可得对上面的(3)式对时间t取导可得 .(4)分别用j、点积上式,可得 (4)式对时间t求导可得 分别用就j和点积上面的式子可得 4 图形用户界面GUI 用户界面或接口是指:人与机器之间或程序之间交互作用的工具和方法。如、键盘、鼠标、跟踪球、话筒都可以成为与计算机交换信息的接口。 图形用户界面(GUI:Graphic User Interface)则是指有窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。4.1界面设计的原则 GUI的设计包括编写源代码之前的所有工作。设计者必须重视设计工作,不能急于编写源代码。否则,编程员思路不清晰,开发过程中回走很多弯路,因而开发的效率低下,并且设计出的GUI也不一定让人满意。那么如何进行成功的设计,就应该从以下两个方面予以考虑:(1) GUI 设计的指导原则(2) GUI 设计应遵循的步骤。指导原则: 可以用就个字来概括优秀的设计标准:简洁性、一致性、熟悉性。 简洁性意味着界面简单明了,直接清晰。拥护可以很快的提取出对自己有用的信息。 熟悉性意味着系统设计时尽量保持与该类流行界面的相似,比如VC的对话框风格、视图的风格、MATLAB的Figure风格。这样用户操作起来就容易上手,误操作率比较低。以上三点也许过于抽象,具体过程中不宜操作。其实,只要在设计整个过程中贯穿以人为本的设计理念,设计出的界面自然会达到以上要求。设计者应该经常考虑以下两个问题:(1)用户在没有熟悉界面之前,完成一个操作需要多长时间?(2)用户在熟悉界面后,完成一个普通操作需要多长时间? 简洁性、一致性、熟悉性围绕着上述两个问题展开。它们有时也存在着矛盾的地方,比如会为了一致性而牺牲简洁性。这种取舍的标准应着眼于用户,要看是否便于用户操作。用户应该是设计者心中的上帝。1)简洁性: 简洁是一种直观的美,它是设计者所要达到的主要目标,通过GUIDE,我们很容易向界面添加许多功能。但是功能强大并不一定代表成功,有时增加一些功能反而显得画蛇添足。GUI本来是从图像的角度帮助用户理解客观世界的,但是缤纷芜杂的表面想象却很容易掩盖事物的真相,影响拥护做出正确的判断,这当然是不可取的。设计者一定要警惕这种盲目追求强大的心理。a注重形式图像往往给人一种直观的感受,告诉人们事物发展的趋势,数字有助于将这种趋势量化,增强人们对发展趋势的认识。但是并不意味着图像必须借助于数字。b缩小交互区域如果能在一个界面中完成的事情坚决不要放在两个界面中完成。这也上操作简洁性的一种间接体现。这样除了增加图形的可读性,还减轻了不同截面之间数据的传递负担。关于这一点在本设计中就有涉及。比较以下两个设计:图41 多界面窗口图42 单界面窗口结果 由以上两个设计不难发现在第二种设计中只需要通过按钮就可以实现预期的功能,而无须像第一种设计中那样在不同的界面中进行切换。 c用图形输入代替数值输入 对于用户来说,在图形用户界面下,图形输入比数值输入更加方便。为了从各个角度来观察一个三维几何形体,我们需要不断地进行坐标系的转化。用数值输入的方法,困难程度难以想象,其复杂性会让用户望而却步,而图形输入的方式则能很好地解决上述问题。2)一致性: 一致性的含义很广泛,既包括操作指令的前后一致,也包括操作界面中各种图形对象摆放位置的一致性。这个原则基于以下认识,即用户的操作经验应有助于用户完成后面的操作;设计者不应该给用户太多意外,否则会让用户一头雾水;前面执行这个命令是一种用法,于是产生了歧义。优秀的界面设计往往注重这个问题。3)熟悉性。设计遵循的步骤: 图43 设计遵循的步骤4.2 功能要求 本次论文的结果是设计出如上述42所示的图形用户界面,该界面应该具有以下功能: 1)在编辑框中输入牛头刨床的参数后,点击“运算”按钮,实现后台的运算,并把运算的结果存储在数据文件mydata.mat 中。 2)在1)完成后,用户点击“数据显示”按钮,弹出“数据显示”窗口,并显示牛头刨床运动分析的结果数据。 3)同上,在完成1)后,用户点击“运动线图”按钮,弹出“运动线图”窗口,并在窗口中分别显示牛头刨床刨头的“位移曲柄转角”、“速度曲柄转角”、“加速度曲柄转角”的曲线图。 4)同上,在完成1)后,用户点击“运动仿真”按钮,弹出“运动仿真”窗口,并在窗口中显示牛头刨床动态仿真的结果。4.3界面结构设计 根据上述4.1和4.2,在本设计的界面设计中确立以下思路: 由于本设计是对牛头刨床进行运动分析和运动仿真,所以在界面中应该首先创建五个框架区,分别显示结构参数,结构模型,初始数据,运动参数和命令按钮;然后在相应的框架区中分别创建text文本和edit编辑框以及命令按钮,以使用户可以通过对参数的改变来实现相应的控制;最后,除“运算”和“退出”按钮在后台操作外,其它的按钮“数据显示”、“运动分析”、“运动仿真”被按下都会弹出相应的操作界面。以下是预期的界面:图44 预期主界面图45 预期数据结果显示界面窗口图46 预期的运动分析界面窗口图47 预期运动仿真界面4.4 程序框图的设计 程序框图如下所示:图48 程序框图 以上既是总界面的结构,也是软件的总结构,也同时是程序流程图。5 运动仿真程序界面设计与编程实现界面制作包括界面设计和程序实现。具体制作步骤如下:1) 分析界面所要求实现的主要功能,明确设计任务;2) 在稿纸上面绘出界面草图,并站在使用者的角度来审查草图;3) 按构思的草图,上机制作(静态)界面,并检查之;4) 编写界面动态功能的程序,对功能进行逐项检查 。以上过程,仅仅是一般原则。在设计中,步骤之间也许要交叉执行或复合执行;设计和实现过程往往不是一步到位的,可能需要反复修改,才能获得满意的界面。在MATLAB软件中,所提供的界面的基本设计方法共有两种:一种是用户自己编写并调用函数生成界面;另一种是直接使用MATLAB提供的GUI设计工具。第二种方法虽然简单,但是不利于我们更加熟悉MATLAB的编程语言以及锻炼我们的思维和设计能力,加上逻辑性紊乱,所以本设计中的四个界面全是采用第一种方法制作,也就是编写函数。在这四个界面的实现中,大体又可分为两类:一、主界面的实现。 二、功能界面的实现。在本章内容展开之前,有必要介绍句柄图形的知识,因为这是MATLAB可视化的内核,与本章界面的制作关系密切。5.1 句柄图形体系 句柄图形是一种面向对象的绘图系统。该系统提供创建计算机图形所必需的各种软件。它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。MATLAB的各种高层图形指令如:plot,mesh等都是以句柄图形软件为基础写成的,因此句柄图形被称为低层图形。这也是在这里要首先介绍句柄图形的原因所在。5.1.1 图形对象、对象句柄和句柄图形树结构 (1)图形对象MATLAB把用于数据可视化和界面制作的基本绘图要素成为句柄图形对象。构成MATLAB句柄图形对象体系的11个图形对象如图51中方块所示每个图形对象都可以独立操作。在MATLAB中生成的每个具体图形,由若干个不同对象构成。每个图形对象不必包含全部对象,但是每个图形必须具备根屏幕和图形窗。图51 句柄图形树结构(2)句柄 每个具体对象都有一个“与生俱来、终生不变”的身份,即句柄。句柄的存取图形对象惟一规范识别符。不同对象的句柄不可能重复和混淆。 每个计算机,根对象只有一个,即屏幕。它的句柄值总是0。而简称为图的图形窗的句柄总是正整数,它是用来标示图形窗序号。除以上两种对象外,其余对象句柄则是双精度浮点数。(3)句柄图形的结构在句柄图形体系中,各图形对象并非平等,它们之间的关系可用图51 的树层次结构表示。5.1.2 对象属性 (1)属性 所有对象都有一组定义和刻画其外貌和性状的属性(Properties)。属性有两部分组成:属性名和属性值,即属性二元对(Property_Name,Property_Value)。在创建和修改属性的指令中,属性名和属性值总是成对出现。 属性名是英文词组字符串。该英文词组字符串每个单词的第一个字母大写,而单词间没有空格,;例如LineStyle,ColorMap等。这样书写的目的是便于阅读。至于在指令中援引属性名时,为用户输入的方便,MATLAB采取了两个措施:第一,不分字母大小写,都同样识别;第二,只要不引起歧义,属性名不必全写。 不同的属性值将使对象有不同的表现。(2)缺省属性 在创建图形对象时,MATLAB并不需要用户对每个属性加以定义。因为倘若用户不对属性加以定义,MATLAB总会自动给对象的每个属性赋予厂家定义的属性。当然用户如果希望创建具有个性的图形,那么就可以通过指令对某些属性进行定义。5.1.3 对象句柄的获取方法 要设置图形对象属性值,首先要知道该对象的句柄。因此,掌握对象句柄的获取方法十分重要。 1)基本方法(1)从图形创建指令获得句柄 所有高层或低层指令都能通过以下格式产生句柄。 H_GC=GraphicCommand() 绘图同时给出句柄的调用指令H_GC。本设计中主程序创建主界面窗口并获取其句柄的程序代码如下:h1=figure(position,20 20 800 600,.name, 牛头刨床运动分析,.numbertitle,off,.% 不显示标题数目defaultuicontrolfontsize,6,.defaultuicontrolunits,normalized,.menubar,none,.% 隐去菜单条以便接下来自己制作菜单resize,off); % 主窗口的大小不能改变(2)追溯法获取图柄 若一个对象的句柄已知,那么可用以下格式追溯获得其“父”或“子”的句柄。 H_pa=get(H_known,Parent) 获取H_known句柄对象之“父”的句柄 H_ch=get(H_known,Children) 获取H_known句柄对象之“子”的句柄本设计中主程序创建主界面“初始数据”框架后,可利用上述格式获取其“父”句柄: h1_framec=uicontrol(.parent,h1,.style,frame,.position,0.05 0.05 0.3 0.3,.foregroundcolor,b); H_pa=get(h1_framec,Parent) H_pa= h1 获取h1_framec句柄对象之“父”的句柄为 h1。(3)当前对象句柄的获取 MATLAB有以下三种专用获取图柄的指令:前两个是直接指令式的;后一个必须与鼠标配合使用。gcf 返回当前图形窗口的句柄gca 返回当前轴的句柄 gco 返回“被鼠标最近点击”的图形对象的句柄本设计中在计算程序caculate1函数中,从主程序当中读取句柄值handles=guihandles(gcf);(4)根据图形对象特性获取句柄利用对象特性搜索对象句柄可以得到较高的搜索速度。具体指令如下:H=findobj(H_ori,PN,PV) 在H_ori指定对象上,寻找与属性(PN,PV)匹配的对象句柄。(5)根据对象“标签”获取句柄用户可以通过“Tag”属性,给对象一个“标签”。此后,就可以通过“标签”获取该对象的句柄。设置“标签”的两个方法:第一,创建时赋名第二,用set赋名据标签获取对象句柄:如果屏幕上有多个图形窗,且有的窗口又有多个子图,那么获取带“标签”对象句柄的简捷指令是:hax=findobj(0,Tag,A4)。本设计中在计算程序caculate1函数中,从主程序当中读取牛头刨床参量L1的句柄值 L1=get(handles.hL1,string);L1=str2num(L1); %把字符转换为数值5.1.4 对象句柄的获取和设置 (1)创建对象时设置属性 H_GC=GraphicCommand(,PN,PV) 利用“属性对”设置的绘图指令 H_GC=GraphicCommand(,PS) 利用“构架”进行属性设置的绘图指令 说明1)GraphicCommand代表所有合法的MATLAB高层或低层绘图命令2)(PN,PV)是属性名、属性值构成的属性对。属性对的数目没有限制3)PS 是域名为属性名的构架数组 (2)get和 set get(H) 获取H句柄对象所有属性的当前值 get(H,PN) 获取H句柄对象由PN指定属性的当前值set(H) 显示H句柄对象所有可设置属性名和全部供选属性值set(H,PN) 显示H句柄对象由PN指定属性的全部供选属性值 set(H,PN,PV,。) 设置H句柄对象的PN属性名取PV属性值set(H,PS) 利用构架数组设置H的属性值说明 1) (PN,PV)是属性名、属性值构成的属性对。属性对的数目没有限制2) PS 是域名为属性名的构架数组 (3)对象属性设置示例本设计中数据显示窗口中创建显示数据的listbox时,把listbox的string属性设置为vars1的程序如下: h2_zhuanjiaoslist=uicontrol(. parent,h2,. style,listbox,. position,0.10 0.10 0.20 0.75,. fontsize,14);vars1 = phi1;set(h2_zhuanjiaoslist,string,vars1);5.2 主界面参数含义在主界面中参数的含义如下表所示:表51 主界面参数含义参数名称参数含义 L1 原动件AB的长度 L3从动件DE的长度 L5 从动件EF的长度 H AD的长度 G刨头距离底座的竖直高度 从动件DE的转角P 滑块2到底座的距离 从动件EF的转角S 滑块6的位移 原动件AB的转速 原动件AB的转角 转向 原动件AB的转向5.3 界面制作步骤5.3.1 创建主界面窗口 创建窗口的函数为figure,它有两种调用形式: (1)figure ,单独的figure创建一个新的窗口,并且返回它的句柄值。 (2)figure(H),使H为当前的窗口,强制它在屏幕其他窗口的上面;假如H窗口不存在,同时H为整数,这是将创建句柄为H的窗口,如下例。本设计中主程序创建主界面窗口的程序代码如下:h1=figure(position,20 20 800 600,.name, 牛头刨床运动分析,.numbertitle,off,.% 不显示标题数目defaultuicontrolfontsize,6,.defaultuicontrolunits,normalized,.menubar,none,.% 隐去菜单条以便接下来自己制作菜单resize,off); % 主窗口的大小不能改变5.3.2 创建主界面自制菜单 PC平台上,缺省情况下产生的MATLAB图形窗总有一个顶层菜单条,它包含五个标准菜单项:文件(file)、编辑(edit)、工具(tools)、窗口(windows)和帮助(help)。每个菜单项在点击的时候都回产生一个下拉菜单(Pull-down menu)。 这标准菜单受界面菜单MenuBar属性管理。该属性有两个取值none|figure。当属性值取none时,图形窗不出现标准菜单(及工具条);当属性取figure时,图形窗显示标准菜单,如图52所示。 如上面例子隐去缺省菜单条的目的正是为了制作自制菜单,自制用户菜单,通过uimenu指令创建。典型的调用格式为:图52 缺省的菜单条 Hm= uimenu(PropertyName1,value1,PropertyName2,value2,.) 说明 1)Hm为该用户菜单的句柄。H_parent为其父对象的句柄。该父对象只能是图形窗对象,或另一用户菜单对象。假如H_parent输入宗量缺省,那么菜单项将建立在当前图形窗的顶层菜单条上。 2)PropertyName和PropertyValue构成属性二元对,它们定义用户菜单的属性。本设计中主程序创建主界面窗口自制菜单的程序如下: h1_file_menu=uimenu(h1,label,文件);h1_save_menu=uimenu(h1_file_menu,label,保存);h1_exit_menu=uimenu(h1_file_menu,label,退出,callback,close all);h1_help_menu=uimenu(h1,label,帮助,callback,msgbox(-360度=1=360度,help,modal););h1_about_menu=uimenu(h1,label,关于,callback,msgbox(作者:河南理工大学 邵翔宇 杨广磊 email: 2006年五月 版权所有,about,modal););h1_acknowledge_menu=uimenu(h1,label,支持,callback,msgbox(在毕业设计的过程中得到了王小林院长和谢刚老师的耐心指导和大力支持 非常感谢!,acknowledge,modal););本例的结果如图53所示:在上例中用到了消息显示对话框msgbox,从本质上说,对话框也是一类窗口;而从功能上说,对话框是用来要求用户输入某些信息或给用户提供某些信息而暂时出现的一个窗口。即对话框是用户与计算机之间进行交互操作的一种手段,通过对话框,用户可以通知计算机一些用户所做的选择,也可以输入一些参数给计算机,并且计算机功能也给用户提供一些信息或各种运行结果等。msgbox的调用格式为: msgbox(Message) msgbox(Message,Title) msgbox(Message,Title,Icon) msgbox(Message,Title,custom,IconData,IconCMap) msgbox(Message, . ,CreateMode) 图53 自制菜单结果此外,在主界面的设计中还用到了warndlg,它的调用格式为: Handle=warndlg(Warnstring,DlgTitle) 产生警告信息框并返回其句柄 说明 1)参数Warnstring是一个字符串变量,他表示了在对话框中要显示的警告信息内容 2)参数DlgTitle是一个字符串变量,它表示对话框的名称本设计中主程序创建主界面窗口自制警告信息对话框的程序如下: warndlg(欢迎你使用牛头刨床六杆机构运动分析程序,!hello!,modal) ;图54 信息框的设计结果5.3.3创建主界面的五个框架,各个编辑框、静态文本和按钮 在MATLAB系统中,共定义了9种不同类型的控件。这9种控件分别为:命令按钮(PushButton)、单选按钮(RadioButton)、检查框(Check Box)、列表框(List Box)、下拉式菜单(Popup Menu)、滑块(Slider)、编辑框(Edit Box)、静态文字(Static Text)、框架(Frame)。 控件是MATLAB所定义的10个基本图形对象之一,在某一图形窗口中的各种控件都是uicontrol命令实现的。它的调用格式: hcontrol=uicontrol(PropertyName1,value1,PropertyName2,value2,.) 功能:在句柄为handle的图形窗口中实现一个控件,并返回该控件的句柄到hControl变量。 说明:1)在所实现的控件中,其 PropertyName1属性的属性值为value1;PropertyName2属性的属性值为value2 2) 该控件的“双亲”句柄为handle,若缺省该参数,则其“双亲”为当前窗口 3)对于该命令所实现的控件,其属性值确定了该控件的外观显示特征及各种特点 4)当某一控件的取值被改变之后,会导致系统去执行由其callback属性所确定的一些响应序列 5)属性style确定了控件的基本外观特征。style属性的取值及其所表示的控件种类见表52表52 控件style属性取值及其对应的控件种类Style属性的取值控件种类Style属性的取值控件种类Pushbutton push 命令按钮Popupmenu下拉式菜单Radiobutton,radio单选按钮Slider滑块Checkbox,check检查框Edit编辑框Listbox ,list列表框Text静态文字Frame框架本设计中主程序创建主界面窗口框架的程序如下(因篇幅有限,只能列举两个框架的创建程序): h1_framec=uicontrol(.parent,h1,.style,frame,.position,0.05 0.05 0.3 0.3,.foregroundcolor,b);h1_framej=uicontrol(.parent,h1,.style,frame,.position,0.05 0.45 0.3 0.50,.foregroundcolor,b);图55 主界面框架的设计结果本设计中在主窗口中创建编辑框和静态文本的程序如下(限于篇幅这里指列举部分程序): h1_jgtext=uicontrol(.parent,h1,.style,text,.position,0.05 0.95 0.15 0.05,.string,结构参数,.backgroundcolor,w,.fontsize,16);h1_cstext=uicontrol(.parent,h1,.style,text,.position,0.05 0.35 0.15 0.05,.string,初始数据,.backgroundcolor,w,.fontsize,16);h1_ydtext=uicontrol(.parent,h1,.style,text,.position,0.40 0.30 0.15 0.05,.string,运动参数,.backgroundcolor,w,.fontsize,16);h1_jl1text=uicontrol(.parent,h1,.style,text,.position,0.10 0.87 0.05 0.05,.string,L1);h1_jl1edit=uicontrol(.tag,hL1,.parent,h1,.style,edit,.string,125,.position,0.15 0.87 0.10 0.05,.backgroundcolor,w,.fontsize,6);h1_jl1htext=uicontrol(.parent,h1,.style,text,.position,0.26 0.87 0.05 0.05,.string,mm,.fontsize,8);本例的结果如图56所示图56 静态文本和编辑框的设计结果本设计中在主窗口中创建命令按钮的程序如下(限于篇幅这里只举出部分程序):b=imread(saoxy,jpg);h1_mxjgbutton=uicontrol(.parent,h1,.style,push,.cdata,b,.position,0.40 0.35 0.55 0.65,.backgroundcolor,w,.fontsize,8);h1_databutton=uicontrol(. parent,h1,. style,push,. position,0.80 0.23 0.15 0.05,. string,数据显示,. fontsize,12,. backgroundcolor,w,. callback,fig_data); %设置回调函数为fig_data本例的结果如下页图57所示: 在本例中值得注意的是程序的设计过程当中遇到的最主要的问题是如何把牛头刨床的结构模型图读到主界面的特定位置。最初只是用imread把图像读进去,但是这是就出现了图像不能定位的问题。后来用imread与pushbutton结合,把pushbutton的“cdata”属性设置为图像的数据矩阵,就完美的解决了这个问题。另外,在本例中“运算”、“数据显示”、“运动分析”和“运动仿真”的“callback”除“运算”在后台操作外,其它都有“callback”生成相应子窗口。图57 在主界面中读入结构模型并添加按钮的设计结果5.3.4创建数据显示窗口 在这个窗口的设计中,首先还是用figure生成窗口,然后用load从数据文件mydata.mat 中读取变量值。接下来分别创建四个静态文本和列表框以显示数据,最后,创建“运动线图”和“退出”按钮。在中,利用、指令实现数据文件的存取是各版都采用的基本方法。它的具体调用格式如下:save FileName 把全部内存变量保存为FileName.mat文件save FileName v1 v2 把变量v1,v2保存为FileName.mat文件 save FileName v1 v2 -append把变量v1,v2添加到FileName.mat文件save FileName v1 v2 ascii 把变量v1,v2保存为FileName位ASCII文件save FileName v1 v2 ascii

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论