
简介面向控制理论初学者、考研备考生或即将接触控制方向的研究生这份Dr.CAN《自动控制原理》13期完整课程笔记浓缩了B站硬核博主关于传递函数、开环与闭环系统、反馈控制、稳定性分析、根轨迹、终值定理与稳态误差、PID控制器等核心专题的讲解。笔记基于GoodNotes手写并辅以QQ截屏附有推导过程与示意图帮助理解极点位置如何决定系统稳定性、如何通过根轨迹与PID参数设计改善动态性能。适合不愿边看视频边截屏记录、想要直接对照整理内容复习的读者也适用于期末速查与复试前知识拾遗。整个包为单份PDF大小12.27MB章节连贯可按专题快速翻阅。目前已有847人学习下载热度较高也可为后续学习卡尔曼滤波、模型预测控制MPC与最优控制夯实基础。1. 控制原理不是玄学为什么系统稳不稳跟输入长什么样无关一个反直觉的结论要先放在最前面一个自动控制系统稳不稳定跟你给它多大的输入、输入是什么形状几乎没有关系。单位阶跃按下去系统是平缓收敛还是原地发散在接通信号之前就已经被写死在它的传递函数分母里了。控制原理里最容易让新手跳过的一环就是极点这个内置性格——它决定了扰动消失之后系统能不能自己回到原来的位置。这套课程资源的十三期笔记里反复追问过一句为什么稳定就等价于极点全在复平面左半边想通这一句后面所有开环闭环、反馈控制、PID、根轨迹的讨论才有共同的锚点。这份笔记的推导顺序正是从这条主线展开的。2. 传递函数与极点为什么输出的性格只由分母决定2.1 拉普拉斯变换把微分方程变成一张除法图线性时不变系统的动态行为通常写成一堆微分方程。微分方程难就难在同时含位置、速度、加速度。拉普拉斯变换干的第一件事是把求导变成乘法时域里的 dy/dt 对应 s 域的 s·Y(s)初始条件为零时整条微分方程链就塌缩成一个纯代数公式。于是输入端和输出端的关系可以写成Y(s) G(s) · U(s)这里的 G(s) 就是传递函数它只描述系统自己U(s) 描述外界想怎么提问。笔记里开环系统那一讲给出的信号流图本质就是输入过一个框输出等于输入乘框里的代数式而反馈只是把输出再接回去参与一次减法。这里值得深挖一层为什么微分方程变代数方程就能成立因为 e^{st} 是线性时不变系统的特征函数——系统对它的响应还是同一个 e^{st} 乘一个复数增益。这就是传递函数存在的数学根基也是后面一切用算子代替微积分操作合法性的来源。import sympy as sp s, t sp.symbols(s t) G 2 / ((s 1) * (s 3)) # 一个二阶惯性系统的传递函数 Y G / s # 输入单位阶跃 1/s求输出响应 sp.factor(sp.apart(Y, s)) # 部分分式展开这行代码做的是部分分式展开。展开结果形如几项分母为一次式的分式之和比如 2/(3s) - 1/(s1) 1/(3(s3))。每一项反变换回时域就是一个指数函数。注意关键第一项的极点 0 是输入带来的阶跃信号本身是 1/s后两项的极点 -1、-3 全是 G(s) 分母的根。输入只在 s0 处放了一个极点系统自己身上的极点一个没少地出现在输出里。这就是传递函数的性格你把任何信号灌进去系统都会按自己的腔调把它重唱一遍——腔调由分母定唱多响由分子和输入一起定。2.2 极点与模态分母为零的地方藏着系统自带的振动模式为什么偏偏要看分母因为部分分式展开后的每一项时域形态都是 A_i · e^{p_i t}其中 p_i 是分母等于零的根也就是极点A_i 是由分子和输入共同决定的常数。e^{p_i t} 这个指数项就是系统的模态——它不依赖外界是齐次方程的解也就是没人推它它也在演的部分。系统有多少个极点就至少有多少个这样的指数模态虚部决定振荡频率实部决定每个模态是越来越大还是越来越小。二阶欠阻尼系统最好体会这一点一对共轭极点写成 -σω_n ± jω_dω_d 就是振荡频率σ 决定衰减快慢二者组合成超调量和调节时间。极点往左挪衰减变快、调节时间变短极点带上虚部响应就多出振荡成分。笔记里那句最终输出里含有分母的极点说的正是这件事无论你输入什么只要系统是线性的输出里那些瞬态项必然由分母的根生成。分子在这里唯一能做的事是调整每一项前面的系数 A_i——分子改的是音量分母改的是音色。2.3 分子只发入场券零点改变权重不改变生死有一个常见误用必须点破有人看到仿真输出爆炸第一反应是输入给得太大了。其实输入只决定振幅决定爆不爆的是极点的实部符号。分子上的零点确实有用零点靠近某个极点时那个模态的权重 A_i 会变得极小输出里几乎看不见它这就是零极点抵消现象的原理。但零点改变的是哪些模态被激得响不改变系统到底有哪些模态。所以任何稳定性分析的第一步永远是看分母根的位置分子先放一边等做性能分析时再回来讨论零点怎么影响超调。注意零极点抵消可以在数学上约分但物理上那个模态照样存在。实际系统的参数一漂移零点挪开被约掉的模态立刻原形毕露。课堂上允许约分工程上要留个心眼。3. 稳定性分析左半平面、劳斯判据与终值定理原来是同一件事3.1 s σ jω极点的横坐标是生死线把极点写成 s σ jωe^{st} 就变成 e^{σt}·e^{jωt}。e^{jωt} 是等幅旋转真正决定振幅走向的是 σ。于是极点位置与时域行为有了严格的一一对应σ 小于 0指数衰减振荡也会被压住σ 等于 0系统落在虚轴上进入等幅振荡或不收敛的临界状态σ 大于 0指数发散哪怕一开始数值很小迟早穿破屏幕。极点位置实部 σ时域形态左半平面σ 0指数衰减或衰减振荡收敛虚轴上σ 0等幅振荡或保持恒值回不去右半平面σ 0指数发散或发散振荡笔记里用单摆讲这事单摆放在最低点拿手一拨摆着摆着停回原位对应一对左半平面共轭极点把单摆倒过来立在顶点稍微偏一点就直接倒下去对应右半平面极点。两个平衡位置都存在但只有左半平面那个是稳定平衡。系统通常有一堆极点只要其中任何一枚落在右半平面整体就宣告不稳定——这是木桶效应不需要等仿真炸穿屏幕。反馈控制干的第一件正事就是想办法把可能出现在右半平面的极点拽回左半。3.2 劳斯判据不解特征方程也能判断横坐标符号判断一堆极点是否全在左半最笨的办法是解特征方程。三阶以上没有通用求根公式每次解都不现实于是有了劳斯判据把特征方程系数排成一张三角表表的第一列如果符号全部相同所有极点就都在左半平面第一列符号变化几次右半平面就有几个极点。它绕开了求出具体的根这个费力问题只数横坐标符号翻了几次车。以特征方程 s³ s² 2s 8 为例劳斯表第一列依次是 1、1、−6、8出现 1→−6 和 −6→8 两次变号说明该系统有两个右半平面极点。不用真的解三次方程结论已经出来。和所有系数必须为正这种必要条件不同劳斯表第一列不变号是充要条件这也是为什么教材敢把它当稳定性判据而不是经验法则。工程里我一般这么用它先花十秒排劳斯表确认没有右半极点再放心去画根轨迹、调参数如果劳斯表这关都不过后面所有时域分析都是白做。3.3 终值定理与稳态误差误差是系统的结构税终值定理说的是如果极限存在稳态值等于 lim_{s→0} s·Y(s)。极限存在四个字最容易丢无阻尼振荡系统永远在摆谈不上稳态此时硬套公式会算出个假值。笔记里专门举了这个矛盾——系统在无限振动理论上回不到某个固定数可终值公式却能给出一位数二者冲突。问题就出在 s·Y(s) 有一对虚轴极点前提不成立。稳态误差是同一个框架的延伸。设误差 E(s) R(s) / (1 G(s)H(s))套终值定理会发现开环传递函数里含几个积分器s0 的极点决定了系统对阶跃、斜坡这类典型输入的误差等级。0 型系统对阶跃有固定比例误差怎么调比例增益都消不掉1 型系统开环含一个积分器对阶跃输入误差归零但对斜坡输入还有常数误差。读到这里你应该明白误差不是控制器不够努力而是系统结构里没有 s0 的极点来承接那一类输入。要消除某类输入的稳态误差唯一的路是往回路里注入对应的积分环节——这正是接下来 PID 控制中积分项的动机。4. PID 控制器的底层分工比例、积分、微分各自在补什么洞4.1 比例控制 P能加速但调不到目标拿一阶惯性对象 G(s) K/(Ts1) 试比例控制 C(s) Kp。闭环传递函数变成 KpK/(Ts 1 KpK)极点从 −1/T 挪到 −(1KpK)/T。Kp 越大极点越靠左响应越快——比例控制的全部本事就是这一点把极点往左推。但看稳态阶跃输入下的终值是 KpK/(1KpK)永远小于 1误差 1/(1KpK) 只在 Kp 无穷大时才归零。所以比例控制改的是快慢不是准不准系统类型没变结构性误差就还在。这也是为什么单靠 P 旋钮调不出好性能它把响应调快了但目标值永远差一截追求零误差只能把 Kp 调大调大又带来噪声和超调。4.2 积分控制 I用升阶换稳态精度PI 控制 C(s) Kp Ki/s 引入了一个位于 s0 的开环极点。这一步的本质是把系统类型从 0 型抬成 1 型阶跃输入在 s0 的极点被误差传递函数分母里的积分环节顶掉稳态误差归零。代价立刻显现——对象本来一阶回路里多一个积分器闭环至少变二阶。二阶系统可能欠阻尼超调、振荡随之而来Ki 越大振荡越凶甚至可能把闭环极点推回右半平面。笔记里的说法很直白纯比例反应快但稳不到理想值加积分能稳到理想值但反应变慢。一阶系统加纯积分变二阶这是教科书反复强调的积分会让系统升阶理解了这个就不会奇怪为什么积分增益不是越大越好。4.3 微分控制 D给系统提前量代价是怕噪声微分项 Kd·de/dt 干的事是对误差的变化趋势做预测误差还在增大时提前反向施力等效于给系统注入一个左半平面零点起到相位超前、增加阻尼的作用能压住 P 和 I 带出来的超调。但理想微分没法物理实现实际都是带惯性的一阶微分更麻烦的是微分对高频噪声极其敏感——噪声是高频信号s 在高频处幅值暴涨一个 Kd 稍大噪声就攻城略地。环节改什么副作用P把极点往左推加快响应稳态误差消不掉I开环加 s0 极点抬系统类型升阶导致振荡、响应变慢D加零点增阻尼压低超调噪声放大需加滤波所以调 PID 从来不是三个旋钮各管一摊。P 动快慢I 动精度D 动阻尼但它们共享同一组闭环极点牵一发动全身。这也是为什么课堂宁可花大篇幅讲极点位置也不愿意给一套万能参数表——参数表是黑匣子极点位置才是地图。你理解了 P 是推极点、I 是加极点、D 是加零点再去读任何一篇文章里的调参口诀都能立刻反推出它背后的极点逻辑。5. 根轨迹与排查增益扫过去之前先看清分离点和实轴规则5.1 根轨迹的本质让闭环极点跟着增益 K 走路闭环特征方程 1 KG(s) 0。把 G(s) 写成零极点形式这个方程在复平面上等价于两个条件相角条件 ∠G(s) 180°幅值条件 |G(s)| 1/K。相角条件只跟零极点位置有关跟 K 无关K 只改变幅值。所以根轨迹的本质是满足相角条件的所有点连成的曲线就是闭环极点可能待的地方K 只是在这条曲线上选座。K→0 时闭环极点趋近开环极点K→∞ 时趋向开环零点或无穷远——起点终点就这样定死了。理解这一点就会明白为什么根轨迹画出来就赢了它把参数空间里所有可能发生的事压缩成一张图不用逐个试 K。5.2 五条几何规则从开环零极点画出闭环轨迹不需要计算机手画根轨迹靠五条规则支路数等于开环极点个数整张图关于实轴对称实轴上的轨迹段其右侧开环零极点总数必须是奇数n m 时无穷远处的渐近线与实轴夹角是 (2k1)π/(n−m)分离点与汇合点由 dK/ds 0 的根确定等价形式是所有极点与该点的倒数之和等于所有零点与该点的倒数之和。分离点那一张图信息量最大轨迹从几个极点出发中途在实轴上某点撞在一起再分开飞向复平面那个撞点就是分离点。它直接决定了增益大到什么程度时系统会从单调响应变成振荡响应——分离点越靠左临界增益的余量就越大。import numpy as np Ks np.linspace(0, 20, 201) roots [np.roots([1, 5, 6, K]) for K in Ks] # 特征多项式 s^3 5s^2 6s K即 s(s2)(s3) K 0 # 对每个 K 求一次根把所有根的实部虚部收集起来就是根轨迹这是最常见的验证手段对每个 K 直接求特征方程根把根的位置画出来就是计算机眼中的根轨迹。注意这里的陷阱——代码得到的是某个 K 下的闭环极点教材里的根轨迹是所有 K 的集合。两者信息等价代价完全反过来手画快但不精确扫 K 精确但看不到趋势结构。我一般建议先手画定趋势再用代码验证拐点两个方法互相兜底。5.3 排查五个手画根轨迹的翻车现场现象一实轴上的轨迹段画反。明明该画线的段是空的不该画的段反而画上了。原因右侧零极点总数数成偶数忘了复数极点也要数进去。解决数实轴某点右侧的零极点总数时把共轭复极点、复零点统统算上只关心右侧总数是奇是偶永远奇数是轨迹段。现象二分离点求出来两个解不知道取哪个。原因dK/ds 0 是必要条件不是充分条件可能是分离点可能是汇合点也可能是根本不在轨迹上的假根。解决把两个解代回幅值条件算 KK 必须为正且该点必须落在实轴轨迹段上不满足的直接划掉。现象三用软件画根轨迹结果跟手画差很远。原因工具默认的特征方程约定不同有的用 1KG(s)0有的增益定义方向相反还有的绘图工具做了增益归一化。解决轨迹形状其实一样差异全在 K 的刻度和正负号。第一次用某个工具前先拿一个已知系统比如 s(s2)(s3) 验一下方向再投入实际设计。现象四画完轨迹就定增益完全不管零点。根轨迹只画闭环极点但超调量是零点、极点共同决定的主极点位置选得漂亮零点一捣乱阶跃照样冲过头。解决定完 K 必须回到时域看 step 响应看着超调超了就回来调 K。现象五高阶系统用主导极点近似结果翻车。原因主导极点近似的前提是其余极点离虚轴足够远且附近没有强零点系统存在靠近虚轴的共轭副极点时近似的误差极大。解决先用劳斯判据确认全体极点都在左半平面再比较最近两对极点的实部比值别默认高阶都是二阶。5.4 验证根轨迹是地图不是目的地选增益的标准做法是沿轨迹找一个阻尼比合适的点比如 ξ≈0.707读出对应的 K然后立刻回到时域验证。这一步经常暴露出根轨迹说不出口的短板它只告诉你在某 K 下极点在哪不告诉你零点在哪、输入幅值多大、非线性环节什么时候触发。所以根轨迹上看着是 0.707 阻尼只代表线性小信号下的期望真正落实验收得跑一步阶跃响应再扫几组输入幅值看看线性假设还成不成立。笔记把这一步叫从根轨迹和频域回到时域看终值本质上是一个闭环设计工具负责猜时域仿真负责验收。6. 最后一公里的取舍极点位置不是全部回到时域才算数这套笔记停在奈奎斯特图第一部分再往后走一步就是状态空间、卡尔曼滤波和模型预测控制。值得停下来想清楚的是为什么 MPC 和最优控制里几乎不再提极点因为根轨迹和劳斯判据解决的是单个标量增益下闭环怎么变而现代控制把设计对象换成了状态空间模型把目标换成了代价函数最小化。极点还在但不再以分母的根的形式出现而是变成状态矩阵的特征值并且整个框架一次性处理多输入多输出。换句话说传递函数是单入单出时代的优秀抽象它的表达力有边界这份笔记的定位恰恰是把边界内最硬核的部分讲透。我的看法是学完根轨迹最该形成的习惯不是会画图而是画完图必须回到时域验收。极点位置决定收敛不发散零点决定起步方向输入幅值决定非线性是否被触发——这三个因素只有凑齐了才能解释一个真实的阶跃响应。从那以后我每次用根轨迹或者 PID 设计完参数都强制走一遍同样的流程先劳斯判据排除右半极点再画闭环阶跃看超调和调节时间最后扫三组输入幅值看非线性有没有偷偷上线。这套检查比任何一张轨迹图都值钱。这套十三期笔记的价值也正在于把每一步推导都还原成先问机制、再动笔算的顺序适合对照着亲手推一遍把自动控制原理的骨架搭起来。希望帮到你。本文还有配套的精品资源点击获取