以问题一为例子:
根据稳态误差可得:k取7满足条件。
% 定义未校正系统的传递函数 G0
num = [7]; % 系统的分子
den1 = [1, 0]; % 系统分母的第一个部分(表示 s 项)
den2 = [0.5, 1]; % 系统分母的第二个部分(表示 0.5s + 1)
den3 = [0.125, 1]; % 系统分母的第三个部分(表示 0.125s + 1)
den = conv(conv(den1, den2), den3); % 使用卷积运算得到完整的分母
G0 = tf(num, den); % 构建传递函数 G0
% 指定系统设计要求
ts = 10; % 希望的系统的调节时间(秒)
kesei = 0.35; % 希望的系统阻尼系数
% 计算高阶超调量转相角裕度
gamma1 = asin(1 / (0.6 + kesei / 0.4)) * 180 / pi; % 计算期望的转相角裕度(deg)
Mr = 1 / abs(sin(gamma1)); % 计算最大峰值 Mr
wc_position = pi * (2 + 1.5 * (Mr - 1) + 2.5 * (Mr - 1)^2) / ts; % 通过公式计算临界频率
% 超前校正设计参数
delta = 6; % 调整量(deg),用于修正相位裕度
gamma = gamma1 + delta; % 校正后的总相位裕度
% 获取系统的波特图数据
w = 0.01:0.01:100; % 定义频率范围
[mag, phase] = bode(G0, w); % 计算未校正系统的增益和相位
% 找到满足相位裕度要求的频率 wgamma
n = find(180 + phase - gamma <= 0.1); % 寻找相位差满足条件的频率
wgamma = w(n(1)); % 得到校正的频率 wgamma
% 计算相应频率下的增益
[mag, phase] = bode(G0, wgamma); % 获取该频率下的增益和相位
Lhc = 20 * log10(mag); % 将增益转换为 dB
beta = 10^(Lhc / 20); % 计算超前校正参数 beta
% 设计超前校正器
w2 = wgamma / 10; % 设置校正器的参数 w2
w1 = w2 / beta; % 设置校正器的参数 w1
numc = [1/w2, 1]; % 校正器的分子
denc = [1/w1, 1]; % 校正器的分母
Gc = tf(numc, denc); % 构建超前校正器的传递函数
% 计算校正后系统的传递函数 G
G = G0 * Gc; % 校正后的系统传递函数为 G = G0 * Gc
% 绘制未校正和校正后系统的波特图
bode(G0, G); % 绘制未校正系统和校正后系统的波特图
hold on;
margin(G); % 显示校正后系统的增益裕度和相位裕度
% 计算校正后系统的频域性能指标
[Gmc, Pmc, Wcgc, Wcpc] = margin(G); % 获取校正后系统的裕度
% 输出校正装置的传递函数和校正后系统的传递函数
disp('校正装置传递函数和矫正后系统开环传递函数');
Gc, G
% 输出校正后系统的频域性能指标(增益裕度、相位裕度、临界频率)
disp('校正后系统的频域性能指标 Kg, Pm, wc');
[Gmc, Pmc, Wcpc]
% 输出校正装置的参数 beta 值
disp('校正后装置的参数 beta 值:');
beta
运行结果: