马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
该程序在不加碰摩力时,得出结果很好。加入碰摩力,积分结果发散,得
不出仿真结果。
不平衡量在m2处,碰摩也发生在m2处。
仿真程序如下,matlab程序,newmark积分。
clear all
clc
%%----------------------------------
M=[3.5, 0, 0, 0, 0, 0
0, 3.5,0, 0, 0, 0
0, 0, 3.5, 0, 0, 0
0, 0, 0, 3.5, 0, 0
0, 0, 0, 0, 3.5, 0
0, 0, 0, 0, 0, 3.5];
C=[1.05e3, 0, 0, 0, 0, 0
0, 1.2e3,0, 0, 0, 0
0, 0, 1.05e3, 0, 0, 0
0, 0, 0, 1.05e3, 0, 0
0, 0, 0, 0, 1.2e3, 0
0, 0, 0, 0, 0, 1.05e3];
K=[3.1543e7, -3.0173e7, 1.2342e7, 0, 0, 0
-3.0173e7, 4.3885e7,-3.0173e7, 0, 0, 0
1.2342e7, -3.0173e7, 3.1543e7, 0, 0, 0
0, 0, 0, 3.1543e7, -3.0173e7, 1.2342e7
0, 0, 0, -3.0173e7, 4.3885e7,-3.0173e7
0, 0, 0, 1.2342e7, -3.0173e7, 3.1543e7];
%%------------------------------------
u=zeros(6,1);
v=zeros(6,1);
x(:,1)=u; %位移
x1(:,1)=v; %速度
ee=0.13e-3; %偏心距
h=0.1e-3;; %动静间隙
kk=0.5e9; %碰摩时接触刚度
miur=0.2; %摩擦系数
delta0=0.0000001; %不对中
RR0=0.1;
delt=0.5;
alpha=0.25;
dt=2*pi/(1024*8); %积分步长
b0=1/(alpha*dt^2);
b1=delt/(alpha*dt);
b2=1/(alpha*dt);
b3=(1/(2*alpha))-1;
b4=(delt/alpha)-1;
b5=(dt/2)*((delt/alpha)-2);
b6=dt*(1-delt);
b7=delt*dt;
w=0;
t_max=4;
ii=1;
t(1)=0;
f=86;
q=zeros(6,1);
w=0;
while t(ii)<t_max
w=2*pi*f; %角速度
fux(ii)=5.5*ee*(w*w*cos(w*t(ii))); %不平衡力
fuy(ii)=5.5*ee*(w*w*sin(w*t(ii))); %不平衡力
%----------------------碰摩---------------------------
rrr(ii)=sqrt((x(2,ii))^2+(x(5,ii)-delta0)^2);
ggg(ii)=(rrr(ii)-h);
fai(ii)=((x(1,ii)*x1(5,ii)-(x(5,ii)-delta0)*x1(2,ii))/rrr(ii))+RR0*w;
if fai(ii)>0
thetar=1;
elseif fai(ii)<0
thetar=-1;
else
thetar=0;
end
if (ggg(ii))>0
N(ii)=(kk*ggg(ii)/rrr(ii));
frx(ii)=(-N(ii))*((x(2,ii))-miur*((x(5,ii))-delta0));
fry(ii)=(-N(ii))*((miur*x(2,ii))+(x(5,ii)-delta0));
else
fry(ii)=0;
frx(ii)=0;
end
Q2(:,ii)=zeros(6,1);
Q2(2,ii)=Q2(2,ii)+frx(ii);
Q2(5,ii)=Q2(5,ii)+fry(ii);
%------------------------------------------------------------
Q(:,ii)=zeros(6,1);
Q1(:,ii)=zeros(6,1);
Q1(2,ii)=Q1(2,ii)+fux(ii);
Q1(5,ii)=Q1(5,ii)+fuy(ii);
Q(:,ii)=Q1(:,ii);
Ccc=C;
K1=K+b0*M+b1*Ccc ;
if ii==1
x2(:,ii)=inv(M)*(Q(:,ii)-K*x(:,ii)-Ccc*x1(:,ii));
q(:,ii)=Q(:,ii)+M*(b0*x(:,ii)+b2*x1(:,ii)+b3*x2(:,ii))+Ccc*(b1*x(:,ii)+b4*x1(:,ii)+b5*x2(:,ii));
x(:,ii+1)=K1\q(:,ii);
x2(:,ii+1)=b0*(x(:,ii+1)-x(:,ii))-b2*x1(:,ii)-b3*x2(:,ii);
x1(:,ii+1)=x1(:,ii)+b6*x2(:,ii)+b7*x2(:,ii+1);
else
q(:,ii+1)=Q(:,ii)+M*(b0*x(:,ii)+b2*x1(:,ii)+b3*x2(:,ii))+Ccc*(b1*x(:,ii)+b4*x1(:,ii)+b5*x2(:,ii));
x(:,ii+1)=K1\q(:,ii+1);
x2(:,ii+1)=b0*(x(:,ii+1)-x(:,ii))-b2*x1(:,ii)-b3*x2(:,ii);
x1(:,ii+1)=x1(:,ii)+b6*x2(:,ii)+b7*x2(:,ii+1);
end
ii=ii+1;
t(ii)=t(ii-1)+dt;
end
%%----------------------------------------
T=1/dt;
TT=T*t_max;
t=3000:TT;
subplot(2,2,(1:2))
plot(t/T,x(2:2,t)*1000)
title('位移-1x')
grid on
subplot(2,2,3)
Nx=length(x(2:2,t));
Y=fft(x(2:2,t)*T,Nx);
pyy=Y.*conj(Y)/(1024*8);
f=T*(0:Nx/2-1)/Nx;
plot(f,pyy(1:(Nx/2)))
title('幅值谱-节点1x')
grid on
subplot(224)
plot(x(2:2,t)*1000,x(5:5,t)*1000)
title('轴心轨迹')
grid on |