基于Matlab弧面分度凸轮的建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Matlab GUI的弧面分度凸轮轮廓曲面计算平台的设计
作者:曹顺辉
摘要:介绍了利用Matlab 7.0的图形用户界面(Graphical User Interface,GUI)设计弧面分度凸轮工作廓面坐标计算平台的方法和步骤。使用户不必去了解复杂的Matlab代码及程序,直接通过该平台就可以很便捷的进行凸轮工作廓面的计算工作。并利用最终输出的坐标文件结合三维造型软件SolidWorks完成弧面分度凸轮工作廓面的三维建模。
关键字:GUI 弧面分度凸轮 三维实体建模 图形用户界面 Matlab
1 引言
弧面分度凸轮机构(图1)用于两垂直交错轴间的间歇分度步进传动,这种机构不需要其他附属装置即可完成较精确的分度定位[1]。和其他几种常见的间歇分度机构相比,可以在高速、重载的情况下使用,而且运行比较平稳,无较大冲击,定位精度高。但是由于弧面分度凸轮的工作廓面为空间不可展曲面,很难用常规的机械方法绘制[1]。通过Matlab编程语言,首先建立凸轮工作廓面坐标的数学模型,然后再结合Matlab的图形用户界面(GUI)设计功能,为用户提供一个图形界面。通过这个界面用户可以很便捷地进行一些复杂的数据处理和运算工作,而不必去了解界面背后代码和程序的运行过程,因此具有更加广泛的应用意义。
图1
2 Matlab 图形用户界面(GUI)简介
图形用户界面(GUI)是一个整合了诸如窗口、图标、按钮、菜单和文本等图形对象的接口,用户选中或者激活这些对象通常都会导致某个动作或者变化的发生[2]。是用户和计算机程序之间进行信息交互的一种方法,用户通过键盘、鼠标、麦克风或者绘图板等设备向计算机输入相关信息,计算机可以通过屏幕上显示图形和文本、利用喇叭发出声音来向用户提供相关信息。因此对于一个操作系统或者应用程序来说,用户接口是一个十分关键的因素,它定义了这些系统或应用程序提供给用户的视觉感受和使用感觉,因此一个友好而高效的用户接口对于应用程序或者计算机的使用者具有极强的吸引力[2]。
Matlab7.0中的图形用户接口开发环境(Graphical User Interface Development Environment,GUIDE)提供了一系列工具用于建立GUI对象,这些工具在很大程度上简化了设计和建立GUI的过程[3]。设计者通过运用GUIDE可以完成GUI图形界面的布局设计以及GUI编程工作,而这些也正是开发图形用户界面(GUI)的基本流程。
2 弧面分度凸轮轮廓曲面计算平台的GUI设计流程
在开始进行GUI设计前,首先需要对所面临的问题进行精确描述,即我们遇到的到底是什么问题。然后定义输入和输出量,即我们的目的和现有的条件。最后针对问题,设计算法,逐层分解,逐步求精,再把算法转换为Matlab语言。
在本文中我们要解决的问题是:在用户给定所需要的参数以后,经过数据处理和计算,最后输出记录有凸轮工作轮廓曲面坐标的文本文件。这个问题的输入量为计算凸轮工作轮廓曲面坐标所需的相关参数,输出量为凸轮工作轮廓曲面的坐标。在搞清楚上面这些问题以后,就可以开始GUI的设计工作。
3.1 图形用户界面的布局设计
3.1.1 在进行GUI设计时,根据预先定义的输入量和输出量来确定界面中所需要的控件的类型和数量。在稿纸上对将要设计的图形用户界面的布局进行初步的构思,否则盲目性太大不利于后期的编程工作。在表1中列出了在计算弧面分度凸轮轮廓曲面坐标时需要的相关参数。
表1 弧面分度凸轮轮廓曲面计算参数表
项目 计算公式与说明 结果
凸轮分度期转角 常用的为120°~240° =120°
转盘分度数I I表示转盘转一周中的停歇次数 I=8
中心距C 凸轮和分度盘的中心距离 C=180mm
滚子半径 =22mm
间隙e e=(0.2~0.3)b e=6mm
滚子宽度b b=(1~1.4) b=24mm
凸轮分度廓线头数H 单头H=1,双头H=2 1
旋向系数p 左旋p=+1,右旋p=-1 1
分度盘运动规律 选择需要的运动规律 改进正弦加速度
廓面选择 选择要计算的轮廓曲面 1L,2L,2R,3R
3.1.2 在构思好将要设计的界面布后,就可以开始具体的设计工作。打开Matlab软件,在命令窗口(Command Window)中输入guide,确认后打开GUIDE快速启动窗口,选择新建一个空白样板(Black GUI),如图2所示。
图2
如上图示,GUI编辑界面主要包括GUI对象选择区、GUI工具栏、GUI布局区3个部分[3]。在空白的GUI样板的编辑区不会有任何figure子对象存在,必须由用户按照预先的设计进
行添加。根据表1中罗列的参数和GUI界面布局的初步构思,确定该界面需要的控件为触控按钮(Push Button)3个,静态文本标签(Static Text)12个,可编辑文本(Edit Text)8个,弹出式菜单(Pop-up Menu)2件。在GUI编辑界面左边的GUI对象选择区选择需要的控件在GUI布局区中,按照图3所示进行布局,并对控件的属性进行设置,完成图形用户界面的布局设计工作,最后保存文件。
图3
3.2 编写回调函数(Callback)代码
在保存GUI程序时,Matlab会自动生成.fig和.m文件,其中的.m文件包含了界面上所有组件的回调函数(Call Back)。所谓回调,是指当与某一特定的的属性相关联的用户动作发生时,需要执行的代码。在大多数情况下,回调都是函数调用,通常通用的就是定义回调的那个函数。用户可以对回调进行设置,以便让Matlab执行特定的任务。[2]这也是GUI 编程的核心工作。
而在弧面分度凸轮轮廓曲面坐标计算程序的GUI中,回调函数的代码编写工作主要包含两部分内容:
3.2.1 对于界面上的可编辑文本(Edit Text)控件,在用户输入相应的参数值时,要求只能输入数字类字符,否则予以弹窗提示。可以在对应控件的回调函数内增加下面的代码实现这个功能。
str=get(handles.edit1,’string’);%读取输入的字符串
if isempty(str2num(str)) %判断字符串是否为纯数字
msgbox(‘Input error’,’Error’);%如果不是纯数字,弹窗提示
return;
end
3.2.2编写触控按钮“计算”和“退出”的回调函数代码。界面中“计算”的回调函数是曲面坐标计算程序算法的具体体现,“计算”按钮的回调函数部分代码如下:
str1=get(handles.popupmenu2,’string’);%读取下拉菜单的取值,即运动规律的选择值
str2=get(handles.popupmenu3,’string’);%读取下拉菜单的取值,即曲面的选择值
if (str2num(str1)==2& str2num(str2)==1) %如果选择改进正弦加速度且选择要计算的曲面为1L面
… … %1L曲面坐标计算程序
else if (str2num(str1)==2&str2num(str2)==2) %如果选择改进正弦加速度且选择要计算的曲面为2L面
… … %2L曲面坐标计算程序