Matlab - отслеживание частоты передаточной функции с обратной связью

Я надеюсь, что смогу объяснить свою проблему достаточно хорошо,

Допустим, у меня есть система управления с замкнутым контуром, и я знаю данный физический объект Gp (компенсатор и передаточная функция обратной связи равны 1). Вопрос в том, чтобы проверить, может ли система идеально отслеживать частоту 2 rad/sec. Глядя на 'Gp'(s=jw)|w=2 и подставляя T(s)=1/(s^2+5) видим, что это 1 и отлично его отслеживает, но сам T(s) нестабилен. Предположительно, я могу проверить это в Matlab и увидеть, что выходной график (из T(s)) не отслеживает ввод w=2 (выходные и входные графики находятся на одном рисунке).

Как я могу написать код, чтобы воссоздать эту ситуацию? (кто-то посоветовал использовать lsim, но я не мог полностью понять это) Спасибо!


person Roman Andreevitch Biriukov    schedule 14.04.2016    source источник


Ответы (1)


Из вашего вопроса не слишком ясно, что такое T (s), но я предполагаю из контекста, что это передаточная функция с обратной связью, то есть T = Gp / (1 + Gp).

Полюса Т являются чисто воображаемыми (+-j*sqrt(5)), и поэтому Т является «маргинально стабильным», или, что более интуитивно, вы можете думать о нем как о массе на пружине — осцилляторе.

Чтобы ответить на вопрос, может ли эта система с обратной связью идеально отслеживать заданную входную синусоиду, это зависит от ваших критериев «идеальности».

Вы упомянули, что стационарное усиление (величина T(jw)) равно 1 при w = 2, но какова его фаза? В MatLab попробуйте:

T = tf([1], [1, 0, 5]); % numerator = 1, denominator = 1s^2+0s+5 bode(T);

для просмотра графика величины и фазы в диапазоне w. https://www.wolframalpha.com/input/?i=bode+1%2F(s%5E2%2B5)

Фазовая задержка отлична от нуля для каждой частоты, кроме нуля (т. е. постоянный вход). Так всегда бывает с «массой на пружине»; инерция заставляет его всегда отставать от вынуждающей функции.

Наличие ненулевой фазовой задержки означает, что ваш вывод не будет «идеально» отслеживать ваш ввод. Чтобы увидеть, как это выглядит, попробуйте:

t = [0:0.001:10]; % array of times to compute simulation r = sin(2*t); % input to the closed loop system lsim(T, r, t); % simulate system T with input r for t seconds

person jnez71    schedule 09.05.2016