曲柄摇杆机构的运动分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
% 曲柄摇杆机构运动分析
% (1)-计算连杆的输出角th3和摇杆的输出角th4
% 设定各杆的长度(单位:毫米)
rs(1)=304.8; % 设定机架1长度
rs(2)=101.6; % 设定曲柄2长度
rs(3)=254.0; % 设定连杆3长度
rs(4)=177.8; % 设定摇杆4长度
dr=pi/180.0;% 角度与弧度的转换系数
% 设定初始推测的输入
% 机构的初始位置
th(1)=0.0; % 设定曲柄2初始位置角是0度(与机架1共线)
th(2)=45*dr; % 连杆3的初始位置角是45度
th(3)=135*dr; % 摇杆4的初始位置角是135度
% 摇杆4的初始位置角可以用三角形的正弦定理确定
th(3)=pi-asin(sin(th(2))*rs(3)/rs(4));
dth=5*dr; % 循环增量
% 曲柄输入角从0度变化到360度,步长为5度,计算th34
for i=1:72
[th3,th4]=ntrps(th,rs); % 调用牛顿—辛普森方程求解机构位置解非线性方程函数文件% Store results in a matrix-th34,in degrees
% 在矩阵th34中储存结果,以度为单位;(i,:)表示第i行所有列的元素;(:,i)表示第i列所有行的元素
th34(i,:)=[th(1)/dr th3/dr th4/dr]; % 矩阵[曲柄转角连杆转角摇杆转角]
th(1)=th(1)+dth; % 曲柄转角递增
th(2)=th3; % 连杆转角中间计算值
th(3)=th4; % 摇杆转角中间计算值
end
% 求解曲柄摇杆机构中连杆的输出角th(3)和摇杆的输出角th(4)—函数文件
function [th3,th4]=ntrps(th,rs)
% 使用基于牛顿—辛普森方程解答四杆机构位置的非线性问题
% 变量设置
% th(1)=theta_2 % 输入变量
% th(2)=theta_3_bar(starting guess) % 输出变量
% th(3)=theta_4_bar(starting guess) % 输出变量
% rs(1)=r_1,机架长度;rs(2)=r_2,曲柄长度;rs(3)=r_3,rs(4)=r_4,摇杆长度
th2=th(1);
th3bar=th(2);
th4bar=th(3);
% 设定收敛条件
epsilon=1.0E-6;
% 计算二维矢量的函数
% 四杆机构闭环矢量方程的矩阵形式
f=[rs(3)*cos(th3bar)-rs(4)*cos(th4bar)+rs(2)*cos(th2)-rs(1);
rs(3)*sin(th3bar)-rs(4)*sin(th4bar)+rs(2)*sin(th2)];
% 重复计算每个方程式的修正量因子
while norm(f)>epsilon
J=[-rs(3)*sin(th3bar) rs(4)*sin(th4bar); rs(3)*cos(th3bar) -rs(4)*cos(th4bar)];
dth=inv(J)*(-1.0*f);
th3bar=th3bar+dth(1);
th4bar=th4bar+dth(2);
% 四杆机构闭环矢量方程的矩阵形式
f=[rs(3)*cos(th3bar)-rs(4)*cos(th4bar)+rs(2)*cos(th2)-rs(1);
rs(3)*sin(th3bar)-rs(4)*sin(th4bar)+rs(2)*sin(th2)];
norm(f); % 计算矩阵或向量的范数(模)
end;
th3=th3bar; % 弧度值
th4=th4bar; % 弧度值
% 绘制输出角th(2)与th(3)—输入角th(1)的关系曲线
subplot(2,2,1) % 选择第1个子窗口
plot(th34(:,1),th34(:,2),th34(:,1),th34(:,3))
axis([0 360 0 170])
grid % 网格线
ylabel('从动件角位移/deg')
title('角位移线图')
text(110,110,'摇杆4角位移')
text(50,35,'连杆3角位移')
% (2)-计算连杆的角速度om3和摇杆的角速度om4
% Setting initial conditions
% 设置初始条件
om2=250; % 曲柄角速度(等速输入)
T=2*pi/om2; % 机构周期-曲柄旋转1周的时间(秒)
% 曲柄输入角从0度变化到360度,步长为5度,计算om34
for i=1:72
ct(2)=i*dth;
A=[-rs(3)*sin(th34(i,2)*dr) rs(4)*sin(th34(i,3)*dr); rs(3)*cos(th34(i,2)*dr) -rs(4)*cos(th34(i,3)*dr)];
B=[om2*rs(2)*sin(ct(2));-om2*rs(2)*cos(ct(2))];
om=inv(A)*B; % 输出角速度矩阵
om3=om(1);
om4=om(2);
om34(i,:)=[i om3 om4]; % 矩阵[序号连杆角速度摇杆角速度]
t(i)=i*T/72;
end
% 绘制连杆的角速度om3和摇杆的角速度om4—时间Times的关系曲线
subplot(2,2,2) % 选择第2个子窗口
plot(t,om34(:,2),t,om34(:,3))
axis([0 0.026 -190 210])
grid % 网格线
title('角速度线图')
ylabel('从动件角速度/rad/s')
text(0.001,170,'摇杆4角速度')
text(0.013,130,'连杆3角速度')
% (3)-计算连杆的角加速度a3和摇杆的角加速度a4
a2=0; % 曲柄角速度是等速,角加速度a2=dom2/dt=0
% 曲柄输入角从0度变化到360度,步长为5度,计算a34
for i=1:72
c(2)=i*dth;
C=[-rs(3)*sin(th34(i,2)*dr) rs(4)*sin(th34(i,3)*dr); rs(3)*cos(th34(i,2)*dr) -rs(4)*cos(th34(i,3)*dr)];
D(1)=
a2*rs(2)*sin(c(2))+om2^2*rs(2)*cos(c(2))+om34(i,2)^2*rs(3)*cos(th34(i,2)*dr)-om34(i,3)^2*rs( 4)*cos(th34(i,3)*dr);
D(2)=-a2*rs(2)*cos(c(2))+om2^2*rs(2)*sin(c(2))+om34(i,2)^2*rs(3)*sin(th34(i,2)*dr)-om34(i,3) ^2*rs(4)*sin(th34(i,3)*dr);
a=inv(C)*D'; % 输出角加速度矩阵
a3=a(1);
a4=a(2);
a34(i,:)=[i a3 a4]; % 矩阵[序号连杆角加速度摇杆加角速度]
t(i)=i*T/72;
end
% 绘制连杆的角加速度a3和摇杆的角加速度a4—时间Times的关系曲线
subplot(2,2,3) % 选择第3个子窗口
plot(t,a34(:,2),t,a34(:,3))
axis([0 0.026 -6*1e4 8*1e4])
grid % 网格线
title('角加速度线图')
xlabel('时间/s')
ylabel('从动件加速度/rad/s^{2}')
text(0.003,6.2*1e4,'摇杆4角加速度')
text(0.010,3.3*1e4,'连杆3角加速度')
%
% 输出1:四杆机构运动周期(0:5:360),时间,角位移,角速度,角加速度数据
disp ' 曲柄转角连杆转角-摇杆转角-连杆角速度-摇杆角速度-连杆加速度-摇杆加速度' ydcs=[th34(:,1),th34(:,2),th34(:,3),om34(:,2),om34(:,3),a34(:,2),a34(:,3)];
disp (ydcs)
% 输出参数的数量级必须一致
%
% (4)-运动误差分析
% 闭环矢量方程:r2+r3-r4-r1=0
% 误差矢量E=r2+r3-r4-r1的模是表示仿真有效程度的标量(ex和ey是误差分量)
ex=rs(2)*cos(th34(:,1)*dth)+rs(3)*cos(th34(:,2)*dth)-rs(4)*cos(th34(:,3)*dth)-rs(1); ey=rs(2)*sin(th34(:,2)*dth)+rs(3)*sin(th34(:,2)*dth)-rs(4)*sin(th34(:,3)*dth);
ee=norm([ex ey]); % 计算误差矢量矩阵的范数(模) %
% 输出2:四杆机构运动周期(0:5:360),时间,X向误差分量,Y向误差分量
disp ' 曲柄转角时间(秒) X向误差Y向误差'
wc=[th34(:,1),t(:),ex(:,1),ey(:,1)];
disp (wc)
fprintf (1,' 误差矢量矩阵的模ee = %3.4f \n',ee)
%
% 绘制均方根相容性误差曲线
subplot(2,2,4) % 选择第4个子窗口
plot(t,ex(:,1),t,ey(:,1))
axis([0 0.026 -800 600])
grid % 网格线
title('均方根误差曲线')
xlabel('时间/s')
ylabel('均方根误差')
text(0.012,350,'X向误差分量')
text(0.003,-600,'Y向误差分量')。