% 曲柄摇杆机构运动分析% (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度,计算th34for 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)>epsilonJ=[-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度,计算om34for i=1:72ct(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和摇杆的角加速度a4a2=0; % 曲柄角速度是等速,角加速度a2=dom2/dt=0% 曲柄输入角从0度变化到360度,步长为5度,计算a34for i=1:72c(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)-om 34(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)-r s(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向误差分量')。