如何在Matlab中绘制PD补偿器的输出?

时间:2019-04-17 15:24:51

标签: matlab

我在控制回路中有一个简单的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.

如何绘制补偿器输出?

1 个答案:

答案 0 :(得分:1)

这是因为,如错误消息所示,理想的PD补偿器的传递函数不是"proper",并且无法表示或模拟。

要变通解决此问题,通常习惯使用“近似导数”一词,而不是:

comp_pd = Kp + Kd*s

你有类似的东西

comp_pd = Kp + Kd*s/(1+Tf*s)

这是documentation中与该主题相关的部分:

enter image description here

因此,在您的代码中,只需替换:

comp_pd = pid(Kp, Ki, Kd)

作者

comp_pd = pid(Kp, Ki, Kd, Tf)

Tf较小的地方,请说1e-3,尽管您可能不得不尝试直到根据系统时间常数找到正确的值为止。