用matlab写已知待校正的单位负反馈系统的开环传递函数为G0=K/s/(s+1)/(0.5*s+1),要求设计校正装置,使系统满足如下指标:①在单位斜坡信号作用下,位置输出稳态误差ess<=0.1;②相位裕度>=50°;③幅值裕度>=10dB。
时间: 2024-03-26 11:39:11 浏览: 129
下面是一个 MATLAB 的代码实现,实现了根据指标要求设计校正器的过程:
```matlab
% 待校正的单位负反馈系统的开环传递函数
G0 = tf([1], [1, 1, 0.5, 0]);
% 求取系统的开环传递函数G0的特征值
pol = roots([1, 1, 0.5, 0]);
% 指标要求
ess = 0.1; % 位置输出稳态误差
phi_m = 50; % 相位裕度
mag_m = 10; % 幅值裕度
% 根据要求设计校正器
syms Kp Ti Td alpha s;
Gc = Kp*(1 + Td*s)/(1 + alpha*Td*s)/(1 + Ti*s);
% 解方程求解校正器参数
eq1 = ess == 1/limit(s*G0*Gc, s, 0);
eq2 = phi_m == angle(subs(G0*Gc, s, j*pol(1))) - (-180);
eq3 = mag_m == 20*log10(abs(subs(G0*Gc, s, j*pol(1))));
[Kp_sol, Ti_sol, Td_sol, alpha_sol] = solve([eq1, eq2, eq3], [Kp, Ti, Td, alpha]);
% 将求解得到的参数代入校正器中
Gc = subs(Gc, [Kp, Ti, Td, alpha], [Kp_sol, Ti_sol, Td_sol, alpha_sol]);
% 绘制根轨迹
rlocus(G0*Gc)
% 计算校正后的系统的开环传递函数和闭环传递函数
Gc_G0 = Gc*G0;
G = feedback(Gc_G0, 1);
% 绘制校正后的系统的阶跃响应
step(G)
```
代码中使用了 `roots` 函数求解系统的特征值,使用了 `syms` 声明符号变量,使用了 `solve` 函数解方程求解校正器参数。最后,根据求解得到的校正器参数,绘制了根轨迹,计算了校正后的系统的开环传递函数和闭环传递函数,并绘制了校正后的系统的阶跃响应。
阅读全文