Método de la Integral del Error Sintonía Controlador PID
Inicialmente propuesto en [López et a., 1967] para perturbaciones de carga y
posteriormente fue extendido por [Rovira et al., 1969] para seguimiento de referencias.
El método propone utilizar los criterios de desempeño de la integral del error por un
periodo de tiempo que sea suficiente para eliminar el error en régimen permanente.
La ventaja de este método es que considera toda la curva del sistema, en lugar de
considerar la razón de declino del 1/4 (C/A) de los métodos de Ziegler y Nichols y de
Cohen y Coon.
En la práctica suele usarse principalmente el criterio IAE (Integral del valor absoluto):
T
IAE=∫ |e (t)|dt
0
Y el ITAE (Integral del valor absoluto multiplicado por el tiempo):
T
I T AE=∫ t |e (t)|dt
0
Siendo esta última menos sensible a los errores que suceden después de la
perturbación.
El método de sintonía utiliza la ecuación del controlador PID paralelo clásico:
1
C ( s ) =k c (1+ +τ s)
τi s d
Este método también supone que la dinámica tenga un comportamiento en forma de S,
es decir que pueda ser representado por una función de transferencia de primer orden
con retardo:
K e−θs
G p=
τs+1
SINTONÍA CONTROL PID VÍA INTEGRAL DEL ERROR
En el trabajo de [López et a., 1967] se consideró una perturbación de carga por lo tanto
el principal objetivo del controlador era la de rechazo de disturbios (problema
regulatorio).
Esta propuesta fue resuelta numéricamente por medio de algoritmos de
optimización con el fin de minimizar la integral del error para varias razones entre
tiempo muerto y la constante de tiempo del proceso (factor de incontrolabilidad (θ/ τ)).
θ
El rango de análisis fue de factores de incontrolabilidad entre 0 y 1. [0< <1 ].
τ
Seguidamente fue planteada la siguiente regresión para obtener las ecuaciones de la
sintonía:
Las constantes A, B, C, D, E, F se obtienen a partir de la siguiente tabla para cada tipo
de controlador (PI o PID) y para cada criterio (IAE o ITAE).
En el trabajo de [Rovira et al., 1969] se consideró un disturbio en el setpoint (Tipo
Servo). Y de la misma forma fue resuelto un problema de optimización numéricamente
y después una regresión para obtener las siguientes ecuaciones de sintonía (donde solo
la ecuación para el cálculo del tiempo integral es diferente al anterior).
Las constantes A∗, B∗, C∗, D∗, E∗, F∗¿ se obtienen a partir de la siguiente tabla para
cada tipo de controlador (PI o PID) y para cada criterio (IAE o ITAE).
Ejemplo de sintonía PID vía Integral del Error
Tenemos el siguiente proceso representado por medio de una función de transferencia
de segundo orden:
2
G ( s )=
(2 s +1)(5 s+1)
El objetivo es identificar un modelo de primer orden con retardo del proceso anterior y
sintonizar un controlador PID usando el método CHR.
Código en Matlab
%% SINTONÍA DE CONTROL VÍA INTEGRAL DEL ERROR
clc
clear
close all
%% Proceso Real
G=tf([2],conv([2 1],[5 1]));
[Link]=1;
%% Identificación del Modelo vía Ziegler y Nichols
%tiempo
dt=0.01;
t=0:dt:35;
%Entrada
u(1:length(t))=1;
%Salida
y=lsim(G,u,t);
dy=diff(y)/dt; %Derivada
dy2=diff(dy)/dt;
%% Encontrar el punto de inflexion y su derivada
% el punto donde la pendiente de la respuesta escalón tiene su valor
máximo (punto de inflexión)
[m,p]=max(dy);
yp=y(p);
tp=t(p);
tm=0:20;
ym=m*(tm-tp)+yp; %Ecuacion de la recta
%Gráfica punto de inflexión
figure
plot([t(1) t(end)],[2 2],'--k',[11 11],[0 2],'--k','linewidth',2);
hold on
plot(t,y,tp,yp,'o',tm,ym,'-r','linewidth',3);
axis([0 35 0 3]);
box off
ylabel('$$c(t)$$','FontSize',20,'Interpreter','latex')
xlabel('$$t$$','FontSize',20,'Interpreter','latex')
set(gca,'FontSize',(20) )
%% Modelo Identificado del Sistema
k = 2; %Ganancia del Sistema
theta=2; %Retardo
tau=9; %Constante de Tiempo
% Modelo
Gm=tf([k],[tau 1]);
[Link]=theta;
%% Comparar Sistema Real vs Modelo
figure
step(G,Gm)
legend('Planta','Modelo')
%% Método 1 López
Controlador = {'PI';'PI';'PID';'PID'};
Criterio = {'IAE';'ITAE';'IAE';'ITAE'};
m = menu('PID via integral del Error','López', 'Rovira');
if m == 1
A = [0.984;0.859;1.435;1.357];
B = [-0.986;-0.977;-0.921;-0.947];
C = [0.608;0.674;0.878;0.842];
D = [-0.707;-0.680;-0.749;-0.738];
E = [0;0;0.482;0.381];
F = [0;0;1.137;0.995];
else
A = [0.758;0.586;1.086;0.965];
B = [-0.861;-0.916;-0.869;-0.850];
C = [1.02;1.03;0.740;0.796];
D = [-0.323;-0.165;-0.130;-0.147];
E = [0;0;0.348;0.308];
F = [0;0;0.914;0.929];
end
T = table(Controlador,Criterio,A,B,C,D,E,F)
% Controlador PI - PID
Kp = zeros(4,1);
Ki = zeros(4,1);
Kd = zeros(4,1);
for i=1:4
Kp(i) = 1/k * ( T.A(i) * (theta/tau)^T.B(i) );
if m == 1
ti = tau / ( T.C(i) * (theta/tau)^T.D(i) );
else
ti = tau / ( T.C(i) + T.D(i) * (theta/tau) );
end
Ki(i) = Kp(i) / ti;
td = tau * ( T.E(i) * (theta/tau)^T.F(i) );
Kd(i) = Kp(i) * td;
end
DIAGRAMA DE BLOQUES EN SIMULINK
LAZO ABIERTO
LAZO CERRADO PI
LAZO CERRADO PID