机械原理基本杆组分析法.docx
《机械原理基本杆组分析法.docx》由会员分享,可在线阅读,更多相关《机械原理基本杆组分析法.docx(23页珍藏版)》请在冰豆网上搜索。
机械原理基本杆组分析法
机械原理
机构运动分析基本杆组法
n级机构的杆组分析法通用子程序设计
随着计算机的普及,用解析法对机构进行运动分析得到越来越广泛的应用。
解析法中有矢量方程解析、复数矢量、杆组分析、矩阵运算等方法。
本文采用杆组分析的方法,设计通用的n级杆组子程序,可对一般的n级机构进行运动分析。
1.单杆运动分析子程序
单杆的运动分析,通常是已知构件三角形△P1P2P3的边长I、r夹角a以及构件上某基
0',要
点F1的运动参数求确定构件上点
显然,
X2=X1+Icos
x'2=x'1-lsin
由图
0,
00',
X1,y1,X1,y1,X1,y1和构件绕基点转动的运动参数0,0F2和F3的运动参数。
1可得下列关系式:
y
y
,2
00,y
y
O
2
00
2=y1+Isin0
'2=y'1+Icos00'
'2=y'1+Icos00''-Isin3=y1+rsin(0+a)
3=y1+(X3-X1)0
''3=y''1+(X3-X1)0''-(y3-y1)0
X''2=x'1-Isin00''-lcos
X3=X1+rC0S(0+a),
X3=x1-(y3-y1)0,
x''3=X'1-(y3-y1)0''-(X3-X1)0'2,y
由以上各式可设计出单杆运动分析子程序(见程序单)
2.RRR杆组运动分析子程序
图2所示RRRH级杆组中,杆长|1,|2及两外接转动副中心速度分量为X1,X1,x'',y1,y1,y'1,角速度和角加速度01,0'1,0'1,02,
X2,X2,
0
2,
1)位置分析
将已知P1F2两点的坐标差表示为:
(1)
u=x2-X1,v=y2-y1杆I1及I2投影方程式为:
I1C0S01-I2C0S02=u
I1Sin01-I2Sin02=v
消去01得:
vsin02+ucos02+c=0
其中:
c=(u2+v2+122-I12)/2I2
解式⑶可得:
x2,y2.
y2,y
Pl,P2的坐标、速度、加
2,要求确定两杆的角度、
2。
tan(02/2)=(v±、\2u2C2)/(u-c)
式中+号和-号分别对应图2中m=+1和m=-1两位置。
由式⑵可得:
tan01=(v+I2sin02)/(u+l2cos02)
2)速度分析
对式
(2)求导一次得:
a0'1+A0'2=u,Ae0'1+A40'2=V
02,A=-|2C0S02
32=02=(A1V-A2U)/D
其中:
A1=-I1sin01,A2=I1cos01,A3=l3sin
解式⑹可得:
31=01=(A4U-A3V)/D,
其中:
D=AiA4-A2A3=I112sin(01-02)
3)加速度分析
方向角变量(02,要求确定运动变量
3.RRP杆组运动分析子程序
图3所示RRPI级杆组中,已知杆长l1及两外接点P1,P2的运动和移动副轴线F2P3的0;,0';),F2点为以移动副与构件2相连的构件上运动已知的牵连点,
12,01,|2,01,|2,0
对式
(2)求导一次得:
A10''+A5|'2=GA20'1+A3|'2=H(11)
(12)
其中:
A,A同前,A5=-cos02,A3=-sin02,G=u+12A0',H=v-I2A50'解式(11)可得:
31=0'1=(A6G-A5H)/D8,I'2=(A1H-A2G)/D8
其中:
D3=A1A6-A2A5=I1COS(01-02)
3)
加速度分析
4)
3)加速度分析
(20)
对式(18)求导一次得:
A70''i+A5|''2=E2,AB'+AI''2=F2
其中:
E2=u''+A80'i2+2A5I'20'i,F2=v''-A70'i2-2A5I'20'i
解式(20)可得:
ai=0''i=(A6E-A5F2)/(-|2),|''2=(人7卩2-人8丘)/(-|2)(21)
由上述式子可设计出RPR杆组运动分析子程序(见程序单),在子程序中,以+m代替
前面各式中出现的±计算符。
m称之为型参数,在设计主程序时,应根据各类n级杆组不
同的布置型式,确定m的取值(m可取+1,-1和0)。
5.PRP杆组运动分析子程序
图5所示PRPn级杆组中,已知导路1,2两外接点P1,P2的运动,h1,h2分别为未知运动点P3至导路1,2的垂直距离,导路1,2的方位角、角速度、角加速度(01,0',0'1,02,0'2,0''2)均已知,要求确定导路1,2移动的位移、速度及加速度(l1,l2,「1,「2,I'1,I'2)以及P3点的运动(X3,x',x'3,y3,y3,
y3)。
1)位置分析
及I2的方程式:
1+h1Sin01=x2+I2COS02-h2Sin02
1cos01-l2COS02=Ei
11Sin01-l2Sin02=F1
其中:
a=COS01,
由于0
11
E1=u-a3h1-A412,F1=v+Ah1+A>h2,
A2=COS02,A3=sin01,A4=sin02
1,02均已知,由此解得:
=(F1COS02-E1Sin02)/D8
12=(F1COS01-E1Sin01)/D8
其中:
08=A2A3-A1A=sin(01-P3点的位置为:
X3=X1+I1COS01+h1Sin01
y3=y1+I1sin01-h1COS01
2)速度分析
对式(22)求导一次,整理得:
I'1COS01-I'2COS02=E2
I1Sin01-I2Sin02=F2
其中:
Ea=u+a60'1-A80'2,F2=v
A=l1Sin01-h1COS01,A?
=l2COS02-h2sin02,A8=l2sin02+h2COS02。
由(25)解得:
l11=(F2COS02-E2Sin02)/D8
l‘2=(F2COS01-E2sin01)/D8
P3点的速度为对式(24)求导得:
X13=X11+l11COS01+A6011
(26)
y3=y1+lisin0i-A50i
(27)
3)加速度分析
对式(25)求导一次,整理得:
l
l
其中:
1COS01
1Sin01
E3=u
-l2COS02=E3
-l112Sin02=F3
(28)
+2A3l101+A501+A601~2A4l202-A02-A80
,2,2
1-A501+2A2I202-As02+A?
0
-2Ail101+A60
F
(28)式得:
111=(F3cos02-E3Sin02)
112=(F3cos01-E3Sin01)
l
P3点的加速度为对式(27)求导得:
小,,,,,,>2
X3=X1+A1I1-2A3l101-A501-A601
y113=y111+A3|111-2A1|11011-A6012-A50111
由上述式子可设计出PRP杆组运动分析子程序(见程序单)。
(29)
(30)
6.RPF杆组运动分析子程序
图6所示RPPn级杆组中,已知导路1参考点P1和外转动副Pa的运动,h为外副P2至导路2的垂直距离,导路1的方位角、角速度、角加速度(0与导路2间的夹角为。
要求确定导路1,l111,l112)以及导路中心P3,P4点的运动(y114)。
1,01,0
2移动的位移、速度及加速度(
X3,X4,
X3,X4,X3,X4,y3,
1)位置分析
推导11,及|2的方程式:
1+)=X2+hSin(0
1+)=y2-hcoS(0
X1+11COS01+12COS(0
y1+l1Sin01+12Sin(0
整理得:
01+l2COS
liCOS
l1Sin
其中:
01+l2Sin
(0
(0
1h,
1+)=E1
1+)=F1
F1=V—Ah,
1+)
1+)
11)已知,导路1
I1,I2,I1,l2,
y4,y3,y4,y3,
对(Xu%)
囲他七)卜©2
7辰6
A=sin(01+),A=COS
由于01,均已知,由此解得:
11=(Esin(01+)-F1COS(01+
12=(F1COS01-E1Sin01)/D8其中:
D8=AA4-A2A3=sin,A=sin01
P3、P4点的位置为:
X3=x1+I1COS01,y3=y1+I1sin01
X4=x2+hsin(01+),y4=y2-hcos(01+)
当给定P1、P2点的位置,杆长h的大小和导路的方向角0种形式,即图6中的实线和虚线两种形式,这可用h为“+”线机构)来确定。
此外,从式(32)可以看出,为保证机构能够正常运动,两导路之间的夹角
0,再考虑到加工和装配等因素以及摩擦的存在,工程实际中,一般要求sin
(0l+)O
))/D8
(32)
A=cos01
1、后,
(实线机构)
(33)
RPP杆组可能有两
和h
“-”(虚
不能为
0.1o
对式(31)求导一次,整理得:
I
I
其中:
b=U+01(Aeh+AaI1
由式(34)解得:
I‘1=(&sin(01+)-F
I‘2=(F2COS01-E2sin0
2)速度分析
1C0S01+I2C0S(01+)=E2
1Sin01+l'sin(01+)=F2(34)
+A1I2),F2=V-01(Ah-A411-A2l2)o
2COS(0i+))/D8
(35)
1)/D8
P3、P4点的速度为对式(33)求导得:
3=x'+A4I'-A3|10'1,y'=y'+AaI'+A4|10'1
4
=x‘2+A2h0'1,y‘4=y‘2+A1h0‘1(36)
加速度分析
其中:
F
isin01
E3=u
2Sin02=F3(37)
01(Ah+A11+A112)-01(Ah-A411-A2I2)+201(AbI1+A112)
01(Ath-A411-A212)+01(Ah-Asl1-A112)-201(Ad1+A2I2)
解(37)式得:
I"1=(E3sin(01+)-F3COS(01+))/D8
I2=(F3COS01-Essin01)/D8
P3、P4点的加速度为对式(36)求导得:
1+A411-A31101-2A31'01-A4l101
1+A3I1+A41101+2A41101-Asl101
2
+A2h01-A1h01
2+A1h0''1+A2h0'2
/*机械原理平面机构运动分析子程序*/
/*(含单杆,RRR,RRP,RPR,PRP,RPP杆组)*/
#definePI3.1415926#inelude#includedouble1,11,12,lv1,lv2,la1,la2,r,af,ct,cv,ca,ct1,cv1,ca1,ct2,cv2,ca2;
doubleu,v,u1,v1,u2,v2,x1,y11,xv1,yv1,xa1,ya1,x2,y2,xv2,yv2,xa2,ya2;
doublex3,y3,xv3,yv3,xa3,ya3,x4,y4,xv4,yv4,xa4,ya4,a1,a2,a3,a4,a5,a6,a7,a8;
doublec,d,d7,d8,dt,e,e1,e2,e3,f,f1,f2,f3,g,h,h1,h2,i1,k,k1,k2,n,n7,w;
intm;
/*各公共子程序*/
/*单杆运动分析子程序*/
voidSSL()
{
x2=x1+l*cos(ct);
y2=y11+l*sin(ct);
x3=x1+r*cos(ct+af);
y3=y11+r*cos(ct+af);
xv3=xv1-(y3-y1)*cv;
yv3=yv1+(x3-x1)*cv;
xa3=xa1-(y3-y11)*ca-(x3-x1)*cv*cv;
ya3=ya1+(x3-x1)*ca-(y3-y11)*cv*cv;
voidRRR()
{
u=x2-x1;
v=y2-y11;
u1=xv2-xv1;
v1=yv2-yv1;
u2=xa2-xa1;
v2=ya2-ya1;
c=(u*u+v*v+l2*l2-1*l1)/2/I2;
k=v*v+u*u-c*c;
if(k<0)
Cout<<("DYDACANNOTBEASSEMBLED\n");else
{n7=v+m*sqrt(k);
d7=u-c;
ct2+=2*PI;
ct2-=2*PI;
ct2=2*atan(n7/d7);if(d7<0&&n7>0)elseif(d7<0&&n7<0)
{n=v+l2*sin(ct2);
d=u+l2*cos(ct2);
ct1=atan(n/d);
}
ct1+=PI;
ct1-=PI;
if(d<0&&n>0)
elseif(d<0&&n<0)
a1=-l1*sin(ct1);
a2=l1*cos(ct1);
a3=l2*sin(ct2);
a4=-l2*cos(ct2);
d=a1*a4-a2*a3;
if(fabs(d)<1e-9)cout<<("DYADISINUNCERTAINTY'n");
else
{cv1=(a4*u1-a3*v1)/d;cv2=(a1*v1-a2*u1)/d;e=u2+a2*cv1*cv1+a4*cv2*cv2;f=v2-a1*cv1*cv1-a3*cv2*cv2;ca1=(a4*e-a3*f)/d;
ca2=(a1*f-a2*e)/d;
}
voidRRP()
{
u=x2-x1;
v=y2-y11;u1=xv2-xv1;v1=yv2-yv1;u2=xa2-xa1;v2=ya2-ya1;
k1=l1*l1-pow((u*sin(ct2)-v*cos(ct2)),2);
if(k1<0)
cout<<("DYADCANNOTBEASSEMBLED\n");else
{k2=u*cos(ct2)+v*sin(ct2);
ct1+=PI;ct1-=PI;
l2=-k2+m*sqrt(k1);n=v+l2*sin(ct2);d=u+l2*cos(ct2);ct1=atan(n/d);
if(d<0&&n>0)
elseif(d<0&&n<0)
-l1*sin(Ct1);l1*cos(ctl);-cos(ct2);
-sin(ct2);
a1
a2
a5
a6
g=u1+l2*a6*cv2;h=v1-l2*a5*cv2;d8=a1*a6-a2*a5;
If(fabs(d8)<=1e-9)
cout<<("DYADISINUNCERTAINTY'n");
else
{cv1=(a6*g-a5*h)/d8;
lv2=(a1*h-a2*g)/d8;
e1=u2+a2*cv1*cv1+2*a6*lv2*cv2+l2*a5*cv2*cv2+l2*a6*ca2;f1=v2-a1*cv1*cv1-2*a5*lv2*cv2+l2*a6*cv2*cv2-2*a5*ca2;
ca1=(a6*e1-a5*f1)/d8;
la2=(a1*f1-a2*e1)/d8;
VoidRPR()
{
u=x2-x1;
v=y2-y11;
u1=xv2-xv1;
v1=yv2-yv1;
u2=xa2-xa1;
v2=ya2-ya1;
i1=u*u+v*v-(l1-w)*(l1-w);
if(i1<0)
cout<<("DYADCANNOTBEASSEMBLED\n”);else
{l2=sqrt(i1);
n=v+m*(l1-w);
d=u-l2;
ct2+=2*PI;ct2-=2*PI;
ct2=2*atan(n/d);if(d<0&&n>0)elseif(d<0&&n<0)ct1=ct2-m*PI/2;
a5=-cos(ct2)
a6=-sin(ct2)
a7=-(l1-w)*sin(ct1)+l2*sin(ct2)
a8=(l1-w)*cos(ct1)-l2*cos(ct2)if(Abs(l2)<1e-9)
cout<<("DYADISINUNCERTAINTY\n");else
{cv1=(a6*u1-a5*v1)/(-l2);cv2=cv1;
lv2=(a7*v1-a8*u1)/(-l2);e2=u2+a8*cv1*cv1+2*a6*lv2*cv1;f2=v2-a7*cv1*cv1-2*a5*lv2*cv1;ca1=(a6*e2-a5*f2)/(-l2);
ca2=ca1;
la2=(a7*f2-a8*e2)/(-l2);
voidPRP()
{
u=x2-x1;
v=y2-y11;
u1=xv2-xv1;
v1=yv2-yv1;
u2=xa2-xa1;
v2=ya2-ya1;
a1=cos(ctl);
a2=cos(ct2);
a3=sin(ct1);
a4=sin(ct2);
d8=a2*a3-a1*a4;
if(fabs(d8)<=1e-9)
cout<<("DYADISINUNCERTAINTY\n");else
{e1=u-a3*h1-a4*h2;
f1=v+a1*h1+a2*h2;
l1=(a2*f1-a4*e1)/d8;
y3=y1+
a5=a1*
a6=a3*
a7=a2*
a8=a4*
l2=(a1*f1-a3*e1)/d8;x3=x1+a1*l1+a3*h1;
a3*l1-a1*h1;
l1+a3*h1;
l1-a1*h1;
l2-a4*h2;
l2+a2*h2;
e2=u1+a6*cv1-a8*cv2;f2=v1-a5*cv1+a7*cv2;
lv1=(a2*f2-a4*e2)/d8;
lv2=(a1*f2-a3*e2)/d8;
lv1-a6*cv1;
lv1+a5*cv1;
lv1*cv1+a5*cv1*cv1+a6*ca1;lv2*cv2-a7*cv2*cv2-a8*ca2;
lv1*cv1+a