机械原理大作业平面连杆机构报告.docx
《机械原理大作业平面连杆机构报告.docx》由会员分享,可在线阅读,更多相关《机械原理大作业平面连杆机构报告.docx(23页珍藏版)》请在冰豆网上搜索。
机械原理大作业平面连杆机构报告
平面连杆机构的运动分析
(题号:
平面六杆机构)
一、题目说明
图示为一平面六杆机构。
设已知各构件的尺寸如表1所示,又知原动件1以等角速度𝛚1=1rad/s沿逆时针方向回转,试求各从动件的角位移、角速度及角加速度以及E点的位移、速度及加速度的变化情况。
已知其尺寸参数如下表所示:
组号
2
3
4
5
6
α
A
B
C
2-A
2-B
2-C
26.5
67.5
87.5
52.4
43.0
600
2=116.6
2=111.6
2=126.6
二、题目分析
1、建立封闭图形:
L1+L2=L3+L4
L1+L2=L5+L6+AG
2、机构运动分析:
a、角位移分析
由图形封闭性得:
将上式化简可得:
b、角速度分析
上式对时间求一阶导数,可得速度方程:
化为矩阵形式为:
c、角加速度分析:
矩阵对时间求一阶导数,可得加速度矩阵
d、E点的运动状态
位移:
速度:
加速度:
三、流程图
四、源程序
#include
#include
#include
#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=111.6,l3=67.5,l4=87.5,l5=52.4,l6=43.0;
doublel2g=65.0,xg=153.5,yg=41.7,inang=60*PI/180,as1=1.0;
//主函数
voidmain()
{
inti,j;
FILE*fp;
doubleshuju[36][18];
doublepsvalue[18],a[N][N],da[N][N],b[N],db[N],ang1;
//建立文件,并制表头
if((fp=fopen("filel","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("angleangspeedangaccelerationE:
\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");
}
}
/*矢量法求角位移*/
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;
//限定角度大小
for(inti=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{
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;ifor(j=0;ja4g[i][j]=a4[i][j];
for(i=0;ib4g[i]=b4[i];
//使主对角线上的值尽可能大
if(a4g[0][0]a4g[1][1])
{
for(j=0;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]a4g[3][3])
{
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;jfor(i=0;i{
if(i!
=j)
{
for(k=0;kif(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;ib4g[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);
}
五、计算结果及相关曲线图:
A组:
数据
ang2
ang3
ang5
ang6
31.416
59.518
274.846
60.933
27.441
56.107
267.104
47.459
24.319
54.603
261.96
39.404
22.071
54.839
257.865
35.153
20.587
56.482
254.057
33.433
19.725
59.178
250.122
33.168
19.356
62.621
245.733
33.4
19.38
66.57
240.472
33.145
19.724
70.84
233.659
31.158
20.338
75.287
224.179
25.656
21.188
79.799
210.788
14.566
22.253
84.282
193.987
357.785
23.518
88.659
177.339
339.158
24.973
92.859
164.018
322.764
26.61
96.825
154.479
309.822
28.423
100.501
147.803
299.87
30.402
103.84
142.952
292.122
32.533
106.8
139.123
285.905
34.799
109.344
135.751
280.708
37.173
111.44
132.448
276.145
39.622
113.061
128.955
271.914
42.105
114.183
125.1
267.78
44.569
114.784
120.784
263.564
46.952
114.839
115.961
259.15
49.182
114.323
110.623
254.486
51.174
113.203
104.779
249.588
52.829
111.44
98.434
244.523
54.036
108.986
91.547
239.386
54.673
105.789
83.996
234.241
54.607
101.797
75.52
229.036
53.708
96.972
65.573
223.378
51.867
91.32
52.837
215.831
49.035
84.93
33.036
200.978
45.27
78.038
355.866
164.371
40.797
71.08
313.857
116.276
36.012
64.679
288.382
82.34
as2
as3
as5
as6
-0.434
-0.434
-1.783
-2.79
-0.357
-0.245
-1.285
-2.163
-0.267
-0.059
-1.053
-1.748
-0.184
0.1
-0.973
-1.493
-0.115
0.223
-0.984
-1.365
-0.06
0.311
-1.059
-1.344
-0.016
0.373
-1.185
-1.418
0.019
0.414
-1.361
-1.585
0.049
0.438
-1.584
-1.842
0.074
0.45
-1.817
-2.151
0.096
0.451
-1.916
-2.343
0.117
0.444
-1.703
-2.175
0.136
0.43
-1.316
-1.762
0.155
0.409
-1.029
-1.409
0.173
0.383
-0.792
-1.132
0.19
0.352
-0.561
-0.872
0.206
0.316
-0.423
-0.689
0.22
0.276
-0.352
-0.563
0.232
0.232
-0.328
-0.482
0.242
0.186
-0.336
-0.435
0.247
0.138
-0.365
-0.415
0.248
0.087
-0.407
-0.415
0.244
0.033
-0.457
-0.43
0.232
-0.023
-0.508
-0.454
0.213
-0.081
-0.559
-0.479
0.184
-0.143
-0.609
-0.5
0.145
-0.21
-0.66
-0.512
0.094
-0.282
-0.719
-0.515
0.031
-0.359
-0.795
-0.515
-0.046
-0.44
-0.908
-0.532
-0.136
-0.524
-1.1
-0.62
-0.234
-0.605
-1.507
-0.964
-0.332
-0.67
-2.666
-2.29
-0.417
-0.702
-4.566
-4.892
-0.471
-0.68
-4.309
-5.087
-0.477
-0.589
-2.745
-3.75
aas2
aas3
aas5
aas6
0.367
1.02
2.386
0.349
0.5
1.109
2.464
1.617
0.506
1.005
1.991
1.827
0.44
0.807
1.573
1.686
0.356
0.6
1.333
1.514
0.281
0.425
1.273
1.446
0.224
0.287
1.393
1.549
0.182
0.182
1.737
1.904
0.154
0.1
2.418
2.671
0.135
0.036
3.589
4.093
0.122
-0.017
4.816
5.81
0.114
-0.062
4.198
5.589
0.109
-0.101
1.884
3.163
0.105
-0.135
0.167
1.128
0.1
-0.166
1.639
1.722
0.095
-0.193
1.033
1.255
0.088
-0.218
0.574
0.869
0.077
-0.239
0.254
0.579
0.063
-0.257
0.034
0.359
0.044
-0.272
-0.114
0.188
0.019
-0.286
-0.21
0.053
-0.01
-0.299
-0.267
-0.