Tengo que elegir una ganancia para que la respuesta al escalón se ajuste a un par de criterios. Los criterios son:
-
Exceso máximo del 20%
-
Tiempo de establecimiento entre 0,8 y 1,3 s
-
Tiempo de subida entre 0,8s y 1,1s
Al principio intenté averiguar la ubicación deseada del poste. Utilicé las siguientes ecuaciones
-
Overshoot: cos (arctan (y / (-x)) = 0.45595 (usado Mp = e ^ (- pi * zeta / sqrt (1-zeta ^ 2)) para averiguar la relación de amortiguamiento mínima 0.45595)
-
Tiempo de establecimiento: x = -4.89 y x = -3.556 (se utiliza ln (0.02) / ts para encontrar la parte real requerida)
-
Tiempo de subida: (pi + y / x) / y = 1.1 y (pi + y / x) / y = 0.8
La superposición del área entre esas curvas sería la ubicación deseada del polo que se ve así.
Ahora,eldiagramadebloquesseveasí
Suubicaciónderaízseveasí(superpuestaconeláreadelpolodeseada)
Comopuedever,ningunagananciasatisfaríalosrequisitos.Bueno,podemosmodificarKxunpocoytambiénagregarpartesderivadaseintegrales.
- Kx=Kp+Kd*s+Ki/s(sesuponequeKxdebeverseasí,esunrequisito)
LoquehicefueagregarunpocodeKdparaqueellugardelaraízatravieseeláreadelpolodeseada,luegoelegiríaunpuntoenellugardelaraízparaobtenerlagananciarequerida.(ElegíKp=1yKd=0.135paratrazarellugardelaraíz)
Por lo tanto, la ganancia total debería ser
- Kx = 5.29 * (1 + 0.135 * s)
¿verdad? Bueno, no funciona. Usé stepinfo () para obtener la respuesta del sistema
RiseTime: 0.3907
SettlingTime: 0.5625
SettlingMin: 0.9084
SettlingMax: 1.0152
Overshoot: 1.5246
Undershoot: 0
Peak: 1.0152
PeakTime: 0.8490
que está en WAY off. El tiempo de subida ni siquiera está cerca de la respuesta deseada y tampoco lo es el tiempo de establecimiento. ¿Qué hice mal?
Este es mi código en Matlab
s = tf('s')
gain = 5.29;
Kp = 1;
Kd = 0.135;
Ki = 0;
Kx = parallel(tf(Kp, 1), parallel(tf([Kd, 0], 1), tf(Ki, [1, 0])))
p = 5/(s+5) * 1/s
pk = Kx * p;
h = 1;
figure(1)
rlocus(pk)
figure(2)
t = feedback(gain*pk, h);
step(t)
stepinfo(t)