第五节 六杆机构的运动分析
由于六杆机构的类型很多,任何一个四杆机构,若加上一个二级杆组就成为一个六杆机构,我们就使用较广泛的一类六杆机构——由曲柄、摆动导杆、连杆和滑块组成的来进行运动分析和程序设计,图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 牛头刨床主运动机构运动线图和机构运动仿真图