La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Matlab/897173-Controlador-PID.html

Controlador PID

Controlador PID

Publicado por Pedrote (21 intervenciones) el 07/11/2007 15:50:36
Buenas, actualmente tengo un controlador proporcional para el control de una variable que llamo air, mi problema está en que necesito un control proporcional derivativo e integral, a continuación os paso la funcion de control

function aireacion = Actualiza_Air(So);

RefSo=2;
ganancia=7500;
LimMax=200000;
error=RefSo-So;
if error<=0,
air=0;
else
air=min(ganancia*error,LimMax);
end
aireacion=air;

Si alguién me da una idea, basicamente lo que hay que hacer integrar y derivar la señal error, eso es lo que tengo que hacer, pero no se plasmarlo en MATLAB
sin imagen de perfil

RE:Controlador PID

Publicado por Raúl Santiago (211 intervenciones) el 08/11/2007 09:30:24
Para implementar algoritmos digitales, solo tienes que ir a las bases de matemáticas, es decir mira las definiciones para la derivada, y para la integral, es decir, la pendiente y el área bajo la curva respectivamente.

Por tanto, para la derivada es la diferencia entre el dato actual y el anterior sobre el delta de tiempo. Para la integral cambia en como lo definas, lo normal es el área de un trapecio, donde las bases serán los datos y la altura el delta de tiempo.

Lo mejor es cálcular cada efecto por separado y luego sumarlos, esto por que puedes poner condiciones, es decir como el integral facilmente se satura poner un antiwindup y para el derivativo, poder por ejm ponerlo antes de calcular el error que despues, el efecto sería igual, solo que poniendolo antes filtraria entradas de tipo escalón.
sin imagen de perfil

RE:Controlador PID

Publicado por Raúl Santiago (211 intervenciones) el 08/11/2007 09:30:24
Para implementar algoritmos digitales, solo tienes que ir a las bases de matemáticas, es decir mira las definiciones para la derivada, y para la integral, es decir, la pendiente y el área bajo la curva respectivamente.

Por tanto, para la derivada es la diferencia entre el dato actual y el anterior sobre el delta de tiempo. Para la integral cambia en como lo definas, lo normal es el área de un trapecio, donde las bases serán los datos y la altura el delta de tiempo.

Lo mejor es cálcular cada efecto por separado y luego sumarlos, esto por que puedes poner condiciones, es decir como el integral facilmente se satura poner un antiwindup y para el derivativo, poder por ejm ponerlo antes de calcular el error que despues, el efecto sería igual, solo que poniendolo antes filtraria entradas de tipo escalón.

RE:Controlador PID

Publicado por pedrote (21 intervenciones) el 08/11/2007 10:06:35
Gracias por la respuesta, asi lo había pensado, con la definición, mi problema estaba en que no sabia como implementarlo en matlab, me podrías ayudar con un ejemplo?

Gracias
sin imagen de perfil

RE:Controlador PID

Publicado por Raúl Santiago (211 intervenciones) el 09/11/2007 09:32:48
Esta sería una forma sencilla, pero pueden haber muchas otras maneras de hacerlo, recursivas, hacer diferente el antiwindup, etc. Esta es de la más sencillas, por tanto no tan robustaz, pero te puede dar ideas para que la cambies un poco.

error=ref-sal;

P=Kp*error;
D=Kd*(sal-salant)/DT;
I=Iant+Ki*(error+errorant)*DT/2;
if abs(I)>limite
I=0
end

C=P+D+I;

if C>.....
.....


errorant=error;
Iant=I;
...

....

...

RE:Controlador PID

Publicado por pedrote (21 intervenciones) el 09/11/2007 09:49:08
Muchas Gracais Raul, me sirve para empezar, si puedieras facilitarme alguna dirección con información de PID digitales y programcion en MATLAB me ayudarias mucho.

Gracias de nuevo
sin imagen de perfil

RE:Controlador PID

Publicado por Raúl Santiago (211 intervenciones) el 09/11/2007 11:02:44
Para eso es mejor ir a los libros clásicos de control digital, para empezar el de Ogata está bien