matlab四连杆 带代码
基于MATLAB的平面四连杆机构运动学分析

一、课程设计内容及要求:1.对连杆机构运动工作原理及运动参数有一定理解2.掌握MATLAB基本命令3.了解MATLAB编程的基本知识,并能编写简单M文件4.了解MATLAB图形界面设计的基本知识5.课程设计说明书:应阐述整个课程设计内容,要突出重点和特色,图文并茂,文字通畅。
应有目录、摘要及关键词、正文、参考文献等内容,字数一般不少于6000字。
二、主要参考资料有关复杂刀具参数计算及结构设计、机械制造工艺与设备的手册与图册。
三、课程设计进度安排指导教师(签名):时间:教研室主任(签名):时间:院长(签名):时间:目录1平面连杆机构的运动分析 (1)1.1机构运动分析的任务、目的和方法 (1)1.2机构的工作原理 (1)1.3机构的数学模型的建立 (1)1.3.1建立机构的闭环矢量位置方程 (1)1.3.2求解方法 (2)2 基于MATLAB程序设计 (4)2.1程序流程图 (4)2.2 M文件编写 (6)2.3程序运行结果输出 (7)3基于MATLAB图形界面设计 (11)3.1界面设计 (11)3.2代码设计 (12)4 小结 (17)参考文献 (18)1 平面连杆机构的运动分析1.1 机构运动分析的任务、目的和方法曲柄摇杆机构是平面连杆机构中最基本的由转动副组成的四杆机构,它可以用来实现转动和摆动之间运动形式的转换或传递动力。
对四杆机构进行运动分析的意义是:在机构尺寸参数已知的情况下,假定主动件(曲柄)做匀速转动,撇开力的作用,仅从运动几何关系上分析从动件(连杆、摇杆)的角位移、角速度、角加速度等运动参数的变化情况。
还可以根据机构闭环矢量方程计算从动件的位移偏差。
上述这些内容,无论是设计新的机械,还是为了了解现有机械的运动性能,都是十分必要的,而且它还是研究机械运动性能和动力性能提供必要的依据。
机构运动分析的方法很多,主要有图解法和解析法。
当需要简捷直观地了解机构的某个或某几个位置的运动特性时,采用图解法比较方便,而且精度也能满足实际问题的要求。
基于MATLAB的四杆机构运动分析

石河子大学毕业设计(论文)题目:基于MATLAB的四杆机构运动分析与动画模拟系统院(系):机械电气工程学院专业:机械设计制造及其自动化学号: 2002071189姓名: 娄元建指导教师:葛建兵完成日期:二零零六年五月基于MATLAB的四杆机构运动分析与动画模拟系统[摘要] 本文介绍MATLAB开发机构运动分析和动画模拟系统的方法,并且利用MATLAB软件实现平面四杆机构的运动仿真。
以MATLAB程序设计语言为平台,将参数化设计与交互式相结合,设计出四杆机构仿真系统,能够实现四杆机构的参数化设计,并且能够进行机构的速度和加速度分析。
系统具有方便用户的良好界面,并给出界面设计程序,从而使机构分析更加方便、快捷、直观和形象,设计者只需输几参数就可得到仿真结果,为平面四杆机构的设计与分析提供一条便捷的途径。
[关键词] 机构;运动分析;动画模拟;仿真;参数化;MATLABAbstract:The kinematical analysis and animation method of the mechanism using MATLAB was discussed in the paper , and the kinematic simulation of planar four-bar mechanism with software MATLAB . And emulational system was developed , the system adopted Matlab as a design , It combined parametic design with interactive design and had good interface for user , that can realize parametic design of four-bar mechanism , also to make real speed and acceleration of mechanism 。
Matlab求解理论力学问题系列(二)典型机构的运动分析

—血內 sin(pi — «3^2 sin 巾 一QiS sin 0 = 0 ]
恋91 COS0 +COS02 + 如30 COS0 = 0
〉(5) j
由于0,0,02已在前面求出,因此得到关于內,02 的一组线性方程组。类似X=inv(A)*B可解出角速 度,从而可以获得角速度随时间或随6变化的关系 (图 5)。
步骤(4):类似一元函数的泰勒展开式,= f(xo) + f'(xo){x — X0) + o(x — ®0)> 多兀函数为
fi(x) = f,(x*) + J(x*)dx + o(dx)
1 Matlab中非线性方程的求解及动画演示
案例1:如图1,已知四连杆机构ABCD, AB 杆长为如,BC杆长为a2, CD杆长为a3, AD距离 为cm。若AB杆以匀角速度5转动,初始d0 = Oo 求BC和CD杆的角度、角速度变化规律。
编程计算得到角度的变化关系后,可以算出任 意时刻各较的位置,以及BC杆上不同点的运动轨 迹(图3):很明显B点轨迹是圆,C点轨迹是圆的 一部分(AB杆大范围运动时,CD杆只在小范围运 动),而在BC杆上不同的点轨迹就很复杂了。
各较点的位置并连接起来,就得到了四连杆机构在 某一时刻的图象,延迟一定的时间后再画出下一时 刻的图象,就形成了动画。本问题中动画的源代码 见图4,其中plot函数表示画线段;hl是句柄,定义
ai COS & + Q2 COS 01 + Q3 COS(P2 — «4 = 0 1 ⑴
ai sin 9 + 恋 sin 休 + sin 0 = 0
J
方程(1)是关于转角0和02的非线性方程组,通 常没有解析解,下面给出一般的处理方法。
基于MATLAB空间四连杆引纬机构运动仿真

基于MATLAB空间四连杆引纬机构运动仿真徐永康;张雷【摘要】In order to analyze kinematics characteristics of apace four bar linkage weft insertion mechanism, this paper built mathematical models of every parts of the mechanism with algebra analytical method to obtain motion curve through MATLAB programming, as well as studied of quantitative analysis the influence of movement law induced by the change of rotate speed and crank length. The results show that the motion characteristics curve can meet the weft inserting requirements, and it is feasible to optimize motion curve via adjusting the rotate speed and crank length. [Ch,9 fig. 2 tab. 9 ref. ]%为了分析探讨剑杆织机空间四连杆引纬机构参数变化对其运动学特性的影响,通过代数解析的方法建立了该机构各部分数学模型,编制了MATLAB程序对其进行运动仿真,得出了运动特性曲线,同时定量分析了转速和曲柄长度变化对引纬机构运动规律的影响.分析结果表明,所得的运动特性曲线符合所需引纬要求,可以通过调节转速和曲柄长度优化运动规律曲线.【期刊名称】《轻工机械》【年(卷),期】2012(030)003【总页数】5页(P17-21)【关键词】剑杆织机;空间引纬机构;MATLAB;仿真分析;运动规律【作者】徐永康;张雷【作者单位】浙江理工大学机控学院,浙江杭州310018;浙江理工大学机控学院,浙江杭州310018【正文语种】中文【中图分类】TH112.1;TS103.1340 引言无梭织机代替有梭织机已经成为不可逆转的大趋势。
一、MATLAB之基础入门代码

⼀、MATLAB之基础⼊门代码序⾔本篇旨在列出matlab⼊门及在科研中必须掌握的⼀些基础代码,主要内容包括:matkab矩阵运算、绘图、函数流程控制、⽂件、图像、函数等基本操作,以便于随查随⽤,⾄于常⽤的算法本篇鲜有涉及。
%% matlab总述% matlab中基本数据结构是矩阵,即使单独⼀个数也视为⼀个1*1的矩阵%%%% 矩阵创建&赋值操作a=5;b=[1 2 3];c=[1;2;3];d=[1 2 3;4 5 6;7 8 9];x=[0:0.5:2]; % 0.5是步长x=zeros(4); % 4*4零矩阵x=zeros(2,3);% 2*3零矩阵x=ones(5,5); % 1矩阵x=eye(5); % 5阶单位阵,与Octave语法完全⼀致[r,c]=size(x); % 返回x矩阵的⼤⼩x=linspace(0,3,5); % 0到3间均匀⽣成5个点,⽣成函数的采样点[x,y,z]=meshgrid([],[],[]); % ⽤以⽣成函数的采样点%%%% matlab中的保留字piInf % ⽆穷⼤NaN % 未定式,0/0%%%% 数组计算a=a+b;a=a-b;% 数组加减a=b*c;a=b*inv(x)% 数组乘除 inversea=b.*c; % 对应位操作./ .* .^a=a';a=a(:);% 数组拉直%%%% 数组索引与操作% 括号是索引符号,如([],[])x=a(2,2);x=a(5);x=a(1:2,3:4); %([],[])x(x>72)=x(x>72)-72 % 数组的逻辑索引,x>72⾃⾝就是⼀个0/1⼆维数组,x(x>72)就是访问对应为1位置处的值% 数组赋值/改值a(2,2)=0a(5)=9a(1:2,3:4)=ones(2,2)a(1:2,[3,4,7,11])=ones(2,2) % matlab中[1:9],1:9是基本数据类型%%%% 数组的⽐较和逻辑运算,符合条件的同⼀位置为1,不符合则为0x=[1 2 3 4 5 6 7];y=[1 2 4 5 5 6 8];eq=(x==y); %上⾯说过了,x==y⾃⾝也是⼀个0/1⼆维数组eq=(x>2)&(y<5); % 与 &两边既可以是标量也可以是向量 VS. &&两边只能是标量eq=(x>2)|(y<5); % 或eq=xor(x>4,y<5); % 异或x(x<3)=-1; % (x<3)是⼀个0/1数组,x(x<3)就是把(x<3)数组中1对应位置的位置访问,再将访问到的位置赋值1,⽐较和逻辑运算与数组索引结合xy=[x,y]; xy=[x;y]; % ⽤已有数组构建新数组,数组融合img=cat(3,R,G,B); % ⾼级数组融合xy(:,xy(1,:)<4)=0 %逻辑运算结果矩阵也可以⽤来数组索引%%%% 数组操作函数x=[1 2 3;4 5 6;7 8 9];x=flipud(x);%上下转x=fliplr(x);%左右转x=rot90(x);%逆时针旋转90度x=pinv(x);%数组求(伪)逆sum(x,1); % x每列求和sum(x,2); % x每⾏求和sum(x(:)); % 求全和,:表⽰将数组拉直maxn=max(x);% 返回每列最⼤值maxn=max(x);% 返回每列最⼤值maxn=max(x(:)); % 返回全局最⼤值min(); % ⽤法同max()%%%% 常⽤数学函数% 注意matlab中矩阵是基本数据结构,因此所有函数都是对矩阵中每个x_i操作y=sin(x);y=abs(x);%绝对值y=sqrt(x);%开⽅y=ceil(x);%向上取整y=floor(x);%向上取整y=round(x);%四舍五⼊取整y=rand(r,c);%⽣成随机矩阵b=sum(a,idm);%求和函数,dim=1 表⽰对每⼀列求和,dim=2 表⽰对每⼀⾏求和tabulate(detect_result)% detect_result是⼀个列向量,该函数⽤以频数、频率统计%%%% MATLAB函数基本语句for i=1:2:100 %endwhile 1if a<1breakendendfunction [output1,]=functionname(input1,) % 函数定义command1command2output1=%%%% 基本绘图%plotx=0:0.001*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,'-ob','LineWidth',1.5) % 标出数据点的折线图hold onplot(x,z,'rs') % 散点图drawnow % 动画图xlabel('x')ylabel('y')title('图')axis equal % 两轴单位长度相等axis([-2,2,-2,2]) % 控制坐标轴范围set(gca,'XTick',0:pi/2:4*pi); % 设置坐标轴刻度间距,⼀般与下⼀⾏命令搭配set(gca,'XTickLabel',{'0','0.5*pi','pi','1.5*pi','2*pi','2.5*pi','3*pi','3.5*pi','4*pi'})% 设置坐标轴刻度标号xlim([-2,2]) % 控制坐标轴范围text(0,0,'(0,0)') % 在数据曲线上点(x,y)处,标出'(3,5)'legend('cos(x)','sin(x)','sin(x)-cos(x)') % 依照绘图的顺序依次标注图例saveas(gcf,strcat('ch',num2str(i),'.emf')) % 保存plot图⽚,gcf是plot的句柄plot(X)%绘制⼆维矩阵,以⾏号为横坐标,各列为纵坐标plot(X);% plot制作动图for k=1:10plot (fft(eye(k+10))) % eye()单位阵,fft()傅⾥叶变换,plot()绘制矩阵axis equalM(k)=getframe; % 截取当前窗⼝作为影⽚帧endmovie(M,50) %播放多帧图⽚,M 50次%极坐标plar(theta,r,LineSpec)t=0:0.1:3*pi;polar(t,abs(cos(5*t)));% 快速⽅程绘图fplot('x-cos(x^2)',[-4,4]);% 绘制y=x-cos(x^2)ezplot('y-f(x),[-6 6 -8 8]');% ezplot('⽅程式',[xmin xmax ymin ymax])ezplot('cos(3*t)','sin(3*t)',[0:2*pi]);% ezplot('x参数式','y参数式',[tmin,tmax])%%%% 参数⽅程作图(可以画出很有趣的⾮函数图像)t=0:pi/50:2*pi;x=sin(t);y=cos(t);plot(x,y)axis([-1.1,1.1,-1.1,1.1])axis equal%%%%x=sin(t)y=cos(t)z=tplot3(x,y,z) % 三维曲线参数⽅程作图grid on % 开⽹格%%%%三维曲⾯[x,y]=meshgrid(-pi:0.1:pi); % 画函数采样点z=sin(x).*cos(y);mesh(x,y,z) % 画三维曲⾯figure() % 开新画板surf(x,y,z) % 画中间插值的三维曲⾯(有渲染效果)%%%% ⽂件数据读取% .txt纯数据⽂件⽂件data=load('c:\desktop\score.txt')% .txt⽂本⽂件fid=fopen('score.txt','r')line1=fgetl(fid)%数据按分割%数据类型转换line2=fgetl(fid)fclose(fid);fid=fopen('score.txt','w')fprintf(fid,'会当凌绝顶’)fprintf(fid,'%d⽉⼯资 %6.1f\n',[1,2,3,4;20000,19999,20010,25000,23000])fclose(fid);% excel⽂件data=xlsread('filename.xls','Sheet1','A3:C6');data(isnan(data))=0;%空位补零xlswrite('filename.xls',{'t','w'},'Sheet1','B1:C1')%图⽚⽂件img=imread('leave.jpg')% 图⽚读取image(img) % 图⽚显⽰lip(234:435,112:300,:)%图⽚切⽚imshow(lip) % 图⽚显⽰imwrite(img,'c:\\desktop\\figure.emf')% UI交互式导⼊图⽚[FileName PathName FilterIndex]=uigetfile({'*.jpg','*.bmf'},'请导⼊图⽚','*.jpg','MultiSelect','on') if ~ FilterIndexreturnend%视频⽂件data=VideoReader('sport.avi')% data是⼀结构体frame=read(data,25)% 读取视屏中的某⼀帧,即图⽚imshow(frame)% 对视频处理就是循环处理每⼀帧%%%% 线性⽅程求解、拟合、回归x=A\B%⼀元线性拟合x=[2.410 2.468 2.529 2.571 2.618 2.662 2.715 2.747 2.907 2.959 2.997];y=[0 0.800 1.695 2.290 2.965 3.595 4.365 4.810 7.125 7.890 8.425];a=polyfit(x,y,1)%⼀阶拟合 y=a1 x+ a2y=polyval(a,x) % 获得拟合表达式%⾃定义拟合p=fittype('a*x+b*sin(x)+c');% 指定拟合模型f=fit(x,y,p)% 获得拟合函数,x和y必须为列向量plot(f,x,y)% 画出拟合图%差值 x=[1:10] y=[1:10],线性回归求xi对应的yiyi=interp1(x,y,xi,'linear');%线性回归 y=f(x1,x2,x3)%%%%微分⽅程求解%解析解syms y(x);ode=diff(y,x)-y==0;init=y(0)==1;dsolve(ode,init)%dsolve('D2y+4*Dy+24*y=0','y(0)=0,Dy(0)=15','x')%尤克—库塔数值解%%% 符号对象的创建,matlab中之前都是数值计算,这⾥是符号运算a=sym([1/2 sqrt(5)]);y=sym('2*sin(x)*cos(x)');y=simple(y);syms x y;z=cos(x)*sin(y);% 符号表达式及函数的创建, matlab默认是数值运算,符号运算需要提前声明。
MATLAB在力学机械中的应用举例(课件PPT)

wx=diff(vx)./dt(1:Ldt-1);wy=diff(vy)./dt(1:Ldt-1); %二次导数
[t(2:Ldt),x(2:Ldt),y(2:Ldt),wx,wy]
%显示数据
10
子程序ex713f
函数程序应另存成一个文件ex713f.m function zprime=ex713f(t,z) global vt vm zprime=[0;0]; % 给出t0之前zprime初值 zprime(1)=-vt-vm*z(1)/sqrt(z(1)^2+z(2)^2); zprime(2)=-vm*z(2)/sqrt(z(1)^2+z(2)^2); %上面两句可换成一个矩阵语句: zprime=-vt*[1;0]-vm*z/sqrt(z(1)^2+z(2)^2);
5
线性数学模型
对杆件1:ΣX=0 Nax + Ncx = 0 ΣY=0 Nay + Ncy - G1 = 0; ΣM=0 Ncy*L1*cos(theta1)-Ncx*L1*sin(theta1)-…
G1*L1/2*cos(theta1)=0; 对杆件2: ΣX=0 Nbx - Ncx = 0; ΣY=0 Nby - Ncy - G2 = 0; ΣM=0 Ncy*L2*cos(theta2)+ …
从而 w3 = L1w1cos(π/2-θ1+θ2)/ (L3cos(θ3-π/2-θ2)) 由杆2两端点a和b的速度沿杆长垂直方向的分量之差,可以求
出杆2的角速度. w2 = (-(L3sin(θ3-π/2-θ2))- L1w1sin(π/2-θ1+θ2))/L2 2. 求运动全过程的角位置,角速度,角加速度曲线,这只有借助 于计算工具才能做到,因为用手工算一个点就不胜其烦, 算 几十个点是很难想象的.而由MATLAB编程调用fzero函数时, 要求给出一个近似猜测值,若连续算几十点,前一个解就可 作为后一个解的猜测值,所以反而带来了方便. 这样,本书将提供两个程序ex714a.m和ex714b.m来表述这两种 方法,它们所要调用的函数程序命名为ex714f.m.
基于MATLAB的平面四连杆机构运动仿真.

图2~4分别为θ4角速度、点C的速度变化曲线。
4结论
本文在复数向量坐标系中推导了四连杆机构运动方程,并应用MATLAB软件进行了连杆机构运动数值仿真。从计算结果可以看出,该方法可以方便快捷地得到连杆运动参数,能够有效提高分析效率和计算精度,可进一步推广到多连杆机构设计及优化计算中。
文章编号:1009-9492(201104-0051-02
引言
四连杆机构因其结构灵活、能够传递动力并有效地实现预定动作,在很多领域得到了广泛应用
[1]
。进行连杆机
构运动分析,传统方法主要是图解法或分析法[2]
,无论设
计精度还是设计效率都相对低下,无法满足现代机械高速高精度的要求。随着计算机技术的飞速发展,特别是以
面四杆机构[J ].机械制造, 2002,
(3:26-28.
[3]周进雄,张陵.机构动态仿真[M ].西安:西安交通大学出
版社, 2002.
[4]李娟玲,张建峰.基于C语言的平面连杆机构的运动分析
[J ].机械研究与应用, 2006, 19(5:117-120.
[5]宋兆基. MATLAB6.5在科学计算中的应用[M ].北京:清
华大学出版社, 2005.
[6]王正林.精通MATLAB科学计算[M ].北京:电子工业出
版社, 2009.
[7]曹惟庆.机构设计[M ].北京:机械工业出版社, 2004. [8]李洪涛,徐巍华.基于MATLAB软件对抽油机连杆运动规律
的仿真研究[J ].机械工程师, 2009(5:99-101.
参考文献:
[1]孙桓,陈作模.机械原理[M ].北京:高等教育出版社,
2006.
基于MATLAB的四连杆机构运动分析软件设计开题报告

基于MATLAB的四连杆机构运动分析软件设计开题报告云南农业大学本科生毕业设计开题报告工程技术学院车辆工程专业( 工科) 2008级设计题目:基于MATLAB的四连杆机构运动分析软件设计人机交互界面的设计云南农业大学教务处制2011年10月8日云南农业大学毕业设计开题报告1(本课题所涉及的问题在国内(外)的研究现状综述目前,MATLAB软件是功能强大的科学计算软件,被国内外高校和科研单位所使用。
尤其是基于矩阵运算的数据处理,还可用符号运算计算解析解;还可以实现数值分析、图像处理等若干个领域的计算和图形显示功能。
在工程技术界,MATLAB 也被用来解决一些实际课题和数学模型问题。
典型的应用包括数值计算、算法预设计与验证,以及一些特殊的矩阵计算应用,如自动控制理论、统计、数字信号处理(时间序列分拆)等。
平面连杆机构是一种应用十分广泛的机构。
对它的分析及设计一直是机构学研究的一个重要课题。
但传统方法对于常见的连杆机构的运动学、动力学分析仍然是非常繁琐,以至于很难对它进行深入的研究,如果建立一个连杆机构的仿真系统,使设计人员在进行设计时,从复杂的机构分析和烦琐的计算中摆脱出来,集中精力从事于创新工作,那将是很有意义的。
基于这样一种考虑,本课题尝试建立一个平面连杆机构的运动学仿真系统。
应用Matlab/Simulink对机构领域中应用广泛的基本机构——双曲柄机构、曲柄摇杆机构、曲柄滑块机构等的连杆点轨迹作仿真,该方法编程工作量小、轨迹图形显示便捷,所建模型只需作少量更改即可适应四杆机构的不同特征值,并可推广至多杆机构情况。
建立四杆机构的优化设计模型,用 MATLAB 优化工具箱实现四杆机构的优化设计及仿真,得到的优化结果有足够的精度,能满足设计需求,同时表明MATLAB 优化工具箱在四杆机构优化设计及其相关问题中具有较好的应用前景。
2(本人对课题提出的任务要求及实现预期目标的可行性分析由于连杆机构的性能受机构上繁多的几何参数的影响,呈复杂的非线性关系,无论从性能分析上还是性能综合上都是一个比较困难的工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用Matlab对四连杆运动模拟引言四连杆机构因其结构灵活、能够传递动力并有效地实现预定动作,在很多领域得到了广泛应用。
进行连杆机构运动分析,传统方法主要是图解法或分析法,无论设计精度还是设计效率都相对低下,无法满足现代机械高速高精度的要求。
随着计算机技术的飞速发展,特别是以MATLAB为代表的数值计算软件的出现,为进行机构分析提供了有力的工具。
1、四连杆介绍1.1、四连杆介绍与分类所有运动副均为转动副的四杆机构称为铰链四杆机构,它是平面四杆机构的基本形式,其他四杆机构都可以看成是在它的基础上演化而来的。
选定其中一个构件作为机架之后,直接与机架链接的构件称为连架杆,不直接与机架连接的构件称为连杆,能够做整周回转的构件被称作曲柄,只能在某一角度范围内往复摆动的构件称为摇杆。
如果以转动副连接的两个构件可以做整周相对转动,则称之为整转副,反之称之为摆转副。
铰链四杆机构中,按照连架杆是否可以做整圆周转动,可以将其分为三种基本形式,即曲柄摇杆机构,双曲柄机构和双摇杆机构。
曲柄摇杆机构,两连架杆中一个为曲柄一个为摇杆的铰链四杆机构。
双曲柄机构,具有两个曲柄的铰链四杆机构称为双曲柄机构。
其特点是当主动曲柄连续等速转动时,从动曲柄一般做不等速转动。
在双曲柄机构中,如果两对边构件长度相等且平行,则成为平行四边形机构。
这种机构的传动特点是主动曲柄和从动曲柄均以相同的角速度转动,而连杆做平动。
双摇杆机构。
双摇杆机构是两连架杆均为摇杆的铰链四杆机构。
1.2、格拉霍夫定理杆长之和条件:平面四杆机构的最短杆和最长杆的长度之和小于或者等于其余两杆长度之和。
在铰链四杆机构中,如果某个转动副能够成为整转副,则它所连接的两个构件中,必有一个为最短杆,并且四个构件的长度关系满足杆长之和条件。
在有整装副存在的铰链四杆机构中,最短杆两端的转动副均为整转副。
此时,如果取最短杆为机架,则得到双曲柄机构;若取最短杆的任何一个相连构件为机架,则得到曲柄摇杆机构;如果取最短杆对面构件为机架,则得到双摇杆机构。
如果四杆机构不满足杆长之和条件,则不论选取哪个构件为机架,所得到机构均为双摇杆机构。
上述系列结论称为格拉霍夫定理。
运用条件分析:1.Lmax+Lmin>其余两杆之和,------此铰链四杆机构为双摇杆机构;2.Lmax+Lmin≤其余两杆之和,要具体分析:(1)Lmin为机架------为双曲柄机构(2)Lmin为连架杆------为曲柄摇杆机构(Lmin为曲柄)(3)Lmin为连杆------为双摇杆机构1.3、理论分析对图1的四连杆机构列出方程组。
其中L1、L2、L3、L4为四根杆,L4为机架。
L1×cosθ1+L2×cosθ2=L3×cosθ1+L4L1×sinθ1+L2×sinθ2=L3sinθ3由此两个方程消去θ2,便可得到一个关于θ1、θ3的函数F(θ1, θ3)=(L3×cosθ3+L4−L1×cosθ1)2+(L3×sinθ3−L1×sinθ1)2−L22然后用隐函数求出θ3=θ3(θ1)另解出角速度:θ1=w1×tw2=d(θ3)/d(t)2、Matlab的实现(一)数据分析给出了3组数据:a)L1=8;L2=25;L3=20;L4=20;b)L1=7;L2=9;L3=11;L4=4;c)L1=7;L2=6.2;L3=10;L4=6;用格拉霍夫定理进行分析得到:a为曲柄摇杆机构;b为双曲柄机构;c双摇杆机构;(二)Matlab求解并进行动画模拟a)L1=8;L2=25;L3=20;L4=20; (曲柄摇杆机构)θ3=θ3(θ1)图像实时动画模拟(部分截屏)W2的图像说明:其中w2(1)为先符号求导再赋值计算,w2(2)为直接数值求导。
(下同)b)L1=7;L2=9;L3=11;L4=4; (双曲柄机构)θ3=θ3(θ1)图像实时动画模拟(部分截屏)W2的图像c)L1=7;L2=6.2;L3=10;L4=6; (双摇杆机构)θ3=θ3(θ1)图像实时动画模拟(部分截屏)W2的图像3、结果分析对θ3的角速度w2的求值得两种方法中,分析图像知:符号求导再代入数值更容易出现大的偏差(w2的图像中的红线)。
直接用数值求导得到的解更平稳。
4、程序1、函数文件dd.mfunction F=dd(y)global L1 L2 L3 L4 px=p;F=((L3*cos(y)+L4-L1*cos(x))^2)+((L3*sin(y)-L1*sin(x))^2)-(L2^2);2、计算θ3的文件y_figure.mglobal L1 L2 L3 L4 p %传递参数% L1=8;L2=25;L3=20;L4=20; %曲柄摇杆机构% L1=7;L2=9;L3=11;L4=4; %双曲柄机构L1=7;L2=6.2;L3=10;L4=6; %双摇杆机构% L1=9;L2=5;L3=10;L4=7; %双摇杆机构Ltotal=L1+L2+L3+L4;Lmax=max([L1 L2 L3 L4]);[Lmin,I]=min([L1 L2 L3 L4]);m=100; b=0;while (Lmax+Lmin)>=(Ltotal/2)str='双摇杆机构';b=1;breakendwhile (Lmax+Lmin)<(Ltotal/2)if I==4str='双曲柄机构';else if I==1||I==3str='曲柄摇杆机构';else if I==2str='双摇杆机构';b=1;endendendbreakendswitch bcase 0m=100;x=linspace(0,2*pi,m); %确定隐函数自变量的范围y0=0.7341; %第一个方程的初值case 1a=0.58;m=80;x=linspace(a,(2*pi-a),m);y0=1.2465;endy=[];f=[];for k=1:mp=x(k);[y1,fval,exitflag,output] = fzero('dd',y0);y0=y1;y=[y,y1];f=[f,fval];endfigureplot(x(1:m),y(1:m),'r.-'), %绘制隐函数图形grid on3、计算w2的文件w_figure.mglobal L1 L2 L3 L4 w1w1=100;syms xx yy%xx为输入杆转角,yy为输出角转角F=L1*cos(xx)+L2*(1-((L3*sin(yy)-L1*sin(xx))/(L2))^2)^(1/2)-L3*cos(yy)-L4; w=(-1)*(diff(F,xx)/diff(F,yy))*w1;w21=subs(w,{xx,yy},{x,y});%用隐函数求导t=x/w1;w22=diff(y)./diff(t);%直接数值求导plot(w21,'r')hold onplot(w22,'k')4、实时动画文件siliangan.mpic=figure('name',str);set(pic,'color','white');axis equalgrid onaxis([-10,30,-10,20]);axis onglobal L1 L3 L4xa=0;ya=0; %A点坐标xd=L4;yd=0; %D点坐标xb=L1*cos(x(1));yb=L1*sin(x(1));%B点坐标xc=L3*cos(y(1))+L4;yc=L3*sin(y(1));%C点坐标stick_1=line([xa;xb],[ya;yb],'color','red','linewidth',5,'linestyle','-');stick_2=line([xb;xc],[yb;yc],'color','g','linewidth',5,'linestyle','-');stick_3=line([xc;xd],[yc;yd],'color','b','linewidth',5,'linestyle','-');stick_0=line([xd;xa],[yd;ya],'color','y','linewidth',5,'linestyle','-');dot_a=line(xa,ya,'color','r','linestyle','.','markersize',30);dot_b=line(xb,yb,'color','black','linestyle','.','markersize',30);dot_c=line(xc,yc,'color','r','color',[0.1 0.7 0.3],'linestyle','.','markersize',30); dot_d=line(xd,yd,'color','r','linestyle','.','markersize',30);dt=2*pi/m;k=1;while 1if k>m;k=1;endxb=L1*cos(x(k))+xa;yb=L1*sin(x(k))+ya;xc=L3*cos(y(k))+L4;yc=L3*sin(y(k));set(stick_1,'xdata',[xa;xb],'ydata',[ya;yb]);set(stick_2,'xdata',[xc;xb],'ydata',[yc;yb]);set(stick_3,'xdata',[xd;xc],'ydata',[yd;yc]);set(dot_b,'xdata',xb,'ydata',yb);set(dot_c,'xdata',xc,'ydata',yc);set(gcf,'doublebuffer','on');drawnow;pausek=k+1;end。