matlab曲柄滑块机构的运动学仿真.docx
《matlab曲柄滑块机构的运动学仿真.docx》由会员分享,可在线阅读,更多相关《matlab曲柄滑块机构的运动学仿真.docx(10页珍藏版)》请在冰豆网上搜索。
matlab曲柄滑块机构的运动学仿真
matlab曲柄滑块机构的运动学仿真
《系统仿真与matlab》综合试题
题目:
曲柄滑块机构的运动学仿真
编号:
21
难度系数:
姓名
班级
学号
联系方式
成绩
r2+r3=r1 (9)
将(9)式分解到x与y轴坐标上,得到:
r2cosθ2+r3cosθ3=r1
r2sinθ2+r3sinθ3=0 (10)
可得:
r1=r2cosθ2+r3cosθ3
θ3=-arcsin(r2/r3) (11)
对(10)式对时间求导得:
-r2ω2sinθ2+r3ω3sinθ3=v1
r2ω2cosθ2+r3ω3cosθ3=0(12)
将上式用矩阵形式表示,令:
A=[r3sinθ31
-r3cosθ30]
X=[ω3
v1]
B=[-r2ω2sinθ2
r2ω2cosθ2]
则(12)可表示为:
AX=B。
(13)
从而可解出ω3与v1。
三、MATLAB程序编写
源代码如下:
functionvarargout=z1(varargin)
%Z1MATLABcodeforz1.fig
%Z1,byitself,createsanewZ1orraisestheexisting
%singleton*.
%
%H=Z1returnsthehandletoanewZ1orthehandleto
%theexistingsingleton*.
%
%Z1('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinZ1.Mwiththegiveninputarguments.
%
%Z1('Property','Value',...)createsanewZ1orraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforez1_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtoz1_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpz1
%LastModifiedbyGUIDEv2.529-Dec-201622:
57:
13
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@z1_OpeningFcn,...
'gui_OutputFcn',@z1_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforez1ismadevisible.
functionz1_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstoz1(seeVARARGIN)
%Choosedefaultcommandlineoutputforz1
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
axes(handles.axes3)
map1=imread('1.bmp');
imshow(map1)
%UIWAITmakesz1waitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=z1_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%---ExecutesonbuttonpressinpushbuttonRun.
functionpushbuttonRun_Callback(hObject,eventdata,handles)
%主要计算程序
r2=0.1;%单位m
r3=0.4;%单位m
omiga2=str2double(get(handles.edit1,'String'));;%单位rad/s
x11=1:
500%单位ms
fori=1:
500
theta2(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);
end
axes(handles.axes1)%制表1
plot(x11/1000,omiga3);
xlabel('时间(t/s)')
ylabel('连杆角速度ω3(rad/s)')
axes(handles.axes2)%制表2
plot(x11/1000,v3);
xlabel('时间(t/s)')
ylabel('滑块速度v1(m/s)')
%hObjecthandletopushbuttonRun(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
functionedit1_Callback(hObject,eventdata,handles)
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Hints:
get(hObject,'String')returnscontentsofedit1astext
%str2double(get(hObject,'String'))returnscontentsofedit1asadouble
%---Executesduringobjectcreation,aftersettingallproperties.
functionedit1_CreateFcn(hObject,eventdata,handles)
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%Hint:
editcontrolsusuallyhaveawhitebackgroundonWindows.
%SeeISPCandCOMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%---ExecutesonbuttonpressinpushbuttonExit.
functionpushbuttonExit_Callback(hObject,eventdata,handles)
ss=questdlg('确认退出?
','退出信息窗口!
','继续仿真!
','退出仿真!
','退出仿真!
');
switchss
case'退出仿真!
'
delete(handles.figure1);
end
%hObjecthandletopushbuttonExit(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
四、使用指南和实例仿真
进入MATLAB软件,打开并运行程序。
初始界面:
对ω2的值进行修改,修改为实例中的50*2*pi=314.16,点击开始仿真按钮,得到仿真结果:
点击退出仿真按钮,进入退出界面:
点击继续仿真按钮,则回到程序界面;点击退出仿真按钮,则退出程序。
五、结语
由四,通过MATLAB仿真得到的结果与实际情况符合。
通过该次作业,我了解并初步掌握了MATLAB的语言编写和guide界面的使用,巩固并加深了对课上知识的理解,受益良多。