Tengo un sistema que requiere un controlador PI diseñado con los métodos Ziegler-Nichols. También me gustaría trazar la respuesta de escalón unitario en Matlab, pero obtengo resultados extremadamente extraños.
Así es como se ve el sistema:
Tracé la curva en Matlab e imprimí el gráfico para usar la aproximación FOPDT gráficamente. Sé que probablemente sea posible hacerlo usando Matlab, pero vengo de un entorno matemático y prefiero usar métodos gráficos.
Encontrar las cantidades es trivial, y este es mi resultado:
Luego, usando la tabla de Ziegler-Nichol para el ajuste, obtuve el siguiente controlador PI:
Ahora me gustaría trazar la respuesta escalonada de bucle cerrado, que debería verse como un sistema subamortiguado inestable que finalmente se estabiliza. El sistema debe oscilar drásticamente, como:
Esto es lo que obtengo en su lugar:
Lo cual es totalmente incorrecto.
Aquí está el código matlab (relevante):
%Unknown Transfer function
s=tf('s');
Gr=32/(s+2)^4;
% step(Gr)
% Approximation Taylor
K0=2; %Numerator gain factor
L=.4406; %Exponent power gain factor
t=2.5188; %Denominator gain factor
Go=(K0*exp(-L.*s)).*((t*s+1)^(-1));
%PI
Ti=L/.3;
Td=0;
Kp=.9*t/L; %gain
% Ki=Kp/Ti;
% Kd=Td*Kp;
Cpi=Kp*(1+1/(Ti*s));
Css=5.1451*(1+1/(1.4687*s));
%Closed Loop, Real
Gs=feedback(Gr*Css,1);
step(Gs)
(Siéntase libre de editar esta desordenada lista de códigos en algo más tolerable)
Creo que mi código está mal de alguna manera, simplemente no entiendo cómo ese resultado tiene sentido.
El código básicamente está creando los 2 bloques y luego trazando un circuito cerrado a través del comando de retroalimentación, configuración de retroalimentación de unidad.
Cualquier consejo y ayuda es apreciada. Gracias.
Por lo que puedo ver, la tabla de recetas no dice toda la verdad sobre Kp. Falta la ganancia de la respuesta escalonada. Esta expresión es válida siempre que la respuesta del escalón tienda al mismo valor que el escalón de entrada, por lo que su relación de ganancia es 1. Pero el sistema G responde a un escalón unitario aumentando a 2. Por lo tanto, la relación escalón/respuesta del sistema dado es 1/2.
Kp para controladores PI con Ziegler-Nichols First Method de hecho es
Debido a que la ganancia de un escalón unitario es 1, esto es
Solo con la respuesta de paso que tiende a 1, por lo que su ganancia general K0 es igual a 1 y esto eventualmente se convierte en
como se ve en la tabla de recetas. Pero ese no es el caso con el sistema G dado. Por lo tanto, se debe considerar la relación de ganancia así como la relación de tiempo cuando se obtiene Kp de G(t):
(Fuente: https://onlinelibrary.wiley.com/doi/pdf/10.1002/9780470029558.oth5 , página 292)
También la penúltima línea del código de Matlab.
Gs=feedback(Gr*Css,1);
está recorriendo 'Gr', que es el sistema dado G(s) y 'Css', que es la aproximación FOPDT para este mismo sistema G(s). El bucle G (s) y el controlador PI 'Cpi' en su lugar deberían ser el truco.
Gs=feedback(Gr*Cpi,1);
Aún así, ese circuito cerrado es inestable ya que tiene dos polos complejos conjugados positivos:
pole(Gs)
ans =
-4.0152 + 2.0976i
-4.0152 - 2.0976i
0.3426 + 2.0134i % uh
0.3426 - 2.0134i % oh
-0.6548 + 0.0000i
Usando Photoshop para la aproximación gráfica (medición perfecta de píxeles, porque por qué no), los parámetros de la aproximación FOPDT son más como:
Con estos, la respuesta escalonada es una oscilación subamortiguada estabilizadora.
Nuevo código Matlab:
s=tf('s');%Time Transfer function
Gr=32/(s+2)^4;%system G(s)
% Parameters of FOPDT approximant
K0=2; %step response gain
L=.7; %step response delay time
t=2.26; %step response time constant estimate
% Ziegler-Nichols First Method
% PI controller
Ti=L/.3; %integral time
Kp=.9/K0*t/L; %proportional gain
Cpi=Kp*(1+1/(Ti*s));%transfer function of PI
%closed loop of G(s) and PI
Gs=feedback(Gr*Cpi,1);
step(Gs)
Chu
Hipergeometría
Hipergeometría
Marko Bursic
Hipergeometría