Main Content

Uso de FEEDBACK para cerrar lazos de feedback

Este ejemplo muestra por qué siempre debería usar FEEDBACK para cerrar lazos de feedback.

Dos maneras de cerrar lazos de feedback

Considere el siguiente lazo de feedback:

donde

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

Puede calcular la función de transferencia de lazo cerrado H de r a y de dos maneras:

  • Con el comando feedback

  • Con la fórmula

H=G1+GK

Para calcular H con feedback, introduzca lo siguiente:

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

Para calcular H con la fórmula, introduzca lo siguiente:

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.

Por qué es mejor utilizar FEEDBACK

Un gran problema al calcular H con la fórmula es que agranda el orden de la función de transferencia de lazo cerrado. En el ejemplo anterior, H2 tiene el doble de orden que H. Esto se debe a que la expresión G/(1+G*K) se evalúa como coeficiente de las dos funciones de transferencia G y 1+G*K. Si

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

G/(1+G*K) se evalúa de la siguiente manera:

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

En consecuencia, los polos de G se añaden tanto al numerador como al denominador de H. Puede confirmarlo observando la representación 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.

Este exceso de polos y ceros puede afectar negativamente a la precisión de sus resultados cuando se trate de funciones de transferencia de orden superior, como se muestra en el siguiente ejemplo: Este ejemplo incluye una función de transferencia de orden 17 G. Como ha hecho anteriormente, use ambos métodos para calcular la función de transferencia de lazo cerrado para K=1:

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

Para tener un punto de referencia, calcule también un modelo FRD que contenga la respuesta en frecuencia de G y aplique feedback a los datos de la respuesta en frecuencia directamente:

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

A continuación, compare las magnitudes de las respuestas en lazo cerrado:

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]})

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Reference H0, H1=feedback(G,1), H2=G/(1+G).

La respuesta en frecuencia de H2 no es precisa para las frecuencias inferiores a 2e4 rad/s. Esta imprecisión se debe a la dinámica adicional (que se cancela) introducida cerca de z=1. De manera específica, H2 tiene, aproximadamente, el doble de polos y ceros cerca de z=1 que H1. Por lo tanto, H2(z) tiene una precisión muy inferior cerca de z=1, lo que distorsiona la respuesta en frecuencias bajas. Consulte el ejemplo Using the Right Model Representation para más información.

Consulte también

Temas relacionados