Expert PID
Expert PID
Expert PID
December 3, 2022
Vamos a tomar como ejemplo una planta caraceterizada por un segundo orden
en conjunto con un integrador.
523500
Gp (s) = .
s(s2 + 87.35s2 + 10470)
Discretización en Matlab
c2d(): transforma la función de transferencia continua (en el dominio de
"s") a discreto (en el dominio de "z").
tfdata():Se obtienen los coeficientes del polinomio del numerador y del
denominador.
ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]); %Plant
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=1;u_2=1;u_3=1;u_4=1;
y_1=0;y_2=0;y_3=0;
for k=1:1:500
time(k)=k*ts;
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u_1+...
num(2)*u_2+num(3)*u_3+num(4)*u_4;
y_3=y_2;y_2=y_1;y_1=y(k);
end
stairs(time,y,'linewidth',2)
k
ek − ek −1
uk = kp ek + ki ∑ ei Ts + kd
i =0 Ts
" #
k −1
ek − ek −1
uk = kp ek + ki ∑ ei Ts + ek Ts + kd
i =0 Ts
donde:
k : índice de tiempo discreto. k = {0, 1, 2, 3, 4, . . .}
Ts : tiempo de muestreo.
vector de tiempo discreto: TimeVector = {k0 Ts , k1 Ts , k2 Ts , k3 Ts , . . .}
ei=0;
kp=0.96;ki=0.03;kd=0.01;
error_1=0;
for k=1:1:200
time(k)=k*ts;
yd(k)=1.0;
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u_1+...
num(2)*u_2+num(3)*u_3+num(4)*u_4;
error(k)=yd(k)-y(k);% Calculating P
derror(k)=error(k)-error_1;% Calculating D
ei=ei+error(k)*ts;
u(k)=kp*error(k)+kd*derror(k)/ts+ki*ei; %PID Controller
u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
error_1=error(k);
end
Consideraciones:
Generalmente la experiencia del experto coincide con el comportamiento
del error de la respuesta en lazo cerrado. Sobretodo durante el transiente.
Para modificar el valor de las ganancias es necesario poder realizar
modificaciones durante la corrida del algoritmo de control. (Algoritmo
implementado en tiempo discreto).
Experience is important in PID tuning:
https://www.controleng.com/articles/
learning-pid-loop-tuning-from-an-expert/
douplaza@espol.edu.ec Machine Learning Control-MACI 10 15 / 27
Comportamiento del error en lazo cerrado para un sistema
de segundo orden
La gráfica muestra el comportamiento del error típico en un sistema de
segundo orden:
De la gráfica observamos que el valor absoluto del error tiende a disminuir para
las secciones:I,III,V,...(Ajuste suave) y aumenta para: II,IV,VI,...(Ajuste fuerte).
douplaza@espol.edu.ec Machine Learning Control-MACI 10 16 / 27
Outline
if error(k)*derror(k)>0|(derror(k)==0) %Rule2
if abs(error(k))>=0.05
u(k)=u_1+2*kp*error(k);
else
u(k)=u_1+0.4*kp*error(k);
end
end
uk = uk .
Implementación en Matlab
if (error(k)*derror(k)<0&derror(k)*derror_1>0)|(error(k)==0)%Rule3
u(k)=u(k);
end
if error(k)*derror(k)<0&derror(k)*derror_1<0 %Rule4
if abs(error(k))>=0.05
u(k)=u_1+2*kp*error(k);
else
u(k)=u_1+0.6*kp*error(k);
end
end