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

一、核心模型构建
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

七、常见问题解决
  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)
相关推荐
lly2024069 小时前
C# 变量作用域
开发语言
唐梓航-求职中9 小时前
编程大师-技术-算法-leetcode-1472. 设计浏览器历史记录
算法·leetcode
时艰.9 小时前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存
MSTcheng.9 小时前
【C++】C++智能指针
开发语言·c++·智能指针
无小道9 小时前
Qt——网络编程
开发语言·qt
_OP_CHEN9 小时前
【算法基础篇】(五十八)线性代数之高斯消元法从原理到实战:手撕模板 + 洛谷真题全解
线性代数·算法·蓝桥杯·c/c++·线性方程组·acm/icpc·高斯消元法
wazmlp0018873699 小时前
第五次python作业
服务器·开发语言·python
云深处@9 小时前
【C++11】部分特性
开发语言·c++
尘缘浮梦9 小时前
websockets简单例子1
开发语言·python