超前校正(Lead Compensation)是一种常用的控制系统设计方法,主要用于提高系统的相位裕度、增强系统的响应速度、改善动态性能以及提高系统稳定性。
在频域分析中,系统的相位裕度决定了系统的稳定性。通过引入超前校正器,系统的相位曲线在特定频率范围内上升,从而增加系统的相位裕度。这有助于避免由于相位不足导致的系统不稳定问题。通常,在增益交叉频率附近进行超前校正可以有效改善系统的稳定性。
超前校正的另一个关键作用是改善系统的瞬态响应。未经校正的系统在遇到输入变化时,可能会出现较大的超调、振荡或者响应速度较慢。超前校正通过提高频带宽度,使系统能够更快地响应输入变化,并减少超调现象。这使得系统在面对变化时能够迅速趋于稳定,缩短了调整时间。
此外,超前校正还能够改善系统的抗干扰能力。通过提高系统在中高频段的增益,超前校正能够使系统在较高频率下保持较强的动态响应能力,进而更好地处理输入信号中的高频成分或噪声。
虽然超前校正可以显著提高系统的动态性能,但它往往会牺牲稳态精度。超前校正器通常会在高频段提高增益,但在低频段对增益的影响较小,意味着它对改善稳态误差的效果有限。
总的来说,超前校正的主要作用是增强系统的相位裕度,改善瞬态响应,提高系统的动态性能,从而在保持或提高系统稳定性的前提下,增强其快速响应能力。它在那些对响应速度有较高要求的控制系统设计中发挥着重要作用。
例题如下:代码如下:
% 超前校正设计
% 定义未校正系统的传递函数 G0
num = [2000]; % 分子
den1 = [1, 0]; % 分母部分1:表示 s 项
den2 = [1, 30, 200]; % 分母部分2:表示 s^2 + 30s + 200
den = conv(den1, den2); % 使用卷积得到完整的传递函数分母
G0 = tf(num, den); % 构建传递函数 G0
% 绘制未校正系统的波特图和稳定性裕度
margin(num, den); % 使用 margin 函数绘制波特图并显示增益裕度 (Gm) 和相位裕度 (Pm)
hold on;
figure(2); % 打开新的图窗口
sys = feedback(G0, 1); % 计算闭环系统传递函数(单位反馈)
step(sys); % 绘制闭环系统的阶跃响应
% 计算波特图相关数据
w = 0.1:0.1:1000; % 频率范围 0.1 rad/s 到 1000 rad/s
[Gm, Pm, Wcg, Wcp] = margin(G0); % 获取增益裕度 Gm,相位裕度 Pm,交界频率 Wcg 和 Wcp
[mag, phase] = bode(G0, w); % 计算未校正系统在各频率下的增益和相位
magdb = 20 * log10(mag); % 将增益转换为 dB 表示
% 设计超前校正器
phim1 = 45; % 期望的相位裕度(目标相位裕度)
data = 20; % 预留的相位裕度
phim = phim1 - Pm + data; % 实际相位校正量
alpha = (1 + sin(phim * pi / 180)) / (1 - sin(phim * pi / 180)); % 计算 alpha 参数
% 找到满足条件的频率 wc(设计超前校正器的目标频率)
n = find(magdb + 10 * log10(alpha) <= 0.0001); % 寻找增益为 -10*log10(alpha) 处的频率
wc = w(n(1)); % 得到目标频率 wc
% 计算超前校正器的时间常数 w1 和 w2
w1 = wc / sqrt(alpha); % w1 是校正前频率
w2 = wc * sqrt(alpha); % w2 是校正后频率
% 定义超前校正器的传递函数 Gc
numc = [1/w1, 1]; % 校正器的分子
denc = [1/w2, 1]; % 校正器的分母
Gc = tf(numc, denc); % 构建超前校正器的传递函数
% 校正后系统传递函数 G = Gc * G0
G = Gc * G0;
% 计算校正后系统的增益裕度、相位裕度等性能指标
[Gmc, Pmc, Wcgc, Wcpc] = margin(G); % 计算校正后系统的裕度
Gmcdb = 20 * log10(Gmc); % 将增益裕度转换为 dB
% 输出校正装置和校正后系统的传递函数
disp('校正装置传递函数和矫正后系统开环传递函数'), Gc, G
disp('校正后系统的频域性能指标 Kg, Pm, wc'), [Gmc, Pmc, Wcpc]
disp('校正后装置的参数 T 和 α 值:'), T = 1/w1; [T, alpha]
% 绘制未校正与校正后系统的波特图
bode(G0, G); % G0 是未校正系统,G 是校正后系统
hold on;
margin(G); % 绘制校正后系统的裕度信息
% % 绘制 Nyquist 图对比
% figure;
% nyquist(G0); % 未校正系统的 Nyquist 曲线
% hold on;
% nyquist(G); % 校正后系统的 Nyquist 曲线
% legend('未校正系统', '校正后系统');
% title('未校正与校正后系统的 Nyquist 曲线');
% grid on;
结果如下: