我在控制回路中有一个简单的PD补偿器。我想查看补偿器输出阶跃响应。我的代码如下:
plant = tf(820,[0.08 1 0])
% PD Compensator
Kp = 2.25;
Ki = 0;
Kd = 0.025;
comp_pd = pid(Kp, Ki, Kd)
% plant with pd compensator
plant_pd = feedback(comp_pd*plant,1);
% pd compensator output
pd_output=feedback(comp_pd,plant);
figure();
step(plant_pd)
step(pd_output)
grid on;
ylim([-12 12]);
xlim([0 0.1]);
运行代码时,出现此错误:
Error using DynamicSystem/step (line 95)
Cannot simulate the time response of models with more zeros than poles.
如何绘制补偿器输出?
答案 0 :(得分:1)
这是因为,如错误消息所示,理想的PD补偿器的传递函数不是"proper",并且无法表示或模拟。
要变通解决此问题,通常习惯使用“近似导数”一词,而不是:
comp_pd = Kp + Kd*s
你有类似的东西
comp_pd = Kp + Kd*s/(1+Tf*s)
这是documentation中与该主题相关的部分:
因此,在您的代码中,只需替换:
comp_pd = pid(Kp, Ki, Kd)
作者
comp_pd = pid(Kp, Ki, Kd, Tf)
Tf
较小的地方,请说1e-3
,尽管您可能不得不尝试直到根据系统时间常数找到正确的值为止。