Matlab设计串联超前校正
串联超前校正步骤:
1、确定原系统。
2、求解原系统相角裕度
γ
\gamma
γ(
γ
\gamma
γ不足)。
3、设计超前网络最大超前相角
φ
m
φ_m
φm,并据此来求解参数a。
4、根据
10
l
g
a
10lga
10lga找出
ω
m
ω_m
ωm,根据a倍频关系求出两个转折频率,得出校正传函。
5、进行串联校正,并验算校正后指标是否满足要求。
例:已知单位反馈系统的开环传递函数
G
0
=
300
0.5
s
+
1
G_0=\frac{300}{0.5s+1}
G0=0.5s+1300 请设计串联超前校正装置,使校正后系统相角裕度
γ
≥
45
°
\gamma≥45°
γ≥45°
使用matlab进行校正,结果如下:

鸣谢:感谢江苏科技大学张永韡(wei)老师的悉心教导!
校正代码:
clear; close all; clc
K = 300;
gamma = 45;
s = tf('s');
G0 = K/(s*(0.5*s+1)); % 原系统
lb = 0.1;
ub = 1000; % 4个10倍频程
[G0m,P0m,W0cg,W0cp] = margin(G0);
phim = gamma - P0m + 5; %设置校正装置最大相角
a = (1+sind(phim))/(1-sind(phim)); % 求解校正参数a
mag_wm = -10*log10(a); % 求解校正点
fun = @(w)(20*log10(abs(freqresp(G0,w)))-mag_wm)^2;
wm = fminbnd(fun,lb,ub); % 寻找wm
w2 = wm*sqrt(a); % 校正装置第二个转折频率
w1 = w2/a; %校正装置第1个转折频率(a倍频关系)
Gc = tf([1/w1,1],[1/w2,1]); % 校正传函
G = Gc*G0; % 串联超前校正
bode(G0,Gc,G,{lb,ub});
grid on
[Gm,Pm,Wcg,Wcp]= margin(G);
title(['超前校正: \gamma^*=',num2str(gamma),'\circ, \gamma=',...
num2str(Pm),'\circ at w_c=',num2str(Wcp),' rad/s.']);
legend('原系统G0','校正传函Gc','已校正系统G')