Используя FEEDBACK, чтобы закрыть обратную связь

Этот пример показывает, почему необходимо всегда использовать FEEDBACK, чтобы закрыть обратную связь.

Два способа закрыть обратную связь

Рассмотрите следующую обратную связь

где

K = 2;
G = tf([1 2],[1 .5 3])
G =
 
       s + 2
  ---------------
  s^2 + 0.5 s + 3
 
Continuous-time transfer function.

Можно вычислить передаточную функцию с обратной связью H от r до y по крайней мере двумя способами:

  • Используя feedback команда

  • Используя формулу

H=G1+GK

Вычислить H использование feedbackВвод

H = feedback(G,K)
H =
 
       s + 2
  ---------------
  s^2 + 2.5 s + 7
 
Continuous-time transfer function.

Вычислить H от формулы ввести

H2 = G/(1+G*K)
H2 =
 
        s^3 + 2.5 s^2 + 4 s + 6
  -----------------------------------
  s^4 + 3 s^3 + 11.25 s^2 + 11 s + 21
 
Continuous-time transfer function.

Почему Используя FEEDBACK Лучше

Главная проблема с вычислением H от формулы то, что она раздувает порядок передаточной функции с обратной связью. В примере выше, H2 имеет дважды порядок H. Это вызвано тем, что выражение G/(1+G*K) оценен как отношение этих двух передаточных функций G и 1+G*K. Если

G(s)=N(s)D(s)

затем G/(1+G*K) оценен как:

ND(D+KND)-1=NDD(D+KN).

В результате полюса G добавляются и к числителю и к знаменателю H. Можно подтвердить это путем рассмотрения представления ZPK:

zpk(H2)
ans =
 
       (s+2) (s^2 + 0.5s + 3)
  ---------------------------------
  (s^2 + 0.5s + 3) (s^2 + 2.5s + 7)
 
Continuous-time zero/pole/gain model.

Этот избыток полюсов и нулей может негативно повлиять на точность ваших результатов при контакте со старшими передаточными функциями, как показано в следующем примере. Этот пример включает передаточную функцию 17-го порядка G. Когда вы сделали прежде, используйте оба подхода, чтобы вычислить передаточную функцию с обратной связью для K=1:

load numdemo G
H1 = feedback(G,1);          % good
H2 = G/(1+G);                % bad

Чтобы иметь ориентир, также вычислите модель FRD, содержащую частотную характеристику G, и примените feedback к данным о частотной характеристике непосредственно:

w = logspace(2,5.1,100);
H0 = feedback(frd(G,w),1);

Затем сравните величины ответов с обратной связью:

h = sigmaplot(H0,'b',H1,'g--',H2,'r');
legend('Reference H0','H1=feedback(G,1)','H2=G/(1+G)','location','southwest')
setoptions(h,'YlimMode','manual','Ylim',{[-60 0]})

Частотная характеристика H2 неточно для частот ниже 2e4 рад/с. Эта погрешность может быть прослежена до дополнительного (отмена) динамика, введенная рядом z=1. А именно, H2 имеет о вдвое большем количестве полюсов и нулей рядом z=1 как H1. В результате H2(z) имеет намного более плохую точность рядом z=1, который искажает ответ в низких частотах. Смотрите, что пример Использует Правильное Представление Модели для получения дополнительной информации.