3杆组的拆分方法及所调用的杆组子程序中虚参与实参对照表
3-1杆组拆分方法
关键点:
1点,2点,3点,4点,5点,6点(rrpk函数中选取参考点),7,8,9,10(rrpf函数选取移动副反力作用点,未标出)。
构件号:
①,②,③,④,⑤,⑥。
3-2杆组子程序中虚参与实参对照表
3-2-1机构运动分析程序虚参与实参对照表
1)调用bark函数,求2点的运动参数。
形式参数
n1
n2
n3
k
r1
r2
gam
t
w
e
p
vp
ap
实值
1
2
0
1
r12
0.0
0.0
t
w
e
p
vp
ap
2)调用rprk函数,求构件3的运动参数。
形式参数
m
n1
n2
k1
k2
r1
r2
vr2
ar2
t
w
e
p
vp
ap
实值
1
3
2
3
2
0.0
&r2
&vr2
&ar2
t
w
e
p
vp
ap
3)调用bark函数,求4点的运动参数。
形式参数
n1
n2
n3
k
r1
r2
gam
t
w
e
p
vp
ap
实值
3
4
0
3
r34
0.0
0.0
t
w
e
p
vp
ap
4)调用rrpk函数,求5点的位置和5构件的运动参数。
形式参数
m
n1
n2
n3
k1
k2
k3
r1
r2
vr2
ar2
t
w
e
p
vp
ap
实值
-1
4
6
5
4
5
6
r45
&r2
&vr2
&ar2
t
w
e
p
vp
ap
3-2-2机构力分析程序虚参与实参对照表
力分析是在运动分析基础上来的,力分析中对照表省略运动分析对照表
1)调用bark函数,求构件3的质心7点的运动参数。
形式参数
n1
n2
n3
k
r1
r2
gam
t
w
e
p
vp
ap
实值
3
7
0
3
r37
0.0
0.0
t
w
e
p
vp
ap
2)调用bark函数,求构件5的质心8点的运动参数。
形式参数
n1
n2
n3
k
r1
r2
gam
t
w
e
p
vp
ap
实值
5
0
8
5
0.0
r58
-161.57*dr
t
w
e
p
vp
ap
3)调用bark函数,求构件5的工艺阻力作用点9点的运动参数。
形式参数
n1
n2
n3
k
r1
r2
gam
t
w
e
p
vp
ap
实值
5
0
9
5
0.0
r59
165.96*dr
t
w
e
p
vp
ap
4)调用rrpf函数,求4、5点的反作用力。
形式参数
n1
n2
n3
ns1
ns2
nn1
nn2
nexf
k1
k2
p
vp
ap
t
w
e
fr
实值
4
10
5
0
8
0
9
9
4
5
p
vp
ap
t
w
e
fr
5)调用rprf函数求2点的反作用力。
形式参数
n1
n2
ns1
ns2
nn1
nn2
nexf
k1
k2
p
vp
ap
t
w
e
fr
fk
pk
实值
3
2
7
0
4
0
0
3
2
p
vp
ap
t
w
e
fr
fk
pk
6)调用barf函数,求1点运动副反力及平衡力矩。
形式参数
n1
ns1
nn1
k1
p
ap
e
fr
tb
实值
1
0
2
1
p
ap
e
fr
&tb
4飞轮转动惯量的计算方法
飞轮转动惯量的计算方法
1、一周期内驱动力矩功等于阻力功,所以:
ψt*Td=1/2△ψ(Tr0+Tr1)+1/2△ψ(Tr1+Tr2)+...+1/2△ψ(Trn-1+Trn)
因为Trn=Tr0,所以由上式可得:
Td=△ψ/ψt∑Tri=1/n∑Tri
2、间隔i-1、i内的盈亏功变化量△E:
△E=△ψTd-1/2*△ψ(Tri+Tri-1)
3、计算各点的盈亏功Ei:
Ei=Ei-1+△Ei
4、找出最大和最小盈亏功:
Emax,Emin
5、计算飞轮的转动惯量Jf:
Jf=(Emax-Emin)/W㎡[δ]。
5自编程序及计算结果清单(包括线图)
5-1运动分析
5-1-1运动分析主程序
#include"graphics.h"
#include"subk.c"
#include"draw.c"
main()
{
staticdoublep[20][2],vp[20][2],ap[20][2],del;
staticdoublet[10],w[10],e[10],pdraw[370],vpdraw[370],apdraw[370];
staticintic;
doubler12,r13,r34,r45;
doublepi,dr;
doubler2,vr2,ar2;
inti;
FILE*fp;
char*m[]={"p","vp","ap"};
r12=0.1,r13=0.4,r34=0.75,r45=0.15;
pi=4.0*atan(1.0);
dr=pi/180.0;t[6]=0.0*dr;w[6]=0.0;e[6]=0.0;w[1]=-2.0*pi;e[1]=0.0;del=10.0;
p[1][1]=0.0;p[1][2]=0.0;p[3][1]=0.0;p[3][2]=-0.4;p[6][1]=-100.0;p[6][2]=0.338;
printf("\nTheKinematicParametersofPoint6\n");
printf("NoTHETA1S6V6A6\n");
printf("degmm/sm/s/s\n");
if((fp=fopen("file1","w"))==NULL)
{
printf("Can'topenthisfile.\n");
exit(0);
}
fprintf(fp,"\nTheKinematicParametersofPoint6\n");
fprintf(fp,"NoTHETA1S6V6A6\n");
fprintf(fp,"degmm/sm/s/s");
ic=(int)(360.0/del);
for(i=0;i<=ic;i++)
{
t[1]=(pi+asin(r12/r13))+(-i)*del*dr;
bark(1,2,0,1,r12,0.0,0.0,t,w,e,p,vp,ap);
rprk(1,3,2,3,2,0.0,&r2,&vr2,&ar2,t,w,e,p,vp,ap);
bark(3,4,0,3,r34,0.0,0.0,t,w,e,p,vp,ap);
rrpk(-1,4,6,5,4,5,6,r45,&r2,&vr2,&ar2,t,w,e,p,vp,ap);printf("\n%2d%12.3f%12.3f%12.3f%12.3f",i+1,t[1]/dr,p[5][1],vp[5][1],ap[5][1]);
fprintf(fp,"\n%2d%12.3f%12.3f%12.3f%12.3f",i+1,t[1]/dr,p[5][1],vp[5][1],ap[5][1]);
pdraw[i]=p[5][1];
vpdraw[i]=vp[5][1];
apdraw[i]=ap[5][1];
if((i%16)==0){getch();}
}
fclose(fp);
getch();
draw1(del,pdraw,vpdraw,apdraw,ic);
getch();
}
5-1-2运动分析程序计算结果(包括线图)
TheKinematicParametersofPoint6
NoTHETA1S6V6A6
degmm/sm/s/s
1194.478-0.3370.0007.251
2184.478-0.3340.1886.313
3174.478-0.3270.3525.464
4164.478-0.3150.4924.688
5154.478-0.3000.6123.962
6144.478-0.2810.7133.266
7134.478-0.2600.7942.593
8124.478-0.2370.8571.940
9114.478-0.2130.9021.313
10104.478-0.1870.9300.715
1194.478-0.1610.9420.148
1284.478-0.1350.939-0.388
1374.478-0.1090.921-0.903
1464.478-0.0840.889-1.411
1554.478-0.0600.842-1.933
1644.478-0.0370.781-2.495
1734.478-0.0170.703-3.123
1824.4780.0010.607-3.843
1914.4780.0170.489-4.671
204.4780.0280.346-5.607
21-5.5220.0360.176-6.624
22-15.5220.038-0.022-7.660
23-25.5220.034-0.248-8.606
24-35.5220.024-0.498-9.311
25-45.5220.006-0.762-9.578
26-55.522-0.018-1.024-9.175
27-65.522-0.050-1.263-7.861
28-75.522-0.088-1.450-5.459
29-85.522-0.130-1.556-2.027
30-95.522-0.174-1.5581.967
31-105.522-0.216-1.4505.699
32-115.522-0.253-1.2518.384
33-125.522-0.285-0.9979.696
34-135.522-0.308-0.7239.820
35-145.522-0.325-0.4589.199
36-155.522-0.334-0.2158.253
37-165.522-0.3370.0007.251
运动分析图像
5-2力分析
5-2-1力分析程序
/*Note:
YourchoiceisCIDE*/
/*Note:
YourchoiceisCIDE*/
#include"graphics.h"/*图形库*/
#include"subk.c"/*运动分析子程序*/
#include"subf.c"/*动态静力分析子程序*/
#include"draw.c"/*绘图子程序*/
extf(p,vp,ap,t,w,e,nexf,fe)
doublep[20][2],vp[20][2],ap[20][2],t[20],w[20],e[20],fe[20][2];
intnexf;
{
fe[nexf][2]=0.0;
if(p[5][1]>=(-0.31825)&&p[5][1]<=(0.01925)&&vp[5][1]>0)
{fe[nexf][1]=-9000.0;}
else
{fe[nexf][1]=0.0;}
}
main()
{
staticdoublep[20][2],vp[20][2],ap[20][2],del;
staticdoublet[10],w[10],e[10],tbdraw[370],tb1draw[370];
staticdoublesita1[370],fr1draw[370],sita2[370],fr2draw[370],sita3[370],fr3draw[370];
staticdoublefr[20][2],fe[20][2],fk[20][2],pk[20][2],
tb,tb1,fr1,bt1,fr2,bt2,we1,we2,we3,we4,we5;
staticintic;
doubler12,r13,r34,r45,r37,r58,r59,gam1,gam2;
doublepi,dr;
doubler2,vr2,ar2;
inti;
FILE*fp;
char*m[]={"tb","tb1","fr1","","fr2"};
sm[1]=0.0;sm[2]=0.0;sm[3]=30.0;sm[4]=0.0;sm[5]=95.0;
sj[1]=0.0;sj[2]=0.0;sj[3]=0.7;sj[4]=0.0;
r12=0.1;r34=0.75;r45=0.15;r37=0.375;
r59=sqrt(0.1*0.1+0.25*0.25);
r58=sqrt(0.15*0.15+0.05*0.05);r13=0.4;
pi=4.0*atan(1.0);dr=pi/180.0;
gam1=(atan(1.0/3.0)-pi)*dr;gam2=(pi-atan(1.0/4.0))*dr;
t[6]=0.0;w[6]=0.0;e[6]=0.0;
w[1]=-2*pi;e[1]=0.0;del=10.0;t[6]=0.0*dr;
p[3][1]=0.0;p[3][2]=-0.4;p[1][1]=0.0;p[1][2]=0.0;
p[6][1]=-100;p[6][2]=0.338;
printf("\nTheKineto-staticAnalysisofaSix-barLinkase\n");
printf("NOTHETA1FR1BT1FR2BT2TBTB1\n");
printf("(deg.)(N)(deg.)(N)(deg.)(N.m)(N.m)\n");
if((fp=fopen("file","w"))==NULL)
{
printf("Can'topenthisfile.\n");
exit(0);
}
fprintf(fp,"\nTheKineto-staticAnalysisofaSix-barLinkase\n");
fprintf(fp,"NOTHETA1FR1BT1FR2BT2TBTB1\n");
fprintf(fp,"(deg.)(N)(deg.)(N)(deg.)(N.m)(N.m)\n");
ic=(int)(360.0/del);
for(i=0;i<=ic;i++)
{
t[1]=(-(pi-asin(r12/r13)))+(-i)*del*dr;
bark(1,2,0,1,r12,0.0,0.0,t,w,e,p,vp,ap);
rprk(1,3,2,3,2,0.0,&r2,&vr2,&ar2,t,w,e,p,vp,ap);
bark(3,4,0,3,r34,0.0,0.0,t,w,e,p,vp,ap);
rrpk(-1,4,6,5,4,5,6,r45,&r2,&vr2,&ar2,t,w,e,p,vp,ap);
bark(3,7,0,3,r37,0.0,0.0,t,w,e,p,vp,ap);
bark(5,0,8,5,0.0,r58,gam1,t,w,e,p,vp,ap);
bark(5,0,9,5,0.0,r59,gam2,t,w,e,p,vp,ap);
rrpf(4,6,5,0,8,0,9,9,4,5,p,vp,ap,t,w,e,fr);
rprf(3,2,7,0,4,0,0,3,2,p,vp,ap,t,w,e,fr,fk,pk);
barf(1,0,2,1,p,ap,e,fr,&tb);
fr1=sqrt(fr[1][1]*fr[1][1]+fr[1][2]*fr[1][2]);
bt1=atan2(fr[1][2],fr[1][1]);
fr2=sqrt(fr[3][1]*fr[3][1]+fr[3][2]*fr[3][2]);
bt2=atan2(fr[3][2],fr[3][1]);/*求反力的大小和方向*/
we1=0;
we2=0;
we3=-(ap[7][1]*vp[7][1]+(ap[7][2]+9.81)*vp[7][2])*sm[3]-e[3]*w[3]*sj[3];
we4=0;
extf(p,vp,ap,t,w,e,9,fe);
we5=-(ap[9][1]*vp[9][1]+(ap[9][2]+9.81)*vp[9][2])*sm[5]+fe[9][1]*vp[9][1];
tb1=-(we1+we2+we3+we4+we5)/w[1];
printf("\n%2d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f",i+1,t[1]/dr,fr1,bt1/dr,fr2,bt2/dr,tb,tb1);
fprintf(fp,"\n%2d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f",i+1,t[1]/dr,fr1,bt1/dr,fr2,bt2/dr,tb,tb1);
tbdraw[i]=tb;
tb1draw[i]=tb1;
fr1draw[i]=fr1;
sita1[i]=bt1;
fr2draw[i]=fr2;
sita2[i]=bt2;
fr3draw[i]=fr2;
sita3[i]=bt2;
if((i%16)==0){getch();}
}
fclose(fp);
getch();
draw2(del,tbdraw,tb1draw,ic,m);/
draw3(del,sita1,fr1draw,sita2,fr2draw,sita3,fr3draw,ic,m);
}
5-2-2力分析程序计算结果(包括线图)
TheKineto-staticAnalysisofaSix-barLinkase
NOTHETA1FR1BT1FR2BT2TBTB1
(deg.)(N)(deg.)(N)(deg.)(N.m)(N.m)
1-165.5221465.96114.478627.211-171.0150.0000.000
2-175.5221231.13714.262498.156-176.556-20.923-20.923
3-185.5221032.93413.658403.975174.931-33.936-33.936
4-195.52215767.37112.7236867.477-148.658-746.184-746.184
5-205.52215279.44611.5126271.810-152.002-920.269-920.269
6-215.52214868.90810.0745753.760-156.636-1062.285-1062.285
7-225.52214516.5608.4555324.070-162.398-1174.074-1174.074
8-235.52214211.0266.6924992.651-169.019-1257.253-1257.253
9-245.52213947.3944.8234764.261-176.106-1313.482-1313.482
10-255.52213725.6742.8814635.881176.812-1344.548-1344.548
11-265.52213549.3080.8954597.093170.195-1352.283-1352.283
12-275.52213423.811-1.1044633.369164.397-1338.391-1338.391
13-285.52213355.544-3.0864730.512159.624-1304.217-1304.217
14-295.52213350.657-5.0234878.175155.939-1250.521-1250.521
15-305.52213414.175-6.8825071.434153.300-1177.289-1177.289
16-315.52213