自动控制原理:根轨迹法图解闭环极点与系统稳定性
最早学自动控制原理时我以为“跟轨迹法”是某种跟机器人路径规划有关的算法后来才搞明白它是把一个闭环系统的极点位置随某个参数变化的路径画在复平面上。线性系统的跟轨迹法之所以重要是因为它让你一眼看到开环增益K从零往无穷大走时闭环极点从哪儿来、到哪儿去、什么时候越过稳定边界。这种直观感是Routh判据、频域判据都给不了的。这篇笔记就是写给正在啃自动控制原理、或者刚进控制领域想补基础的工程师看的。我会从最核心的“为什么要画根轨迹”讲起把相角条件、幅值条件、七条手绘规则、具体系统计算过程、以及我踩过的一些坑全部梳理一遍。如果你正在复习考研或准备面试前面几章重点关注如果你已经在做工程调试后面关于多回路、离散系统和实操工具的内容会更对胃口。1. 为什么非学跟轨迹法不可1.1 闭环极点才是系统命运的根源先回到最基础的问题我们设计一个控制系统最终关心的是闭环传递函数的极点位置。为什么因为系统的自然响应由极点对应的模态组成极点落在s平面左半平面系统稳定落在虚轴上等幅振荡一旦跑到右半平面输出直接发散。所谓“自动控制”本质上是把系统的闭环极点放到我们想要的位置上。但极点不是凭空出现的它由闭环特征方程决定。绝大多数工程系统都能化简成单位负反馈形式闭环特征方程就是1 G(s)H(s) 0其中开环传递函数里通常包含一个可调的增益K。K可能是放大器增益、控制器比例系数、功率驱动器的等效放大倍数也是调试现场最容易拧的“旋钮”。问题在于K一旦变大响应变快但同时系统更容易振荡K变小系统变稳但稳态精度又不够。这是控制工程师每天都在面对的矛盾。Routh判据能告诉我们某一个K值下系统是否稳定但它是“有或无”的判断回答不了“K从0往上调极点怎么运动、阻尼怎么变化”这种连续过程。跟轨迹法就是为这个问题而生它以K为参数把闭环极点运动的轨迹画出来让我们看到系统从过阻尼到欠阻尼再到失稳的完整变化过程。1.2 根轨迹到底在画什么要从数学上理解跟轨迹法关键一步是把闭环特征方程改写成G(s)H(s) -1任何一个满足这个方程的s都是闭环极点。由于G(s)H(s)是复函数等式右边等于-1意味着两件事同时成立幅值条件|G(s)H(s)| 1相角条件∠G(s)H(s) ±180° k × 360°注意这里的∠是相角。也就是说一个点要在根轨迹上先得满足相角条件——这是跟轨迹形状的“准入资格”幅值条件则用来反推这个点对应的K值。很多人画不出根轨迹就是因为把幅值条件当成了画轨迹的依据其实先定形状、再算增益才对。打个比方相角条件是路网决定了哪些路径存在幅值条件是限速牌决定了每条路径上要用多大的“油门K”才能通过。先把路网画对后面所有分析才有意义。根轨迹曲线的起点是开环极点终点是开环零点如果零点不够剩下的分支就沿着渐近线走向无穷远。K从0开始增大极点就从开环极点出发K趋向无穷大极点趋向开环零点或无穷远。所以根轨迹本质上描述的是当我们不断放大回路增益时系统闭环极点如何在复平面上“搬家”。2. 根轨迹绘制原理与核心规则2.1 相角条件和幅值条件的分工很多教材一上来就列规则但没讲这些规则是怎么来的。其实每条绘制规则都是相角条件的直接推论。对于一个开环传递函数G(s)H(s) K * (s-z1)(s-z2)... / (s-p1)(s-p2)...把s看作复平面上的一个动点如果这个动点满足相角条件它就在根轨迹上。相角条件与K无关所以根轨迹的形状只由开环零极点的相对位置决定K只是标尺用来标记轨迹上的点对应多大增益。这里有个实战中特别容易混淆的点根轨迹增益K和系统开环增益常常不是同一个数。教科书上的轨迹一般写成首一型多项式K是根轨迹增益而工程上说的开环增益往往是传递函数在s→0时的比例系数两者之间差一个常数因子。用幅值条件求出来的K要先换算成实际系统的开环增益才能去跟数据手册里的参数对比。这个坑我见过不止一次。幅值条件的另一种妙用是一旦你确定某个闭环极点落在根轨迹上比如s s1那么该点的增益为K |(s1-p1)(s1-p2)...| / |(s1-z1)(s1-z2)...|也就是说把所有零极点指向s1的向量长度乘起来再除一除K就出来了。这个计算不复杂但考试和工程中都特别常用。2.2 手绘根轨迹的七条规则我习惯把绘制规则分成七条每一条都能从相角条件推出来。记住了这七条大部分标准题都能直接上手分支数根轨迹的条数等于开环极点数n。因为特征方程是n阶的K变化时n个闭环极点各走一条路。对称性闭环特征方程是实系数多项式根要么是实数要么是共轭复数成对出现所以根轨迹关于实轴对称。画图时只需要画上半部分下半部分镜像过去即可。起点与终点起于开环极点K0终于开环零点K→∞。若开环零点数m小于极点数n则有n-m条分支终止于无穷远。实轴区段这条最容易错。在实轴上某一点右侧如果开环零极点总数是奇数则该点属于根轨迹。为什么因为每个位于该点右侧的极点和零点都会贡献一个180°相角奇数个180°相加才等于180°模360°满足相角条件。渐近线n-m条走向无穷远的分支会沿渐近线前进。渐近线与实轴的交点为σ (Σ极点 - Σ零点) / (n-m)渐近线与实轴夹角为θ (2k1)π / (n-m)这些角度把复平面均匀分割比如n-m3时夹角是60°、180°、300°。分离点与会合点两条轨迹在实轴上相遇或分开的点满足dK/ds 0。通常的做法是令特征方程中K解出来再对s求导。注意解出来的候选点必须代回相角条件校验不在根轨迹上的根要舍去。与虚轴交点把s jω代入特征方程令实部、虚部分别为零解出ω和临界增益Kcr或者用Routh表的辅助方程求解。这是K稳定范围的关键节点。还有出射角和入射角的计算工程手绘时用得不频繁但考试会考。出射角公式为θ出 ±180° Σ(零点到极点向量角) - Σ(其他极点到该极点向量角)本质还是相角条件的变形不用死记会代公式就行。这七条规则看着多其实核心思想只有一个相角条件。真遇到复杂情况别硬套规则取一个测试点算一下相角就能判断它是不是根轨迹上的点。2.3 一个三阶系统的完整手绘演示光说规则太抽象我用一个经典例子完整走一遍。假设单位负反馈系统的开环传递函数为G(s) K / [s(s2)(s4)]开环极点是0、-2、-4没有有限零点。这是教科书里最常见的三阶系统。第一步确定实轴区段。s在(-∞,-4)区间时右侧有0、-2、-4三个极点奇数所以这段是根轨迹s在(-4,-2)区间时右侧有0、-2两个极点偶数不是s在(-2,0)区间时右侧只有0一个极点奇数是根轨迹。所以实轴上有两段(-∞,-4)和(-2,0)。第二步求渐近线。n3, m0所以n-m3。渐近线交点σ (-2-4) / 3 -2渐近线角度θ 60°, 180°, 300°其中180°这条与实轴根轨迹段(-∞,-4)重合。第三步求分离点。特征方程是s^3 6s^2 8s K 0解出K -s^3 - 6s^2 - 8s对s求导并令导数为零dK/ds -3s^2 - 12s - 8 0得到候选点s -2 ± (2√3)/3大约为-0.845和-3.155。把这两个点代回相角条件验证-0.845落在(-2,0)区段内有效-3.155落在(-4,-2)区段内该段不是根轨迹所以舍去。分离点就是s≈-0.845代入特征方程可求该点K≈3.08。第四步求与虚轴交点。令s jω代入特征方程(jω)^3 6(jω)^2 8(jω) K 0实部为K - 6ω²虚部为8ω - ω³。令两者为零ω² 8K 48也就是说当K增大到48时闭环极点刚好落在虚轴上ω≈±2.83处系统临界等幅振荡。K超过48系统不稳定。画出整条根轨迹从0和-2出发的两支在-0.845处会合然后进入复平面形成一对共轭复极点向左上方和左下方延伸当它们穿过虚轴时对应的K就是48。而从-4出发的那一支沿负实轴一直向左跑向无穷远始终位于左半平面。这个例子做完你应该能感受到跟轨迹法带来的直观性K在0到3.08之间三个极点都在实轴上系统过阻尼没有振荡K在3.08到48之间存在一对共轭复极点系统欠阻尼会有振荡但稳定K超过48根轨迹跨过虚轴系统失稳。3. 根轨迹的应用实操要点3.1 用根轨迹确定增益K的稳定区间稳定区间是根轨迹分析最基础的应用。以上一节的三阶系统为例临界增益Kcr48所以系统稳定的条件是0K48。但这只是“稳定不稳定”的边界工程上不能只看这个数。如果你把K调成30系统确实稳定但阻尼比可能只有0.2左右阶跃响应会剧烈振荡现场表现为“嗡嗡响”“来回抖”。所以稳定区间只是第一步真正要确定的是满足动态指标的工作区间。还有一点值得注意K从0开始增大时系统动态特性会经历一个渐变过程。K很小的时候三个极点都在实轴上响应慢但平稳K超过分离点对应的3.08后出现复数极点开始振荡K继续增大振荡频率增高但阻尼比下降。这个“从过阻尼到欠阻尼再到不稳定”的演变用根轨迹看图说话非常直观。如果系统是单位反馈还可以把K跟稳态精度联系起来。上面的例子中系统开环增益实际上是K/8因此速度误差系数KvK/8。也就是说K越大稳态速度误差越小。可K又受稳定性上限约束这就是“精度”和“稳定”之间的矛盾。根轨迹把这对矛盾画在了同一张图上每次调参之前扫一眼图心里就有数。3.2 给定阻尼比和超调量时如何反解K工程里经常反过来用先提指标比如“阶跃响应超调量不超过16%”对应阻尼比ζ≥0.5再反推K的取值。阻尼比和极点位置的关系是闭环复极点与负实轴的夹角β满足 cosβ ζ。ζ0.5时β60°极点应落在从原点出发、与负实轴成60°角的那条射线上也就是s -a ± j√3a。把这条射线与根轨迹的交点找出来再用幅值条件求K就是满足阻尼比要求的工作点。手算时把s-aj√3a代回幅值条件解出a实际工程中用软件交互取点更高效。还要引入“主导极点”概念。三阶系统有一对复数极点和一个负实极点当负实极点离虚轴的距离比复数极点的实部大5倍以上时动态响应主要由复数极点主导负实极点的影响可以忽略。我们按ζ0.5设计时可以先只考虑这对主导极点得到K然后再校验另一个实极点是否确实“远离”如果不满足说明这一极点也会明显影响响应设计需要重做。这里有个很常见的误区以为只要极点都在左半平面系统性能就一定好。其实极点的相对位置决定了哪个极点起主导作用。离虚轴最近的极点决定响应速度如果这个极点是一对阻尼比很小的复极点系统肯定会振荡。用根轨迹分析时盯着离虚轴最近的那段轨迹看才抓得住主要矛盾。3.3 根轨迹也是校正设计的起点跟轨迹法不只是分析工具也是校正器设计的起点。当你发现无论怎么调K根轨迹都压不到希望的阻尼区域时就要考虑改变系统结构也就是增加开环零点或极点。增加开环零点根轨迹会整体向左弯曲阻尼增大系统响应通常变得更稳更快。PD控制器的本质就是增加一个零点所以PD能改善动态性能原因从根轨迹上看得清清楚楚。增加一个开环极点根轨迹会向右弯曲稳定性和阻尼下降所以PI控制器如果积分时间常数选得不当动态会变差这就是为什么PI参数要谨慎整定。我在实际调试中见过一个同事反复调比例增益系统始终振加了一个零点后根轨迹立刻被压进稳定的扇形区域问题迎刃而解。这个现象用频域法也能解释但对调参的人来说根轨迹上的形态变化更直观更容易建立直觉。3.4 工具校验跟手算结果对不上的时候怎么办手算根轨迹锻炼思维但工程上完全可以用软件辅助。MATLAB的rlocus函数是最常用的画上面三阶系统的代码很简单sys tf([1], [1 6 8 0]); rlocus(sys); sgrid;sgrid会在图上画出等阻尼比网格和等自然频率网格交互时很好用。第3.2节里要取ζ0.5的交点可以直接在图上点选再用rlocfind读出增益K。如果不想用MATLABPython的control库也能实现import control as ct import matplotlib.pyplot as plt sys ct.tf([1], [1, 6, 8, 0]) ct.root_locus(sys) plt.show()当你发现软件画出来的轨迹和手算结果不一致时优先检查几件事特征方程写没写错是负反馈还是正反馈软件的默认配置不一样有没有混淆根轨迹增益和系统开环增益分离点有没有做相角条件筛选。这些问题我在给别人的代码做review时反复见过九成都是这些低级错误。工具的价值在于快速验证和参数扫描但如果你完全依赖工具等到考试或现场不能开软件时会很被动。我的建议是手算一个系统至少走过一遍全流程再用工具去校验这样既记得住规则也信得过工具。4. 从基础到进阶几个绕不开的扩展场景4.1 参数根轨迹参数从增益变成时间常数经典跟轨迹法把K当作可变参数但实际系统中控制器参数经常不只是增益还有积分时间常数Ti、微分时间常数Td、滤波器截止频率等。这些参数进入特征方程的方式不一定像K那么直接。处理思路是把特征方程重新整理成1 A × P(s)/Q(s) 0的形式其中A是我们研究的那个参数P(s)和Q(s)是不含A的多项式。整理完之后把P(s)/Q(s)等价地看作一个“新的开环传递函数”就能沿用标准的根轨迹绘制规则。举个例子某个PI控制系统的特征方程写成关于积分时间常数Ti的一次方程那么就可以画“以Ti为参变量”的根轨迹观察Ti从0到∞变化时闭环极点的运动路径。这种方法叫参数根轨迹考试常考工程中分析控制器参数对稳定性的影响时也很有用。需要注意整理成标准形式后新的“零点极点”往往是原系统某些极点的组合物理意义变得隐晦。画图之前最好先在草稿纸上把传递函数归归类别被中间变换绕晕。4.2 多回路系统里怎么一层一层套根轨迹实际工程很少有单一闭环的系统比如伺服驱动系统通常是“电流环-速度环-位置环”三级嵌套。多回路系统的根轨迹分析原则是由内向外逐层等效。先对最内环建立数学模型画出该环的根轨迹确定内环的工作点然后把这个闭环部分看成外环的被控对象写出外环的开环传递函数再对外环画根轨迹确定外环参数。这样层层递进每一层都用根轨迹做一次稳定性判断。有一个工程教训值得记住内环不稳定外环再怎么改参数也救不回来。所以调试顺序永远是先内环再外环。如果你画的根轨迹显示内环增益到了临界稳定附近不要急着调外环先回到内环看是不是传感器带宽不够、执行机构饱和、或者采样延迟太大。根轨迹在这里的作用是把“这一环还能给多大增益”这件事量化出来。4.3 非最小相位系统和零度根轨迹前面讲的都是最小相位系统也就是开环零极点都在s平面左半平面。如果被控对象包含右半平面零点或极点比如某些非最小相位对象常规的180°根轨迹规则就不完全适用了。当开环传递函数中存在右半平面零点时零点的相角贡献不再是0°或180°的简单组合根轨迹的走向会发生变化。更特殊的情况下闭环特征方程整理出来对应的相角条件是0°而不是180°这种轨迹叫零度根轨迹。遇到非最小相位系统不要硬套规则。一个可靠的做法是在实轴上取几个候选点直接用复数运算算相角判断它到底满足180°还是0°然后选择对应的一套绘制规则。实轴区段的判断也随之变化对于零度根轨迹右侧零极点总数为偶数的区段才是根轨迹段。虽然非最小相位系统在课程里占比不大但制造现场确实会遇到比如具有传输延迟或反蕴特性的对象。知道有这回事至少不会在碰到时完全蒙圈。4.4 从s平面到z平面离散系统的根轨迹数字控制器普及后我们越来越常面对离散系统。离散系统的特征方程是z变换域里的根轨迹画在z平面上。关键区别是s平面上的稳定区域是左半平面z平面上的稳定区域是单位圆内部s平面的虚轴对应z平面的单位圆边界。所以离散根轨迹的分析思路和连续系统一样只是“警戒线”从虚轴变成了单位圆。极点从单位圆内穿过单位圆到外部系统就从稳定变成不稳定。手绘规则中渐近线、实轴区段、分离点的推导方法仍然有效但角度、交点计算要基于z平面的几何关系。更麻烦的是采样周期T会影响离散化后的零极点位置所以同一个连续被控对象采样周期不同根轨迹形态也不同。这在实际工程中很重要你提高采样频率等效零点极点会移动原本调好的增益可能需要重新整定。我建议初学者先把连续系统的根轨迹吃透再学离散系统。因为z平面的规则理解起来更抽象但如果已经有了s平面上“极点越界即失稳”的直觉迁移过去会快很多。5. 常见误区和实操心得5.1 我见过最多的五个误区以下是我在学生辅导和工程评审中反复看到的问题整理成一张速查表误区正确理解导致的后果把根轨迹图当时域响应曲线看根轨迹是闭环极点随参数变化的路径不是输出波形分析结果完全跑偏无论什么系统都用180°相角规则负反馈系统常见180°但非最小相位或某些结构可能是0°画出的轨迹方向不对分离点所有候选都保留候选点必须代回相角条件筛选图上多出无效分支点只算K的稳定范围不管阻尼比稳定范围只是必要条件动态指标更关键系统稳但振荡剧烈用连续系统的规则直接套z平面离散系统稳定域是单位圆内部规则有差异采样系统稳定性误判第一条误区最隐蔽因为根轨迹图看起来确实像一条条有方向的曲线初学者很容易把它脑补成输出响应。记住一句话根轨迹上的点代表的是“闭环极点”不是“系统输出”。一个点在根轨迹上不代表输出会沿着这条线走。第二条误区在工程仿真里很常见。很多人用软件默认配置画根轨迹软件给的是负反馈180°轨迹但实际系统如果接了正反馈或者被控对象内部存在某种等效正反馈回路轨迹就会明显偏离预期。5.2 我建议的学习顺序和验证方法如果你正在自学这一块我给出的路径是先手画两个典型系统再用软件验证最后用仿真闭环验证。三个环节缺一个理解都会打折扣。第一个手画对象我推荐二阶系统比如G(s)K/[s(s2)]。它的根轨迹简单能清晰看到分离点、渐近线、与虚轴交点这几个核心概念。第二个对象就是前面提过的三阶系统用来练习分离点的筛选和复数分支的判断。画完图不等于完事。我有个自检方法从你画的根轨迹上选一个点用幅值条件算出K然后把这个K代回闭环传递函数用数值工具算出闭环极点看是不是你选的那个点。如果对不上说明画图或计算过程有问题。这种闭环验证比单纯背规则有效得多。最后把根轨迹上某个工作点对应的系统用step()做一次时域仿真。看看阶跃响应的超调量、峰值时间跟从阻尼比、自然频率估算出来的数值是否吻合。这一步能帮你建立“极点位置-时域指标”之间的感性认识。以后调试现场听到系统啸叫你脑子里浮现的不再是一堆微分方程而是一根快压过虚轴的根轨迹曲线。5.3 跟轨迹在工程项目里的真实用法很多人觉得跟轨迹只是考试工具实际设计时用MATLAB的自动整定就够了。但我在调试伺服进给系统时真实体验是自动整定只能给出一个“能跑”的参数离“最佳”还差得远。有一次速度环增益往上调了一截系统开始出现高频啸叫用根轨迹一分析发现工作点已经十分靠近虚轴临界增益就在不远处。这件事让我意识到跟轨迹法最大的价值不是给你一个精确数值而是给你一个关于系统稳定裕度的直觉。有了这个直觉你调参时就知道该往哪个方向走而不是靠猜。我个人现在做任何闭环设计第一反应还是先把根轨迹画出来哪怕后面还要用频域法做精细设计、用仿真做最终确认。根轨迹负责回答“这个系统本质稳不稳、参数往哪个方向调有效”相当于工程判断的第一根拐杖。如果你现在正在学到这一章建议别满足于记住公式和画图步骤试着把一个实际的传递函数从头到尾走一遍确定K范围、找阻尼比约束下的工作点、验证时域响应。走完一遍跟轨迹法这门手艺就算真正长在你身上了。