
一句话介绍: 这个程序把轴段、轮盘惯性和支承刚度统一写成 4×4 传递矩阵,通过逐段矩阵相乘建立整个转子系统的传递关系,再扫描角频率寻找满足边界条件的特征频率,最终输出临界转速,并绘制前三阶振型和弯矩分布。
高速转子在升速过程中,最需要关注的问题之一就是:哪些转速附近容易发生明显共振?
如果转子的旋转频率接近系统某一阶固有频率,轴的振动可能显著增大。工程上通常把这类对应转速称为临界转速。
这份程序做的事情可以概括为:
轴、轮盘、支承参数 → 建立各单元传递矩阵 → 组合成整机传递矩阵 → 扫描频率并检查边界条件 → 得到临界频率/临界转速 → 计算前三阶振型和弯矩
因此它不是简单画一条轴线,而是在完成一个完整的转子临界转速与模态分析。
1. 这个程序真正实现了什么?
压缩包只有一个主程序:transfor_matrix.m。
虽然文件名写成了 transfor_matrix,从代码实际功能看,它实现的是经典的**传递矩阵法(Transfer Matrix Method)转子动力学计算**。
程序主要完成 5 件事:
建立等截面轴、轮盘、材料和支承参数;
把各位置的长度、集中质量、转动惯量和支承刚度写成数组;
对每一个候选角频率构造 15 组传递矩阵,并相乘得到系统总传递矩阵;
根据两端边界条件寻找特征频率,并转换成 rpm 临界转速;
对前三阶频率计算状态向量,绘制振型和弯矩曲线。
2. 程序建立了怎样的转子模型?
源码给出的主要参数如下。
类别 | 参数 | 默认值 | 含义 |
|---|---|---|---|
轴 |
| 0.15 m | 单段轴长度 |
轴 |
| 0.04 m | 轴直径 |
轮盘 |
| 0.5 m | 轮盘直径 |
轮盘 |
| 0.025 m | 轮盘厚度 |
材料 |
| 7800 kg/m³ | 材料密度 |
材料 |
| 2.0×10¹¹ Pa | 弹性模量 |
材料 |
| 0.3 | 泊松比 |
支承 |
| 2.0×10⁷ N/m | 支承刚度 |
搜索 |
| 0~4000 rad/s | 临界频率扫描范围 |
搜索 | 步长 | 0.01 rad/s | 扫描分辨率 |
源码注释明确写有“忽略轴的质量”,因此当前模型主要把轮盘质量作为集中质量处理,而轴本身主要贡献弯曲刚度。
根据参数数组可看出,模型中设置了:
13 个非零长度轴段;
8 个带集中质量/转动惯量的轮盘位置;
3 个具有支承刚度 K1 的位置;
共 15 组传递参数。
3. 为什么传递矩阵法适合这种轴系?
对于由很多轴段、轮盘和支承串联组成的转子系统,直接一次性建立很大的整体方程会比较繁琐。
传递矩阵法换了一种思路:
前一个位置的状态 → 经过一个轴段/轮盘/支承 → 得到下一个位置的状态
从代码结构看,状态向量可以理解为由四个量组成:
挠度 → 转角 → 弯矩 → 剪力
每个位置都有一个 4×4 矩阵 T,用来描述这一段前后的状态关系。
如果有很多单元,只要依次相乘:
T₁ → T₂ → T₃ → … → T₁₅
就能得到从转子一端到另一端的整体传递关系 H。
这正是这种方法特别适合细长轴系和串联系统的原因。
4. 单个传递矩阵里考虑了什么?
程序构造的矩阵不是单纯的几何变换,其中同时出现了:
轴段长度 L;
弹性模量 E;
截面惯性矩 I;
剪切相关修正量 v;
集中质量 M;
转动惯量 J;
支承刚度 K;
候选角频率 w。
因此每个矩阵实际上是在描述:
当转子以某一候选振动频率运动时,这个轴段、轮盘和支承会怎样改变挠度、转角、弯矩和剪力。
其中 M·w² 对应集中质量的惯性效应,J·w² 体现轮盘转动惯量的影响,而 K 则把支承刚度加入系统。
5. 程序怎样找到临界转速?
程序让角频率 w 从 0 扫描到 4000 rad/s,每次增加 0.01 rad/s。
对于每一个 w:
构造 15 个传递矩阵 → 相乘得到系统矩阵 H → 计算特征条件 F → 判断是否进入下一阶根的位置
程序使用的特征量为:
(F=H_{31}H_{42}-H_{32}H_{41})
从后续边界计算可以看出,这一条件与两端弯矩、剪力边界能否同时满足有关。
当 F 的符号按程序设定发生交替时,就把当前 w 记录为一个特征频率 wi,再通过:
(n = \omega imes 30/\pi)
换算成 rpm,得到 ni。
因此这里所谓的临界转速,本质上是:
把当前无阻尼转子模型计算得到的固有角频率直接转换成转速。
6. 当前参数下实际算出了哪些临界转速?
按源码参数和 0.01 rad/s 扫描步长复算,在 0~4000 rad/s 范围内共检测到 8 个候选特征频率。
阶次 | 角频率 | 临界转速 |
1 | 112.08 | 1070.3 |
2 | 160.01 | 1528.0 |
3 | 407.35 | 3889.9 |
4 | 990.15 | 9455.2 |
5 | 1765.23 | 16856.7 |
6 | 1773.19 | 16932.7 |
7 | 2370.29 | 22634.6 |
8 | 2739.28 | 26158.2 |
程序最后会直接输出全部 wi 和 ni。
不过绘图部分只使用:
第一阶、第二阶、第三阶
因此图中重点展示的是约 1070 rpm、1528 rpm、3890 rpm 三个低阶临界转速对应的振型。
7. 程序怎样得到前三阶振型?
找到前三个特征频率以后,程序分别重新建立对应频率下的传递矩阵。
左端初始状态写成一个四维状态,其中弯矩和剪力初始值设为 0,而初始挠度先取一个任意非零值。程序再根据系统总矩阵计算初始转角,使另一端的边界条件也得到满足。
之后状态会沿着轴系逐站传递:
左端状态 → 第 1 单元 → 第 2 单元 → … → 最后一个位置
每到一个位置,程序保存:
第一状态量作为振型 y;
第三状态量作为弯矩 z。
最后分别归一化,因此图形主要反映的是:
振型和弯矩沿轴向的相对分布形状,而不是它们的真实绝对幅值。
8. 三张结果图分别看什么?
程序使用 3 个子图显示前三阶结果。
子图 | 内容 | 主要用途 |
第一阶 | 第一临界频率对应的振型 + 弯矩 | 查看最低阶整体弯曲形式 |
第二阶 | 第二临界频率对应的振型 + 弯矩 | 查看更高一阶的节点与弯曲变化 |
第三阶 | 第三临界频率对应的振型 + 弯矩 | 查看更复杂的高阶振型 |
蓝色实线 | 归一化振型 | 看轴在不同位置的相对振动方向和大小 |
红色虚线 | 归一化弯矩 | 看弯矩沿轴系的相对变化 |
因为 y 和 z 是**分别归一化**的,所以两条曲线适合比较形状和位置关系,不适合直接比较“振型数值和弯矩数值谁更大”。
9. 这种方法理论上有什么优势?
转子通常由轴段、轮盘、联轴器和支承沿轴向依次排列。传递矩阵正好利用这种结构,一个单元一个矩阵,然后逐段相乘即可得到整机关系。
系统增加一个轮盘或一段轴时,不必从头重写完整高阶方程,只需要修改对应单元参数。
程序不是靠观察振幅峰值猜临界转速,而是根据系统传递矩阵和两端边界条件构造特征条件。只有某个频率能让非零振型同时满足边界约束时,它才会成为特征频率。
因此“临界转速”与系统自身的结构、质量和支承参数直接关联。
轮盘质量会改变惯性力,转动惯量会影响转角相关响应,轴的弯曲刚度决定变形能力,支承刚度又会改变边界和内部约束。程序将这些因素放在同一套传递矩阵框架中处理,因此比只用一个简单的单自由度质量—弹簧模型更接近多盘轴系。
仅知道“某处会共振”还不够,工程上还希望知道共振时轴会怎样弯曲。
这个程序在求出特征频率后继续回代状态向量,因此能够同时得到:
临界转速 + 对应振型 + 弯矩分布
这比只给出一个频率数字更有分析价值。
前三阶振型被放在同一窗口中,可以直接比较不同阶次下节点位置和弯曲形状的变化,非常适合转子动力学和传递矩阵法的教学演示。
10. 为什么不直接把整个轴系看成一个弹簧—质量块?
单自由度模型可以快速估算一个固有频率,但真实多盘转子沿轴向的质量、惯量和支承位置并不完全相同,而且轴本身存在连续弯曲变形。
如果只用一个等效质量和一个等效刚度,很多沿轴方向的信息会消失,也无法得到多阶振型。
当前传递矩阵方法把不同位置分别建模,因此能够计算多阶特征频率,并看到每一阶沿轴向不同的弯曲模式。
11. 它适合用在哪里?
当一根轴上安装多个轮盘,并由多个支承支撑时,可以利用类似方法评估低阶临界转速,避免工作转速长期落在共振区域附近。
程序的支承刚度集中在 K 数组中。改变 K1 或不同支承位置的刚度后,可以重新计算临界转速,从而观察支承变软或变硬对系统模态的影响。
改变轮盘直径、厚度、密度等参数会进一步改变集中质量和转动惯量,因此可以用程序研究“盘更重以后临界转速如何变化”。
程序把“单元传递矩阵 → 总传递矩阵 → 特征条件 → 临界转速 → 振型”完整串在一起,很适合理解传递矩阵法的实际计算流程。
12. 怎么运行?
这份工程只有一个 .m 文件,使用方式比较直接:
将 transfor_matrix.m 放到 MATLAB 当前目录;
打开并运行该文件;
等待程序扫描 0~4000 rad/s 的候选频率;
命令窗口会输出 wi 和 ni;
图窗会显示前三阶振型和弯矩曲线。
由于搜索步长为 0.01 rad/s,总共要评估约 40 万个频率点,每一个频率又要建立并相乘多组 4×4 矩阵,因此运行速度不会像直接求一个小矩阵特征值那样快。
13. 想做参数实验,主要改哪里?
想研究的问题 | 主要修改参数 |
改轴径 |
|
改轴段长度 |
|
改轮盘直径/厚度 |
|
改材料 |
|
改支承刚度 |
|
改轮盘分布 | 数组 |
改支承位置 | 数组 |
找更高阶频率 | 扩大 |
提高频率定位精度 | 减小扫描步长 |
每次改变结构参数后重新运行,就可以比较临界转速和振型的变化。
14. 源码中需要特别注意的地方
程序分别除以各自最大绝对值,所以图中红、蓝两条曲线都落在约 -1~1 范围内。
这有利于比较形状,但意味着图中的弯矩不是实际 N·m 数值。
如果需要真实弯矩大小,不能使用归一化后的 z 直接作为工程弯矩结果。
代码实际绘制的是:
振型;
弯矩。
因此纵轴写成“不平衡值”容易误导。更合理的标题应是“归一化振型 / 弯矩”或分别设置两个纵轴。
源码已经明确注明“忽略轴的质量”。因此如果轴本身质量不可忽略,当前模型的特征频率会与更完整的分布质量模型存在差异。
程序计算的是特征频率和振型,没有建立阻尼矩阵,也没有计算给定不平衡力下的稳态振幅响应。
因此它适合回答:
“临界转速大约在哪里、模态是什么样?”
但不能直接回答:
“经过临界转速时实际振幅会达到多少?”
0.01 rad/s 的步长决定了频率定位精度。当前代码没有在检测到根以后继续使用二分法、牛顿法等方式精修,所以结果本质上是离散扫描近似值。
另外,当前判断方式依赖特征量符号按阶次交替。如果出现不改变符号的重根或特殊情况,简单符号判断可能漏掉根。
当前只扫描到 4000 rad/s,因此只会报告这个范围内检测到的特征频率。更高阶模态即使存在,也不会被当前搜索范围发现。
15. 一句话看懂这个项目
这是一个用传递矩阵法分析多盘转子临界转速的 MATLAB 程序:它把轴段、轮盘集中质量、转动惯量和支承刚度逐段写成 4×4 状态传递矩阵,通过系统边界条件扫描出特征频率,再把这些频率转换为临界转速,并进一步计算前三阶归一化振型和弯矩分布。