四杆机构分析
- 格式:doc
- 大小:361.50 KB
- 文档页数:14
基于matlab和ADMAS的四杆机构运动仿真
摘要:铰链四杆机构是机械设备中最基本的机构类型之一,文中以它为研究对象建立数学模型,应用MATLAB编程与ADMAS建模分别对四杆机构进行仿真分析,获得各点的运动曲线,进行对比,两种方法各有所长,分析结果显示直观。
1 引言
平面四杆机构是连杆机构中最常见的机构组成,由于其结构简单,可承受载荷大,连杆曲线具有多样性等优点,它在工程中得到广泛的运用,设计四杆机构的方法有很多,比如解析法、作图法、实验法,但这些方法都存在一定的缺点,图解法精度差,解析法的计算工作量大,不直观使其在工程运用中受到约束,如果设计平面四杆机构时能显示其运动轨迹从而将图示结果与设计要求进行对比,可以使设计显得更加直观,提高工作效率。
本文以MATLAB、ADMAS为平台,开发了一个平面四杆机构运动轨迹仿真系统,模拟四杆机构的运动仿真,并获得各点的运动轨迹坐标,使设计显得直观,更好的帮助了工程技术人员在机构分析与设计过程中进行优化,提高了工作效率,降低产品开发成本
2 建立机构运动的数学模型
设原动件OA以n转/min的速度匀速转动,求各杆的运动轨迹。将平面四杆机构看成1个封闭的四边形,连接OB、AC相交于E点,令t2=∠AOC、t4=∠BCD、t3=∠BAF、a=∠ACO、b=∠ACB、e=AC,AD、DC、CO的杆长分别为r1、r2、r3、r4,如图1所示。
图1 四杆机构数学建模
由原动件OA以n转/min的速度匀速转动可得OA的角速度为:
w=2**n/60 ①
则∠AOC在任意时刻的角度为:
22t = tdeg*/180 ②
其中2tdeg为任意时刻的∠AOC的弧度,是已知常量。
在三角形AOC中根据余弦定理得
2221*2*212cos()errrtr ③
在三角形ADC中根据余弦定理得
22243*43cos()()/2grerrr ④
在三角形AOC中根据正弦定理得
2sin()sin()*2/atre ⑤
在三角形ADC中根据正弦定理得
sin()sin()*3/bgre ⑥
联立①-⑥式即可解得a、b、g、t2则
4t = 180*d2r - a - b
34t = t-g
由此可得
任意时刻a点的运动轨迹坐标为(ax,ay),其中:
x22a=r*cos(t)
y22a=r*sin(t)
任意时刻b点的运动轨迹坐标为(bx,by),其中:
x441b=r*cos(t)+r
y44b=r*sin(t)
3.matlab程序设计
平面四杆机构运动轨迹仿真程序设计
当数学模型完成后,紧接着我们在M文件中来编写程序实现平面四杆机构的运动轨迹仿真(当然也可直接在notebook里进行编写与仿真)。
(1) 定义已知常量
l1 =290mm;
l2 =110mm;
l3 =250mm;
l4 =240mm;
w2=20*pi;
(2) 计算任意时刻连杆上点的轨迹坐标,并进行相关运动仿真(仅取一个周期),如下所示
05010015020025030035040020406080100120140160杆3杆4主动件转角2(度)杆3和杆4角位移(度)杆3和杆4角位移线图
050100150200250300350400-50-40-30-20-100102030杆3角速度杆4角速度主动件转角2(度)杆3和杆4角速度(度)杆3和杆4角速度线图
050100150200250300350400-4000-3000-2000-100001000200030004000杆3相位角加速度杆4相位角加速度从动件角加速度杆3和杆4角加速度(rad* s(-2))杆3和杆4角加速度线图
050100150200250300350400-4-3-2-1012x 10-9x轴方向y轴方向均方根偏差曲线主动件转角2(度)均方根偏差
-150-100-50050100150-150-100-50050100150A点横坐标(mm)A点 纵坐标(mm)A点轨迹
050100150200250300350400-8000-6000-4000-200002000400060008000x轴方向y轴方向主动件转角2(度)A点横、纵坐标速度(mm/s)A点横、纵坐标速度
050100150200250300350400-5-4-3-2-1012345x 105x轴方向y轴方向主动件转角2(度)A点横、纵坐标加速度(mm2/s)A点横、纵坐标加速度
50100150200250300100120140160180200220240B点横坐标(mm)B点 纵坐标(mm)B点轨迹
050100150200250300350400-1.5-1-0.500.511.5x 104x轴方向y轴方向主动件转角2(度)B点横 纵坐标方向速度(mm/s)B点速度图
050100150200250300350400-10-8-6-4-20246x 105x轴方向y轴方向主动件转角2(度)B点加速度横、纵坐标B点加速度轨迹
图2 四杆机构运动轨迹仿真
(3) 源程序如下:
disp '平面四杆机构的运动'
l1=input('输入机架长度 l1=');
l2=input('输入机架长度 l2=');
l3=input('输入机架长度 l3=');
l4=input('输入机架长度 l4=');
rs=[l1 l2 l3 l4];
minimum=min(rs);
maximum=max(rs);
if l1<=l2&&l1<=l3&&l1<=l4
disp '此机构为双曲柄机构'
elseif l2<=l1&&l2<=l3&&l2<=l4
disp '此机构为曲柄摇杆机构'
else disp '此机构为双摇杆机构,本例不予考虑',break;
end
w2=input('输入主动件角速度 w2=');
t=0:10;
th2=0:1/36:2*pi;
th34=zeros(length(th2),2);
options=optimset('display','off');
for m=1:length(th2)
th34(m,:)=fsolve('aa',[1 1],options,th2(m),l2,l3,l4,l1);
end
figure(1)
plot(th2*180/pi,th34(:,1)*180/pi,'r',th2*180/pi,th34(:,2)*180/pi,'c')
grid
text(150,26,'杆3')
text(150,130,'杆4')
xlabel('主动件转角\theta_2(度)')
ylabel('杆3和杆4角位移(度)')
title('杆3和杆4角位移线图')
w3=(l2*w2*sin(th34(:,2)-th2'))./(l3*sin(th34(:,1)-th34(:,2)));
w4=(l2*w2*sin(th2'-th34(:,1)))./(l4*sin(th34(:,2)-th34(:,1)));
figure(2)
plot(th2*180/pi,w3,'r',th2*180/pi,w4,'c');
grid
text(100,-11,'杆3角速度')
text(100,25,'杆4角速度')
xlabel('主动件转角\theta_2(度)')
ylabel('杆3和杆4角速度(度)')
title('杆3和杆4角速度线图')
s23=th2'-th34(:,1);
s43=th34(:,2)-th34(:,1);
s24=th2'-th34(:,2);
s34=th34(:,1)-th34(:,2);
a3=(-l2*w2^2*cos(s24)-l3*w3.^2.*cos(s34)+l4*w4.^2)./(l4*sin(s34));
a4=(l2*w2^2*cos(s23)+l3*w3.^2-l4*w4.^2.*cos(s43))./(l4*sin(s43));
figure(3)
plot(th2*180/pi,a3,'r',th2*180/pi,a4,'c');
grid
text(150,1000,'杆3相位角加速度')
text(150,-1000,'杆4相位角加速度')
xlabel('从动件角加速度')
ylabel('杆3和杆4角加速度(rad* s^(-2))')
title('杆3和杆4角加速度线图')
disp '曲柄转角 连杆转角-从动杆4转角-连杆角速度-从动杆4角速度-连杆加速度-从动杆4加速度'
ydcs=[th2'*180/pi,th34(:,1)*180/pi,th34(:,2)*180/pi,w3,w4,a3,a4];
disp(ydcs)
ex=l2*cos(th2')+l3*cos(th34(:,1))-l4*cos(th34(:,2))-l1;
ey=l2*sin(th2')+l3*sin(th34(:,1))-l4*sin(th34(:,2));
ee=norm([ex ey]);
disp '曲柄转角X向偏差Y向偏差'
wc=[th2'*180/pi,ex,ey];
disp(wc);
fprintf(1,'偏差矢量矩阵的模ee=%3.4f\n',ee);
figure(4)
plot(th2*180/pi,ex,'r',th2*180/pi,ey,'c')
grid;
text(100,-3*10^-9,'x轴方向')
text(200,1*10^-9,'y轴方向')
title('均方根偏差曲线')
xlabel('主动件转角\theta_2(度)')
ylabel('均方根偏差')
ax=(l2.*cos(th2'));
ay=(l2.*sin(th2'));
figure(5)
plot(ax,ay,'-x' );
grid;
xlabel('A点横坐标(mm)')
ylabel('A点 纵坐标(mm)')
title('A点轨迹')
vax=(-l2.*sin(th2')*w2);
vay=(l2.*cos(th2')*w2);
figure(6)
plot(th2*180/pi,vax,'-x',th2*180/pi,vay,'-o');
grid;
text(50,-4000,'x轴方向')
text(50,6000,'y轴方向')
xlabel('主动件转角\theta_2(度)')
ylabel('A点横、纵坐标速度(mm/s)')
title('A点横、纵坐标速度')
aax=(-l2.*cos(th2')*w2.^2);
aay=(-l2.*sin(th2')*w2.^2);