ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

串联校正实验:MATLAB频率法设计超前与滞后校正全流程

串联校正实验:MATLAB频率法设计超前与滞后校正全流程 简介针对自动控制原理课程中的线性系统串联校正实验这份实验报告整理了完整的超前校正与滞后校正设计流程适合自动化、电气类专业学生及考研复习者参考。资源共1个doc文档压缩包约481KB内容围绕武汉工程大学实验报告展开包含实验目的、实验原理、设计计算与结果分析等模块。报告以具体开环传递函数为例演示了利用MATLAB绘制频域曲线、计算相角裕度与幅值裕量并分别设计超前校正装置和滞后校正网络以满足静态速度误差系数、相位裕量等指标。正文还给出了完整的MATLAB代码、Bode图对比及Simulink单位阶跃响应仿真清晰展示了校正前后系统的稳定性变化便于读者对照练习。目前已有605人学习对于正在学习频域分析法或需要完成实验报告的同学具有直接参考价值。1. 线性系统串联校正实验先分清校正在整个控制设计里站哪个位置写自动控制原理的串联校正实验报告时最常翻车的不是校正器算不出来而是算完之后系统在 Simulink 里还是振荡或者相角裕度看着够了阶跃响应的超调量却大得离谱。这个实验真正要练的不是套公式而是先回答三个问题系统差的是稳态精度还是动态裕度剪切频率当前在哪幅频曲线在中频段以什么斜率穿过 0 dB 线串联校正的实质是在前向通道里串一个额外的传递函数 Gc(s)用它的幅频、相频特性去修整开环特性的形状——超前校正在中频段“借”相位滞后校正在高频段“压”增益两者分别改的是动态性能和稳定性边界。下面按频率法设计路线把从未校正系统建模、指标读取、校正参数计算到仿真验证的完整流程走一遍。代码基于 MATLAB R2021b 及以上环境直接对照做就能把实验报告五里最核心的设计部分填实。2. 串联校正的类型与频率法设计原理超前、滞后以及别用错的场景2.1 超前校正用相位“借”动态性能超前校正装置的传递函数一般写成Gc(s) (1 αTs) / (1 Ts)α 1α 是零极点比也叫分度系数。零点频率在 1/(αT)极点频率在 1/T因为 α 1极点频率更高。相频特性从 0 到 90° 之间变化最大超前角出现在两个转折频率的几何中点 ωm 1/(T√α) 处大小由 sin φm (α - 1)/(α 1) 决定反过来设计时用 α (1 sin φm) / (1 - sin φm)。超前校正的 Bode 图特征可以拆成三段看低频段增益为 0 dB不改变系统稳态精度中频段幅值抬升 10lg α dB同时相频多出一个“凸包”高频段增益稳定在 20lg α dB噪声会被放大。所以 α 不是越大越好工程上一般取 515超过 20 要么噪声压不住要么两级超前叠加。一个常见判断是如果算出来的 α 15 但相角裕度还是不够说明系统本身中频段相位落得太快超前校正治标不治本应该考虑滞后-超前或者换校正点。2.2 滞后校正用高频衰减换稳定余量滞后校正的传递函数写成Gc(s) (1 bTs) / (1 Ts)b 1低频增益为 0 dB高频段增益 -20lg(1/b) dB相位是滞后的最大滞后角在转折频率几何中点附近。注意滞后校正能改善相角裕度的机理不是它提供了正相位而是它把剪切频率压低了——校正后系统在更低的频率穿越 0 dB那个位置原始系统的相角衰减更少裕度自然上来。代价是带宽下降响应变慢。滞后校正最常见的误用是拿它去提高稳态精度这是错的。它低频段增益是 1串进去根本不动 Kv。只有当系统稳态指标已满足、动态裕度略差、且剪切频率不能再右移怕高频噪声时滞后才是正解。如果需要同时提高 Kv 和裕度常见做法是先加一个比例或积分环节把低频增益抬到位再按裕度需求选择超前还是滞后——这正是频率法设计里“先定增益、再整形”的顺序。校正类型低频增益中高频段剪切频率适用的症状典型代价超前0 dB中频抬升相角凸起右移相角裕度不足动态响应慢高频噪声放大滞后0 dB高频衰减左移剪切频率过高裕度略不足带宽下降响应变慢滞后-超前0 dB低频/高频分别处理视参数而定稳态和动态同时要改参数多校准复杂2.3 为什么频率法比根轨迹更适合串联校正实验胡寿松《自动控制原理》里频率法串联校正那一章指标是三个相角裕度 γ、剪切频率 ωc、静态误差系数 Kv或 Kp、Ka。这三个量在 Bode 图上各有明确的几何位置Kv 看低频渐近线ωc 看幅频曲线穿越 0 dB 处γ 看该点相位与 -180° 的差值。根轨迹法也能设计校正器但要先设主导极点再反解零极点计算量大而且对三阶以上系统还要校验非主导极点位置实验课时间根本不够。所以课程实验几乎清一色走频率法路线报告里也要求同时画出校正前后两条 Bode 图——这一画高频段抬升量对不对、低频段贴不贴合一眼就能看出来。3. MATLAB 中串联校正的完整设计流程从幅频读取到参数落地3.1 先摸清未校正系统margin 函数读四个指标进设计前先把未校正系统建出来。以实验里常见的二阶不稳定风格对象为例G0(s) 2 / [s(s 1)(0.25s 1)]% 未校正系统建模K 2三个极点 0, -1, -4 G0 tf(2, conv([1 1 0], [0.25 1])); % 读取四项指标 [Gm, Pm, Wcg, Wcp] margin(G0); fprintf(GM %.2f dB, PM %.2f deg\n, 20*log10(Gm), Pm); fprintf(Wcg %.3f rad/s, Wcp %.3f rad/s\n, Wcg, Wcp);margin 的四个输出分别是增益裕度线性倍率、相角裕度度、相角穿越频率、幅值穿越频率。注意 Gm 不是 dB要转要乘 20log10Wcp 才是我们说的剪切频率。用这个对象跑出来GM ≈ 1.98 dBPM ≈ 22.6°Wcp ≈ 1.215 rad/s。系统是稳定的但裕度明显不足阶跃响应会有明显振荡。这个例子里 Kv 2 是题目给定指标开环增益不能动。如果降低增益换稳定Kv 就不合格。这正是串联校正的必要性前提增益锁死只能靠整形。如果这一步跑出来 Gm 或者 Pm 是负的说明系统本身闭环不稳定要先确认开环是否包含右半平面极点不要直接套超前校正公式。3.2 超前校正参数计算的 MATLAB 实现超前校正设计可以写成一段自动迭代的脚本gamma_req 45; % 目标相角裕度 deg for add 5:5:25 % 从5度附加余量开始试 phi_m (gamma_req add) * pi / 180; % 最大超前角 rad alpha (1 sin(phi_m)) / (1 - sin(phi_m)); L_m 10 * log10(alpha); % 校正装置在中频段抬升的 dB 数 % 在未校正幅频曲线上找幅值等于 -L_m 的频率作为新剪切频率 w logspace(-1, 2, 5000); [mag, ~, wout] bode(G0, w); mag_db 20 * log10(squeeze(mag)); wm interp1(mag_db, wout, -L_m, linear, NaN); if isnan(wm) % 找不到说明该系统单级超前拉不动 error(单级超前无法满足要求需要滞后-超前或两级超前); end T 1 / (wm * sqrt(alpha)); Gc tf([alpha*T 1], [T 1]); % 超前环节 (1alpha*T*s)/(1T*s) [~, Pm_new, ~, Wcp_new] margin(Gc * G0); fprintf(add%d, alpha%.2f, wm%.3f, T%.4f, PM_new%.1f deg\n, ... add, alpha, wm, T, Pm_new); if Pm_new gamma_req break; % 第一次满足目标就收手 end end这段代码的循环逻辑是从 5° 附加余量开始逐次增加去试直到校正后 PM 真正达标。为什么要试而不是一次算准因为超前校正把剪切频率从 1.215 rad/s 推到了新的位置通常在 2 附近而三阶系统在更高频处的相角衰减更快这个下降量无法用解析式直接表达只能靠 margin 闭环校验。代码里 interp1 的四个参数是“y 值、x 值、待插目标、越界返回 NaN”当系统幅频曲线全程高于 -L_m 时返回 NaN说明单级超前已经不够用——这个错误提示比算出一堆无效数字要友好得多。实际跑出来的结果add 5 时 α ≈ 5.83wm ≈ 1.95 rad/sPM_new ≈ 46.7°一次就达标。3.3 滞后校正参数计算的 MATLAB 实现滞后校正适合“裕度差一点、频率不能再往上推”的场景设计步骤是先定新剪切频率再算衰减量% 滞后校正设计目标 PM 45 deg附加 12 度补偿滞后相位的损失 gamma_req 45; w logspace(-2, 2, 5000); [~, phase] bode(G0, w); phase_deg squeeze(phase); % 找未校正相角等于 -180 45 12 的频率 target_phase -180 gamma_req 12; w_new interp1(phase_deg, w, target_phase); % 新剪切频率 % 计算该频率处未校正幅值就是滞后节需要压下来的量 [mag, ~, ~] bode(G0, w_new); A_linear squeeze(mag); beta A_linear; % 高频衰减倍率beta 1 % 零点放在 w_new/8极点在更低频率保证相位亏损可控 wz w_new / 8; wp wz / beta; Gc tf([1/wz 1], [1/wp 1]); % 滞后环节 (1 s/wz)/(1 s/wp)滞后校正的坑全在频率位置选择上。零点和极点必须都落在新剪切频率左侧否则会造成不必要的相位滞后w_new 的选择依赖相频曲线调 12° 补偿角是一个经验起点曲线越陡补得越多。 beta 算出来后如果大于 20说明未校正系统在 w_new 处增益太高滞后要压 26 dB 以上实际实现时被控对象的低频漂移和高频噪声都会成为问题这时候应该回头检查是否真的适合用滞后还是需要先降低开环增益再谈整形。滞后校正的验证方式与超前一样最后都落在 margin(Gc * G0) 和闭环阶跃响应上。4. 实验全流程复现一个 Kv2、目标 γ≥45° 的三阶系统校正实例4.1 题目条件与未校正系统分析实验设定单位负反馈系统开环传递函数 G(s) K / [s(s 1)(0.25s 1)]要求静态速度误差系数 Kv 2相角裕度 γ ≥ 45°。第一步是定 K系统包含一个积分环节Kv 等于这个积分环节前面的增益级联的 (s 1)(0.25s 1) 在 s→0 处增益为 1所以直接取 K 2不需要额外换算。未校正系统在 K 2 下已经在此前跑过GM ≈ 1.98 dBPM ≈ 22.6°Wcp 1.215 rad/s。从 Bode 图上观察幅频曲线以 -40 dB/dec 穿过 0 dB 线中频段斜率太陡这是稳定裕度不足的直接原因。实验报告里写这步的时候要把“闭环稳定性”和“开环裕度”分开表述系统开环是稳定的无右半平面极点闭环因为幅值裕度太小而接近振荡边界。阶跃响应验证可以直接执行step(feedback(G0, 1), 10); % 未校正闭环阶跃响应10秒窗口波形会呈现明显的衰减振荡超调量往往超过 50%调节时间拉长这就是需要校正的直观证据。4.2 超前校正参数求解与验证按照第 3.2 节的设计脚本跑第一轮附加余量 5° 的结果是α 5.83wm 1.95 rad/sT 0.196 s校正后 PM 46.7°达标。再用代码单独验算一次% 校正后系统合成与裕度校验 Gc tf([5.83*0.196 1], [0.196 1]); % Gc (1 1.143s) / (1 0.196s) Gopen Gc * G0; [Gm2, Pm2, Wcg2, Wcp2] margin(Gopen); fprintf(校正后 GM %.2f dB, PM %.2f deg\n, 20*log10(Gm2), Pm2); fprintf(校正后 Wcg %.3f rad/s, Wcp %.3f rad/s\n, Wcg2, Wcp2);跑出来的数据GM ≈ 9.5 dBPM ≈ 46.7°Wcp ≈ 1.95 rad/s。对比未校正时有三个变化相角裕度从 22.6° 涨到 46.7°增益裕度从 1.98 dB 涨到约 9.5 dB剪切频率右移了 0.7 rad/s 左右。剪切频率右移意味着响应变快这正是超前校正“借相位改动态”的体现。三个指标同时变好说明这个系统适合超前方案。报告里建议把校正前后的开环 Bode 图画在同一张图上用三条标记线低频段重叠Kv 保持、中频段抬升约 7.66 dB10lg α、高频段整体抬高。画图的代码就是bode(G0, Gopen, {0.1, 20}); grid on; legend(未校正, 校正后);4.3 Simulink 阶跃响应对比验证计算验证通过之后在 Simulink 里搭闭环模型做最终确认。顺序是Step → Sum → Gain可选因为 K 已在传递函数里→ Transfer Fcn → Scope再从 Transfer Fcn 的输出端引一路负反馈回 Sum。两个 Transfer Fcn 模块的 Numerator 和 Denominator 直接填校正前后的展开系数未校正模块系数分子 [2]分母 [0.25 1.25 1 0]。这个展开来自 s(s 1)(0.25s 1) 0.25s³ 1.25s² s注意常数项是 0对应一个积分环节不要输成 [0.25 1.25 1 1] 这种漏掉极点的写法。校正后模块系数分子是 Gc(s) 乘以 G0(s) 的约分结果。直接把 Gc 和 G0 相乘后用 tfdata 取系数最稳妥[num, den] tfdata(Gopen, v); fprintf(Num [%s]\n, num2str(num)); fprintf(Den [%s]\n, num2str(den));把输出填回到 Transfer Fcn 的分子分母框里。运行仿真Scope 里对比两条阶跃响应未校正那条超调大、振荡明显校正后那条超调量大约在 25%30%峰值时间从接近 3 s 缩短到 1.5 s 左右调节时间也能收敛在 5 s 内。记录这两个数值和理论设计的相角裕度对应起来就是实验报告里“实验结果”部分最有力的依据。5. 三个容易被忽略的校正细节从仿真曲线反推参数问题5.1 相角裕度达标但超调仍然偏大查中频段斜率校正后 PM 46° 对应超调量理论值约 28%但如果阶跃响应实际超调 40% 以上问题通常不在裕度而在幅频曲线穿过 0 dB 时的斜率。若穿过的斜率是 -40 dB/dec 而不是 -20 dB/dec闭环谐振峰就偏高时域超调与相角裕度的对应关系会明显偏理想值。验证办法是看 bode(Gopen) 在 Wcp 附近的渐近线如果在 Wcp 两侧各一个十倍频程内斜率从 -20 dB/dec 直接过渡到 -40 dB/dec说明 α 选得过大换用更小的 α 重新设计让中频段平台更宽。5.2 附加余量到底加多少看相频曲线陡峭程度第 3.2 节代码里从 5° 起试三阶系统一次就过是因为这个系统在 ωm 1.95 rad/s 处的相频还不算太陡。如果被控对象换成两个惯性环节靠得很近比如时间常数 0.5 和 0.2相频在中频段快速下坠新剪切频率处原始系统的相角会比设计点低 10° 以上。这种情况下 add 值要从 12° 甚至 20° 开始试。判断依据简单粗暴在 Bode 图上量一下未校正相频曲线在 13 rad/s 之间的斜率每十倍频程掉超过 60°就把 add 初始值设为 15 以上。这个参数没有解析公式属于频率法设计里必须保留的工程迭代。5.3 校正后 Kv 有没有变看低频段重合度超前校正低频增益恒为 0 dB理论上不改变 Kv但实际验证时很多人忽略了这个约束。实验报告里最容易得高分的一个细节就是校正前后 Bode 图的低频段完全重合——这证明 Kv 指标没有被破坏。如果用滞后校正同样低频重合、高频下移。把这条观察写进报告比贴 margin 输出数字更能说明你对串联校正的理解。最后用一行校验语句收尾assert(abs(20*log10(freqresp(Gopen, 0.01)) - 20*log10(freqresp(G0, 0.01))) 0.1);这个断言检查校正前后在 ω 0.01 rad/s 处的幅值差小于 0.1 dB实质上是在代码层面锁死“Kv 不变”这个前提。能把这个检查写进实验脚本里的基本可以确认已经掌握了串联校正频率法的完整闭环思路。本文还有配套的精品资源点击获取
返回列表