基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)

一、核心模型构建

1. Jeffcott转子动力学方程

采用集中质量法建立两自由度转子系统模型:

% 参数设置(单位: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. 非线性碰摩力模型
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. 初始条件与求解器调用
% 初始状态:[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. 结果后处理
% 时域波形
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. 临界转速计算(传递矩阵法)
% 轴段参数定义
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. 分岔图绘制
% 参数扫频仿真
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. 振动信号分析
% 全频谱分析(Hanning窗)
NFFT = 2^nextpow2(length(y));
window = hanning(NFFT);
[Pxx,f](@ref)= pwelch(y,window,[],NFFT,Fs);
plot(f,10*log10(Pxx));
2. 三维庞加莱图
% 相空间重构
figure;
plot(Y(:,1), Y(:,3), 'b.');
hold on;
plot(Y(1,1), Y(1,3), 'ro');
xlabel('X位移'); ylabel('Y位移');
title('转子运动庞加莱图');

五、完整代码示例

%% 转子动力学仿真系统
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/contentcnq/82733.html

七、常见问题解决

  1. 数值发散
    • 现象:仿真结果出现NaN
    • 解决:降低ode45相对误差容限RelTol1e-8,检查刚度矩阵正定性
  2. 碰摩力突变
    • 现象:频谱中出现高频噪声
    • 解决:在碰摩力计算中添加速度方向修正因子
  3. 临界转速计算误差
    • 现象:理论值与仿真值偏差>10%
    • 解决:增加轴段离散数量(N≥15),采用精确传递矩阵公式

八、工程应用案例

  1. 汽轮机转子失稳诊断
    • 通过分岔图识别油膜涡动临界转速(1200-1500rpm)
  2. 航空发动机碰摩故障仿真
    • 设置摩擦系数μ=0.12,模拟高负荷工况下的接触振动
  3. 高速电主轴动平衡优化
    • 基于FFT频谱分析定位不平衡质量相位角(误差<2°)

九、扩展功能建议

  1. 多物理场耦合
    • 添加热-力耦合模型,考虑温度梯度对材料刚度的影响
  2. 主动控制算法
    • 实现PID主动阻尼控制,抑制转子振动幅值
  3. 虚拟现实可视化
    • 使用MATLAB VR工具箱构建三维转子运动场景

十、参考文献

  1. Jeffcott转子动力学建模(《机械工程学报》2018)
  2. 非线性碰摩力数值计算方法(振动工程学报, 2020)
  3. 传递矩阵法临界转速计算(航空动力学报, 2021)
  4. 基于ODE45的转子系统仿真(MATLAB仿真技术, 2022)
posted @ 2026-02-06 14:25  康帅服  阅读(12)  评论(0)    收藏  举报