matlab曲柄滑块机构的运动学仿真
- 格式:doc
- 大小:297.00 KB
- 文档页数:10
一曲柄滑块机构运动学仿真1、设计任务描述通过分析求解曲柄滑块机构动力学方程,编写matlab程序并建立Simulink 模型,由已知的连杆长度和曲柄输入角速度或角加速度求解滑块位移与时间的关系,滑块速度和时间的关系,连杆转角和时间的关系以及滑块位移和滑块速度与加速度之间的关系,从而实现运动学仿真目的。
2、系统结构简图与矢量模型下图所示是只有一个自由度的曲柄滑块机构,连杆r2与r3长度已知。
图2-1 曲柄滑块机构简图设每一连杆(包括固定杆件)均由一位移矢量表示,下图给出了该机构各个杆件之间的矢量关系图2-2 曲柄滑块机构的矢量环3.匀角速度输入时系统仿真3.1 系统动力学方程系统为匀角速度输入的时候,其输入为ω2=θ2,输出为ω3=θ3,θ3;v 1=r 1,r 1。
(1) 曲柄滑块机构闭环位移矢量方程为:R 2+R 3=R 1(2) 曲柄滑块机构的位置方程{r 2cos θ2+r 3cos θ3=r 1r 2sin θ2+r 3sin θ3=0(3) 曲柄滑块机构的运动学方程通过对位置方程进行求导,可得{−r 2ω2sin θ2−r 3ω3sin θ3=r 1r 2ω2cos θ2+r 3ω3cos θ3=0由于系统的输出是ω3与v 1,为了便于建立A*x=B 形式的矩阵,使x=[ω3v 1],将运动学方程两边进行整理,得到{v 1+r 3ω3sin θ3=−r 2ω2sin θ2−r 3ω3cos θ3=r 2ω2cos θ2将上述方程的v1与w3提取出来,即可建立运动学方程的矩阵形式(r 3sin θ31−r 3cos θ30)(ω3v 1)=(−r 2ω2sin θ2r 2ω2cos θ2) 3.2 M 函数编写与Simulink 仿真模型建立3.2.1 滑块速度与时间的变化情况以及滑块位移与时间的变化情况仿真的基本思路:已知输入w2与θ2,由运动学方程求出w3和v1,再通过积分,即可求出θ3与r1。
基于MATLAB曲柄滑块机构运动仿真1.题目描述题目:对如图1所示的曲柄滑块机构的运动过程进行仿真,并用动画的方式显示曲柄滑块机构的运动过程,位移曲线、速度曲线和加速度曲线。
图中,AB长R2,BC长R3mm,A点为坐标原点。
图1 曲柄滑块机构示意图2.实现方法利用GUI界面设计来对曲柄滑块机构的运动过程进行仿真,并用动画的方式显示曲柄滑块机构的运动过程。
3.界面设计1. Gui 设计1)新建GUI:菜单-新建-gui,并保存为test52)界面设计:拖拽左侧图标到绘图区,创建GUI界面拖拽左侧图标值绘图区设置如下的按钮最终的仿真界面如图所示3)代码添加:进入代码界面4.代码编程%模型求解a1=str2double(get(handles.edit1,'String'));a2=str2double(get(handles.edit2,'String'));a3=str2double(get(handles.edit3,'String'));a4=str2double(get(handles.edit4,'String'));a5=str2double(get(handles.edit5,'String'));a=a1*((1-cos(a4*a5))+0.25*(a1/a2)*(1-cos(2*a4*a5))); set(handles.edit6,'String',a);a0=(a4*a1)*(sin(a4*a5)+0.5*(a1/a2)*sin(2*a4*a5));set(handles.edit7,'String',a0);a6=(a4*a4*a1)*(cos(a4*a5)+(a1/a2)*cos(a4*a5));set(handles.edit8,'String',a6);%绘制位移、速度、加速度曲线axes(handles.axes3);r1=str2double(get(handles.edit1,'String'));r2=str2double(get(handles.edit2,'String'));omiga1=str2double(get(handles.edit4,'String'));x11=1:720;for i=1:720x1(i)=i*pi/180;%sin(x2(i)=r1/r2*sin(x1(i));x2(i)=asin(-r1/r2*sin(x1(i)));x22(i)=x2(i)*180/pi;r3(i)=r1*cos(x1(i))+r2*cos(x2(i));B=[-r1*omiga1*sin(x1(i));r1*omiga1*cos(x1(i))];A=[r2*sin(x2(i)) 1;-r2*cos(x2(i)) 0];X=inv(A)*B;omiga2(i)=X(1,1);v3(i)=X(2,1);endplot(x11/60,0.5*r1*sin(x1));xlabel('ʱ¼äÖá t/sec')ylabel('Á¬¸ËÖÊÐÄÔÚYÖáÉϵÄλÖÃ/mm')figure(2)plot(x11/60,r3);title('Î»ÒÆÏßͼ')grid onhold off;xlabel('ʱ¼ät/sec')ylabel('»¬¿éÎ»ÒÆ r3/mm')figure(3)plot(x11/60,omiga2);title('Á¬¸Ë½ÇËÙ¶È')grid onhold off;xlabel('ʱ¼ä t/sec')ylabel('Á¬¸Ë½ÇËÙ¶È omiga2/rad/sec') figure(4)plot(x11/60,v3*pi/180);title('»¬¿éËÙ¶È')grid onhold off;xlabel('ʱ¼ä t/sec')ylabel('»¬¿éËÙ¶È v3/mm/sec')%绘制表格axes(handles.axes3);grid onaxes(handles.axes1);grid on%制作动画axes(handles.axes1);hf=figure('name','Çú±ú»¬¿é»ú¹¹'); set(hf,'color','r');hold onaxis([-6,6,-4,4]);grid onaxis('off');xa0=-5;%»îÈû×ó¶¥µã×ø±êxa1=-2.5;%»îÈûÓÒ¶¥µã×ø±êxb0=-2.5;%Á¬¸Ë×ó¶¥µã×ø±êxb1=2.2;%Á¬¸ËÓÒ¶¥µã×ø±êx3=3.5;%תÂÖ×ø±êy3=0;%תÂÖ×ø±êx4=xb1;%ÉèÖÃÁ¬¸ËÍ·µÄ³õʼλÖúá×ø±êy4=0;%ÉèÖÃÁ¬¸ËÍ·µÄ³õʼλÖÃ×Ý×ø±êx5=xa1;y5=0;x6=x3;%ÉèÖÃÁ¬Öá³õʼºá×ø±êy6=0;%ÉèÖÃÁ¬Öá³õʼ×Ý×ø±êa=0.7;b=0.7c=0.7a1=line([xa0;xa1],[0;0],'color','b','linestyle','-','linewidth',40); %ÉèÖûîÈûa3=line(x3,y3,'color',[0.5 0.60.3],'linestyle','.','markersize',300);%ÉèÖÃתÂÖa2=line([xb0;xb1],[0;0],'color','black','linewidth',10);%ÉèÖÃÁ¬¸Ëa5=line(x5,y5,'color','black','linestyle','.','markersize',40);%ÉèÖÃÁ¬¸Ë»îÈûÁ¬½ÓÍ·a4=line(x4,y4,'color','black','linestyle','.','markersize',50);%ÉèÖÃÁ¬¸ËÁ¬½ÓÍ·a6=line([xb1;x3],[0;0],'color','black','linestyle','-','linewidth',10 );a7=line(x3,0,'color','black','linestyle','.','markersize',50);%ÉèÖÃÔ˶¯ÖÐÐÄa8=line([-5.1;-0.2],[0.7;0.7],'color','y','linestyle','-','linewidth' ,5);%ÉèÖÃÆû¸×±Úa9=line([-5.1;-0.2],[-0.72;-0.72],'color','y','linestyle','-','linewi dth',5);%ÉèÖÃÆû¸×±Úa10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewid th',5);%ÉèÖÃÆû¸×±Úa11=fill([-5,-5,-5,-5],[0.61,0.61,-0.61,-0.61],[a,b,c]);%ÉèÖÃÆû¸×ÆøÌålen1=4.8;%Á¬¸Ë³¤len2=2.5;%»îÈû³¤r=1.3;%Ô˶¯°ë¾¶dt=0.015*pi;t=0;while 1t=t+dt;if t>2*pit=0;endlena1=sqrt((len1)^2-(r*sin(t))^2);%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖкáÖáÉϵÄÓÐЧ³¤¶Èrr1=r*cos(t);%°ë¾¶ÔÚÔ˶¯¹ý³ÌÖкáÖáÉϵÄÓÐЧ³¤¶Èxaa1=x3-sqrt(len1^2-(sin(t)*r)^2)-(r*cos(t));%»îÈûÔÚÔ˶¯¹ý³ÌÖеÄÓÒ¶¥µã×ø±êλÖÃxaa0=xaa1-2.5;%%»îÈûÔÚÔ˶¯¹ý³ÌÖеÄ×ó¶¥µã×ø±êλÖÃx55=x3-cos(t)*r;%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖкá×ø±êλÖÃy55=y3-sin(t)*r;%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖÐ×Ý×ø±êλÖÃset(a4,'xdata',x55,'ydata',y55);%ÉèÖÃÁ¬¸Ë¶¥µãÔ˶¯set(a1,'xdata',[xaa1-2.5;xaa1],'ydata',[0;0]);%ÉèÖûîÈûÔ˶¯set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]);set(a5,'xdata',xaa1);%ÉèÖûîÈûÓëÁ¬¸ËÁ¬½ÓÍ·µÄÔ˶¯set(a6,'xdata',[x55;x3],'ydata',[y55;0]);set(a11,'xdata',[-5,xaa0,xaa0,-5]);%ÉèÖÃÆøÌåµÄÌî³äset(gcf,'doublebuffer','on');%Ïû³ýÕð¶¯drawnow;end5.结果(1)对它的结构参数进行设置,如下图所示。
************************计算机仿真技术matlab报告************************曲柄滑块机构目录一、基于GUI的曲柄滑块机构运动仿真二、基于simulink的曲柄滑块机构运动仿真曲柄滑块机构1.题目描述题目:对如图1所示的曲柄滑块机构的运动过程进行仿真,并用动画的方式显示曲柄滑块机构的运动过程,位移曲线、速度曲线和加速度曲线。
图中,AB长R2,BC长R3mm,A点为坐标原点。
图1 曲柄滑块机构示意图2.实现方法利用GUI界面设计来对曲柄滑块机构的运动过程进行仿真,并用动画的方式显示曲柄滑块机构的运动过程。
3.界面设计1. Gui 设计1)新建GUI:菜单-新建-gui,并保存为test52)界面设计:拖拽左侧图标到绘图区,创建GUI界面拖拽左侧图标值绘图区设置如下的按钮最终的仿真界面如图所示3)代码添加:进入代码界面4.代码编程%模型求解a1=str2double(get(handles.edit1,'String'));a2=str2double(get(handles.edit2,'String'));a3=str2double(get(handles.edit3,'String'));a4=str2double(get(handles.edit4,'String'));a5=str2double(get(handles.edit5,'String'));a=a1*((1-cos(a4*a5))+0.25*(a1/a2)*(1-cos(2*a4*a5))); set(handles.edit6,'String',a);a0=(a4*a1)*(sin(a4*a5)+0.5*(a1/a2)*sin(2*a4*a5));set(handles.edit7,'String',a0);a6=(a4*a4*a1)*(cos(a4*a5)+(a1/a2)*cos(a4*a5));set(handles.edit8,'String',a6);%绘制位移、速度、加速度曲线axes(handles.axes3);r1=str2double(get(handles.edit1,'String'));r2=str2double(get(handles.edit2,'String'));omiga1=str2double(get(handles.edit4,'String'));x11=1:720;for i=1:720x1(i)=i*pi/180;%sin(x2(i)=r1/r2*sin(x1(i));x2(i)=asin(-r1/r2*sin(x1(i)));x22(i)=x2(i)*180/pi;r3(i)=r1*cos(x1(i))+r2*cos(x2(i));B=[-r1*omiga1*sin(x1(i));r1*omiga1*cos(x1(i))]; A=[r2*sin(x2(i)) 1;-r2*cos(x2(i)) 0];X=inv(A)*B;omiga2(i)=X(1,1);v3(i)=X(2,1);endplot(x11/60,0.5*r1*sin(x1));xlabel('ʱ¼äÖá t/sec')ylabel('Á¬¸ËÖÊÐÄÔÚYÖáÉϵÄλÖÃ/mm') figure(2)plot(x11/60,r3);title('Î»ÒÆÏßͼ')grid onhold off;xlabel('ʱ¼ät/sec')ylabel('»¬¿éÎ»ÒÆ r3/mm')figure(3)plot(x11/60,omiga2);title('Á¬¸Ë½ÇËÙ¶È')grid onhold off;xlabel('ʱ¼ä t/sec')ylabel('Á¬¸Ë½ÇËÙ¶È omiga2/rad/sec') figure(4)plot(x11/60,v3*pi/180);title('»¬¿éËÙ¶È')grid onhold off;xlabel('ʱ¼ä t/sec')ylabel('»¬¿éËÙ¶È v3/mm/sec')%绘制表格axes(handles.axes3);grid onaxes(handles.axes1);grid on%制作动画axes(handles.axes1);hf=figure('name','Çú±ú»¬¿é»ú¹¹');set(hf,'color','r');hold onaxis([-6,6,-4,4]);grid onaxis('off');xa0=-5;%»îÈû×ó¶¥µã×ø±êxa1=-2.5;%»îÈûÓÒ¶¥µã×ø±êxb0=-2.5;%Á¬¸Ë×ó¶¥µã×ø±êxb1=2.2;%Á¬¸ËÓÒ¶¥µã×ø±êx3=3.5;%תÂÖ×ø±êy3=0;%תÂÖ×ø±êx4=xb1;%ÉèÖÃÁ¬¸ËÍ·µÄ³õʼλÖúá×ø±êy4=0;%ÉèÖÃÁ¬¸ËÍ·µÄ³õʼλÖÃ×Ý×ø±êx5=xa1;y5=0;x6=x3;%ÉèÖÃÁ¬Öá³õʼºá×ø±êy6=0;%ÉèÖÃÁ¬Öá³õʼ×Ý×ø±êa=0.7;b=0.7c=0.7a1=line([xa0;xa1],[0;0],'color','b','linestyle','-','linewidth',40); %ÉèÖûîÈûa3=line(x3,y3,'color',[0.5 0.6 0.3],'linestyle','.','markersize',300);%ÉèÖÃתÂÖa2=line([xb0;xb1],[0;0],'color','black','linewidth',10);%ÉèÖÃÁ¬¸Ëa5=line(x5,y5,'color','black','linestyle','.','markersize',40);%ÉèÖÃÁ¬¸Ë»îÈûÁ¬½ÓÍ·a4=line(x4,y4,'color','black','linestyle','.','markersize',50);%ÉèÖÃÁ¬¸ËÁ¬½ÓÍ·a6=line([xb1;x3],[0;0],'color','black','linestyle','-','linewidth',10);a7=line(x3,0,'color','black','linestyle','.','markersize',50);%ÉèÖÃÔ˶¯ÖÐÐÄa8=line([-5.1;-0.2],[0.7;0.7],'color','y','linestyle','-','linewidth',5);%ÉèÖÃÆû¸×±Úa9=line([-5.1;-0.2],[-0.72;-0.72],'color','y','linestyle','-','linewidth',5);%ÉèÖÃÆû¸×±Úa10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewidth',5);%ÉèÖÃÆû¸×±Úa11=fill([-5,-5,-5,-5],[0.61,0.61,-0.61,-0.61],[a,b,c]);%ÉèÖÃÆû¸×ÆøÌålen1=4.8;%Á¬¸Ë³¤len2=2.5;%»îÈû³¤r=1.3;%Ô˶¯°ë¾¶dt=0.015*pi;t=0;while 1t=t+dt;if t>2*pit=0;endlena1=sqrt((len1)^2-(r*sin(t))^2);%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖкáÖáÉϵÄÓÐЧ³¤¶Èrr1=r*cos(t);%°ë¾¶ÔÚÔ˶¯¹ý³ÌÖкáÖáÉϵÄÓÐЧ³¤¶È xaa1=x3-sqrt(len1^2-(sin(t)*r)^2)-(r*cos(t));%»îÈûÔÚÔ˶¯¹ý³ÌÖеÄÓÒ¶¥µã×ø±êλÖÃxaa0=xaa1-2.5;%%»îÈûÔÚÔ˶¯¹ý³ÌÖеÄ×ó¶¥µã×ø±êλÖà x55=x3-cos(t)*r;%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖкá×ø±êλÖÃy55=y3-sin(t)*r;%Á¬¸ËÔÚÔ˶¯¹ý³ÌÖÐ×Ý×ø±êλÖÃset(a4,'xdata',x55,'ydata',y55);%ÉèÖÃÁ¬¸Ë¶¥µãÔ˶¯set(a1,'xdata',[xaa1-2.5;xaa1],'ydata',[0;0]);%ÉèÖûîÈûÔ˶¯set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]);set(a5,'xdata',xaa1);%ÉèÖûîÈûÓëÁ¬¸ËÁ¬½ÓÍ·µÄÔ˶¯set(a6,'xdata',[x55;x3],'ydata',[y55;0]);set(a11,'xdata',[-5,xaa0,xaa0,-5]);%ÉèÖÃÆøÌåµÄÌî³äset(gcf,'doublebuffer','on');%Ïû³ýÕð¶¯drawnow;end5.结果(1)对它的结构参数进行设置,如下图所示点击计算按钮动画,结果如下图所示点击表格对图形进行画表格处理点击绘图,即可得到位移、速度、加速度曲线,如下图所示二、基于simulink 的曲柄滑块机构运动仿真(1)运用矢量求解法求解(2)绘制速度接线图,如下图所示:运动仿真结果如下图:(3)绘制加速度接线图,如下图所示:运行结果如图所示:。
曲柄滑块机构的优化设计及运动仿真学位论文曲柄滑块机构的优化设计及运动仿真目录目录...............................................................1 摘要............................................................... 第1章绪论........................................................ 选题的目的及意义............................................. 优化设计方法的概述........................................... 国内外的研究现状............................................ 主要研究内容............................................ 第2章曲柄滑块机构的受力分析......................................曲柄滑块机构的分类...........................................曲柄滑块机构的动力学特性.....................................曲柄滑块机构中运动学特性..................................... 第3章偏置式曲柄滑块机构的优化设计................................ 优化软件的介绍.............................................. MATLAB的发展历程和影响...................................MATLAB 在机构设计中的应用................................. 机构优化设计实例分析........................................ 设计目标的建立...........................................根据设计要求,确定约束条件................................利用MATLAB进行优化设计.................................... 编制优化程序.............................................. 程序运行结果及处理........................................ 对优化结果进行验证和分析................................. 第4章偏置曲柄滑块机构的运动学建模与仿真.......................... 偏置曲柄滑块机构运动特性建模................................ 仿真环境简介............................................. 机构的运动学建模........................................ 运动学仿真的实现.......................................... 函数的编制及初始参数的设定............................... 构建Simulink仿真框图.................................... 对仿真结果进行分析...................................... 总结...............................................................〔Toolboxs〕组成虽然该软件的初衷并不是为控制系统设计的,但它提供了强大的矩阵处理和绘图功能,可靠灵活且方便,非常适合现代控制理论的计算机辅助设计。
基于MATLAB 的曲柄滑块机构运动的仿真摘要:本文在曲柄滑块机构运动简图的基础上,对其数学运动模型进行分析,用解析法计算曲柄的转角和角速度,及滑块的位移和速度,并用MATLAB软件进行仿真。
1引言在机械传动系统中,曲柄滑块机构是一种常用的机械机构,它将曲柄的转动转化为滑块在直线上的往复运动,是压气机、冲床、活塞式水泵等机械的主机构。
这里用解析法,并用MATLAB对其进行仿真。
2曲柄滑块机构的解析法求解曲柄滑块机构的运动简图如图1所示,在图1中,L i、L2和e分别为曲柄滑块的曲柄、连杆和偏差,‘、2分别为曲柄和连杆的转角,「:、「:分别为曲柄和连杆的角速度,S为滑块的位移。
(1)块的位移S 和速度S2.1位移分析按图1中四边形ABCD 的矢量方向有:AB =CD将上式转化成幅值乘以角度的形式,得到如下等式:L :e 闻十=S + ie分别取上式的虚部和实部,并在 e 前面乘N , N 取值1或—1,用以表示滑 块在x 轴的上方或者下方,得到下面两式:,以及滑L cos 1 L 2cos 2 = S (2) L sin 1 L 2sin 2 = Nb(3)整理上面两个公式得到S 和:2的计算公式:S 二 L i cos 1 L 2 cos 22.2速度分析将(1)式两边对时间求导得(6)式L i -'i ie i 1- L 2 \ ie i 2= S(6)取(6)式的实部和虚部,整理得 S 和:2的计算公式:■L 1 ;*1cos12 ■L 2 COS ®2根据(7)式和(8)式即可得到滑块的速度及连杆的角速度。
2.3实例分析及其MATLAB 仿真 2.3.1实例分析下面对图2所示的曲柄滑块机构做具体分析。
图2曲柄滑块机构简图*二 arcs inNe - L 1 sin 打L2(5)S 「:L i sin (—2)cos :2yx例中:几=36mm,r2=140mm,^60d /sec,求'2,2,S 和S。
[研究・设计]收稿日期:2007204209作者简介:赵小刚(1981-),男,陕西户县人,助教,主要研究方向为机械工程CAD CAM 。
MA TLAB S i m ulink 软件的曲柄导杆机构运动学仿真赵小刚1,李永春2 (1.陕西国防工业职业技术学院机械系,陕西户县 710302; 2.陕西科技大学机电工程学院,陕西西安 710021) 摘 要:为了求解曲柄导杆机构的运动学规律,运用矢量法进行了分析,建立了曲柄导杆机构的运动学数学模型。
使用M A TLAB Si m ulink 仿真软件对曲柄导杆机构进行了运动学仿真,得到了导杆及滑块的位移、速度、加速度的运动曲线。
使用这种方法求解机构的运动学参数具有精度高、速度快等特点。
关 键 词:曲柄导杆机构;运动学;M A TLAB Si m ulink 软件;仿真中图分类号:TH 112;T P 391.9 文献标志码:A 文章编号:100522895(2007)06200392030 引 言曲柄导杆机构是一种应用比较广泛的平面连杆机构,它可以将曲柄的旋转运动转换成为导杆的往复摆动(摆动导杆机构)或整周旋转运动(转动导杆机构)[1]。
曲柄导杆机构还可以与别的基本四杆机构组合在一起,构成一些实用的组合机构,如刨床,车床的主运动机构等。
机构的运动参数是分析评价机构工作性图1 曲柄摆动导杆机构简图能,优化新机构的基本依据[2]。
对曲柄导杆机构的运动分析,即构件上特定点的位移、速度和加速度分析,常用的方法有图解法和解析法。
图解法较直观、方便,但是精度不高,需要反复作图;而解析法人工计算运算量大,容易出错[3]。
本文以曲柄摆动导杆为例,提出用M A TLAB 软件仿真工具箱Si m u link 对曲柄导杆机构进行运动学仿真,得到曲柄导杆机构的运动曲线,该方法使解析法获得更高的精度。
1 曲柄摆动导杆机构运动学数学模型的建立图1所示为一曲柄摆动导杆机构,曲柄OA 为原动件,导杆B A 是从动件,通过滑块,曲柄的连续转动转变为导杆的往复摆动。
《系统仿真与matlab》综合试题题目:曲柄滑块机构的运动学仿真编号:24难度系数:*****姓名班级学号联系方式成绩第一部分:课题理解1、课题要求:对图示单缸四冲程发动机中常见的曲柄滑块机构进行运动学仿真。
已知连杆长度:m r 1.02=,m r 4.03=,连杆的转速:22θω =,33θω =,设曲柄r 2以匀速旋转,s r / 502=ω。
初始条件:032==θθ。
仿真以2ω为输入,计算3ω和1r,仿真时间0.5s 。
2、个人理解:本实验是对运动进行仿真,根据滑块的运动演示连杆的运动过程。
首先,建立两杆和滑块位置间的数学关系,计算出运动方程;其次,运用matlab 动画功能,对给定的2ω值进行运动仿真;最后,建立友好的界面,方便用户改变2ω,显示3ω和运行动画。
第二部分:试题建模由几何关系可得:两边求导数可得:即得2θ=w2*t; 3θ =arcsin(r2*sin(2θ )/r3);w3=r2/r3*w2*cos(2θ )./cos(3θ );第三部分:程序实现1、程序模块:2、程序流程:特色在于:随动画同时输出的w3值为动画运行到当前位置时的转动角速度。
并可以多次设定w2值,进行波形比较。
2、程序代码:w2 = str2double(get(handles.w2input,'string'));if w2~=0 %判断用户是否输入w2%如果w2被赋值,则进行变量初始化t=0;dt=0.01;r2=0.1;r3=0.4;x0=0.1;y0=0;x1=0.5;y1=0;%在图形显示框axes_d中进行固定图形的绘画axes(handles.axes_d)%画三角支架plot(0,-0.03,'color',[0.5,0.5,0.5],'linestyle','^',...'linewidth',10);hold onplot(0,0,'color',[0.4,0.4,0.4],'linestyle','.',...'markersize',40);%画r3转动轨迹圆m=[0:0.01:2*pi];plot(0.1*cos(m),0.1*sin(m),'color',[0.6,0.8,0.8],'linestyle','.',...'markersize',5);%画水平线plot([-0.2;0.6],[-0.05;-0.05],'color','b','linestyle','--',...'linewidth',1);%画支点等高线plot([-0.2;0.7],[0;0],'color','b','linestyle','--',...'linewidth',1);%设置坐标范围axis([-0.15,0.7,-0.41,0.41]);%不显示坐标轴%axis('off');%创建杆间连接点point=line(x0,y0,'color','k','linestyle','.',...'markersize',30);%创建连接点水平指示线zhishi=line([x0-0.1;x0+0.1],[y0;y0],'color','b','linestyle','--',...'linewidth',2);%创建杆r2body2=line([0;x0],[0;y0],'color',[0.2,0.25,0.25],'linestyle','-',...'linewidth',5);%创建杆r3body3=line([x0;x1],[y0;y1],'color',[0.2,0.25,0.25],'linestyle','-',...'linewidth',5);%创建活塞huosai1=line([x1+0.01;x1+0.15],[y1;y1],'color','b','linestyle','-',...'linewidth',28);%创建活塞连接点huosaidian=line(x1+0.01,y1,'color','k','linestyle','.',...'markersize',40);%创建汽缸qigang1=line([0.651;0.651],[-0.05;0.05],'color',[0.5,0.5,0.5],'linestyle','-',.. .'linewidth',5);qigang2=line([0.3;0.655],[0.056;0.056],'color',[0.5,0.5,0.5],'linestyle','-',...'linewidth',5);qigang3=line([0.3;0.655],[-0.056;-0.056],'color',[0.5,0.5,0.5],'linestyle','-', ...'linewidth',5);set(handles.axes_w3,'XMinorTick','on')%进行动画过程while t<4t=t+dt;a2=w2*t;a3=asin(r2*sin(a2)/r3);w3=r2/r3*w2*cos(a2)./cos(a3);r2=0.1;x0a=r2*cos(a2);y0a=r2*sin(a2);x1a=x0a+r3*cos(a3);y1a=0;x=x0a;y=y0a;%在图形显示框axes_d中进行图形的刷新axes(handles.axes_d)%重绘杆r2set(body2,'xdata',[0;x0a],'ydata',[0;y0a]);%重绘杆r3set(body3,'xdata',[x0a;x1a],'ydata',[y0a;y1a]);%重绘杆活塞set(huosai1,'xdata',[x1a+0.01;x1a+0.15],'ydata',[y1a;y1a]); %重绘活塞连接点set(huosaidian,'xdata',x1a+0.01,'ydata',y1a);%重绘杆连接点set(point,'xdata',x0a,'ydata',y0a);%重绘指示线set(zhishi,'xdata',[x0a-0.1;x0a+0.1],'ydata',[y0a;y0a]);set(handles.axes_d,'XMinorTick','on')%输出实时w3的值set(handles.w3_output,'string',num2str(w3));%在图形显示框axes_w3中绘制w3的实时波形axes(handles.axes_w3)%设置坐标轴axis([0,4,-w2/4-0.1,w2/4+0.1]);hold onplot(t,w3,'color','k','linestyle','.',...'markersize',5);set(handles.axes_w3,'XMinorTick','on')drawnow;endw2=0;end第四部分:GUI界面规划1、控件组成:1.面板(1个):作为背景。
基于MATLAB曲柄滑块机构的运动学分析张欣悦;李连豪;王涛【期刊名称】《农机使用与维修》【年(卷),期】2012(000)004【摘要】MATLAB Motion Simulation is a technology to analysis mechamcal motion parameters oevel- oped with the help of computer technology and MATLAB software technology platform. Formerly thecalcu- late of analytical method based on C language and VB language, their instructs tedious, sentences struc- ture is complex, then MATLAB program language is easier to manipulate. In this paper a slider - crank mechanism as an example, analysed it by means of MATLAB Motion Simulation, Through its visual func- tion tried to express slider- crank mechanismg motion parameters in a picture way.%MATLAB运动仿真技术是借助计算机技术和MATLAB软件技术平台发展起来的一种分析机械运动参数的技术。
以往解析法的计算主要依靠V语言或VB语言,这些语言指令繁琐,语句结构复杂,而MATLAB程序语言简洁更易操作。
因此,本文就是以曲柄滑块机构为例,借助MATLAB运动仿真技术对其进行分析,试图通过其可视化功能将曲柄滑块机构的运动参数用图像的方式表达出来。
matlab曲柄滑块机构课程设计一、课程目标知识目标:1. 理解并掌握曲柄滑块机构的基本原理与运动特性;2. 学会使用MATLAB软件进行曲柄滑块机构的运动仿真;3. 掌握运用MATLAB分析曲柄滑块机构的运动数据及性能参数。
技能目标:1. 能够运用所学知识,设计简单的曲柄滑块机构;2. 熟练操作MATLAB软件,进行曲柄滑块机构的运动分析与仿真;3. 能够通过MATLAB处理数据,优化曲柄滑块机构的设计。
情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与表达能力;2. 激发学生探索科学、技术问题的兴趣,培养创新意识和实践能力;3. 增强学生对机械工程领域的认识和热爱,提高专业认同感。
课程性质:本课程为机械工程专业课程设计,旨在通过实践操作,使学生掌握曲柄滑块机构的设计与分析方法。
学生特点:学生已具备一定的机械原理、力学和MATLAB基础,具有较强的动手能力和学习兴趣。
教学要求:结合实际工程案例,以实践为主,注重培养学生的实际操作能力、分析问题和解决问题的能力。
通过课程学习,使学生能够独立完成曲柄滑块机构的设计与分析任务。
二、教学内容1. 曲柄滑块机构原理及运动特性分析:- 曲柄滑块机构基本组成与工作原理- 曲柄滑块机构的运动学分析- 运动方程的建立及求解2. MATLAB软件在曲柄滑块机构中的应用:- MATLAB软件的基本操作与常用函数- MATLAB曲线拟合、数值计算等功能在曲柄滑块机构分析中的应用- MATLAB/Simulink环境下曲柄滑块机构的运动仿真3. 曲柄滑块机构设计及优化:- 设计原则与步骤- 参数化设计方法- 基于MATLAB的曲柄滑块机构设计优化4. 实践操作与案例分析:- 实际工程案例介绍与分析- 曲柄滑块机构设计及运动分析的实践操作- 数据处理与结果分析教学内容安排与进度:1. 第一周:曲柄滑块机构原理及运动特性分析2. 第二周:MATLAB软件在曲柄滑块机构中的应用3. 第三周:曲柄滑块机构设计及优化4. 第四周:实践操作与案例分析教材章节:1. 《机械原理》中曲柄滑块机构相关章节2. 《MATLAB基础与应用》中相关章节3. 《机械设计》中机构设计及优化相关章节教学内容注重理论与实践相结合,通过系统性的教学,使学生掌握曲柄滑块机构的设计与分析方法,并能够运用MATLAB软件进行实际操作。
Matlab曲柄滑块仿真程序代码随着科学技术的不断发展,计算机仿真在工程设计和研究中扮演着越来越重要的角色。
Matlab作为一种强大的科学计算软件,被广泛应用于工程仿真领域。
曲柄滑块机构是机械工程中常见的一种机构,其运动特性对于设计和分析而言至关重要。
编写Matlab曲柄滑块仿真程序代码,对于工程师和研究人员来说具有重要意义。
本文将对Matlab曲柄滑块仿真程序代码进行详细介绍,包括代码设计思路和程序实现细节等方面。
一、代码设计思路1. 确定曲柄滑块机构的运动方程曲柄滑块机构是由连杆、曲柄和滑块组成的一种机械结构,其运动特性可以通过连杆的运动方程来描述。
通过建立曲柄滑块机构的运动模型,可以确定滑块的位移、速度和加速度等运动特性。
2. 构建Matlab仿真模型基于曲柄滑块机构的运动方程,可以使用Matlab软件进行仿真模拟。
在Matlab中,可以通过编写相应的程序代码,构建曲柄滑块机构的仿真模型,并对其运动特性进行分析和可视化展示。
二、程序实现细节以下是一个简单的Matlab曲柄滑块仿真程序代码示例,代码中包括了曲柄滑块机构的运动方程和仿真模型的构建过程。
```matlab曲柄滑块仿真程序代码示例定义曲柄滑块机构的参数L = 1; 连杆长度r = 0.2; 曲柄半径theta = linspace(0,2*pi,100); 曲柄角度范围omega = 2; 曲柄角速度计算滑块的运动轨迹for i = 1:length(theta)x(i) = r*cos(theta(i)) + sqrt(L^2 - r^2*sin(theta(i))^2);y(i) = r*sin(theta(i)) - sqrt(L^2 - r^2*sin(theta(i))^2);end绘制曲柄滑块机构的运动轨迹figureplot(x,y)xlabel('x')ylabel('y')title('曲柄滑块机构的运动轨迹')计算滑块的速度和加速度vx = diff(x);vy = diff(y);v = sqrt(vx.^2 + vy.^2);a = diff(v);绘制滑块的速度和加速度曲线figuresubplot(2,1,1)plot(v)xlabel('时间')ylabel('速度')title('滑块的速度')subplot(2,1,2)plot(a)xlabel('时间')ylabel('加速度')title('滑块的加速度')```以上代码示例中,首先定义了曲柄滑块机构的参数,包括连杆长度、曲柄半径、曲柄角度范围和曲柄角速度等。
代码实例[anim_zzy1.m]function f=anim_zzy1(K,ki)% anim_zzy1.m 演示红色小球沿一条封闭螺线运动的实时动画% 仅演示实时动画的调用格式为anim_zzy1(K) % 既演示实时动画又拍摄照片的调用格式为f=anim_zzy1(K,ki)% K 红球运动的循环数(不小于1 )% ki指定拍摄照片的瞬间,取1 到1034 间的任意整数。
% f 存储拍摄的照片数据,可用image(f.cdata) 观察照片。
% 产生封闭的运动轨线t1=(0:1000)/1000*10*pi;x1=cos(t1);y1=sin(t1);z1=-t1;t2=(0:10)/10;x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2));t3=t2;z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3;t4=t2;x4=t4;y4=zeros(size(x4));z4=y4;x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];plot3(x,y,z, 'b' ), axis off % 绘制曲线% 定义" 线" 色、" 点" 型(点)、点的大小(40 )、擦除方式(xor) h=line( 'Color' ,[1 0 0], 'Marker' , '.' , 'MarkerSize' ,40, 'EraseMode' , 'xor' );% 使小球运动n=length(x);i=1;j=1;while 1 % 无穷循环set(h, 'xdata' ,x(i), 'ydata' ,y(i), 'zdata' ,z(i)); % 小球位置drawnow; % 刷新屏幕<21>pause(0.0005) % 控制球速<22>i=i+1;ifnargin==2 &nargout==1 % 仅当输入宗量为2 、输出宗量为1 时,才拍摄照片if (i==ki&j==1);f=getframe(gcf); end % 拍摄i=ki时的照片<25>endif i>ni=1;j=j+1;if j>K; break ; endendend(2)在指令窗中运行以下指令,就可看到实时动画图形。
《系统仿真与matlab》综合试题题目:曲柄滑块机构的运动学仿真编号:21难度系数:姓名班级学号联系方式成绩《系统仿真与matlab》综合试题 (1)一、引言 (3)二、运动学分析 (3)1、实例题目 (3)2、运动分析 (3)三、MATLAB程序编写 (5)四、使用指南和实例仿真 (8)五、结语 (10)一、引言曲柄滑块机构是指用曲柄和滑块来实现转动和移动相互转换的平面连杆机构,也称曲柄连杆机构。
曲柄滑块机构广泛应用于往复活塞式发动机、压缩机、冲床等的主机构中,把往复移动转换为不整周或整周的回转运动;压缩机、冲床以曲柄为主动件,把整周转动转换为往复移动。
这里使用运动学知识,对其运动进行解析,并用MATLAB为其设计仿真模块。
二、运动学分析1、实例题目对图示单缸四冲程发动机中常见的曲柄滑块机构进行运动学仿真。
已知连杆长度:m r 1.02=,m r 4.03=,连杆的转速:22θω =,33θω =,设曲柄r 2以匀速旋转,s r / 502=ω。
初始条件:032==θθ。
仿真以2ω为输入,计算3ω和1r,仿真时间0.5s 。
2、运动分析建立封闭矢量方程:r2+r3=r1 (9)将(9)式分解到x与y轴坐标上,得到:r2cosθ2+r3cosθ3=r1r2sinθ2+r3sinθ3=0 (10) 可得:r1=r2cosθ2+r3cosθ3θ3=-arcsin(r2/r3) (11) 对(10)式对时间求导得:-r2ω2sinθ2+r3ω3sinθ3=v1r2ω2cosθ2+ r3ω3cosθ3=0(12) 将上式用矩阵形式表示,令:A=[ r3sinθ3 1-r3cosθ30]X=[ ω3v1]B=[-r2ω2sinθ2r2ω2cosθ2]则(12)可表示为:AX=B。
(13)从而可解出ω3与v1。
三、MATLAB程序编写源代码如下:function varargout = z1(varargin)% Z1 MATLAB code for z1.fig% Z1, by itself, creates a new Z1 or raises the existing% singleton*.%% H = Z1 returns the handle to a new Z1 or the handle to% the existing singleton*.%% Z1('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in Z1.M with the given input arguments.%% Z1('Property','Value',...) creates a new Z1 or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before z1_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to z1_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help z1% Last Modified by GUIDE v2.5 29-Dec-2016 22:57:13% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @z1_OpeningFcn, ...'gui_OutputFcn', @z1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before z1 is made visible.function z1_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to z1 (see VARARGIN)% Choose default command line output for z1handles.output = hObject;% Update handles structureguidata(hObject, handles);axes(handles.axes3)map1=imread('1.bmp');imshow(map1)% UIWAIT makes z1 wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = z1_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;% --- Executes on button press in pushbuttonRun.function pushbuttonRun_Callback(hObject, eventdata, handles)%主要计算程序r2=0.1;%单位mr3=0.4;%单位momiga2=str2double(get(handles.edit1,'String'));; %单位rad/sx11=1:500 %单位msfor i=1:500theta2(i)=i*omiga2/1000;theta3(i)=asin(-r2/r3*sin(theta2(i)));B=[-r2*omiga2*sin(theta2(i));r2*omiga2*cos(theta2(i))];A=[r3*sin(theta3(i)) 1;-r3*cos(theta3(i)) 0];X=inv(A)*B;omiga3(i)=X(1,1);v3(i)=X(2,1);endaxes(handles.axes1) %制表1plot(x11/1000,omiga3);xlabel('时间(t/s)')ylabel('连杆角速度ω3(rad/s)')axes(handles.axes2) %制表2plot(x11/1000,v3);xlabel('时间(t/s)')ylabel('滑块速度v1(m/s)')% hObject handle to pushbuttonRun (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit1 as text% str2double(get(hObject,'String')) returns contents of edit1 as a double% --- Executes during object creation, after setting all properties.function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbuttonExit.function pushbuttonExit_Callback(hObject, eventdata, handles)ss=questdlg('确认退出?','退出信息窗口!','继续仿真!','退出仿真!','退出仿真!'); switch sscase '退出仿真!'delete(handles.figure1);end% hObject handle to pushbuttonExit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)四、使用指南和实例仿真进入MATLAB软件,打开并运行程序。