exponenta event banner

Используя 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, который искажает ответ в низких частотах. Смотрите, что пример Использует Правильное Представление Модели для получения дополнительной информации.