1.问题
为了改进闭环系统性能,可以采用串联校正,这里用相位超前校正,即
α 常取 0.07~0.2 ,选择适当的 α 与 τ , 要使
针对新的开环传递函数 G ’ K (S)=Gc(S) × G(S) × H(S) ,画出开环 Bode 图,
观察不同的 α 与 τ 对 BODE 图的影响,使相位裕度 γ >40 ° ,以使闭环系统性能
大大提高,确定合适的 α 与 τ 。
2.代码
% 定义G(s)和H(s)
numG = 160;
denG = [1, 1, 0.01]; % 转换为标准形式s^3 + 0s^2 + 0.01s
G = tf(numG, denG);
H = 0.1;
s=tf("s") ;
% 初始化alpha和tau的搜索范围
alpha_range = 0.07:0.01:0.2; %
tau_range = 0.01:0.01:1; % 初始化存储相位裕度的数组
pm_alpha = zeros(size(alpha_range));
pm_tau = zeros(size(tau_range));
pm_matrix = zeros(length(alpha_range), length(tau_range)); % 迭代搜索
for i = 1:length(alpha_range) for j = 1:length(tau_range) % 假设相位超前校正为 (tau*s + 1) / (alpha*tau*s + 1) comp = (tau_range(j)*s + 1) / (alpha_range(i)*tau_range(j)*s + 1); GH = G * H * comp; % 闭环传递函数 [~, pm] = margin(GH); % 计算相位裕度 pm_matrix(i, j) = pm; end pm_alpha(i) = max(pm_matrix(i, :)); % 每个alpha下的最大相位裕度 [~, idx] = max(pm_matrix(i, :)); pm_tau(idx) = pm_matrix(i, idx); % 对应的tau下的相位裕度
end %%
% 绘制相位裕度随alpha变化的图
figure;
subplot(1,2,1)
plot(alpha_range, pm_alpha, 'b-o');
xlabel('\alpha');
ylabel('Phase Margin (deg)');
title('相位裕度随alpha变化的图');
grid on; % 绘制相位裕度随tau变化的图
subplot(1,2,2)
plot(tau_range, pm_tau, 'r-o');
xlabel('\tau');
ylabel('Phase Margin (deg) for Optimal \alpha');
title('相位裕度随tau变化的图');
grid on; %% % 确定最优值
[max_pm_alpha, idx_alpha] = max(pm_alpha);
optimal_alpha = alpha_range(idx_alpha);
optimal_tau_idx = find(pm_matrix(idx_alpha, :) == max_pm_alpha); % 可能有多个tau对应相同的最大相位裕度
optimal_tau = tau_range(optimal_tau_idx(1)); % 选择第一个tau值 % 绘制最优alpha和tau下的Bode图
comp_optimal = (optimal_tau*s + 1) / (optimal_alpha*optimal_tau*s + 1);
GH_optimal = G * H * comp_optimal;
figure;
bode(GH_optimal, '-k');
title(['最优alpha和tau下的Bode图 (\alpha = ', num2str(optimal_alpha), ', \tau = ', num2str(optimal_tau), ')']);
grid on; [gm3, pm3, wcg3, wcp3] = margin(GH_optimal);
% 幅值裕度(以分贝为单位)
am_dB3 = 20*log10(1/gm3);
3.运行结果
图1
图2