张海涛424064第三次作业.docx

上传人:b****5 文档编号:30317517 上传时间:2023-08-13 格式:DOCX 页数:32 大小:362.05KB
下载 相关 举报
张海涛424064第三次作业.docx_第1页
第1页 / 共32页
张海涛424064第三次作业.docx_第2页
第2页 / 共32页
张海涛424064第三次作业.docx_第3页
第3页 / 共32页
张海涛424064第三次作业.docx_第4页
第4页 / 共32页
张海涛424064第三次作业.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

张海涛424064第三次作业.docx

《张海涛424064第三次作业.docx》由会员分享,可在线阅读,更多相关《张海涛424064第三次作业.docx(32页珍藏版)》请在冰豆网上搜索。

张海涛424064第三次作业.docx

张海涛424064第三次作业

四连杆机构动力学分析

使用ADAMS建立如图1所示的四连杆机构,二杆长150mm,三杆长500mm,四杆长450mm,二杆所受的转矩为40

,三个杆都受重力,二杆初始角度为90度。

运用欧拉法,用Matlab对该系统进行动力学分析,并与ADAMS仿真结果进行对比。

力矩

二杆

四杆

三杆

图1四杆机构

一、动力学分析

1、外力矢量为:

2、外力所做的虚功为:

3、系统的约束方程为:

4、求雅克比矩阵

由系统的约束方程,求雅克比矩阵得

具体程序见附录一,可得雅克比矩阵

5、求

具体程序见附录二,可得

6、系统的动力学方程为:

其中:

使用欧拉迭代法就可以计算出各个曲线,循环运算1666667次,具体Matlab程序见附录三。

二、说明

1、由于本程序采用欧拉迭代法求解,所以计算过程有误差。

当仿真时间越长时,与ADAMS曲线相差越大,但曲线形状一致,只有相位提前。

2、Matlab的仿真时间间隔越小,仿真结果越真实。

但当间隔非常小时,再降低时间间隔仿真结果相差不大。

3、当ADMAS的仿真步数很大时,再增加仿真步数对结果影响很小。

4、当改变ADAMS的误差时,仿真结果也有差别,如图2-6所示。

当误差小于10-6时,再减小误差,曲线差别很小。

5、由于在ADAMS中只能由三个点测角度,三杆的角度无法测量。

所以再建立两个辅助杆,并设这两个辅助杆的质量和转动惯量都为零,用于测量三杆的角度,如图2中辅助杆1和辅助杆2。

再就可以测量由E、F、G点组成的角度作为三杆的角度。

点G

辅助杆2

辅助杆1

图2辅助测量杆

图3误差为1*10-3二杆质心X方向位移变化曲线

图4误差为5*10-3二杆质心X方向位移变化曲线

图5误差为1*10-4二杆质心X方向位移变化曲线

图6误差为1*10-6二杆质心X方向位移变化曲线

图7误差为1*10-9二杆质心X方向位移变化曲线

三、Matlab与ADAMS仿真曲线对比

图8铰链1处作用力变化曲线

图9铰链2处作用力变化曲线

图10铰链3处作用力变化曲线

图11铰链4处作用力变化曲线

图12二杆位置变化曲线

图13三杆位置变化曲线

图14四杆位置变化曲线

图15二杆速度变化曲线

图16三杆速度变化曲线

图17四杆速度变化曲线

图18二杆加速度变化曲线

图19三杆加速度变化曲线

图20四杆加速度变化曲线

附录一:

求雅克比矩阵的Matlab程序

clc

clear

symsl2l3l4l5;

symsm2m3m4;

symsx4x5x6x7x8x9x10x11x12

g=[x4-l2/2*cos(x6);

x5-l2/2*sin(x6);

x4+l2/2*cos(x6)-x7+l3/2*cos(x9);

x5+l2/2*sin(x6)-x8+l3/2*sin(x9);

x7+l3/2*cos(x9)-x10+l4/2*cos(x12);

x8+l3/2*sin(x9)-x11+l4/2*sin(x12);

x10+l4/2*cos(x12)-l5;

x11+l4/2*sin(x12);

]

cq=jacobian(g,[x4x5x6x7x8x9x10x11x12])

m=[m200000000;

0m20000000;

00m2/12*(l2)^2000000;

000m300000;

0000m30000;

00000m3/12*(l3)^2000;

000000m400;

0000000m40;

00000000m4/12*(l4)^2]

o=zeros(8,8);

cq1=cq.';

A=[mcq1;cqo]

附录二:

的Matlab程序

clc

clear

symsl2l3l4l5;

symsm2m3m4;

symsx4x5x6x7x8x9x10x11x12

symsy4y5y6y7y8y9y10y11y12

h=[y4+y6*l2/2*sin(x6);

y5-y6*l2/2*cos(x6);

y4-y6*l2/2*sin(x6)-y7-y9*l3/2*sin(x9);

y5+y6*l2/2*cos(x6)-y8+y9*l3/2*cos(x9);

y7-y9*l3/2*sin(x9)-y10-y12*l4/2*sin(x12);

y8+y9*l3/2*cos(x9)-y11+y12*l4/2*cos(x12);

y10-y12*l4/2*sin(x12);

y11+y12*l4/2*cos(x12);;

]

qd1=jacobian(h,[x4x5x6x7x8x9x10x11x12]);

q=[y4y5y6y7y8y9y10y11y12].';

qd=-qd1*q

 

附录三:

用欧拉迭代法进行动力学分析的Matlab程序

%对四杆机构进行动力学分析

clear

clc

m2=1.1289713258;%三个杆的质量kg

m3=3.3132513258;

m4=3.0012113258;

g=9806.65;%重力加速度9806.65mm/s2

l2=150;%二杆长度mm

l3=500;%三杆长度mm

l4=450;%四杆长度mm

l5=400;%两个底座之间的距离mm

M=40000%二杆扭矩为40000N.mm

dt=0.000003;%步长

t=0:

dt:

5;%设置时间为5s

n=length(t)%仿真步数

q=zeros(9,n);%产生9行n列的零矩阵

q_v=zeros(9,n);

q_ac=zeros(9,n);

q(1:

9,1)=[075pi/22003000.6435011094002251.5*pi];%设置迭代初值,也是三个杆的初始位置

force=zeros(8,n);

%%用欧拉法对滑块连杆机构进行位置分析,速度分析,加速度分析。

动力学方程的左边矩阵,AX=B,求解XA=[MCqT;Cq0]

fori=1:

n

A=[m2,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0

0,m2,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0

0,0,(l2^2*m2)/12,0,0,0,0,0,0,(l2*sin(q(3,i)))/2,-(l2*cos(q(3,i)))/2,-(l2*sin(q(3,i)))/2,(l2*cos(q(3,i)))/2,0,0,0,0

0,0,0,m3,0,0,0,0,0,0,0,-1,0,1,0,0,0

0,0,0,0,m3,0,0,0,0,0,0,0,-1,0,1,0,0

0,0,0,0,0,(l3^2*m3)/12,0,0,0,0,0,-(l3*sin(q(6,i)))/2,(l3*cos(q(6,i)))/2,-(l3*sin(q(6,i)))/2,(l3*cos(q(6,i)))/2,0,0

0,0,0,0,0,0,m4,0,0,0,0,0,0,-1,0,1,0

0,0,0,0,0,0,0,m4,0,0,0,0,0,0,-1,0,1

0,0,0,0,0,0,0,0,(l4^2*m4)/12,0,0,0,0,-(l4*sin(q(9,i)))/2,(l4*cos(q(9,i)))/2,-(l4*sin(q(9,i)))/2,(l4*cos(q(9,i)))/2

1,0,(l2*sin(q(3,i)))/2,0,0,0,0,0,0,0,0,0,0,0,0,0,0

0,1,-(l2*cos(q(3,i)))/2,0,0,0,0,0,0,0,0,0,0,0,0,0,0

1,0,-(l2*sin(q(3,i)))/2,-1,0,-(l3*sin(q(6,i)))/2,0,0,0,0,0,0,0,0,0,0,0

0,1,(l2*cos(q(3,i)))/2,0,-1,(l3*cos(q(6,i)))/2,0,0,0,0,0,0,0,0,0,0,0

0,0,0,1,0,-(l3*sin(q(6,i)))/2,-1,0,-(l4*sin(q(9,i)))/2,0,0,0,0,0,0,0,0

0,0,0,0,1,(l3*cos(q(6,i)))/2,0,-1,(l4*cos(q(9,i)))/2,0,0,0,0,0,0,0,0

0,0,0,0,0,0,1,0,-(l4*sin(q(9,i)))/2,0,0,0,0,0,0,0,0

0,0,0,0,0,0,0,1,(l4*cos(q(9,i)))/2,0,0,0,0,0,0,0,0];

B=[0;-m2*g;M;0;-m3*g;0;0;-m4*g;0;...%B=[0;-m1*g;M;0;-m2*g;0;0;-m3*g;0;Qd]

-(l2*q_v(3,i)^2*cos(q(3,i)))/2

-(l2*q_v(3,i)^2*sin(q(3,i)))/2

(l2*cos(q(3,i))*q_v(3,i)^2)/2+(l3*cos(q(6,i))*q_v(6,i)^2)/2

(l2*sin(q(3,i))*q_v(3,i)^2)/2+(l3*sin(q(6,i))*q_v(6,i)^2)/2

(l3*cos(q(6,i))*q_v(6,i)^2)/2+(l4*cos(q(9,i))*q_v(9,i)^2)/2

(l3*sin(q(6,i))*q_v(6,i)^2)/2+(l4*sin(q(9,i))*q_v(9,i)^2)/2

(l4*q_v(9,i)^2*cos(q(9,i)))/2

(l4*q_v(9,i)^2*sin(q(9,i)))/2];

temp=A\B;

q_ac(:

i)=temp(1:

9);%解的前9项为杆的加速度和角加速度

force(:

i)=temp(10:

17);%解的后8项为铰链处的力

ifi==n;

break

end

q_v(:

i+1)=q_v(:

i)+dt*q_ac(:

i);

q(:

i+1)=q(:

i)+dt*q_v(:

i);

end

 

%%二杆质心位移

%二杆质心X位移变化

h1=figure

(1);

set(h1,'name','二杆质心位移');

subplot(311)

plot(t,q(1,:

),'b-')

holdon;

data1=load('gan2_xy.tab');

plot(data1(:

1),data1(:

2),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('二杆质心X位移变化')

legend('matlab','adams')

%二杆质心Y位移变化

subplot(312)

plot(t,q(2,:

),'b-')

holdon;

plot(data1(:

1),data1(:

3),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('二杆质心Y位移变化')

legend('matlab','adams')

%二杆质心角度变化

subplot(313)

plot(t,q(3,:

),'b-')

holdon;

data0=load('gan234_a.tab');

plot(data0(:

1),data0(:

2),'r-');

xlabel('时间t/s')

ylabel('角度rad')

title('二杆质心角度变化')

legend('matlab','adams')

%%三杆质心位移

%三杆质心X位移变化

h2=figure

(2);

set(h2,'name','三杆质心位移');

subplot(311)

plot(t,q(4,:

),'b-')

holdon;

data2=load('gan3_xy.tab');

plot(data2(:

1),data2(:

2),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('三杆质心X位移变化')

legend('matlab','adams')

%三杆质心Y位移变化

subplot(312)

plot(t,q(5,:

),'b-')

holdon;

plot(data2(:

1),data2(:

3),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('三杆质心Y位移变化')

legend('matlab','adams')

%三杆质心角度变化

subplot(313)

plot(t,q(6,:

),'b-')

holdon;

plot(data0(:

1),data0(:

3),'r-');

xlabel('时间t/s')

ylabel('角度rad')

title('三杆质心角度变化')

legend('matlab','adams')

%%四杆质心位移

%四杆质心X位移变化

h3=figure(3);

set(h3,'name','四杆质心位移');

subplot(311)

plot(t,q(7,:

),'b-')

holdon;

data3=load('gan4_xy.tab');

plot(data3(:

1),data3(:

2),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('四杆质心X位移变化')

legend('matlab','adams')

%四杆质心Y位移变化

subplot(312)

plot(t,q(8,:

),'b-')

holdon;

plot(data3(:

1),data3(:

3),'r-');

xlabel('时间t/s')

ylabel('位移/m')

title('四杆质心Y位移变化')

legend('matlab','adams')

%四杆质心角度变化

subplot(313)

plot(t,q(9,:

),'b-')

holdon;

plot(data0(:

1),data0(:

4)+pi,'r-');

xlabel('时间t/s')

ylabel('角度rad')

title('四杆质心角度变化')

legend('matlab','adams')

%%二杆质心速度变化

%二杆质心X速度变化

h4=figure(4);

set(h4,'name','二杆质心速度');

subplot(311)

plot(t,q_v(1,:

),'b-')

holdon;

data4=load('gan2v_xya.tab');

plot(data4(:

1),data4(:

2),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('二杆质心X速度变化')

legend('matlab','adams')

%二杆质心Y速度变化

subplot(312)

plot(t,q_v(2,:

),'b-')

holdon;

plot(data4(:

1),data4(:

3),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('二杆质心Y速度变化')

legend('matlab','adams')

%二杆质心角速度变化

subplot(313)

plot(t,q_v(3,:

),'b-')

holdon;

plot(data4(:

1),data4(:

4),'r-');

xlabel('时间t/s')

ylabel('角速度rad/s')

title('二杆质心角速度变化')

legend('matlab','adams')

%%三杆质心速度变化

%三杆质心X速度变化

h5=figure(5);

set(h5,'name','三杆质心速度');

subplot(311)

plot(t,q_v(4,:

),'b-')

holdon;

data5=load('gan3v_xya.tab');

plot(data5(:

1),data5(:

2),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('三杆质心X速度变化')

legend('matlab','adams')

%三杆质心Y速度变化

subplot(312)

plot(t,q_v(5,:

),'b-')

holdon;

plot(data5(:

1),data5(:

3),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('三杆质心Y速度变化')

legend('matlab','adams')

%三杆质心角速度变化

subplot(313)

plot(t,q_v(6,:

),'b-')

holdon;

plot(data5(:

1),data5(:

4),'r-');

xlabel('时间t/s')

ylabel('角速度rad/s')

title('三杆质心角速度变化')

legend('matlab','adams')

%%四杆质心速度变化

%四杆质心X速度变化

h6=figure(6);

set(h6,'name','四杆质心速度');

subplot(311)

plot(t,q_v(7,:

),'b-')

holdon;

data6=load('gan4v_xya.tab');

plot(data6(:

1),data6(:

2),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('四杆质心X速度变化')

legend('matlab','adams')

%四杆质心Y速度变化

subplot(312)

plot(t,q_v(8,:

),'b-')

holdon;

plot(data6(:

1),data6(:

3),'r-');

xlabel('时间t/s')

ylabel('速度m/s')

title('四杆质心Y速度变化')

legend('matlab','adams')

%四杆质心角速度变化

subplot(313)

plot(t,q_v(9,:

),'b-')

holdon;

plot(data6(:

1),data6(:

4),'r-');

xlabel('时间t/s')

ylabel('角速度rad/s')

title('四杆质心角速度变化')

legend('matlab','adams')

%%二杆质心加速度

%二杆质心X加速度变化

h7=figure(7);

set(h7,'name','二杆质心加速度');

subplot(311)

plot(t,q_ac(1,:

),'b-')

holdon;

data7=load('gan2ac_xya.tab');

plot(data7(:

1),data7(:

2),'r-');

xlabel('时间t/s')

ylabel('加速度m/s^2')

title('二杆质心X加速度变化')

legend('matlab','adams')

%二杆质心Y加速度变化

subplot(312)

plot(t,q_ac(2,:

),'b-')

holdon;

plot(data7(:

1),data7(:

3),'r-');

xlabel('时间t/s')

ylabel('加速度m/s^2')

title('二杆质心Y加速度变化')

legend('matlab','adams')

%二杆质心角加速度变化

subplot(313)

plot(t,q_ac(3,:

),'b-')

holdon;

plot(data7(:

1),data7(:

4),'r-');

xlabel('时间t/s')

ylabel('角加速度rad/s^2')

title('二杆质心角加速度变化')

legend('matlab','adams')

%%三杆质心加速度

%三杆质心X加速度变化

h8=figure(8);

set(h8,'name','三杆质心加速度');

subplot(311)

plot(t,q_ac(4,:

),'b-')

holdon;

data8=load('gan3ac_xya.tab');

plot(data8(:

1),data8(:

2),'r-');

xlabel('时间t/s')

ylabel('加速度m/s^2')

title('三杆质心X加速度变化')

legend('matlab','adams')

%三杆质心Y加速度变化

subplot(312)

plot(t,q_ac(5,:

),'b-')

holdon;

plot(data8(:

1),data8(:

3),'r-');

xlabel('时间t/s')

ylabel('加速度m/s^2')

title('三杆质心Y加速度变化')

legend('matlab','adams')

%三杆质心角加速度变化

subplot(313)

plot(t,q_ac(6,:

),'b-')

holdon;

plot(data8(:

1),data8(:

4),'r-');

xlabel('时间t/s')

ylabel('角加速度rad/s^2')

title('三杆质心角加速度变化')

legend('matlab','adams')

%%四杆质心加速度

%四杆质心X加速度变化

h9=figure(9);

set(h9,'name','四杆质心加速度');

subplot(311)

plot(t,q_ac(4,:

),'b-')

holdon;

data9=load('gan3ac_xya.tab');

plot(data9(:

1),data9(:

2),'r-');

xlabel('

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1