%Rotor critical speed calculation 转子临界转速计算
%*****************************************************************************
%转子数据
E=2.06e11;%轴的弹性模量 N/m2
l=[0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08];%轴总长为 72cm,分成 9 段每段的长度相等都是 0.08m
d=[0.025,0.025,0.025,0.025,0.025,0.025,0.025,0.025,0.025];%轴的直径 m
m=[0.308,0.308,9.21,0.308,0.308,0.308,0.308,0.308,0];%各段的质量
Id=[0,0,0.03196,0,0,0,0,0,0];% 直 径 转 动 惯 量 kg*m2
Io=[0,0,0.06392,0,0,0,0,0,0];%极转动惯量
J=[1.917e-8,1.917e-8,1.917e-8,1.917e-8,1.917e-8,1.917e-8,1.917e-8,1.917e-8,1.917e-8];%J 为各段面积惯性矩,J=pi*d^4/64
% E=2.06e7 %轴的弹性模量 N/cm2
% l=[8,8,8,8,8,8,8,8,8];%轴总长为 72cm,分成 9 段每段的长度相等都是 8cm
% d=[2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5];%轴的直径
% m=[0.308,0.308,9.21,0.308,0.308,0.308,0.308,0.308,0];%各段的质量
% Id=[0,0,319.6,0,0,0,0,0,0];%直径转动惯量
% Io=[0,0,639.2,0,0,0,0,0,0];%极转动惯量
% J=[1.917,1.917,1.917,1.917,1.917,1.917,1.917,1.917,1.917];%J 为各段面积惯性矩,J=pi*d^4/64
%*****************************************************************************
%1-9 段的传递矩阵 L clc
L=cell(1,9);
for i=1:9
L{1,i}=[1,l(i),(l(i))^2/(2*E*J(i)),(l(i))^3/(6*E*J(i));
0, 1, l(i)/(E*J(i)), (l(i))^2/(2*E*J(i));
0, 0, 1, l(i);
0, 0, 0, 1];
end
%1-9 站的传递矩阵 M M=cell(1,9);
syms w;
for i=1:9
if i<=2||i>=4
M{1,i}=[1, 0, 0, 0;
0, 1, 0, 0;
0, 0, 1, 0;
m(i)*w^2, 0, 0, 1];
else
M{1,i}=[1, 0, 0, 0;
0, 1, 0, 0;
0, ((Io(i)/Id(i))-1)*Id(i)*w^2, 1, 0;
m(i)*w^2, 0, 0, 1];
end
end
%*****************************************************************************
%传递矩阵计算
%左右两端的边界条件,转子两边看成是是简支的
% BJ9=[0,Seta9,0,Q9];
% BJ0=[0,Seta0,0,Q0];
% BJ9=M{1,9}*L{1,9}*M{1,8}*L{1,8}*M{1,7}*L{1,7}*M{1,6}*L{1,6}*M{1,5}*L{1,5}
% *M{1,4}*L{1,4}*M{1,3}*L{1,3}*M{1,2}*L{1,2}*M{1,1}*L{1,1}*BJ0
H4x4=M{1,9}*L{1,9}*M{1,8}*L{1,8}*M{1,7}*L{1,7}*M{1,6}*L{1,6}*M{1,5}*L{1,5}*...
M{1,4}*L{1,4}*M{1,3}*L{1,3}*M{1,2}*L{1,2}*M{1,1}*L{1,1}; h12=H4x4(1,2);h14=H4x4(1,4);h32=H4x4(3,2);h34=H4x4(3,4);
%采用作图法,根据传递矩阵法的原理,画出Δ随Ω(轴的转速)
%变化的曲线,曲线与Δ=0 时的水平轴交点频率就为临界转速。
Drta=h12*h34-h14*h32;
% w=200:1:1600;
% plot(w,subs(Drta,w))%作图观察第一阶临界转速的变化趋势和 Drta=0 轴的交点
% xlabel('转速/rad/s','FontSize',10.5);ylabel('Δ值','FontSize',10.5);
% grid on
%*****************************************************************************
% a=subs(Drta,w)
% Drta=vpa(a)
%采用试凑法,选定一系列的w 值,代入 Drta 式子中进行计算,得到一系列的 Drta 值,当Drta 值满足一定的
%的精度时就可以认为此时的 W 值为临界转数。
for w=200:1:400
a=subs(Drta,w);
if a>=-0.01&&a<=0.001%计算精度的选取很重要,精度不能太小,否则得不到准确结果w1cor=w
break
end
end
%注意利用传递矩阵发计算转子的临界速度对 MATLAB 的计算精度有一定的要求,所以在计
%算中一定要采用双精度数,且各个计算物理量都要采用国际单位,才能得到正确的临界转数
%*****************************************************************************