
简介《自动控制原理》第六版第六章“线性系统的校正方法”配套课件面向自动控制原理课程学习者、考研复习者及相关专业师生内容聚焦常用校正装置及其特性与教材章节对应紧密。PPT围绕无源校正网络展开分别讲解无源超前网络、无源滞后网络和无源滞后-超前网络的电路结构、传递函数推导、零极点分布与相角特性并结合分度系数 a、b 和时间常数 T 说明参数选择对校正效果的影响能帮助读者理解不同网络在提高系统稳定性、消除高频噪声等方面的实际作用。资源包共包含1个PPT文件压缩包约304KB体量轻便但知识点覆盖完整适合配合教材进行章节复习或教学讲义补全。目前已有86人学习下载可作第六章校正方法学习的浓缩参考也适合作为课堂辅助演示材料。1. 线性系统的校正方法从频域开环特性到闭环性能的工程桥一个调试现场常见的画面被控对象模型已经到手负反馈闭环也搭好了但测试结果总差那么一口气——要么稳态精度不够要么响应超调偏大要么相位裕度小得让人不放心。直接改控制器增益往往按下葫芦浮起瓢改大了系统振荡改小了响应拖沓。真正工程上解决问题的路径是在原系统上串入校正网络用频域设计的语言重塑开环Bode图。这就是《自动控制原理》第6章「线性系统的校正方法2」在讲的事情给一个既有系统搭配超前、滞后或滞后-超前校正环节让相位裕度、截止频率和稳态精度同时落在合理区间。这一篇面向学过反馈控制基础、拿到系统模型却不知道怎么调参数的工程师把三种基础校正手段的原理、参数计算和仿真验证过程完整走一遍顺便说出那些课本不会明说的工程边界与常见坑。2. 超前校正用相位裕度换截止频率相位抬升的代价看噪声2.1 为什么先看相位裕度而不是先调增益对线性时不变系统做设计核心指标有三个稳态误差系数、相位裕度、截止频率。稳态误差由开环增益和系统型别决定但直接把增益调大通常会把截止频率推高随之而来的是相位裕度下降系统趋向振荡。超前校正的核心思想很简单在保证增益不变的前提下用校正网络的相位超前特性把中频段的相位抬起来让系统在更高的截止频率处仍然保有足够的相位裕度。超前校正的传递函数标准形式是Gc(s) Kc · (1 αTs) / (1 Ts)其中 α 1这个网络的幅频特性在低频段是 0dB高频段是 20lgα它本质是一个高通滤波器。Bode 图上幅值曲线在 1/(αT) 到 1/T 之间有一个上升的斜率段相位曲线在这段频率范围内出现正的相位峰。最大超前角出现在几何中心频率 ωm 1/(T·√α) 处对应的最大超前角为φm arcsin((α - 1) / (α 1))从公式可以看出 α 越大能提供的超前角越大但代价是高频增益放大倍数也越大。α 取 10 时 φm 约是 54.9°取 20 时 φm 约 64.8°越往后收益越有限而噪声放大的问题却越来越明显所以工程上一般不会把 α 做超过 20。2.2 超前校正设计步骤从 Bode 图读数到参数落地设计超前校正网路的工程方法常见做法是以下六步根据稳态误差要求确定开环增益 K绘制未校正系统在增益 K 下的 Bode 图量出相位裕度 γ0计算期望相位裕度 γ 与 γ0 的差值再加上 5°~12° 的余量得到需要补偿的最大超前角 φm由 φm arcsin((α-1)/(α1)) 反解 α在未校正系统的幅频曲线上找到增益为 -10lgα 的频率点取该频率为校正后截止频率 ωc令 ωm ωc由 T 1/(ωm·√α) 计算时间常数写出完整校正网络传递函数。余量之所以要加 5°~12°是因为校正网络相位曲线不是理想的矩形峰它在新的截止频率处实际贡献的相位会比 φm 略小。若原系统在剪切频率附近斜率较陡余量取上限。2.2.1 用 Python 控制库实现超前校正计算下面给出一段可以直接运行的最小计算脚本使用control库做频域分析。假设被控对象为 G(s) 20 / [s(s1)(0.1s1)]要求稳态速度误差系数 Kv ≥ 20相位裕度不低于 45°。import control as ct import numpy as np # 被控对象G(s) 20 / [s(s1)(0.1s1)] s ct.tf(s) G 20 / (s * (s 1) * (0.1 * s 1)) # 绘制未校正 Bode 图并读取相位裕度 # margin() 返回增益裕度、相位裕度、对应频率 gm, pm, wgm, wpm ct.margin(G) print(f未校正增益裕度 {gm:.2f} dB相位裕度 {pm:.2f}°穿越频率 {wpm:.2f} rad/s) # 期望相位裕度 45°加 10° 余量 target_pm 45 phi_m target_pm - pm 10 phi_m_rad np.deg2rad(phi_m) alpha (1 np.sin(phi_m_rad)) / (1 - np.sin(phi_m_rad)) print(f需要补偿最大超前角{phi_m:.2f}°对应 α {alpha:.2f}) # 找幅值为 -10lg(alpha) 的频率点 gain_to_find -10 * np.log10(alpha) freqs np.logspace(-2, 2, 10000) mag, phase, omega ct.frequency_response(G, freqs) # frequency_response 返回的 mag 是幅值转成 dB mag_db 20 * np.log10(mag.squeeze()) idx np.argmin(np.abs(mag_db - gain_to_find)) omega_c omega[idx] print(f新的截止频率取 ωc {omega_c:.3f} rad/s此时幅值 {mag_db[idx]:.2f} dB) # 计算校正网络参数 T 1 / (omega_c * np.sqrt(alpha)) print(fT {T:.4f}校正网络传递函数 (1{alpha*T:.4f}s)/(1{T:.4f}s)) # 组合校正后的开环传递函数验证相位裕度 Gc (1 alpha * T * s) / (1 T * s) G_open G * Gc gm2, pm2, wgm2, wpm2 ct.margin(G_open) print(f校正后增益裕度 {gm2:.2f} dB相位裕度 {pm2:.2f}°穿越频率 {wpm2:.2f} rad/s)这段代码里的ct.frequency_response返回的是复数响应对象mag.squeeze()是为了消除单输入单输出系统下多余的维度。np.argmin(np.abs(mag_db - gain_to_find))是在离散频率点上找最接近目标增益的下标频率点取密一点可以提高定位精度这也意味着算出的 ωc 精度受频率扫描分辨率限制。如果嫌这个近似不够精细可以用二分法在相邻两个频点之间插值工程上扫描 10000 个点已经足够。2.3 超前校正的边界条件与常见失误超前校正最容易被忽略的问题在高频段。由于网络增益在高频处是 20lgα如果系统本身存在高频测量噪声或未建模谐振校正后噪声会被放大反映在输出上就是控制量抖动加剧。这一点在 α 较大的时候尤其明显。另一类常见失误是把 ωm 放到了未校正系统幅频曲线斜率最陡的地方。斜率越陡同样的频率偏移带来的相位变化越大校正后相位裕度的实测值和设计值偏差就越大。我一般会刻意让 ωm 落在幅频曲线斜率为 -20dB/dec 的区间如果系统本身在这个频段斜率是 -40dB/dec 甚至更陡需要重新评估是否应该先用滞后校正把截止频率压低而不是硬做超前。还有一个细节是 α 和 T 的匹配。计算得到 α 后如果 T 太小校正网络的作用频段整体右移对原系统的相位补偿落在高频区实际效果微弱如果 T 太大则相位补偿点过低白白牺牲了响应速度。判断标准很简单画出校正前后 Bode 图对比看相位曲线在中频段是否出现了明显的抬升。只算参数不画图等于没有设计。3. 滞后校正拉低截止频率换相位裕度低频特性一个不掉3.1 滞后校正的数学模型与设计思路滞后校正传递函数为Gc(s) (1 bTs) / (1 Ts)其中 b 1它的幅频特性低频段是 0dB高频衰减到 20lgb即是一个低通滤波器。滞后校正的核心逻辑和超前完全相反不追求在原有截止频率处抬相位而是利用滞后网络的高频衰减特性把整个开环幅频曲线压下来让穿越频率向左移动到一个相位相对充裕的频段。因为穿越频率变低系统在这个更低频率处的相位裕度自然就大了。这里要澄清一个常见误解滞后校正提供相位补偿的说法并不精确。滞后网络的相位曲线在转折频率附近其实是负的它真正有用的属性是高频衰减。设计者用它的衰减能力让开环增益曲线在更低频率处穿越 0dB 线从而躲开原系统相位快速下降的高频区。这也是为什么滞后校正会让系统带宽下降、响应变慢——代价就是时间响应迟钝一些换来了稳定性和稳态精度的保留。滞后校正设计步骤根据稳态误差要求确定开环增益 K画出 Bode 图找到未校正系统相位裕度刚好等于目标裕度加 5°~12° 的频率点记为期望截止频率 ωc在 ωc 处读未校正系统幅值 L(ωc)令滞后网络的高频衰减量 20lgb 抵消这个幅值即 b 10^(L(ωc)/20)选择转折频率系数令 1/T ωc / 10 左右让滞后网络的相位滞后远离期望截止频率验证校正后相位裕度是否达标不达标就微调 T。设计思路里最精巧的是第 4 步。选择 1/T 比 ωc 低十倍频程是为了让滞后网络在 ωc 处产生的相位滞后尽量小。如果这个条件满足滞后网络在交叉频率处只引入约 5°~6° 的负相位这个量正好被设计时预留的余量所覆盖。3.2 滞后校正参数计算的完整示例沿用上一章节同一被控对象 G(s) 20 / [s(s1)(0.1s1)]目标变为稳态速度误差系数 Kv ≥ 20相位裕度不低于 45°同时希望校正后系统带宽不要过低。先看未校正系统的相位裕度再计算滞后参数。import control as ct import numpy as np s ct.tf(s) G 20 / (s * (s 1) * (0.1 * s 1)) # 目标相位裕度 45°加 8° 余量 target_pm 45 pm_margin 8 target_phase -180 (target_pm pm_margin) # 找相位等于 target_phase 的频率作为期望截止频率 freqs np.logspace(-2, 1, 50000) mag, phase, omega ct.frequency_response(G, freqs) phase_deg phase.squeeze() * 180 / np.pi idx np.argmin(np.abs(phase_deg - target_phase)) omega_c_new omega[idx] print(f期望截止频率取 ωc {omega_c_new:.3f} rad/s) # 读取该频率处的幅值计算 b mag_db_at_new_wc 20 * np.log10(mag.squeeze()[idx]) b 10 ** (mag_db_at_new_wc / 20) print(fωc 处幅值 {mag_db_at_new_wc:.2f} dB对应 b {b:.4f}) # 选择 1/T ωc / 10 T 10 / omega_c_new print(fT {T:.3f} s滞后网络传递函数 (1{b*T:.3f}s)/(1{T:.3f}s)) # 验证校正效果 Gc_lag (1 b * T * s) / (1 T * s) G_open_lag G * Gc_lag gm3, pm3, wgm3, wpm3 ct.margin(G_open_lag) print(f滞后校正后相位裕度 {pm3:.2f}°穿越频率 {wpm3:.2f} rad/s)代码里target_phase -180 (target_pm pm_margin)是关键它把相位裕度要求转换成相位角目标值。找到的频率点是未校正系统相位曲线上满足目标的最高频率如果这个频率取得比原有穿越频率低说明校正有效如果计算出来的 ωc 和原穿越频率相差无几说明系统本身的相位储备尚可不太需要滞后校正。3.3 滞后校正参数选择中的核心权衡滞后校正中 b 的取值决定了高频段衰减量。b 越小衰减越强同样的目标相位裕度下 ωc 可以选得越高带宽损失越小。但 b 太小会带来另一个问题转折频率 1/(bT) 会被推得很低网络在此处的相位滞后会延续到很宽的频带导致校正后系统在中低频段产生明显的相位凹陷。这个凹陷若不处理在闭环响应的特定频段会造成谐振峰抬高。工程经验上 b 一般取 0.1~0.5 之间对应衰减 -20dB 到 -6dB。如果算出的 b 小于 0.05说明单独用滞后校正的代价太大带宽会被压缩得过于厉害这时候应该考虑滞后-超前校正把频率点重新往高处挪。另一个容易被忽略的点是滞后网络的 T 值不能无限放大。T 太大时校正网络引入了一个极低频的慢极点闭环系统会多出一个几乎与零极点对消的慢动态体现在阶跃响应上就是输出要经过很长时间才结束缓慢漂移给人一种「系统还在慢慢爬」的感觉。判别方法是在校正后闭环阶跃响应曲线上看是否存在拖尾如果有就把 1/T 的位置提高但要重新验证相位裕度。4. 反馈校正与复合校正从串联走向结构工程现场的频率法组合拳4.1 反馈校正用局部闭环重塑对象特性串联网路结构简单、计算直观但有一个天然弱点它对被控对象参数漂移没有抑制能力。当对象本身的模型不够精确、增益随时间变化时串联校正的效果也会跟着漂移。反馈校正在这里体现出优势。图 1 是一个典型的局部反馈结构前向通路为 G1(s)被包围的环节为 G2(s)反馈支路为 H(s)。内回路闭环传递函数为Φ(s) G2(s) / (1 G2(s)·H(s))当 G2(s)·H(s) 的幅值远大于 1 时Φ(s) 近似等于 1/H(s)即内环特性只由反馈支路决定。这意味着把对象参数的变化影响大幅削弱了。工程上做反馈校正最常见的手法是把一个微分反馈测速机或 tacho 反馈包围在惯性环节或者振荡环节外面用内环阻尼去抑制对象谐振峰。频率法设计内环的思路是先画出 G2(s)·H(s) 的开环 Bode 图确定内环穿越频率和相位裕度保证内环本身稳定然后计算 Φ(s)把内环闭环传函当作新的被控对象再去设计外环串联校正。两步走的顺序不能颠倒否则外环设计结果会被内环的动态拖累。4.1.1 反馈校正参数的频率法验算示例import control as ct import numpy as np s ct.tf(s) G1 10 / (s 1) G2 2 / (s * (0.5 * s 1)) # 反馈支路微分增益H(s) 0.1s H 0.1 * s # 内环开环传函 inner_loop_open G2 * H gm_in, pm_in, _, _ ct.margin(inner_loop_open) print(f内环开环相位裕度{pm_in:.2f}°) # 内环闭环传函 inner_loop_closed G2 / (1 inner_loop_open) print(f内环闭环传函{inner_loop_closed}) # 整个校正后系统开环传函 G_open_fb G1 * inner_loop_closed gm_fb, pm_fb, _, _ ct.margin(G_open_fb) print(f反馈校正后系统相位裕度{pm_fb:.2f}°)内环相位裕度是一个关键设计值。如果反馈支路 H(s) 中含微分环节内环开环在低频段幅值较小在高频段幅值增大这种特性天然有利于抑制低频干扰而让高频信号通过。但微分环节也会放大高频噪声所以 H(s) 在工程实现时通常会加上一个小惯性滤波例如 0.1s/(0.01s1)把无用的高频增益压掉。4.2 复合校正前馈通道绕过闭环的稳定性限制串联校正和反馈校正的本质都是在闭环回路内做文章因此它们都受制于稳定性与性能之间的基本矛盾相位裕度给得足带宽必然受限制。复合校正在回路之外另开一条前馈通道直接补偿输入信号对输出的影响它的核心优势在于可以在不损失相位裕度的情况下改善稳态跟踪精度。按输入补偿的前馈结构里前馈通路传函 F(s) 与闭环回路并联。联合系统对输入的误差传递函数变为Φe(s) E(s) / R(s) (1 - F(s)·P(s)) / (1 P(s)·C(s))其中 P(s) 为对象传函C(s) 为反馈控制器。当 F(s) 1/P(s) 时误差理论上完全为零这个条件被称为完全不变性条件。实际系统不可能精确实现逆模型工程上通常取 F(s) 为 P(s) 的近似逆用来消除主导极点的影响。复合校正多用于随动系统、雷达天线伺服这类对跟踪速度要求很高的场景。值得注意的是前馈通道的引入不影响闭环特征方程因为反馈回路的极点结构没有变稳定性分析仍然只针对闭环回路进行。这个特性让复合校正成为了工程师手里少数几个「免费午餐」补偿了动态误差却不消耗相位裕度。4.3 三种校正策略的适用性对照校正方式改善指标主要代价适用场景超前校正相位裕度、截止频率高频噪声放大原系统稳定性尚可、需要提速滞后校正相位裕度、稳态精度带宽降低、响应变慢原系统稳态精度满足、稳定性不足滞后-超前综合提升参数多、调校复杂对精度和速度都有要求的系统反馈校正对象参数漂移抑制额外硬件、噪声敏感对象模型不确定性强复合校正跟踪精度、动态误差需要前馈模型随动系统、高精度伺服实际项目里没有哪张表能直接给出答案但频率法的设计习惯是固定的先看稳态指标定增益再看中频段相位裕度最后检查截止频率和噪声。校正方式选错通常是因为前一步没有做扎实。5. 滞后-超前校正的两步合成法从串联到并联的验证收尾5.1 用 Bode 图验证参数是否真的落在设计点校正设计做到最后验证环节往往比计算环节更重要。我一般会固定做三个检查第一重新绘制校正后开环 Bode 图量取相位裕度和截止频率和设计值对比第二看闭环阶跃响应的超调量和调节时间确认时域指标落在预期范围第三扫一遍控制量曲线确认没有高频抖振。这三个检查做完设计才算真正闭环。这里给出一个滞后-超前校正的两步设计实现它综合了两章前面的设计结果。滞后-超前网络的传函为Gc(s) (1 α·T1·s) / (1 T1·s) · (1 β·T2·s) / (1 T2·s)其中 α 1β 1。常见做法是先用滞后部分压低截止频率并保留低频增益再用超前部分抬高新截止频率处的相位。下面用仿真脚本直接验证组合效果。import control as ct import numpy as np import matplotlib.pyplot as plt s ct.tf(s) G 20 / (s * (s 1) * (0.1 * s 1)) # 滞后参数源于第 3 章计算结果 beta 0.125 T_lag 10.0 Gc_lag (1 beta * T_lag * s) / (1 T_lag * s) # 超前参数基于滞后后的系统重新设计 G_after_lag G * Gc_lag alpha 5.0 omega_m 3.0 T_lead 1 / (omega_m * np.sqrt(alpha)) Gc_lead (1 alpha * T_lead * s) / (1 T_lead * s) Gc_comb Gc_lag * Gc_lead G_open_comb G * Gc_comb gm_c, pm_c, wgm_c, wpm_c ct.margin(G_open_comb) print(f滞后-超前校正相位裕度 {pm_c:.2f}°截止频率 {wpm_c:.2f} rad/s) # 闭环阶跃响应对比 T_orig G / (1 G) T_comb G_open_comb / (1 G_open_comb) t, y_orig ct.step_response(T_orig, np.linspace(0, 20, 2000)) t2, y_comb ct.step_response(T_comb, np.linspace(0, 20, 2000)) plt.figure(figsize(8, 5)) plt.plot(t, y_orig, label未校正, linewidth1.5) plt.plot(t2, y_comb, label滞后-超前校正, linewidth1.5) plt.legend() plt.grid(True, alpha0.3) plt.xlabel(时间 (s)) plt.ylabel(输出幅值) plt.savefig(step_compare.png, dpi150)这段脚本里有一个值得注意的细节先做滞后再做超前顺序不是随意的。滞后网络把截止频率拉低之后被控对象在新截止频率附近的幅频斜率会变得相对平缓此时超前网络需要补偿的相位量较小α 值可以取低噪声放大也相应变小。相反如果先做超前高频增益已经被抬高再加滞后虽然也能压回来但超前网络对高频噪声的放大已经在物理层面发生了。5.2 验证环节的三个高频踩坑点相位裕度达标的判定要同时看幅值裕度。滞后-超前网络参数组合不当可能出现相位裕度正常但幅值裕度不足 6dB 的情况这在高阶对象上尤其明显。幅值裕度的低意味着闭环系统对增益变化的容忍度差实际运行时对象增益稍有增加就可能导致临界振荡。第二个坑是仿真验证时只看闭环阶跃响应不看开环 Bode 图的低频段特性。滞后-超前校正如果参数配比不当低频段增益被超前部分的零点抬高虽然不影响相位裕度但会让系统对低频干扰的抑制能力下降。检查方法是在低频段低于 0.01 rad/s读一下开环幅值对比未校正系统的值是否符合预期。第三个坑是数字实现时的离散化误差。校正网络在模拟域设计完接入数字控制器时要做双线性变换或零极点匹配变换变换后频率响应会在接近 Nyquist 频率时产生畸变尤其是超前网络的高频抬升部分。保守做法是让校正后截止频率低于 Nyquist 频率的十分之一并配合抗混叠滤波器使用。仿真验证通过不等于实物验证通过差别往往就在这些离散化边界上。5.3 一个更精细的调参技巧用闭环频率响应峰值微调相位裕度经典书上只说相位裕度设计要求但从不提相位裕度选多少是「够」的。这里给出一个在工程上更直接的关联闭环幅频响应峰值 Mr 与相位裕度 γ 之间存在近似关系 Mr ≈ 1 / sinγγ 取 45° 时对应 Mr 约 1.41即闭环谐振峰约 3dB。若系统对谐振峰有明确上限可以直接反推所需的相位裕度。调参时如果发现阶跃响应超调虽在允许范围内但振荡次数多通常是因为相位裕度偏大而幅值裕度偏小此时不要动超前网络的 α而应该微调滞后网络的 β 值让两个裕度同时回到平衡区间。这个调参思路比对着一堆时域指标盲目试错要高效得多。本文还有配套的精品资源点击获取