平面连杆机构的运动分析.docx
- 文档编号:4789217
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:26
- 大小:159.09KB
平面连杆机构的运动分析.docx
《平面连杆机构的运动分析.docx》由会员分享,可在线阅读,更多相关《平面连杆机构的运动分析.docx(26页珍藏版)》请在冰豆网上搜索。
平面连杆机构的运动分析
大作业
(一)
平面连杆机构的运动分析
(题号:
5—E)
西北农林科技大学
班级:
机制103
学号:
2010012447
姓名:
同组其他人员:
(2010012444)
完成日期:
2011年10月24日
一、题目:
计算平面连杆机构的运动学分析
1。
图a所示的为一平面六杆机构。
假设已知各构件的尺寸如表1所示,原动件1以等角速度ω1=1rad/s沿着逆时针方向回转,试求各从动件的角位移、角速度和角加速度以及E点的位移、速度和加速度的变化情况。
(a)
表1平面六杆机构的尺寸参数(单位:
mm)
,
题号
l1
l2
l3
l4
l5
l6
α
5-E
26。
5
105。
6
67.5
87.5
47.2
37.8
90゜
题目要求:
每两人一组,每组中至少打印出一份源程序,每人计算出原动件从0°~360°时(N=36)各运动变量的大小,并绘出各组对应的运动线图以及E点的轨迹曲线。
二、平面连杆的运动分析方程
(1)位置分析
L1+L2=L4+L3
L1+L2+L2'=AG+L5+L6方程式
(1)
将机构的封闭矢量方程式
(1)写在两坐标上的投影形式:
L1*cosq1+L2*cosq2=L4+L3*cosq3
L1*sinq1+L2*sinq2=L3*sinq3
L1*cosq1+L2*cosq2+L2’*cos(q2-a)=xg+L5*cosq5+L6*cosq6
L1*sinq1+L2*sinq2+L2’*sin(q2-a)=yg+L5*sinq5+L6*sinq6
化简整理后方程左边仅含未知量项的形式,即得:
L2*cosq2—L3*cosq3=L4-L1cosq1………………………………
(1)
L2*sinq2—L3*sinq3=—L1sinq1………………………………
(2)(式2)
L2*cosq2+L2’*cos(q2-a)—L5*cosq5-L6*cosq6=xg—L1*cosq1…(3)
L2*sinq2+L2’*sin(q2—a)—L5*sinq5-L6*sinq6=yg-L1*sinq1………4)
在求解(式2)中各变量时,用牛顿迭代法会比较直观,但由于牛顿迭代法不便于限制L5、L6的位置,在有两种位置均满足上式时,无法限定它得出题中要求的解。
故在计算时改用复述矢量法直接求解q2、q3、q5、q6.
求q2、q3:
L2²=L3²+L4²+L1²-2*L3*L4*cosq3—2*L1*L3*cos(q3—q1)—2*L1*L4*cosq1
经整理后并可简化为:
A*sinq3+B*cosq3+C=0;
式中:
A=2*L1*L3*sinq1
B=2*L3*(L1*cosq1-L4)
B=L2²-L1²—L3²-L4²+2*L1*L4*sinq1
解之可得:
tan(q3/2)=[A±sqrt(A²+B²—C²)]/(B-C)
实际运动中0〈q3〈p,故‘±’适当选择:
tanq2=(L3*sinq3-L1*sinq1)/(L4+L3*cosq3—L1sinq1)
求q5、q6:
先有xe=L4+L3*cosq3+L2’*cos(q2-a)(式3)
ye=L3*sinq3+L2’*sin(q2-a)
tanβ=(yg-ye)/(xg—xe)
cosγ=[(xe—xg)²+(ye—yg)²+L5²—L6]/{2*L5*sqrt[(xe—xg)²+(te-yg)²]}
则q5'=β—γ
q5=q5'
tanq6=(ye+L5*sinq5'—yg)/(xe+L5*cosq5’—xg)
(2)角速度分析
分别将(式2)(式3)对时间求一次导数,可得
-L2*w2*sinq2+L3*w3*sinq3=L1*w1*sinq1
L2*w2*cosq2-L3*w3*cosq3=-L1*w1*cosq1
-w2(L2*sinq2+L2’sin(q2-a))+L5*w5*sinq5+L6*w6*sinq6=L1*w1*sinq1
w2*(L2*cosq2+L2’*cos(q2—a))-L5*w5*cosq5—L6*w6*cosq6=—L1*w1*cosq1
…………………………………………………………(式4)
vex=-L3*w3*sinq3-L2’*w2*sin(q2-a)
vey=L3*w3*cosq3+L2’*w2*cos(q2—a)………………(式5)
解之可得w2,w3。
w5,w6,vex,vey.将(式4)(式5)写成矩阵形式:
—L2*sinq2L3*sinq300w2L1*sinq1
L2*cosq2—L3*cosq300w3=w1—L1*cosq1
—L2*sinq2—L2’*sin(q2—a)0L5*sinq5L6*sinq6w5L1*sinq1L2*cosq2+L2'*cos(q2-a)0L5*cosq5—L6*cosq6w6—L1*cosq1
……………………………………………………………………(式6)
E点速度
vexw3—L3*sinq3-L2*sin(q2—a)
veyw2L3*cosq3L2’cos(q2-a)(式7)
采用高斯消去法可求解(式6)可解得角速度w2,w3,w5,w6;将求解结果带入(式7)可求得vex,vey.
(3)角加速度分析
分别将(式2)(式3)对时间取二次导数,可得加速度关系
-L2*sinq2L3*sinq300a2
L2*cosq2—L3*cosq300a3
—L2*sinq2-L2’*sin(q2-a)0L5*sinq5L6*sinq6a5
L2*cosq2+L2'*cos(q2—a)0-L5*cosq5L6*cosq6a6
—w2*L2*cosq2w3*L3*cosq300w2L1*w1*cosq1
=—w2*L2*sinq2w3*L3*sinq300w3+w1L1*w1*sinq1
w2*L2*cosq2+w2*L2'*cos(q2—a)0w5*L5*cosq5w6*L6*cosq6w5L1*w1*cosq1
w2*L2*sinq2+w2*L2'*sin(q2-a)0w5*L5*sinq5w6*L6*sinq6w6L1*w1*sinq1
……………………………………………………………………(式8)
E点的加速度
aex—L2'*sin(q2-a)—L3*sinq3a2L2'*cos(q2-a)L3*cosq3w2²
AeyL2'*cos(q2—a)L3*cosq3a3L2'*sin(q2-a)L3*sinq3w3²
采用高斯消去法可求解(式8)可解得角加速度α2,α3,α5,α6;将求解结果代入(式9)可求得aEx,aEy.
三、程序流程图
四、计算源程序
#include
#include〈stdlib。
h>
#include〈math.h〉
#definePI3。
1415926
#defineN4
voidSolutionangle(double[18],double);/*矢量法求角位移*/
voidSolutionspeed(double[N][N],double[N],double[18],double);/*角速度求解*/
voidSolutionacceleration(double[N][N],double[N][N],double[N],double[18]);/*角加速度求解*/
voidGaussianE(double[N][N],double[N],double[N]);/*高斯消去*/
voidFoundmatrixA(double[18],double[N][N]);/*创建系数矩阵A*/
voidFoundmatrixB(double[18],double,double[N]);/*创建系数矩阵B*/
voidFoundmatrixDA(double[18],double[N][N]);/*创建矩阵DA*/
voidFoundmatrixDB(double[18],double,double[N]);/*创建矩阵DB*/
/*定义全局变量*/
doublel1=26.5,l2=105。
6,l3=67。
5,l4=87。
5,l5=47.2,l6=37.8;
doublel2g=65.0,xg=153.5,yg=41。
7,inang=90*PI/180,as1=1.0;
/*主函数*/
intmain()
{
inti,j;
FILE*fp;
doubleshuju[36][18];
doublepsvalue[18],a[N][N],da[N][N],b[N],db[N],ang1;
/*建立文件,并制表头*/
if((fp=fopen("数据.txt",”w"))==NULL)
{
printf(”Cann’topenthisfile。
\n");
exit(0);
}
fprintf(fp,”\nTheKinematicParametersofPoint5\n”);
fprintf(fp,”ang2ang3ang5ang6”);
fprintf(fp,”as2as3as5as6”);
fprintf(fp,”aas2aas3aas5aas6");
fprintf(fp,"xeyevexveyaexaey\n");
/*计算数据并写入文件*/
for(i=0;i<36;i++)
{
ang1=i*PI/18;
Solutionangle(psvalue,ang1);
FoundmatrixB(psvalue,ang1,b);
FoundmatrixA(psvalue,a);
Solutionspeed(a,b,psvalue,ang1);
FoundmatrixDA(psvalue,da);
FoundmatrixDB(psvalue,ang1,db);
Solutionacceleration(a,da,db,psvalue);
for(j=0;j<4;j++)
{shuju[i][j]=psvalue[j]*180/PI;}
for(j=4;j<18;j++)
{shuju[i][j]=psvalue[j];}
fprintf(fp,”\n");
for(j=0;j〈18;j++)
fprintf(fp,”%12.3f",shuju[i][j]);
}
fclose(fp);
/*输出数据*/
for(i=0;i<36;i++)
{
ang1=i*PI/18;
printf(”\n输出ang1=%d时的求解\n”,i*10);
printf("angleangspeedangacceleration:
\n”);
for(j=0;j〈4;j++)
printf("%lf\t”,shuju[i][j]);
printf(”\n”);
for(j=4;j<8;j++)
printf("%lf\t",shuju[i][j]);
printf(”\n");
for(j=8;j〈12;j++)
printf(”%lf\t”,shuju[i][j]);
printf("\n");
for(j=12;j〈18;j++)
printf(”%lf\t”,shuju[i][j]);
printf(”\n");
}
return0;
}
/*矢量法求角位移*/
voidSolutionangle(doublevalue[18],doubleang1)
{
doublexe,ye,A,B,C,phi,alpha,csn,ang5g,d2,d,ang2,ang3,ang5,ang6;
A=2*l1*l3*sin(ang1);
B=2*l3*(l1*cos(ang1)-l4);
C=l2*l2-l1*l1-l3*l3—l4*l4+2*l1*l4*cos(ang1);
ang3=2*atan((A+sqrt(A*A+B*B-C*C))/(B—C));
if(ang3<0)/*限定ang3大小*/
{ang3=2*atan((A-sqrt(A*A+B*B—C*C))/(B-C));}
ang2=asin((l3*sin(ang3)-l1*sin(ang1))/l2);
xe=l4+l3*cos(ang3)+l2g*cos(ang2-inang);
ye=l3*sin(ang3)+l2g*sin(ang2—inang);
phi=atan2((yg—ye),(xg-xe));
d2=(yg-ye)*(yg—ye)+(xg—xe)*(xg-xe);
d=sqrt(d2);
csn=(l5*l5+d2—l6*l6)/(2。
0*l5*d);
alpha=atan2(sqrt(1.0-csn*csn),csn);
ang5g=phi—alpha;
ang5=ang5g-PI;
ang6=atan2(ye+l5*sin(ang5g)-yg,xe+l5*cos(ang5g)-xg);
value[0]=ang2;value[1]=ang3;value[2]=ang5;value[3]=ang6;
value[12]=xe;value[13]=ye;
/*限定角度大小*/
inti;
for(i=0;i<4;i++)
{
while(value[i]>2*PI)
value[i]-=2*PI;
while(value[i]〈0)
value[i]+=2*PI;
}
}
/*角速度求解*/
voidSolutionspeed(doublea2[N][N],doubleb2[N],doublevalue[18],doubleang1)
{
doubleang2,ang3;
ang2=value[0];ang3=value[1];
doublep2[N];
GaussianE(a2,b2,p2);
value[4]=p2[0];
value[5]=p2[1];
value[6]=p2[2];
value[7]=p2[3];
value[14]=—l3*value[5]*sin(ang3)—l2g*value[4]*sin(ang2—inang);
value[15]=l3*value[5]*cos(ang3)+l2g*value[4]*cos(ang2-inang);
}
/*角加速度求解*/
voidSolutionacceleration(doublea3[N][N],doubleda3[N][N],doubledb3[N],doublevalue[18])
{
inti,j;
doubleang2,ang3;
ang2=value[0];ang3=value[1];
doublebk[N]={0};
doublep3[N];
for(i=0;i〈N;i++)
{
for(j=0;j { bk[i]+=-da3[i][j]*value[4+j]; } bk[i]+=db3[i]*as1; } GaussianE(a3,bk,p3); value[8]=p3[0]; value[9]=p3[1]; value[10]=p3[2]; value[11]=p3[3]; value[16]=—l3*value[9]*sin(ang3)-l3*value[5]*value[5]*cos(ang3)-l2g*value[8]*sin(ang2—inang)-l2g*value[4]*value[4]*cos(ang2—inang); value[17]=l3*value[9]*cos(ang3)—l3*value[5]*value[5]*sin(ang3)+l2g*value[8]*cos(ang2-inang)-l2g*value[4]*value[4]*sin(ang2—inang); } /*高斯消去法解矩阵方程*/ voidGaussianE(doublea4[N][N],doubleb4[N],doublep4[N]) { inti,j,k; doublea4g[N][N],b4g[N],t; for(i=0;i for(j=0;j〈N;j++) a4g[i][j]=a4[i][j]; for(i=0;i〈N;i++) b4g[i]=b4[i]; /*使主对角线上的值尽可能大*/ if(a4g[0][0]〈a4g[1][0]&&a4g[0][1]>a4g[1][1]) { for(j=0;j〈N;j++) {t=a4g[0][j];a4g[0][j]=a4g[1][j];a4g[1][j]=t;} t=b4g[0];b4g[0]=b4g[1];b4g[1]=t; } if(a4g[2][2] { for(j=0;j {t=a4g[2][j];a4g[2][j]=a4g[3][j];a4g[3][j]=t;} t=b4g[2];b4g[2]=b4g[1];b4g[3]=t; } /*初等行变换*/ for(j=0;j for(i=0;i { if(i! =j) { for(k=0;k if(k! =j) {a4g[i][k]-=a4g[i][j]/a4g[j][j]*a4g[j][k];} b4g[i]—=b4g[j]*a4g[i][j]/a4g[j][j]; a4g[i][j]=0; } } for(i=0;i〈N;i++) b4g[i]/=a4g[i][i]; p4[0]=b4g[0]; p4[1]=b4g[1]; p4[2]=b4g[2]; p4[3]=b4g[3]; } /*创建系数矩阵A*/ voidFoundmatrixA(doublevalue5[18],doublea5[N][N]) { doubleang2,ang3,ang5,ang6; ang2=value5[0];ang3=value5[1];ang5=value5[2];ang6=value5[3]; a5[0][0]=-l2*sin(ang2);a5[0][1]=l3*sin(ang3); a5[1][0]=l2*cos(ang2);a5[1][1]=—l3*cos(ang3); a5[2][0]=-l2*sin(ang2)-l2g*sin(ang2—inang); a5[2][2]=l5*sin(ang5);a5[2][3]=l6*sin(ang6); a5[3][0]=l2*cos(ang2)+l2g*cos(ang2-inang); a5[3][2]=-l5*cos(ang5);a5[3][3]=-l6*cos(ang6); a5[0][2]=a5[0][3]=a5[1][2]=a5[1][3]=a5[2][1]=a5[3][1]=0; } /*创建系数矩阵B*/ voidFoundmatrixB(doublevalue6[18],doubleang1,doubleb6[N]) { b6[0]=b6[2]=l1*sin(ang1)*as1; b6[1]=b6[3]=-l1*cos(ang1)*as1; } /*创建矩阵DA*/ voidFoundmatrixDA(doublevalue7[18],doubleda7[N][N]) { doubleang2,ang3,ang5,ang6,as2,as3,as5,as6; ang2=value7[0];ang3=value7[1];ang5=value7[2];ang6=value7[3]; as2=value7[4];as3=value7[5];as5=value7[6];as6=value7[7]; da7[0][0]=-l2*as2*cos(ang2);da7[0][1]=l3*as3*cos(ang3); da7[1][0]=—l2*as2*sin(ang2);da7[1][1]=l3*as3*sin(ang3); da7[2][0]=as2*(-l2*cos(ang2)-l2g*cos(ang2—inang)); da7[2][2]=as5*l5*cos(ang5);da7[2][3]=as6*l6*cos(ang6); da7[3][0]=as2*(—l2*sin(ang2)—l2g*sin(ang2-inang)); da7[3][2]=as5*l5*sin(ang5);da7[3][3]=as6*l6*sin(ang6); da7[0][2]=da7[0][3]=da7[1][2]=da7[1][3]=da7[2][1]=da7[3][1]=0; } /*创建矩阵DB*/ voidFoundmatrixDB(doublevalue8[18],doubleang1,doubledb8[N]) { db8[0]=db8[2]=l1*as1*cos(ang1); db8[1]=db8[3]=l1*as1*sin(ang1); } 五、计算结果数据 转角 ang2 ang3 ang5 ang6 as2 as3 0 36.799 69。 573 210。 375 349.905 -0.434 —0。 434 10 32。 709 66。 003 212.118 345。 238 —0.379 —0.276 20 29.278 64。 073 211.589 339.939 -0。 306 -0.111 30 26。 597 63。 731 209.276 334.605 —0。 231 0。 039 40 24.636 64。 755 205。 562 329.184 —0.163 0。 161 50 23。 301 66.865 200。 836 323.398 —0。 106 0。 256 60 22。 49 69。 79 195。 54 317。 027 -0。 058 0。 325 70 22。 113 73.301 190.166 310.051 —0。 019 0.374 80 22。 099 77.209 185.201 302.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平面 连杆机构 运动 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)