已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于matlab GUI的平面四杆机构的运动分析一、目的通过matlab对平面四杆机构进行运动仿真,并以GUI界面方式实现输入输出的参数化,对平面四杆机构进行位置分析、速度分析、加速度分析和静力学分析。此外,通过动画演示,更加形象直观地观察机构的运动过程。最后,将程序编译成.exe独立可执行文件,可以在其它没有安装matlab的机器上运行。二、设计思路通过matlab的GUI功能模块,创建一个图形用户界面,在自动生成的代码框架中对初始化函数和回调函数等进行编辑,建立与控件相关联的程序:控件属性、位置分析、速度分析、加速度分析、静力学分析、动画演示等。图1是平面四杆机构的示意图,输入角q的运动规律为q=pi/50*t2+q0,r1、r2是从动角。对t时刻沿着杆长距离原点A的任意一点进行分析。 注意:输入输出角的单位为度,时间t的取值范围为0:0.05:10,任意点lx的取值范围为0a1+a2+a3,估算的从动角r1、r2的迭代初始值不能偏离平衡位置太大。图1、平面四杆机构示意图三、设计流程1、通过GUI模块创建图形用户界面 命令方式:在Matlab命令窗口键入guide;菜单方式:在Matlab的主窗口中,选择FileNewGUI命令,就会显示GUI的设计模板。如图1所示。图2、创建图形界面2、设计图形界面 在创建之后的图形界面中插入坐标轴axes,静态文本框static text,编辑文本框edit text,按钮push button等等。如图 所示。图3、图形界面设计3、编辑回调函数1)位置分析:输入角的函数为:q=pi/50*t2+q0。在时间t=010s内,每一个时间点估算两个初始从动角,根据牛顿-拉普森迭代得到准确的机构位置。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 m sgjg,这里sgjg为要转成exe的m文件;4、安装toolboxcompilerdeploywin32目录下的MCRInstaller。MCR是matlab的运行环境,在程序打包时,最好将相应版本的MCR一起打包。在其它机器上运行exe文件前,首先安装matlab的运行环境MCRInstaller.exe。六、附录(程序)function varargout = sgjg(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, sgjg_OpeningFcn, . gui_OutputFcn, sgjg_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before sgjg is made visible.function sgjg_OpeningFcn(hObject, eventdata, handles, varargin)% Choose default command line output for sgjghandles.output = hObject;handles.gx=;handles.gy=;axis(handles.motion);imshow(tt.bmp); % 机构示意图% Update handles structureguidata(hObject, handles); % - Outputs from this function are returned to the command line.function varargout = sgjg_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structurevarargout1 = handles.output; function a1_Callback(hObject, eventdata, handles) function a1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function a2_Callback(hObject, eventdata, handles) function a2_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function a3_Callback(hObject, eventdata, handles) function a3_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function a4_Callback(hObject, eventdata, handles) function a4_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function q0_Callback(hObject, eventdata, handles) function q0_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function ftol_Callback(hObject, eventdata, handles) function ftol_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function r1_Callback(hObject, eventdata, handles) function r1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function r2_Callback(hObject, eventdata, handles) function r2_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function t_Callback(hObject, eventdata, handles) function t_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function lx_Callback(hObject, eventdata, handles) function lx_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function lx2_Callback(hObject, eventdata, handles) function lx2_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function lx3_Callback(hObject, eventdata, handles) function lx3_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction H_Callback(hObject, eventdata, handles) function H_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function V_Callback(hObject, eventdata, handles) function V_CreateFcn(hObject, eventdata, handles) if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Calculation_Callback(hObject, eventdata, handles)% hObject handle to Calculation (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)a1=str2num(get(handles.a1,String);a2=str2num(get(handles.a2,String);a3=str2num(get(handles.a3,String);a4=str2num(get(handles.a4,String);q0=str2num(get(handles.q0,String);ftol=str2num(get(handles.ftol,String);r1=str2num(get(handles.r1,String);r2=str2num(get(handles.r2,String);V=str2num(get(handles.V,String);H=str2num(get(handles.H,String);q0=q0*pi/180;r1=r1*pi/180;r2=r2*pi/180;ly1=0;ly2=0;ly3=0;%局部坐标系的第二坐标为0lx1=a1;lx2=a2;lx3=a3;%局部坐标系的第一坐标设一初始值lx=str2num(get(handles.lx,String);%杆上选择一个数据分析的质点if (lx=a1+a2) lx3=lx;else lx2=lx;end gr1=;gr2=;gdx1=;gdx2=;gdx3=;gdy1=;gdy2=;gdy3=;gddx1=;gddx2=;gddx3=;gddy1=;gddy2=;gddy3=; k=a1 a2 a3 a4;lmin=min(k);lmax=max(k);if(lmin+lmax)(a1+a2+a3+a4)-lmin-lmax) errordlg(不符合杆长条件!,Tip)else for t=0:0.05:10 k=0; q=pi/50*t2+q0; f=a1*cos(q)+a2*cos(r1)+a3*cos(r2)-a4 a1*sin(q)+a2*sin(r1)+a3*sin(r2); while(norm(f)ftol) A=-a2*sin(r1) -a3*sin(r2);a2*cos(r1) a3*cos(r2); dr=-Af; r1=r1+dr(1); r2=r2+dr(2); f=a1*cos(q)+a2*cos(r1)+a3*cos(r2)-a4 a1*sin(q)+a2*sin(r1)+a3*sin(r2); k=k+1;%记录迭代次数 end xa=0;ya=0; xb=a1*cos(q);yb=a1*sin(q); xc=a1*cos(q)+a2*cos(r1);yc=a1*sin(q)+a2*sin(r1); xd=a1*cos(q)+a2*cos(r1)+a3*cos(r2);yd=a1*sin(q)+a2*sin(r1)+a3*sin(r2); x=xa xb xc xd;y=ya yb yc yd; handles.gx=handles.gx x;%记录机构每一时刻的位置,用于动画演示 handles.gy=handles.gy y; %-速度分析- dq=pi/25*t; w1=1; w2=a1*sin(r2-q)/(a2*sin(r1-r2); w3=a1*sin(r1-q)/(a3*sin(r2-r1); u1=(-lx1*sin(q)-ly1*cos(q)*w1; v1=(lx1*cos(q)-ly1*sin(q)*w1; u2=-a1*sin(q)-(lx2*sin(r1)+ly2*cos(r1)*w2; v2=a1*cos(q)+(lx2*cos(r1)-ly2*sin(r1)*w2; u3=(-lx3*sin(r2)-ly3*cos(r2)+a3*sin(r2)*w3; v3=(lx3*cos(r2)-ly3*sin(r2)-a3*cos(r2)*w3; dx1=u1*dq;dy1=v1*dq; %1 dx2=u2*dq;dy2=v2*dq; dx3=u3*dq;dy3=v3*dq; %-加速度分析- ddq=pi/25; dw1=0; dw2=w2*(w3-1)*atan(r2-q)-(w2-w3)*atan(r1-r2); dw3=w3*(w2-1)*atan(r1-q)-(w3-w2)*atan(r2-r1); du1=(-lx1*sin(q)-ly1*cos(q)*dw1+(-lx1*cos(q)+ly1*sin(q)*w12; dv1=(lx1*cos(q)-ly1*sin(q)*dw1+(-lx1*sin(q)-ly1*cos(q)*w12; du2=-a1*sin(q)*dw1-a1*cos(q)*w12-(lx2*sin(r1)+ly2*cos(r1)*dw2-(lx2*cos(r1)-ly2*sin(r1)*w22; dv2=a1*cos(q)*dw1-a1*sin(q)*w12+(lx2*cos(r1)-ly2*sin(r1)*dw2-(lx2*sin(r1)+ly2*cos(r1)*w22; du3=-(lx3*sin(r2)+ly3*cos(r2)-a3*sin(r2)*dw3-(lx3*cos(r2)-ly3*sin(r2)-a3*cos(r2)*w32; dv3=(lx3*cos(r2)-ly3*sin(r2)-a3*cos(r2)*dw3-(lx3*sin(r2)+ly3*cos(r2)-a3*sin(r2)*w32; ddx1=u1*ddq+du1*dq2;ddy1=v1*ddq+dv1*dq2; %杆1上质点的加速度 ddx2=u2*ddq+du2*dq2;ddy2=v2*ddq+dv2*dq2; ddx3=u3*ddq+du3*dq2;ddy3=v3*ddq+dv3*dq2; %-静力学分析- Q=a1*(V*cos(q)+H*sin(r2)*sin(q-r1)/sin(r1-r2); if Qftol qe=q;re1=r1;re2=r2; end gr1=gr1 r1;gr2=gr2 r2;%记录机构每一时刻的位置、速度、加速度 gdx1=gdx1 dx1;gdx2=gdx2 dx2;gdx3=gdx3 dx3; gdy1=gdy1 dy1;gdy2=gdy2 dy2;gdy3=gdy3 dy3; gddx1=gddx1 ddx1;gddx2=gddx2 ddx2;gddx3=gddx3 ddx3; gddy1=gddy1 ddy1;gddy2=gddy2 ddy2;gddy3=gddy3 ddy3; end t=str2num(get(handles.t,String); n=20*t+1; r1=gr1(n);r2=gr2(n); r1=r1*180/pi;r2=r2*180/pi; qe=qe*180/pi;re1=re1*180/pi;re2=re2*180/pi; dx1=gdx1(n);dx2=gdx2(n);dx3=gdx3(n); dy1=gdy1(n);dy2=gdy2(n);dy3=gdy3(n); ddx1=gddx1(n);ddx2=gddx2(n);ddx3=gddx3(n); ddy1=gddy1(n);ddy2=gddy2(n);ddy3=gddy3(n); set(handles.dispr1,String,num2str(r1); set(handles.dispr2,String,num2str(r2); if (lx=a1+a2) set(handles.dispdx,String,num2str(dx3)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园亲子活动方案设计及总结范本
- 2025-2030中国代谢性疾病药物市场竞争格局报告
- 企业内训师选拔与培训计划表
- 行政办公流程与表单大全
- 2025医疗器械产品市场深度剖析及新兴技术发展策略协同行动报告
- 合同审核流程与合同模板集成包
- 小学毕业考试语文模拟卷
- 2025医疗健康领域市场需求调研及商业运营模式分析报告
- 企业资源规划(ERP)标准化操作手册
- 2025医疗健康监测行业市场现状竞争格局分析及投资效益风险评估行规规划实施方案报告
- 研究生学术表达能力培养智慧树知到答案2024年西安建筑科技大学、清华大学、同济大学、山东大学、河北工程大学、《环境工程》英文版和《环境工程》编辑部
- 中国骨关节炎诊疗指南(2024版)解读
- 马铃薯淀粉产品营销计划书
- 生成式人工智能(AIGC的逻辑与应用)
- 成都东郊记忆发展现状与对策分析
- 小升初作文20个主题万能开头与结尾
- 企业供应链中的库存管理优化
- 2024建筑消防设施检测报告书模板
- 耳鼻咽喉损伤课件
- 化学品安全管理知识培训
- MSA-测量系统分析模板
评论
0/150
提交评论