一、核心模型构建
1. Jeffcott转子动力学方程
采用集中质量法建立两自由度转子系统模型:
matlab
% 参数设置(单位:kg, m, N·s/m)
m = 12.5; % 转子质量
k = 8e5; % 轴承刚度
c = 1200; % 阻尼系数
mu = 0.08; % 摩擦系数
delta = 1e-4; % 碰摩间隙
omega = 1200; % 转速 (rad/s)
% 状态变量:[x, dx/dt, y, dy/dt]
dydt = @(t,y) [y(2);
(-c*y(2) - k*y(1) + F_unbalance + F_rub(1))/m;
y(4);
(-c*y(4) - k*y(3) + F_unbalance + F_rub(2))/m];
2. 非线性碰摩力模型
matlab
function F_rub = calculate_rub_force(y, mu, delta)
r = sqrt(y(1)^2 + y(3)^2);
if r > delta
F_rub = -mu*k*(r - delta)*[y(1)/r; y(3)/r]; % 库伦摩擦模型
else
F_rub = [0; 0];
end
end
二、仿真实现(ODE45求解)
1. 初始条件与求解器调用
matlab
% 初始状态:[x0, dx0, y0, dy0]
y0 = [1e-5; 0; 1e-5; 0]; % 微米级初始偏心
% 时间跨度与求解器设置
tspan = [0, 20]; % 仿真时间20秒
options = odeset('RelTol',1e-6, 'MaxStep',0.1);
% 求解微分方程
[t, Y] = ode45(@(t,y) dydt(t,y), tspan, y0, options);
2. 结果后处理
matlab
% 时域波形
figure;
subplot(2,1,1);
plot(t, Y(:,1), 'r', t, Y(:,3), 'b');
xlabel('时间 (s)'); ylabel('位移 (m)');
legend('X方向', 'Y方向');
% 频谱分析
Fs = 1/(t(2)-t(1));
NFFT = 2^nextpow2(length(Y(:,1)));
Pxx = pwelch(Y(:,1),[],[],[],Fs);
f = Fs/2*linspace(0,1,NFFT/2);
subplot(2,1,2);
plot(f, 10*log10(Pxx));
xlabel('频率 (Hz)'); ylabel('功率谱密度 (dB/Hz)');
三、关键分析模块
1. 临界转速计算(传递矩阵法)
matlab
% 轴段参数定义
N = 11; % 轴段数
L = [0.0905, 0.0905, 0.0805, 0.0625, 0.03, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02](@ref)*0.001; % 轴段长度(m)
R = [0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02](@ref)*0.001; % 外半径(m)
% 传递矩阵计算
[SS, Sn](@ref)= surplus_calculate(N, omega, k, m, Jp, Jd, EI, rr);
critical_speed = find_critical_speed(SS, Sn); % 临界转速计算函数
2. 分岔图绘制
matlab
% 参数扫频仿真
omega_range = 800:50:2000;
bifurcation_data = zeros(length(omega_range), 100);
for i = 1:length(omega_range)
[t, Y] = simulate_rotor(omega_range(i)); % 重新求解
bifurcation_data(i,:) = Y(end-99:end,1); % 稳态解
end
% 绘制分岔图
figure;
plot(omega_range, bifurcation_data', 'b.');
xlabel('转速 (rad/s)'); ylabel('稳态位移 (m)');
title('转子系统分岔图');
四、高级功能扩展
1. 振动信号分析
matlab
% 全频谱分析(Hanning窗)
NFFT = 2^nextpow2(length(y));
window = hanning(NFFT);
[Pxx,f](@ref)= pwelch(y,window,[],NFFT,Fs);
plot(f,10*log10(Pxx));
2. 三维庞加莱图
matlab
% 相空间重构
figure;
plot(Y(:,1), Y(:,3), 'b.');
hold on;
plot(Y(1,1), Y(1,3), 'ro');
xlabel('X位移'); ylabel('Y位移');
title('转子运动庞加莱图');
五、完整代码示例
matlab
%% 转子动力学仿真系统
clear; clc; close all;
%% 参数设置
m = 12.5; k = 8e5; c = 1200; mu = 0.08; delta = 1e-4;
omega = 1200; % 初始转速
%% 微分方程定义
dydt = @(t,y) [y(2);
(-c*y(2) - k*y(1) + 0.05*m*omega^2*sin(omega*t) + ...
calculate_rub_force(y(1:2), mu, delta)(1))/m;
y(4);
(-c*y(4) - k*y(3) + 0.05*m*omega^2*sin(omega*t) + ...
calculate_rub_force(y(3:4), mu, delta)(2))/m];
%% 求解与绘图
[t, Y](@ref)= ode45(dydt, , [1e-5,0,1e-5,0](@ref), odeset('RelTol',1e-6));
plot_results(t, Y, omega);
六、结果分析
| 图表类型 | 关键特征 | 物理意义 |
|---|---|---|
| 时域波形 | 周期性振荡/混沌现象 | 系统稳定性与激励响应 |
| 频谱图 | 基频/倍频/边频带 | 故障特征频率识别 |
| 相图 | 闭合轨迹/点阵分布 | 运动模式(周期/拟周期) |
| 分岔图 | 转速-位移突变点 | 系统非线性动力学特性 |
参考代码 利用matalab编制的转子动力学 www.youwenfan.com/contentcsq/82733.html
七、常见问题解决
- 数值发散
- 现象:仿真结果出现NaN
- 解决:降低
ode45相对误差容限RelTol至1e-8,检查刚度矩阵正定性
- 碰摩力突变
- 现象:频谱中出现高频噪声
- 解决:在碰摩力计算中添加速度方向修正因子
- 临界转速计算误差
- 现象:理论值与仿真值偏差>10%
- 解决:增加轴段离散数量(N≥15),采用精确传递矩阵公式
八、工程应用案例
- 汽轮机转子失稳诊断
- 通过分岔图识别油膜涡动临界转速(1200-1500rpm)
- 航空发动机碰摩故障仿真
- 设置摩擦系数μ=0.12,模拟高负荷工况下的接触振动
- 高速电主轴动平衡优化
- 基于FFT频谱分析定位不平衡质量相位角(误差<2°)
九、扩展功能建议
- 多物理场耦合
- 添加热-力耦合模型,考虑温度梯度对材料刚度的影响
- 主动控制算法
- 实现PID主动阻尼控制,抑制转子振动幅值
- 虚拟现实可视化
- 使用MATLAB VR工具箱构建三维转子运动场景
十、参考文献
- Jeffcott转子动力学建模(《机械工程学报》2018)
- 非线性碰摩力数值计算方法(振动工程学报, 2020)
- 传递矩阵法临界转速计算(航空动力学报, 2021)
- 基于ODE45的转子系统仿真(MATLAB仿真技术, 2022)