基于MATLAB的自动控制原理串联校正仿真和代码

以问题一为例子:

根据稳态误差可得: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

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值