机械原理基本杆组分析法

更新时间:2024-06-13 06:49:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

机械原理

机 构运 动 析 基

上 机 指 导 书

本 杆组 法 分

Ⅱ级机构的杆组分析法通用子程序设计

随着计算机的普及,用解析法对机构进行运动分析得到越来越广泛的应用。解析法中有矢量方程解析、复数矢量、杆组分析、矩阵运算等方法。本文采用杆组分析的方法,设计通用的Ⅱ级杆组子程序,可对一般的Ⅱ级机构进行运动分析。

1. 单杆运动分析子程序

单杆的运动分析,通常是已知构件三角形△P1P2P3的边长l、r夹角α以及构件上某基

点P1的运动参数x1,y1,x’1,y’1,x’’1,y’’1和构件绕基点转动的运动参数θ,θ’,θ’’,要求确定构件上点P2和P3的运动参数。 显然,由图1可得下列关系式:

x2=x1+lcosθ, y2=y1+lsinθ x’2=x’1-lsinθθ’, y’2=y’1+lcosθθ’

2 2

x’’2=x’’1-lsinθθ’’-lcosθθ’, y’’2=y’’1+lcosθθ’’-lsinθθ’ x3=x1+rcos(θ+α), y3=y1+rsin(θ+α) x’3=x’1-(y3-y1)θ’, y’3=y’1+(x3-x1)θ’

2 2

x’’3=x’’1-(y3-y1)θ’’-(x3-x1)θ’, y’’3=y’’1+(x3-x1)θ’’-(y3-y1)θ’

由以上各式可设计出单杆运动分析子程序(见程序单)。

图1

2. RRR杆组运动分析子程序

图2所示RRRⅡ级杆组中,杆长l1,l2及两外接转动副中心P1,P2的坐标、速度、加

速度分量为x1,x’1,x’’1,y1,y’1,y’’1,x2,x’2,x’’2,y2,y’2,y’’2,要求确定两杆的角度、

角速度和角加速度θ1,θ’1,θ’’1,θ2,θ’2,θ’’2。 1) 位置分析

将已知P1P2两点的坐标差表示为:

u=x2-x1,v=y2-y1 (1) 杆l1及l2投影方程式为: l1cosθ1-l2cosθ2=u

l1sinθ1-l2sinθ2=v (2) 消去θ1得:vsinθ2+ucosθ2+c=0 (3)

2222

其中:c=(u+v+l2-l1)/2l2 解式(3)可得:

tan(θ2/2)=(v±v2?u2?c2)/(u-c) (4)

式中+号和-号分别对应图2中m=+1和m=-1两位置。 图2

由式(2)可得:

tanθ1=(v+l2sinθ2)/(u+l2cosθ2) (5) 2) 速度分析

对式(2)求导一次得:A1θ’1+A3θ’2=u’,A2θ’1+A4θ’2=v’ (6) 其中:A1=-l1sinθ1,A2=l1cosθ1,A3=l3sinθ2,A4=-l2cosθ2

解式(6)可得:ω1=θ’1=(A4u’-A3v’)/D,ω2=θ’2=(A1v’-A2u’)/D (7) 其中:D=A1A4-A2A3=l1l2sin(θ1-θ2) 3) 加速度分析

对式(6)求导一次得:A1θ’’1+A3θ’’2=E,A2θ’’1+A4θ’’2=F (8)

2222

其中:E=u’’+A2θ’1+A4θ’2,F=v’’-A1θ’1-A3θ’2

解式(8)可得:α1=θ’’1=(A4E-A3F)/D,α2=θ’’2=(A1F-A2E)/D (9)

由上述式子可设计出RRR杆组运动分析子程序(见程序单)。

3. RRP杆组运动分析子程序

图3所示RRPⅡ级杆组中,已知杆长l1及两外接点P1,P2的运动和移动副轴线P2P3的方向角变量(θ2,θ’2,θ’’2), P2点为以移动副与构件2相连的构件上运动已知的牵连点,要求确定运动变量l2,θ1,l’2,θ’1,l’’2,θ’’1。

1) 位置分析

由于θ2已知,l2待求,将式(2)消去θ1可得: 2222

l2+2(ucosθ2+vsinθ2)l2+(u+v-l1)=0 由此解得:

l2=-(ucosθ2+vsinθ2)±

2 l1?(usin?2?vcos?2)2 (10)

式中+号用于转动副中心P3处在P2H线段之外( 图3中m=+1的位置),-号用于P3处在P2H线段 之内(图3中m=-1的位置)。 θ1由式(5)而定。

2) 速度分析

对式(2)求导一次得: 图3 A1θ’1+A5l’2=G,A2θ’1+A6l’2 =H (11)

其中:A1,A2同前,A5=-cosθ2,A6=-sinθ2,G=u’+l2A6θ’2,H=v’-l2A5θ’2

解式(11)可得:ω1=θ’1=(A6G-A5H)/D8,l’2=(A1H-A2G)/D8 (12) 其中:D8=A1A6-A2A5=l1cos(θ1-θ2)

3) 加速度分析

对式(11)求导一次得:A1θ’’1+A5 l’’2=E1,A2θ’’1+A6 l’’2=F1 (13)

22

其中:E1=u’’+A2θ’1+2A6l’2θ’2+l2A5θ’2+l2A6θ’’2

22

F1=v’’-A1θ’1-2A5l’2θ’2+l2A6θ’2-l2A5θ’’2

解式(13)可得:α1=θ’’1=(A6E1-A5F1)/D8,l’’2=(A1F1-A2E1)/D8 (14)

由上述式子可设计出RRP杆组运动分析子程序(见程序单)。

4. RPR杆组运动分析子程序

图4所示RPRⅡ级杆组中,已知杆长l1及两外接点P1,P2的运动,l1为P1点至导路的垂直距离, P2为过P2'与导路垂直延伸点,延伸距离为w(当P2与P1在导路同侧时,w取正,在异侧时,w取负),要求确定运动变量l2,θ1,θ2,l’2,θ’1,θ’2,l’’2,θ’’1,θ’’2。 1) 位置分析

θ1与θ2的关系为:θ2=θ1±π/2 (15) 式中+号和-号分别对应图4中m=+1和m=-1两 位置。

l1与l2有如下关系: l2?u2?v2?(l1?w)2 (16)

由式(4)和式(16)可得:

tan(θ2/2)=[v±(l1-w)]/(u-l2) (17)

2) 速度分析

由于θ’1=θ’2,引进符号θ’i(i=1,2),对 式(2)求导一次得:

A7θ’i+A5l’2=u’,A8θ’i+A6l’2=v’ (18) 其中:A7=-(l1-w)sinθ1+l2sinθ2

A8= (l1-w)cosθ1-l2cosθ2 图4 解式(18)可得: ωi=θi=(A6u’ -A5v’)/(-l2),l’2=(A7v’ -A8u’)/(-12) (19)

3) 加速度分析

对式(18)求导一次得:A7θ’’i+A5l’’2=E2,A8θ’’i+A6l’’2=F2 (20)

22

其中:E2=u’’+A8θ’i+2A6l’2θ’i,F2=v’’-A7θ’i-2A5l’2θ’i

解式(20)可得:αi=θ’’i=(A6E2-A5F2)/(-l2),l’’2=(A7F2-A8E2)/(-l2) (21)

由上述式子可设计出 RPR杆组运动分析子程序(见程序单),在子程序中,以+m代替前面各式中出现的±计算符。 m称之为型参数,在设计主程序时,应根据各类Ⅱ级杆组不同的布置型式,确定m的取值(m可取+1,-1和0)。

5.PRP杆组运动分析子程序

图5所示PRPⅡ级杆组中,已知导路1,2两外接点P1,P2的运动,h1,h2分别为未知运动点P3至导路1,2的垂直距离,导路1,2的方位角、角速度、角加速度(θ1,θ’1,θ’’1,θ2,θ’2,θ’’2)均已知,要求确定导路1,2移动的位移、速度及加速度(l1,l2,l’1,l’2,l’’1,l’’2)以及P3点的运动(x3,x’3,x’’3,y3,y’3,y’’3)。

1) 位置分析

推导l1,及l2的方程式:

x1+l1cosθ1+h1sinθ1 = x2+l2cosθ2-h2sinθ2 y1+l1sinθ1-h1cosθ1 = y2+l2sinθ2+h2cosθ2 整理得:

l1cosθ1 - l2cosθ2 = E1

l1sinθ1 - l2sinθ2 = F1 (22) 其中:E1=u- A3h1-A4l2,F1=v+A1h1+A2h2,

A1=cosθ1,A2=cosθ2,A3=sinθ1,A4=sinθ2 。

由于θ1 ,θ2均已知,由此解得: l1 =(F1 cosθ2 - E1sinθ2) / D8

l2 =(F1 cosθ1 - E1sinθ1) / D8 (23) 其中:D8 = A2A3 - A1A4 = sin(θ1-θ2)

P3点的位置为:

x3 = x1 + l1cosθ1 + h1sinθ1

y3 = y1 + l1sinθ1 - h1cosθ1 (24) 2)速度分析

对式(22)求导一次,整理得:

l’1cosθ1 - l’2cosθ2 = E2 图5 l’1sinθ1 - l’2sinθ2 = F2 (25)

其中:E2 =u’ + A6θ’1 – A8θ’2 ,F2 = v’ - A5θ’1 – A7θ’2 ,A5 = l1cosθ1 + h1sinθ1 , A6 = l1sinθ1 - h1cosθ1 ,A7 = l2cosθ2 - h2sinθ2 ,A8 = l2sinθ2+ h2cosθ2 。

由(25)解得:

l’1=(F2 cosθ2 - E2sinθ2)/ D8

l’2=(F2 cosθ1 - E2sinθ1) / D8 (26)

P3点的速度为对式(24)求导得: x’3 = x’1 + l’1cosθ1 + A6θ’1

y’3 = y’1 + l’1sinθ1 - A5θ’1 (27) 3) 加速度分析

对式(25)求导一次,整理得: l’’1cosθ1 - l’’2cosθ2 = E3

l’’1sinθ1 - l’’2sinθ2 = F3 (28)

其中:E3 = u’’ + 2A3l’1θ’1 + A5θ’1+ A6θ’’1–2A4l’2θ’2–A7θ’2– A8θ’’2 ,

2 2

F3 = v’’ - 2A1l’1θ’1 + A6θ’1- A5θ’’1 +2A2l’2θ’2–A8θ’2+ A7θ’’2 。 解(28)式得:

l’’1=(F3 cosθ2 – E3sinθ2) / D8

l’’2=(F3 cosθ1 – E3sinθ1) / D8 (29)

P3点的加速度为对式(27)求导得:

2

x’’3 = x’’1 + A1l’’1 - 2A3l’1θ’1 - A5θ’1- A6θ’’1

2

y’’3 = y’’1 + A3l’’1 - 2A1l’1θ’1 - A6θ’1- A5θ’’1 (30) 由上述式子可设计出 PRP杆组运动分析子程序(见程序单)。

6.RPP杆组运动分析子程序

图6所示RPPⅡ级杆组中,已知导路1参考点P1和外转动副P2的运动,h为外副P2至导路2的垂直距离,导路1的方位角、角速度、角加速度(θ1,θ’1,θ’’1)已知,导路1与导路2间的夹角为?。要求确定导路1,2移动的位移、速度及加速度(l1,l2,l’1,l’2,l’’1,l’’2)以及导路中心P3,P4点的运动(x3,x4,x’3,x’4,x’’3,x’’4,y3,y4,y’3,y’4,y’’3, y’’4)。

1)位置分析

推导l1,及l2的方程式:

x1+l1cosθ1+l2cos(θ1+?)= x2+hsin(θ1+?) y1+l1sinθ1+l2sin(θ1+?)= y2-hcos(θ1+?)

整理得:

l1cosθ1 + l2cos(θ1+?)= E1

l1sinθ1 + l2sin(θ1+?)= F1 (31) 其中:E1 = u + A1h,F1 = v –A2h,

A1 =sin(θ1+?),A2 =cos(θ1+?)。 由于θ1 ,? 均已知,由此解得: l1 =(E1 sin(θ1+?)- F1 cos(θ1+?))/ D8 l2 =(F1 cosθ1 - E1sinθ1)/ D8 (32)

其中:D8 =A1A4-A2A3=sin?,A3 =sinθ1 ,A4 =cosθ1 图6

P3、P4点的位置为:

x3 = x1 + l1 cosθ1 ,y3 = y1 + l1 sinθ1 x4 = x2 + h sin(θ1+?),y4 = y2 - hcos(θ1+?) (33) 当给定P1、P2点的位置,杆长h的大小和导路的方向角θ1、? 后,RPP杆组可能有两种形式,即图6中的实线和虚线两种形式,这可用h为“+”(实线机构)和h为“-”(虚线机构)来确定。

此外,从式(32)可以看出,为保证机构能够正常运动,两导路之间的夹角? 不能为0,再考虑到加工和装配等因素以及摩擦的存在,工程实际中,一般要求?sin??? 0.1。

2

2

2)速度分析

对式(31)求导一次,整理得: l’1cosθ1 + l’2cos(θ1+?)= E2

l’1sinθ1 + l’2sin(θ1+?)= F2 (34)

其中:E2 =u’ +θ’1(A2h + A3l1 + A1l2),F2 = v’ -θ’1(A1h - A4l1 - A2l2)。 由式(34)解得:

l’1 =(E2 sin (θ1+?)- F2 cos(θ1+?))/ D8

l’2 =(F2 cosθ1- E2 sinθ1 ) / D8 (35)

P3、P4点的速度为对式(33)求导得:

x’3 = x’1 + A4l’1 – A3l1θ’1,y’3 = y’1 + A3l’1 + A4l1θ’1

x’4 = x’2 + A2 hθ’1 ,y’4 = y’2 + A1 hθ’1 (36)

3) 加速度分析

对式(34)求导一次,整理得: l’’1cosθ1 + l’’2cosθ2 = E3

l’’1sinθ1 + l’’2sinθ2 = F3 (37)

2

其中:E3 = u’’ +θ’’1(A2h +A3l1 +A1l2)-θ’1(A1h -A4l1 - A2l2)+ 2θ’1(A3l’1 +A1l’2)

2

F3 = v’’ +θ’’1(A1h -A4l1 -A2l2)+θ’1(A2h –A3l1 – A1l2)- 2θ’1(A4l’1 +A2l’2) 解(37)式得:

l’’1 =(E3 sin (θ1+?)- F3 cos(θ1+?))/ D8

l’’2 =(F3 cosθ1 – E3sinθ1)/ D8 (38) P3、P4点的加速度为对式(36)求导得:

2

x’’3 = x’’1 + A4l’’1 - A3l1θ’’1 - 2A3l’1θ’1–A4l1θ’1

2

y’’3 = y’’1 + A3l’’1 + A4l1θ’’1 + 2A4l’1θ’1–A3l1θ’1

2

x’’4 = x’’2 + A2 hθ’’1–A1 hθ’1

2

y’’4 = y’’2 + A1 hθ’’1 + A2 hθ’1 (39) 由上述式子可设计出 RPP杆组运动分析子程序(见程序单)。

/* 机械原理平面机构运动分析子程序 */

/*(含单杆,RRR,RRP,RPR,PRP, RPP杆组) */

#define PI 3.1415926 #include #include

double l, l 1, l 2, l v1, l v2, l a1, l a2, r, af, ct, cv, ca, ct1, cv1, ca1, ct2, cv2, ca2; double u, v, u1, v1, u2, v2, x1, y11, xv1, yv1, xa1, ya1, x2, y2, xv2, yv2, xa2, ya2; double x3, y3, xv3, yv3, xa3, ya3, x4, y4, xv4, yv4, xa4, ya4, a1, a2, a3, a4, a5, a6, a7, a8; double c, d, d7, d8, dt, e, e1, e2, e3, f, f1, f2, f3, g, h, h1, h2, i1, k, k1, k2, n, n7, w; int m;

/* 各公共子程序 */

/* 单杆运动分析子程序 */

void SSL() {

x2 = x1 + l * cos(ct); y2 = y11 + l * sin(ct); x3 = x1 + r * cos(ct + af ); y3 = y11 + r * cos(ct + af ); xv2 = xv1 - l * sin(ct) * cv; yv2 = yv1 + l * cos(ct) * cv;

xa2 = xa1 - l * sin(ct) * ca - l * cos(ct) * cv * cv; ya2 = ya1 + l * cos(ct) * ca - l * sin(ct) * cv * cv; 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; }

/* RRR杆组运动分析子程序 */

void RRR() {

u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1;

c = (u * u + v * v + l 2 * l 2 – l 1 * l 1) / 2 / l 2; k = v * v + u * u - c * c; if ( k < 0 )

Cout<<( \else

{ n7 = v + m * sqrt(k); d7 = u – c;

ct2 = 2 * atan ( n7 / d7 );

if ( d7 < 0 && n7 > 0 ) ct2 += 2 * PI; else if ( d7 < 0 && n7 < 0 ) ct2 -= 2 * PI; { n = v + l 2 * sin ( ct2 ); d = u + l 2 * cos ( ct2 ); ct1 = atan ( n / d );

}

if ( d < 0 && n > 0 ) ct1 += PI; else if ( d < 0 && n < 0 ) ct1 -= PI; a1 = -l 1 * sin(ct1); a2 = l 1 * cos(ct1); a3 = l 2 * sin(ct2); a4 = -l 2 * cos(ct2); d = a1 * a4 - a2 * a3; if ( fabs ( d ) < 1e-9 ) cout<<( \ 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;

}

} }

/* RRP杆组运动分析子程序 */

void RRP() {

u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1;

k1 = l 1 * l 1 - pow ( ( u * sin ( ct2 ) - v * cos ( ct2 ) ) , 2 ); if (k1 < 0)

cout<<(\else

{ k2 = u * cos(ct2) + v * sin(ct2); l 2 = -k2 + m * sqrt(k1); n = v + l 2 * sin(ct2); d = u + l 2 * cos(ct2); ct1 = atan ( n / d );

if ( d < 0 && n > 0 ) ct1 += PI; else if ( d < 0 && n < 0 ) ct1 -= PI; a1 = -l 1 * sin(ct1); a2 = l 1 * cos(ct1); a5 = -cos(ct2); a6 = -sin(ct2);

g = u1 + l 2 * a6 * cv2; h = v1 – l 2 * a5 * cv2; d8 = a1 * a6 - a2 * a5; If ( fabs(d8) <=1e-9)

cout<<(\ else

{ cv1 = (a6 * g - a5 * h) / d8; l v2 = (a1 * h - a2 * g) / d8;

e1 = u2 + a2*cv1*cv1 + 2*a6*l v2*cv2 + l 2*a5*cv2*cv2 + l 2*a6*ca2; f1 = v2 - a1*cv1*cv1 - 2*a5* l v2*cv2 + l 2*a6*cv2*cv2 – l 2*a5*ca2; ca1 = (a6 * e1 - a5 * f1) / d8;

l a2 = (a1 * f1 - a2 * e1) / d8;

} } }

/* RPR杆组运动分析子程序 */

Void RPR() {

u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1;

i1 = u * u + v * v - (l 1 - w) * (l 1 - w); if ( i1 < 0)

cout<<( \else

{ l2 = sqrt( i1);

n = v + m * (l 1 - w); d = u – l 2;

ct2 = 2 * atan(n / d );

if ( d < 0 && n > 0 ) ct2 += 2 * PI; else if ( d < 0 && n < 0 ) ct2 -= 2 * PI; ct1 = ct2 - m * PI/2; a5 = -cos(ct2) a6 = -sin(ct2)

a7 = -(l 1 - w) * sin(ct1) + l 2 * sin(ct2) a8 = (l 1 - w) * cos(ct1) – l 2 * cos(ct2) if (Abs(l 2) <1e-9)

cout<<( \ else

{ cv1 = (a6 * u1 - a5 * v1) / (-l 2); cv2 = cv1;

l v2 = (a7 * v1 - a8 * u1) / (-l 2);

e2 = u2 + a8 * cv1 * cv1 + 2 * a6 * lv2 * cv1; f2 = v2 - a7 * cv1 * cv1 - 2 * a5 * lv2 * cv1; ca1 = (a6 * e2 - a5 * f2) / (-l 2); ca2 = ca1;

l a2 = (a7 * f2 - a8 * e2) / (-l 2); }

} }

10

/* PRP杆组运动分析子程序 */

void PRP() {

u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1; a1 = cos(ct1) ; a2 = cos(ct2) ; a3 = sin(ct1) ; a4 = sin(ct2);

d8 = a2 * a3 - a1 * a4; if ( fabs ( d8 ) <= 1e-9 )

cout<<(\else

{ e1 = u - a3 * h1 - a4 * h2; f1 = v + a1 * h1 + a2 * h2; l 1 = (a2 * f1 - a4 * e1) / d8; l 2 = (a1 * f1 - a3 * e1) / d8; x3 = x1 + a1 * l 1 + a3 * h1; y3 = y1 + a3 * l 1 - a1 * h1; a5 = a1 * l 1 + a3 * h1; a6 = a3 * l 1 - a1 * h1; a7 = a2 * l 2 - a4 * h2; a8 = a4 * l 2 + a2 * h2;

e2 = u1 + a6 * cv1 - a8 * cv2; f2 = v1 - a5 * cv1 + a7 * cv2; l v1 = (a2 * f2 - a4 * e2) / d8; l v2 = (a1 * f2 - a3 * e2) / d8; xv3 = xv1 + a1 * l v1 - a6 * cv1; yv3 = yv1 + a3 * l v1 + a5 * cv1;

e = u2 + 2 * a3 * l v1 * cv1 + a5 * cv1 * cv1 + a6 * ca1; e3 = e - 2 * a4 * l v2 * cv2 - a7 * cv2 * cv2 - a8 * ca2; f = v2 - 2 * a1 * l v1 * cv1 + a6 * cv1 * cv1 - a5 * ca1; f3 = f + 2 * a2 * l v2 * cv2 - a8 * cv2 * cv2 + a7 * ca2; l a1 = (a2 * f3 - a4 * e3) / d8; l a2 = (a1 * f3 - a3 * e3) / d8;

xa3 = xa1 + a1 * l a1 - 2 * a3 * l v1 * cv1 - a5 * cv1 * cv1 - a6 * ca1; ya3 = ya1 + a3 * l a1 + 2 * a1 * l v1 * cv1 - a6 * cv1 * cv1 + a5 * ca1; } }

11

/* RPP杆组运动分析子程序 */

Void RPP() {

u = x2 - x1; v = y2 - y11; u1 = xv2 - xv1; v1 = yv2 - yv1; u2 = xa2 - xa1; v2 = ya2 - ya1; a1 = sin(ct1 + dt); a2 = cos(ct1 + dt):; a3 = sin(ct1); a4 = cos(ct1); d8 = sin(dt);

if ( fabs ( d8 ) <=0.1 )

cout<<(\else

{ e1 = u + a1 * h; f1 = v - a2 * h;

l 1 = (a1 * e1 - a2 * f1) / d8; l 2 = (a4 * f1 - a3 * e1) / d8; x3 = x1 + a4 * l 1; y3 = y1 + a3 * l 1; x4 = x2 + a1 * h; y4 = y2 - a2 * h;

e2 = u1 + cv1 * (a2 * h + a3 * l 1 + a1 * l 2 ); f2 = v1 - cv1 * (a1 * h - a4 * l 1 - a2 * l 2 ); l v1 = (a1 * e2 - a2 * f2) / d8; l v2 = (a4 * f2 - a3 * e2) / d8;

xv3 = xv1 + a4 * l v1 - a3 * l 1 * cv1; yv3 = yv1 + a3 * l v1 + a4 * l 1 * cv1; xv4 = xv2 + a2 * h * cv1; yv4 = yv2 + a1 * h * cv1;

e = u2 + ca1 * (a2 * h + a3 * l 1 + a1 * l 2 );

e3 = e - cv1 * cv1 * (a1 * h - a4 * l 1 - a2 * l 2) + 2 * cv1 * (a3 * l v1 + a1 * l v2 ); f = v2 + ca1 * (a1 * h - a4 * l 1 - a2 * l 2 );

f3 = f + cv1 * cv1 * (a2 * h - a3 * l 1 - a1 * l 2) - 2 * cv1 * (a4 * l v1 + a2 * l v2 ); l a1 = (a1 * e3 - a2 * f3) / d8; l a2 = (a4 * f3 - a3 * e3) / d8;

xa3 = xa1 + a4 * l a1 - 2 * a3 * l v1 * cv1 - a4 * l 1 * cv1 * cv1 - a3 * l 1 * ca1; ya3 = ya1 + a3 * l a1 + 2 * a4 * l v1 * cv1 - a3 * l 1 * cv1 * cv1 + a4 * l 1 * ca1; xa4 = xa2 + a2 * h * ca1 - a1 * h * cv1 * cv1; ya4 = ya2 + a1 * h * ca1 + a2 * h * cv1 * cv1; } }

12

机构运动分析主程序编制实例

#include \机构运动分析子程序.h\ /* 运动分析子程序 */ #include /* 输入输出头文件 */ void main() /* 主程序 */ {

double d1=0.125, d3=0.6, d4=0.15, xa=0,ya=0, xc=0, yc=-0.275, xg=0, yg=0.3; double dv=1, da=0, df=0, c1=0; int i, n; cout<<\

cout<<\ 牛头刨床六杆机构的运动分析(教材例题3-6)\\n\ cout<<\ (具有RPR和RRP杆组)\\n\ cout<<\

cout<<\输入数据: \\n\

cout<<\l1=\l3=\l4=\l6=\ cout<<\ cout<<\ cout<<\

cout<<\请输入等分角(?)和等分数df n=\ cin>>df>>n; df *= PI/180; c1 *= PI/180; cout<<\

cout<<\计算结果: \\n\

cout<<\ for ( i=1; i<=n; i++ ) {

cout<<\? \\n\ l =r=d1; af=0; ct=c1; cv=dv; ca=da;

x1=xa; y11=ya; xv1=0; yv1=0; xa1=0; ya1=0; SSL();

l 1=w=m=0;

x1=x2; y11=y2; xv1=xv2; yv1=yv2; xa1=xa2; ya1=ya2; x2=xc; y2=yc; xv2=0; yv2=0; xa2=0; ya2=0; RPR();

l =r=d3; af=0; ct=ct2; cv=cv2; ca=ca2;

x1=xc; y11=yc; xv1=0; yv1=0; xa1=0; ya1=0; SSL();

13

if ( ct2 < 0 ) ct2 += 2*PI; ct2 *= 180/PI;

cout<<\ \ \

l 1= d4; m= 1;

ct2=PI; cv2=ca2=0;

x1=x2; y11=y2; xv1=xv2; yv1=yv2; xa1=xa2; ya1=ya2; x2=xg; y2=yg; xv2=0; yv2=0; xa2=0; ya2=0; RRP();

if ( ct1 < 0 ) ct1 += 2*PI; ct1 *= 180/PI;

cout<<\ \ \ cout<<\l2<<\ \lv2<<\ \la2<<\ cout<<\ c1 += df; }

注:牛头刨床的机构运动简图及原始参数见《机械原理》第3章习题3-6

牛头刨床工作机构运动简图

14

本文来源:https://www.bwwdw.com/article/au76.html

Top