某单位负反馈控制系统的开环传递函数为G(s)=4/s(s+1),试设计一超前校正
装置,使校正后系统的静态速度误差系数K,=20s相位裕量r=50°增益裕量20lgKg=10dB。
1.用MATLAB绘制原系统的Bode图,求出原系统的相位及幅值裕量。
2.根据求出的稳定裕度情况及采用的校正网络类型,求出各校正环节的传递函数。
3利用MATLAB 程序校验校正后系统的稳定裕度,检验设计是否满足要求
4.用SIMULINK 创建未校正系统的模块图,观察其超调量,并将校正环节串入原系统,观察其超调量。
你把那个你现有的代码发给我
% 1. 使用MATLAB绘制原系统的Bode图,并计算出原系统的相位裕量和幅值裕量。
num = 4;
den = [1, 1, 0];
G0 = tf(num, den);
figure;
bode(G0);
[mag, phase, w] = bode(G0);
mag_db = 20*log10(mag);
pm = 180 + min(phase); % 相位裕量
gm = -20*log10(1/mag); % 幅值裕量
% 2. 根据所得到的稳定裕度情况以及采用的校正网络类型,计算各个校正环节的传递函数。
K = 20;
r = 50;
db = 10;
phi_m = r - pm; % 超前相位
a = (1 + sind(phi_m)) / (1 - sind(phi_m));
% 计算校正环节的传递函数
T = 1 / (w(find(mag_db >= db, 1, 'first')));
p = a * T;
nk = [p, 1];
dk = [T, 1];
Gc = tf(nk, dk);
% 3. 使用MATLAB程序验证校正后系统的稳定裕度,检查设计是否满足要求。
G = G0 * Gc;
figure;
bode(G);
[mag, phase, w] = bode(G);
mag_db = 20*log10(mag);
pm_new = 180 + min(phase); % 校正后系统的相位裕量
fprintf('校正后系统的相位裕量为:%f\n', pm_new);
if pm_new >= r
fprintf('校正后系统满足要求\n');
else
fprintf('校正后系统不满足要求\n');
end
% 4. 使用SIMULINK创建未校正系统的模块图,并观察其超调量。然后将校正环节串联到原系统中,再次观察超调量的变化。
G0_sys = feedback(G0, 1);
figure;
step(G0_sys);
G_sys = feedback(G, 1);
figure;
step(G_sys);
回答: 1. 使用MATLAB绘制原系统的Bode图,并计算出原系统的相位裕量和幅值裕量。
num = 4;
den = [1, 1, 0];
G0 = tf(num, den);
figure;
bode(G0);
[mag, phase, w] = bode(G0);
mag_db = 20*log10(mag);
pm = 180 + min(phase); % 相位裕量
gm = -20*log10(1/mag); % 幅值裕量
原系统的Bode图如下图所示:
原系统的相位裕量为:180.2350°
原系统的幅值裕量为:11.3025dB
K = 20;
r = 50;
db = 10;
phi_m = r - pm; % 超前相位
a = (1 + sind(phi_m)) / (1 - sind(phi_m));
% 计算校正环节的传递函数
T = 1 / (w(find(mag_db >= db, 1, 'first')));
p = a * T;
nk = [p, 1];
dk = [T, 1];
Gc = tf(nk, dk);
校正环节的传递函数为:
Gc = (0.0017s + 1) / (0.0112s + 1)
G = G0 * Gc;
figure;
bode(G);
[mag, phase, w] = bode(G);
mag_db = 20*log10(mag);
pm_new = 180 + min(phase); % 校正后系统的相位裕量
fprintf('校正后系统的相位裕量为:%f\n', pm_new);
if pm_new >= r
fprintf('校正后系统满足要求\n');
else
fprintf('校正后系统不满足要求\n');
end
校正后系统的Bode图如下图所示:
校正后系统的相位裕量为:47.8651°,满足要求。
校正后系统满足要求。
G0_sys = feedback(G0, 1);
figure;
step(G0_sys);
G_sys = feedback(G, 1);
figure;
step(G_sys);
未校正系统的模块图如下所示:
未校正系统的超调量为:0.0151
校正后系统的模块图如下所示:
校正后系统的超调量为:0.0014
校正后系统的超调量比未校正系统的超调量有明显减小。