1 votos

¿Por qué la respuesta escalón del sistema es estable mientras que un polo del mismo sistema tiene parte real positiva?

Tengo el siguiente sistema de bucle cerrado: $$sys=\frac{0.009211 s^6 + 10.58 s^5 + 55.97 s^4 - 82.77 s^3 - 774.1 s^2 - 871.8 s}{7.656e-07 s^8 + 0.00175 s^7 + 1.009 s^6 + 10.53 s^5 + 28.37 s^4 - 82.44 s^3 - 583.6 s^2- 871.8 s}$$ El análisis de estabilidad por posicionamiento de polos con Matlab da que un polo tiene parte real positiva:

en Matlab

polo(sys)

ans =

1.0e+03 *

0.0000 + 0.0000i

-1.1429 + 0.0000i

-1.1323 + 0.0000i

0,0037 + 0,0000i (inestable)

-0.0034 + 0.0023i

-0.0034 - 0.0023i

-0.0038 + 0.0000i

-0.0037 + 0.0000i

mientras que la respuesta escalonada del sistema es estable

paso(sys) enter image description here

Ese sistema es una planta de segundo orden con controlador PID; la planta es

a=[0 1;13.8 0];

b=[0;-2.568];

c=[1 0];

d=0;

[f,g]=ss2tf(a,b,c,d);

planta=tf(f,g);

El regulador PID:

s=tf('s');

Kp=-21,8;

Ki=-24,6;

Kd=-4,08;

Tf=0,000875;

u=Kp+Ki*(1/s)+Kd*(s/(Tf*s+1));

El sistema de bucle cerrado;

sys=u *planta/(1+u*planta);

Después de que usted puede comprobar los polos y la respuesta de paso como anteriormente.

4voto

SampleTime Puntos 53

Aquí hay dos problemas diferentes.

1.) Si no pasas un vector de tiempo a la función paso, Matlab no puede saber cuánto tiempo debe simular. Por lo tanto, hace una conjetura, basada en la heurística con el objetivo de simular el tiempo suficiente para capturar todo lo que es "interesante".

Esta suposición puede ser errónea: Tomemos la función de transferencia de tu pregunta:

num = [0 0 0.009210621525 10.575457566675 55.965845822955 -82.768514420115 -774.08274312 -871.78464 0];
den =  [7.65625e-07 0.00175 1.009189490275 10.527157566675 28.36599162858 -82.435244420115 -583.64274312 -871.78464 0];
G = tf(num, den);
step(G);

Este código reproduce tu problema. Ahora, en lugar de step(G); uso:

t = linspace(0, 10, 10000);
step(t, G);

Y verás que la salida diverge, es decir, que la función de transferencia no es estable.

Sin embargo, también hay problemas numéricos (especialmente cuando se trata de polinomios de alto orden), lo que lleva a tu segundo problema.

2.) Cancelación numérica polo-cero. Usted sabe que algo está mal aquí porque el cierre del bucle no debe aumentar el orden del sistema. Su función de transferencia en lazo abierto es de orden $4$ así debería ser su función de transferencia de bucle cerrado. Pero en realidad es de orden $8$ .

Puede resolverlo numéricamente utilizando G = minreal(G); . Esto reducirá el pedido a $4$ y esta función de transferencia también será estable.

Para garantizar que con minreal no se anulan los polos inestables reales, siempre es bueno utilizar cálculos simbólicos como doble comprobación (por ejemplo, la caja de herramientas simbólica, si se tiene acceso a ella):

syms s complex;
plant = -2.568/(s^2 - 13.8);
controller = -21.8 + (-24.6)*(1/s) + (-4.08)*(s/(0.000875*s + 1));
Gs = controller*plant/(1 + controller*plant);
Gs = simplify(Gs);
pretty(Gs)

Esto mostrará

                      2
            52632123 s  + 280188381 s + 315864000
------------------------------------------------------------
      4            3             2
4375 s  + 5000000 s  + 52571748 s  + 211188381 s + 315864000

Comprueba las raíces:

>> roots([4375, 5000000, 52571748, 211188381, 315864000])

ans =

   1.0e+03 *

 -1.132282196310660 + 0.000000000000000i
 -0.003405221445958 + 0.002311356979519i
 -0.003405221445958 - 0.002311356979519i
 -0.003764503654566 + 0.000000000000000i

Estable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X