资源描述:
《基于matlabGUI的平面四杆机构的运动分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.基于matlabGUI的平面四杆机构的运动分析一、目的通过matlab对平面四杆机构进行运动仿真,并以GUI界面方式实现输入输出的参数化,对平面四杆机构进行位置分析、速度分析、加速度分析和静力学分析。此外,通过动画演示,更加形象直观地观察机构的运动过程。最后,将程序编译成.exe独立可执行文件,可以在其它没有安装matlab的机器上运行。二、设计思路通过matlab的GUI功能模块,创建一个图形用户界面,在自动生成的代码框架中对初始化函数和回调函数等进行编辑,建立与控件相关联的程序:控件属性、位
2、置分析、速度分析、加速度分析、静力学分析、动画演示等。图1是平面四杆机构的示意图,输入角q的运动规律为q=pi/50*t^2+q0,r1、r2是从动角。对t时刻沿着杆长距离原点A的任意一点进行分析。注意:输入输出角的单位为度,时间t的取值范围为0:0.05:10,任意点lx的取值范围为0~a1+a2+a3,估算的从动角r1、r2的迭代初始值不能偏离平衡位置太大。图1、平面四杆机构示意图三、设计流程1、通过GUI模块创建图形用户界面命令方式:在Matlab命令窗口键入>>guide;菜单方式:在Ma
3、tlab..的主窗口中,选择File>New>GUI命令,就会显示GUI的设计模板。如图1所示。图2、创建图形界面2、设计图形界面在创建之后的图形界面中插入坐标轴axes,静态文本框statictext,编辑文本框edittext,按钮pushbutton等等。如图所示。图3、图形界面设计3、编辑回调函数..1)位置分析:输入角的函数为:q=pi/50*t^2+q0。在时间t=0~10s内,每一个时间点估算两个初始从动角,根据牛顿-拉普森迭代得到准确的机构位置。10s刚好主动角经历了360度,记录
4、每一时刻的位置,便可以动画演示。2)速度分析:输入角速度为:dq=pi/25*t。选择杆件上的任意一点(坐标表示为质点沿着杆件到原点A的距离)做分析,正确表达出角速度系数和速度系数,便可以求出质点的速度。3)加速度分析:输入角加速度为:ddq=pi/25。正确表达出向心系数和角加速度系数,便可以求出质点的加速度。4)静力学分析:由虚功原理可知,当广义力Q(V,H)=0(或近似为零)时机构达到平衡,记录该平衡条件下的位置数据。四、结果演示1、机构杆长条件判断1)不符合杆长条件。如图4所示。图4、不符
5、合杆长条件2)符合杆长条件,输出参数。如图5所示。..图5、符合杆长条件2、机构运动动画演示。图6、机构动画演示..五、生成.exe文件1、安装编译器。可有多种选择,本机安装的是matlab自带的Lcc-win32;2、设置编译器。在matlab命令行输入mbuild–setup,选择安装的lcc编译器;3、调用编译器。输入mcc–msgjg,这里sgjg为要转成exe的m文件;4、安装toolboxcompilerdeploywin32目录下的MCRInstall
6、er。MCR是matlab的运行环境,在程序打包时,最好将相应版本的MCR一起打包。在其它机器上运行exe文件前,首先安装matlab的运行环境MCRInstaller.exe。六、附录(程序)functionvarargout=sgjg(varargin)%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,.
7、..'gui_OpeningFcn',@sgjg_OpeningFcn,...'gui_OutputFcn',@sgjg_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varar
8、gin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforesgjgismadevisible.functionsgjg_OpeningFcn(hObject,eventdata,handles,varargin)%Choosedefaultcommandlineoutputforsgjghandles.output=hObject;h