基于matlabGUI的平面四杆机构的运动分析一、目的通过matlab对平面四杆机构进行运动仿真,并以GUI界面方式实现输入输出的参数化,对平面四杆机构进行位置分析、速度分析、加速度分析和静力学分析。此外,通过动画演示,更加形象直观地观察机构的运动过程。最后,将程序编译成.exe独立可执行文件,可以在其它没有安装matlab的机器上运行。二、设计思路通过matlab的GUI功能模块,创建一个图形用户界面,在自动生成的代码框架中对初始化函数和回调函数等进行编辑,建立与控件相关联的程序:控件属性、位置分析、速度分析、加速度分析、静力学分析、动画演示等。图1是平面四杆机构的示意图,输入角q的运动规律为q=pi/50*t^2+q0,r1、r2是从动角。对t时刻沿着杆长距离原点A的任意一点进行分析。注意:输入输出角的单位为度,时间t的取值范围为0:0.05:10,任意点lx的取值范围为0~a1+a2+a3,估算的从动角r1、r2的迭代初始值不能偏离平衡位置太大。r1qxylx1ly1lx2ly2lx3ly3r2ABCDa1a2a3a4VH图1、平面四杆机构示意图三、设计流程1、通过GUI模块创建图形用户界面命令方式:在Matlab命令窗口键入guide;菜单方式:在Matlab的主窗口中,选择FileNewGUI命令,就会显示GUI的设计模板。如图1所示。图2、创建图形界面2、设计图形界面在创建之后的图形界面中插入坐标轴axes,静态文本框statictext,编辑文本框edittext,按钮pushbutton等等。如图所示。图3、图形界面设计3、编辑回调函数1)位置分析:输入角的函数为:q=pi/50*t^2+q0。在时间t=0~10s内,每一个时间点估算两个初始从动角,根据牛顿-拉普森迭代得到准确的机构位置。10s刚好主动角经历了360度,记录每一时刻的位置,便可以动画演示。2)速度分析:输入角速度为:dq=pi/25*t。选择杆件上的任意一点(坐标表示为质点沿着杆件到原点A的距离)做分析,正确表达出角速度系数和速度系数,便可以求出质点的速度。3)加速度分析:输入角加速度为:ddq=pi/25。正确表达出向心系数和角加速度系数,便可以求出质点的加速度。4)静力学分析:由虚功原理可知,当广义力Q(V,H)=0(或近似为零)时机构达到平衡,记录该平衡条件下的位置数据。四、结果演示1、机构杆长条件判断1)不符合杆长条件。如图4所示。图4、不符合杆长条件2)符合杆长条件,输出参数。如图5所示。图5、符合杆长条件2、机构运动动画演示。图6、机构动画演示五、生成.exe文件1、安装编译器。可有多种选择,本机安装的是matlab自带的Lcc-win32;2、设置编译器。在matlab命令行输入mbuild–setup,选择安装的lcc编译器;3、调用编译器。输入mcc–msgjg,这里sgjg为要转成exe的m文件;4、安装Matlabpath\toolbox\compiler\deploy\win32目录下的MCRInstaller。MCR是matlab的运行环境,在程序打包时,最好将相应版本的MCR一起打包。在其它机器上运行exe文件前,首先安装matlab的运行环境MCRInstaller.exe。六、附录(程序)functionvarargout=sgjg(varargin)%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'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,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforesgjgismadevisible.functionsgjg_OpeningFcn(hObject,eventdata,handles,varargin)%Choosedefaultcommandlineoutputforsgjghandles.output=hObject;handles.gx=[];handles.gy=[];axis(handles.motion);imshow('tt.bmp');%机构示意图%Updatehandlesstructureguidata(hObject,handles);%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=sgjg_OutputFcn(hObject,eventdata,handles)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;functiona1_Callback(hObject,eventdata,handles)functiona1_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiona2_Callback(hObject,eventdata,handles)functiona2_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiona3_Callback(hObject,eventdata,handles)functiona3_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiona4_Callback(hObject,eventdata,handles)functiona4_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionq0_Callback(hObject,eventdata,handles)functionq0_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionftol_Callback(hObject,eventdata,handles)functionftol_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionr1_Callback(hObject,eventdata,handles)functionr1_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionr2_Callback(hObject,eventdata,handles)functionr2_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiont_Callback(hObject,eventdata,handles)functiont_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionlx_Callback(hObject,eventdata,handles)functionlx_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionlx2_Callback(hObject,eventdata,handles)functionlx2_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionlx3_Callback(hObject,eventdata,handles)functionlx3_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'Backgrou