第五节 六杆机构的运动分析

由于六杆机构的类型很多,任何一个四杆机构,若加上一个二级杆组就成为一个六杆机构,我们就使用较广泛的一类六杆机构——由曲柄、摆动导杆、连杆和滑块组成的来进行运动分析和程序设计,图1-8所示的牛头刨床主运动机构就是这样一类六杆机构。

图1-8所示为牛头刨床主运动机构的运动简图。设已知各构件的尺寸及原动件1的方位角θ1和匀角速度ω1,需对导杆的角位移、角速度和角加速度以及刨头的位置、速度和加速度进行分析。

一、数学模型的建立

为了对机构进行运动分析,先如图1-8建立直角坐标系,将各构件表示为杆矢,并将各杆矢用指数形式的复数表示。

图1-8 牛头刨床主运动机构

1.位置分析

如图1-8所示,由于这里有四个未知量,为了求解需要建立两个封闭矢量方程。由封闭图形ABCA可写出机构一个封闭矢量方程

  (1-25)

其复数形式表示为

  (1-26)

将式(1-26)的实部和虚部分离,得

  (1-27)

由式(1-27)得

  (1-28)

由封闭图形CDEGC可写出机构另一个封闭矢量方程

  (1-29)

其复数形式表示为

  (1-30)

将式(1-30)的实部和虚部分离,得

  (1-31)

由式(1-31)得

  (1-32)

2.速度分析

将式(1-26)和式(1-30)对时间t求一次导数,得速度关系

  (1-33)

将式(1-33)的实部和虚部分离,得

  (1-34)

若用矩阵形式来表示,则式(1-34)可写为

  (1-35)

3.加速度分析

将式(1-26) 和式(1-30)对时间t求二次导数,可得加速度关系表达式

  (1-36)

二、计算实例

【例1-4】 如图1-8所示,已知牛头刨床主运动机构各构件的尺寸为: l1=125mm,l3=600mm,l4=150mm,l6=275mm,l'6=575mm,原动件1以匀角速度ω1=1rad/s逆时针转动,计算该机构中各从动件的角位移、角速度和角加速度以及刨头5上E点的位置、速度和加速度,并绘制出运动线图。

三、程序设计

牛头刨床主运动机构MATLAB程序由主程序six_bar_main和子函数six_bar两部分组成。

1.主程序six_bar_main文件

*************************************************

%1.输入已知数据

clear;

l1=0.125;

l3=0.600;

l4=0.150;

l6=0.275;

l61=0.575;

omega1=1;

alpha1=0;

hd=pi/180;

du=180/pi;


%2.调用子函数 six_bar 计算牛头刨床机构位移,角速度,角加速度

for n1=1:459;

  theta1(n1)=-2*pi﹢5.8119﹢(n1-1)*hd;

  ll=[l1,l3,l4,l6,l61];

  [theta,omega,alpha]=six_bar(theta1(n1),omega1,alpha1,ll);


  s3(n1)=theta(1);    %s3表示滑块2相对于CD杆的位移

  theta3(n1)=theta(2);   %theta3表示杆3转过角度

  theta4(n1)=theta(3);   %theta4表示杆4转过角度

  sE(n1)=theta(4);     %sE表示杆5的位移


  v2(n1)=omega(1);     %滑块2的速度

  omega3(n1)=omega(2);   %构件3的角速度

  omega4(n1)=omega(3);   %构件4的角速度

  vE(n1)=omega(4);     %构件5的速度


  a2(n1)=alpha(1);     %a2表示滑块2的加速度

  alpha3(n1)=alpha(2);   %alpha3表示杆3的角加速度

  alpha4(n1)=alpha(3);   %alpha4表示杆4的角加速度

  aE(n1)=alpha(4);     %构件5的加速度

end


%3.位移,角速度,角加速度和牛头刨床图形输出

figure(3);

n1=1:459;

t=(n1-1)*2*pi/360;

subplot(2,2,1); %绘角位移及位移线图


plot(t,theta3*du,'r-.');

grid on;

hold on;

axis auto;

[haxes,hline1,hline2]=plotyy(t,theta4*du,t,sE);

grid on;

hold on;


xlabel('时间/s')

axes(haxes(1));

ylabel('角位移/\circ ')

axes(haxes(2));

ylabel('位移/m')

hold on;

grid on;

text(1.15,-0.65,'\theta_3')

text(3.4,0.27,'\theta_4')

text(2.25,-0.15,'s_E')


subplot(2,2,2); %绘角速度及速度线图

plot(t,omega3,'r-.');

grid on;

hold on;

axis auto;

[haxes,hline1,hline2]=plotyy(t,omega4,t,vE);

grid on;

hold on;


xlabel('时间/s')

axes(haxes(1));

ylabel('角速度/rad\cdots{-1}')

axes(haxes(2));

ylabel('速度/m\cdots{-1}')

hold on;

grid on;

text(3.1,0.35,'\omega_3')

text(2.1,0.1,'\omega_4')

text(5.5,0.45,'v_E')


subplot(2,2,3); %绘角加速度和加速度图

plot(t,alpha3,'r-.');

grid on;

hold on;

axis auto;

[haxes,hline1,hline2]=plotyy(t,alpha4,t,aE);

grid on;

hold on;


xlabel('时间/s')

axes(haxes(1));

ylabel('角加速度/rad\cdots{-2}')

axes(haxes(2));

ylabel('加速度 /m\cdots{-2}')

hold on;

grid on;

text(1.5,0.3,'\alpha_3')

text(3.5,0.51,'\alpha_4')

text(1.5,-0.11,'a_E')


subplot(2,2,4); %牛头刨床机构

n1=20;

x(1)=0;

y(1)=0;

x(2)=(s3(n1)*1000-50)*cos(theta3(n1));

y(2)=(s3(n1)*1000-50)*sin(theta3(n1));

x(3)=0;

y(3)=l6*1000;

x(4)=l1*1000*cos(theta1(n1));

y(4)=s3(n1)*1000*sin(theta3(n1));

x(5)=(s3(n1)*1000﹢50)*cos(theta3(n1));

y(5)=(s3(n1)*1000﹢50)*sin(theta3(n1));

x(6)=l3*1000*cos(theta3(n1));

y(6)=l3*1000*sin(theta3(n1));

x(7)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1));

y(7)=l3*1000*sin(theta3(n1))﹢l4*1000*sin(theta4(n1));

x(8)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1))-900;

y(8)=l61*1000;

x(9)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1))﹢600;

y(9)=l61*1000;

x(10)=(s3(n1)*1000-50)*cos(theta3(n1));

y(10)=(s3(n1)*1000-50)*sin(theta3(n1));

x(11)=x(10)﹢25*cos(pi/2-theta3(n1));

y(11)=y(10)-25*sin(pi/2-theta3(n1));

x(12)=x(11)﹢100*cos(theta3(n1));

y(12)=y(11)﹢100*sin(theta3(n1));

x(13)=x(12)-50*cos(pi/2-theta3(n1));

y(13)=y(12)﹢50*sin(pi/2-theta3(n1));

x(14)=x(10)-25*cos(pi/2-theta3(n1));

y(14)=y(10)﹢25*sin(pi/2-theta3(n1));

x(15)=x(10);

y(15)=y(10);

x(16)=0;

y(16)=0;

x(17)=0;

y(17)=l6*1000;

k=1:2;

plot(x(k),y(k));

hold on;

k=3:4;

plot(x(k),y(k));

hold on;

k=5:9;

plot(x(k),y(k));

hold on;

k=10:15;

plot(x(k),y(k));

hold on;

k=16:17;

plot(x(k),y(k));

hold on;

grid on;

axis ([-500 600 0 650]);

title('牛头刨床运动仿真');

grid on;

xlabel('mm')

ylabel('mm')

plot(x(1),y(1),'o');

plot(x(3),y(3),'o');

plot(x(4),y(4),'o');

plot(x(6),y(6),'o');

plot(x(7),y(7),'o');

hold on;

grid on;

xlabel('mm')

ylabel('mm')

axis ([-400 600 0 650]);


%4.牛头刨床机构运动仿真

figure(2)

m=moviein(20);

j=0;


for n1=1:5:360

j=j﹢1;

clf;

x(1)=0;

y(1)=0;

x(2)=(s3(n1)*1000-50)*cos(theta3(n1));

y(2)=(s3(n1)*1000-50)*sin(theta3(n1));

x(3)=0;

y(3)=l6*1000;

x(4)=l1*1000*cos(theta1(n1));

y(4)=s3(n1)*1000*sin(theta3(n1));

x(5)=(s3(n1)*1000﹢50)*cos(theta3(n1));

y(5)=(s3(n1)*1000﹢50)*sin(theta3(n1));

x(6)=l3*1000*cos(theta3(n1));

y(6)=l3*1000*sin(theta3(n1));

x(7)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1));

y(7)=l3*1000*sin(theta3(n1))﹢l4*1000*sin(theta4(n1));

x(8)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1))-900;

y(8)=l61*1000;

x(9)=l3*1000*cos(theta3(n1))﹢l4*1000*cos(theta4(n1))﹢600;

y(9)=l61*1000;

x(10)=(s3(n1)*1000-50)*cos(theta3(n1));

y(10)=(s3(n1)*1000-50)*sin(theta3(n1));

x(11)=x(10)﹢25*cos(pi/2-theta3(n1));

y(11)=y(10)-25*sin(pi/2-theta3(n1));

x(12)=x(11)﹢100*cos(theta3(n1));

y(12)=y(11)﹢100*sin(theta3(n1));

x(13)=x(12)-50*cos(pi/2-theta3(n1));

y(13)=y(12)﹢50*sin(pi/2-theta3(n1));

x(14)=x(10)-25*cos(pi/2-theta3(n1));

y(14)=y(10)﹢25*sin(pi/2-theta3(n1));

x(15)=x(10);

y(15)=y(10);x(16)=0;

y(16)=0;

x(17)=0;

y(17)=l6*1000;

k=1:2;

plot(x(k),y(k));

hold on;

k=3:4;

plot(x(k),y(k));

hold on;

k=5:9;

plot(x(k),y(k));

hold on;

k=10:15;

plot(x(k),y(k));

hold on;

k=16:17;

plot(x(k),y(k));

hold on;

grid on;

axis ([-500 600 0 650]);

title('牛头刨床运动仿真');

grid on;

xlabel('mm')

ylabel('mm')

plot(x(1),y(1),'o');

plot(x(3),y(3),'o');

plot(x(4),y(4),'o');

plot(x(6),y(6),'o');

plot(x(7),y(7),'o');

axis equal;

m(j)=getframe;

end

movie(m)

2.子函数six_bar 文件

********************************************************

function [theta,omega,alpha]=six_bar(theta1,omega1,alpha1,ll)

l1=ll(1);

l3=ll(2);

l4=ll(3);

l6=ll(4);

l61=ll(5);


%1.计算角位移和线位移

s3 =sqrt((l1*cos(theta1))*(l1*cos(theta1))﹢(l6﹢l1*sin(theta1))*(l6﹢l1*sin(theta1)));  %s3表示滑块2相对于CD杆的位移

theta3 =acos((l1*cos(theta1 ))/s3 );     %theta3表示杆3转过角度

theta4 =pi-asin((l61-l3*sin(theta3 ))/l4);    %theta4表示杆4转过角度

sE =l3*cos(theta3 )﹢l4*cos(theta4 );       %sE表示杆5的位移

theta(1)=s3;

theta(2)=theta3;

theta(3)=theta4;

theta(4)=sE;


%2.计算角速度和线速度

  A=[sin(theta3 ),s3 *cos(theta3 ),0,0;    %从动件位置参数矩阵

   -cos(theta3 ),s3 *sin(theta3 ),0,0;

   0,l3*sin(theta3 ),l4*sin(theta4 ),1;

   0,l3*cos(theta3 ),l4*cos(theta4 ),0];

  B=[l1*cos(theta1 );l1*sin(theta1 );0;0];  %原动件位置参数矩阵

  omega=A\(omega1*B);

  v2 =omega(1);               %滑块2的速度

  omega3 =omega(2);             %构件3的角速度

  omega4 =omega(3);             %构件4的角速度

  vE =omega(4);               %构件5的速度


%3.计算角加速度和加速度

  A=[sin(theta3 ),s3 *cos(theta3 ),0,0;       %从动件位置参数矩阵

   cos(theta3 ),-s3 *sin(theta3 ),0,0;

   0,l3*sin(theta3 ),l4*sin(theta4 ),1;

   0,l3*cos(theta3 ),l4*cos(theta4 ),0];

  At=[omega3 *cos(theta3 ),(v2 *cos(theta3 )-s3 *omega3 *sin(theta3 )),0,0;

    -omega3 *sin(theta3 ),(-v2 *sin(theta3 )-s3 *omega3 *cos(theta3 )),0,0;

    0,l3*omega3 *cos(theta3 ),l4*omega4 *cos(theta4 ),0;

    0,-l3*omega3 *sin(theta3 ),-l4*omega4 *sin(theta4 ),0];

  Bt=[-l1*omega1*sin(theta1 );-l1*omega1*cos(theta1 );0;0];

  alpha=A\(-At*omega﹢omega1*Bt);      %机构从动件的加速度列阵

  a2 =alpha(1);                 %a2表示滑块2的加速度

  alpha3 =alpha(2);               %alpha3表示杆3的角加速度

  alpha4 =alpha(3);               %alpha4表示杆4的角加速度

  aE =alpha(4);                %构件5的加速度

四、运算结果

图1-9为牛头刨床主运动机构的运动线图和机构运动仿真图。

图1-9 牛头刨床主运动机构运动线图和机构运动仿真图