Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Diseño de un controlador PID en la línea de comandos

En este ejemplo, se muestra cómo diseñar un controlador PID para la planta dada por:

sys=1(s+1)3.

Como paso inicial, cree un modelo de la planta y diseñe un controlador PI simple para ella.

sys = zpk([],[-1 -1 -1],1); 
[C_pi,info] = pidtune(sys,'PI')
C_pi =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 1.14, Ki = 0.454
 
Continuous-time PI controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 0.5205
           PhaseMargin: 60.0000

C_pi es un objeto de controlador pid que representa un controlador PI. Los campos de info muestran que el algoritmo de ajuste selecciona una frecuencia de cruce de lazo cle abierto de aproximadamente 0,52 rad/s.

Examine la respuesta al escalón de lazo cerrado (seguimiento de referencia) del sistema controlado.

T_pi = feedback(C_pi*sys, 1);
step(T_pi)

Figure contains an axes object. The axes object contains an object of type line. This object represents T\_pi.

Para mejorar el tiempo de respuesta, puede definir una frecuencia de cruce objetivo más alta que el resultado que pidtune selecciona automáticamente, 0,52. Aumente la frecuencia de cruce a 1,0.

[C_pi_fast,info] = pidtune(sys,'PI',1.0)
C_pi_fast =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 2.83, Ki = 0.0495
 
Continuous-time PI controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 43.9973

El nuevo controlador alcanza la frecuencia de cruce más alta, pero a costa de un menor margen de fase.

Compare la respuesta al escalón de lazo cerrado con los dos controladores.

T_pi_fast = feedback(C_pi_fast*sys,1);
step(T_pi,T_pi_fast)
axis([0 30 0 1.4])
legend('PI','PI,fast')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PI,fast.

Esta reducción en el rendimiento se debe a que el controlador PI no dispone de suficientes grados de libertad para alcanzar un buen margen de fase a una frecuencia de cruce de 1,0 rad/s. Si se añade una acción derivada, se mejora la respuesta.

Diseñe un controlador PIDF para Gc con la frecuencia de cruce objetivo de 1,0 rad/s.

[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
C_pidf_fast =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2.72, Ki = 0.985, Kd = 1.72, Tf = 0.00875
 
Continuous-time PIDF controller in parallel form.
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 60.0000

Los campos de información muestran que la acción derivada del controlador permite que el algoritmo de ajuste diseñe un controlador más ajustado que alcance la frecuencia de cruce objetivo con un buen margen de fase.

Compare la respuesta al escalón de lazo cerrado y una anulación de perturbaciones en los controladores PI y PIDF rápidos.

T_pidf_fast =  feedback(C_pidf_fast*sys,1);
step(T_pi_fast, T_pidf_fast);
axis([0 30 0 1.4]);
legend('PI,fast','PIDF,fast');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI,fast, PIDF,fast.

Puede comparar la anulación de perturbaciones de entrada (carga) del sistema controlado con los controladores PI y PIDF rápidos. Para ello, represente la respuesta de la función de transferencia de lazo cerrado desde la entrada de la planta hasta su salida.

S_pi_fast = feedback(sys,C_pi_fast);
S_pidf_fast = feedback(sys,C_pidf_fast);
step(S_pi_fast,S_pidf_fast);
axis([0 50 0 0.4]);
legend('PI,fast','PIDF,fast');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI,fast, PIDF,fast.

Esta gráfica muestra que el controlador PIDF también proporciona una anulación de perturbaciones más rápida.

Consulte también

|

Temas relacionados