Diseño de controlador PI (Ziegler-Nichols) y gráfica de respuesta de escalón unitario para sistema de cuarto orden

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:

GRAMO ( s ) = 32 ( s + 2 ) 4

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:

F ( s ) = 2 2.519 s + 1 mi 0.441 s
Puse mis parámetros gráficos y los afiné en Matlab. Podría haber hecho la aproximación por inspección, sin embargo, esto debería ayudar a una mayor comprensión. De todos modos, estos son los parámetros:
k 0 = 2
L = 0.441
t = 2.5188

Luego, usando la tabla de Ziegler-Nichol para el ajuste, obtuve el siguiente controlador PI:

C ( s ) = 5.1451 ( 1 + 1 1.4687 s ) = 7.557 s + 5.145 1.469 s

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:

ingrese la descripción de la imagen aquí

Esto es lo que obtengo en su lugar:

ingrese la descripción de la imagen aquí

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.

Editar: Nichols-Ziegler Tabla e informacióningrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿Por qué ha pasado de un TF de cuarto orden a un modelo de retardo de tiempo aproximado de Pade?
Hola, estoy usando una aproximación de primer orden más tiempo muerto, que para mí se parece a la aproximación de Taylor, no a la aproximación de Pade. Probé Pade y funcionó muy bien. Esencialmente, quiero ver qué sucede si intento modelarlo con un sistema de primer orden y comentarlo. Espero que esto aclare algunas cosas. ¡Gracias!
Dejé el código para trazar, lo agregué.
Publique esas tablas de Ziegler-Nichols, nunca había oído hablar del método Ziegler que trata con el tiempo muerto.
@MarkoBuršič Claro, actualicé la publicación con la tabla que estoy usando.

Respuestas (1)

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.la respuesta escalonada de G tiene una ganancia de 2

Kp para controladores PI con Ziegler-Nichols First Method de hecho es

k pag = 0.9 k s t mi pag k 0 T L

Debido a que la ganancia de un escalón unitario es 1, esto es

k pag = 0.9 1 k 0 T L

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

k pag = 0.9 1 1 T L = 0.9 T L

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):

k pag = 0.9 1 k 0 T L = 0.9 1 2 2.5188 0.441 2.57

(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:

k 0 = 2
L = 0.7
t = 2.26

Con estos, la respuesta escalonada es una oscilación subamortiguada estabilizadora.

la respuesta escalonada es una oscilación subamortiguada, rebasamiento ~70 %, tiempo de estabilización ~120 segundos

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)