Как я могу построить вывод компенсатора ПД в Matlab? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть простой компенсатор ПД в контуре управления. Я хочу видеть ответ шага выхода компенсатора. Мой код выглядит так:

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 Ответ

1 голос
/ 17 апреля 2019

Это связано с тем, что, как следует из сообщения об ошибке, передаточная функция идеального компенсатора ПД не является "правильной" и не может быть представлена ​​или смоделирована.

Чтобы обойти эту проблему,на практике принято иметь термин «примерный производный», чтобы вместо:

comp_pd = Kp + Kd*s

у вас было что-то вроде

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

Это соответствующий раздел документация по теме:

enter image description here

Так в вашем коде просто замените:

comp_pd = pid(Kp, Ki, Kd)

на

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

где Tf мало, скажем 1e-3, хотя вам, возможно, придется экспериментировать, пока вы не найдете правильное значение в зависимости от постоянной времени вашей системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...