Download - Taller Pid

Transcript

En el siguiente documento se desarrollan diferentes tcnicas para el calculo de los parmetros de un controlador PID y al final se disea un controlador feedforward para una perturbacin al sistema original.En la siguiente figura se muestra el diagrama de bloque del sistema.P(S)

R(S)+++C(S)

GcGvGp -

Gm

Donde:Funcin de transferencia de la vlvula

Funcin de transferencia del proceso

Funcin de transferencia del canal de medicin

Funcin de transferencia del controlador P.I.D.

Ahora se harn los clculos de los parmetros del regulador P.I.D. utilizando diferentes mtodos.

MTODO DE LAS OSCILACIONES PERMANENTES (MOP)

Se har de forma analtica utilizando el diagrama de BODE.Se traza el diagrama de BODE a lazo abierto con el controlador proporcional de ganancia uno (kc=1).

Utilizando la programacin en matlab que a continuacin se muestra; se obtiene los siguientes resultados:

clc;hold off;t=0:0.01:20;%funcion de transferencia de la vlvulakv=0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv); %funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp); %funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm); %funcion de transferencia a lazo cerradoGs=series(Gv,Gp);Gslc=feedback(Gs,Gm,-1) %raices de la ecuacion caracteristicas[nsp,dsp] = tfdata(Gslc,'v');roots(dsp); % CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE OSCILACIONES PERMANENTES (MOP) POR% Diagrama de Bode Gla=series(Gs,Gm); %FUNCION DE TRANSFERENCIA A LAZO ABIERTO%margin(Gla); %DIAGRAMA DE BODE grid[Km,Pm,Wg,Wp] = margin(Gla); % Km es K critica y Wg es w criticakcrit=Km;Pc=2*pi/Wg; % PARAMETRO DEL CONTROLADOR PID SEGUN TABLA DE ZIEGLE-NICHOLSkc=kcrit/1.7;ti=Pc/2;td=Pc/8; % CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gc=pidar(kc,ti,td); % pidar() es una funcion creada para el calculo % de la funcion de tranferencia del P.I.D. % FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGst=series(Gs,Gc)Gt=feedback(Gst,Gm,-1); hold on;step(Gslc,t); % Grafica del comportamiento del sistema sin PIDstep(Gt,t); % Grafica del comportamiento del sistema con PIDgrid

Para el calculo de la funcin de transferencia del controlador P.I.D. se realizo una funcin en matlab llamada . Cuyos comandos son:

function [Gcf]=pidar(kcf,tif,tdf) %programa de pid = Kc( 1 + 1/(tiS)+ tdS )

% CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gcp=tf(1);Gci=tf(1,[tif 0]);Gcd=tf([tdf 0],1);Gc1=parallel(Gcp,Gci);Gc2=parallel(Gc1,Gcd);% FUNCION DE TRANFERENCIA DEL CONTROLADOR PIDGcf=series(Gc2,kcf);

End

Con el comando margin() se obtienen la k critica y w critico, y se calculan los parmetros del controlador con la Tabla de Ziegler y Nichols. Que se observan en el programa.

Y los resultados son los siguientes:

kcrit = 151.9187Pc = 3.8824kc = 89.3639ti = 1.9412td = 0.4853

En la figura se observa la respuesta del sistema sin el controlador y con el controlador PID con los parmetros calculados anteriormente.

Se puede observar que la respuesta del sistema al escaln unitario es sobreamortiguada y con el valor en estado estacionario de 0.08 aproximadamente.En cambio, al colocarle el controlador el sistema se comporta ahora como sub-amortiguado siguiendo la respuesta en estado estacionario a la entrada, es decir, mejoro notablemente su respuesta.

MTODO DE LA CURVA DE REACCIN DEL PROCESO.

En este mtodo se abre el lazo y se aplica el estmulo a la vlvula directamente, observndose que la respuesta a un paso escaln tiene una forma sigmoidal que puede ser aproximada por un modelo de primer orden con retardo.Para calcular los parmetros se traza una resta tangente al punto de inflexin. Para tal fin se utilizo un polinomio interpolante a la funcin original.

Para tal fin se utilizo el siguiente programa

clc;hold off;t=0:0.01:25;%funcion de transferencia de la vlvulakv=0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv); %funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp); %funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm); %funcion de transferencia a lazo cerradoGs=series(Gv,Gp);Gslc=feedback(Gs,Gm,-1);%step(Gslc,t) % CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE CURVA DE REACCION del PROCESO% B=Gv*Gp*Gm*M que es igual a lazo abierto = Glahold on;step(Gla,t)y=step(Gla,t); % POLINOMIO INTERPOLANTE DEL SISTEMA ORIGINALk=t';p=polyfit(k,y,7);y1=polyval(p,t);plot(t,y1,'r')grid %BUSCAR EL PUNTO DE INFLEXION CON LA SEGUNDA DERIVADA ES IGUAL CEROp1=polyder(p);p2=polyder(p1);roots(p2)y2=polyval(p,2.3826); % hallar la ecuacion de la recta y2= mx + bm=polyval(p1,2.3826);b=y2-m*2.3826;y2=polyval([m b],t);plot(t,y2,'r') % PARAMETROS DEL CONTROLADOR% h=y(15/(0.01))*.632 % 63.2% del valor finalT=3.62;L=0.88;kcrp=y(15/0.01);kc=1.2*T/(kcrp*L)ti=2*Ltd=L/2 % CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gc=pidar(kc,ti,td); % FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGst=series(Gs,Gc);Gt=feedback(Gst,Gm,-1);%step(Gt,t)%grid

Y los resultados fueron los siguientes:

Kc=1.2* T/K*L ; donde K = Amplitud del estado estacionario/ escalon unitario

T = 4.5 0.88 y L = 0.88

Es decir que:

kc = 61.5190ti = 1.7600td = 0.4400

y la respuesta del sistema fue el siguiente.

MTODO DE LAS OSCILACIONES AMORTIGUADAS

Con el controlador con ganancia proporcional solamente, se aumenta la ganancia hasta que la respuesta al paso escaln oscile con una atenuacin de .

Para calcular el rango de K donde el sistema es estable se utilizo el mtodo de Ruth-Hurwitz. Dando como resultado

Entonces con K a la mitad del rango mximo se empez hacer las pruebas, utilizando el programa

%clc;hold off;t=0:0.01:20;%funcion de transferencia de la vlvulakrh=1; % rango de k segun Routh-Hurwitz (0- 151.88)kv=krh*0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv); %funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp); %funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm); %funcion de transferencia a lazo cerradoGs=series(Gv,Gp);%disp(' funcion de trasferencia a lazo cerrado')Gslc=feedback(Gs,Gm,-1) %step(Gslc,t); % salida del sistema a lazo cerradogrid;%raices de la ecuacion caracteristicas[nsp,dsp] = tfdata(Gslc,'v'); %descompone la funcion de trasferencia en %numerador y denominador roots(dsp);

% CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE OSCILACIONES AMORTIGUADAS (MOA)% PARAMETRO DEL CONTROLADOR PID SEGUN %clc;hold off;t=0:0.01:20;%funcion de transferencia de la vlvulakrh=1; % rango de k segun Routh-Hurwitz (0- 151.88)kv=krh*0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv); %funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp); %funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm); %funcion de transferencia a lazo cerradoGs=series(Gv,Gp);%disp(' funcion de trasferencia a lazo cerrado')Gslc=feedback(Gs,Gm,-1) %step(Gslc,t); % salida del sistema a lazo cerradogrid;%raices de la ecuacion caracteristicas[nsp,dsp] = tfdata(Gslc,'v'); %descompone la funcion de trasferencia en %numerador y denominador roots(dsp); % CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE OSCILACIONES AMORTIGUADAS (MOA) % PARAMETRO DEL CONTROLADOR PID SEGUN TABLA DE ZIEGLE-NICHOLSP=4.85; %PERIODO ENTRE LOS DOS PICOS (1/4)kc=70;ti=P/1.5;td=P/6; % PARAMETROS METODO DE OSCILACIONES PERMANENTES% kcrit 152 por Ruth-Hurwitz% pcrit 3.8 MOP% ti=pcit/2 y td=pcit/8%kc=(152/2);%ti=(3.8/2);%td=(3.8/8); % FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGc=pidar(kc,ti,td); Gst=series(Gs,Gc)Gt=feedback(Gst,Gm,-1);%hold on;step(Gt,t)grid

P=4.85; %PERIODO ENTRE LOS DOS PICOS (1/4)kc=70;ti=P/1.5;td=P/6; % PARAMETROS METODO DE OSCILACIONES PERMANENTES% kcrit 152 por Ruth-Hurwitz% pcrit 3.8 MOP% ti=pcit/2 y td=pcit/8%kc=(152/2);%ti=(3.8/2);%td=(3.8/8); % FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGc=pidar(kc,ti,td); Gst=series(Gs,Gc)Gt=feedback(Gst,Gm,-1);%hold on;step(Gt,t)grid

despus de hacer varias sintonizaciones se logro conseguir la relacin de un 1/4 entre los dos picos, como se observa en la figura. El periodo fue de (P) = 7.12 2.27 = 4.85.

utilizando la TABLA DE ZIEGLE-NICHOLS para el mtodo, los parmetros dieron:

kc = 70ti = 3.2333td = 0.8083

y el resultado fue el siguiente.

Se observa que este es la mejor respuesta encontrada de los tres mtodos, ya que tiene un mximo sobre pico de 25% y un tiempo de estabilizacin en ts= 8 seg.

CONTROLADORES CON LAS ESTRUCTURAS PI-D E I-PD

Para estos controladores se utilizara la herramienta simulink de matlab.

La estructura del controlador PI-D e I-PD es la que se muestra en la siguiente. Los parmetros de entonacin de estos controladores sern los obtenidos por el mtodo de oscilaciones amortiguadas (MOA) calculados anteriormente, debido a que fueron los parmetros que mejor controlaron al sistemas propuesto.En la figura tambin se encuentra el controlador PID ideal calculado anteriormente. Se colocaran los tres simultneamente parta comparar las respuestas.

Las tres respuestas se encuentran en la figura siguiente, donde se puede observar que para el controlador PI D aumenta un poco el mximo sobre pico, pero solo tiene un pico y el tiempo de estabilizacin es mayor al controlador PID, mientras para el I PD la respuesta es una sigmoide, es decir es una respuesta sobre-amortiguada y el tiempo de estabilizacin el mismo que el PI D. entonces dependiendo de las necesidades se tomara el controlador deseado.

COMPORTAMIENTO DEL SISTEMA A UNA RAMPA EN LA PERTURBACIN.

En principio la perturbacin era un paso escalon, pero despus de varias simulaciones se observo que no influa significativamente en la respuesta, y tome la decisin de perturbar con una rampa, lo que hizo que la respuesta creciera al infinito.

Tambin se realizo usando el simulink de matlab, En la figura que se muestra a continuacin, se muestra el sistema con la perturbacin, luego la propuesta del controlador Feedforward. o compensador lead/lad (adelanto atraso), y finalmente el controlador calculado anteriormente con MOA, el cual fue el mejor de los anteriores para este proceso .

Debido a que la perturbacin es medible, se utilizo un controlador feedforward, cuyos clculos se procedieron de la siguiente forma:

Las graficas de obtenidas fueron son las mostradas a continuacin.

Se puede observar que la respuesta con la perturbacin esta por encima de la entrada; cuando se le aplica el controlador feedforward la respuesta vuelve a estabilizarse en la del controlador PID calculado con el mtodo de oscilaciones amortiguadas, as el sistema el sistema vuelve a su respuesta original.

clc;hold off;t=0:0.01:25;%funcion de transferencia de la vlvulakv=0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv);

%funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp);

%funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm);

%funcion de transferencia a lazo cerradoGs=series(Gv,Gp);Gslc=feedback(Gs,Gm,-1);%step(Gslc,t)

% CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE CURVA DE REACCION del PROCESO% B=Gv*Gp*Gm*M que es igual a lazo abierto = Glahold on;step(Gla,t)y=step(Gla,t);

% POLINOMIO INTERPOLANTE DEL SISTEMA ORIGINALk=t';p=polyfit(k,y,7);y1=polyval(p,t);plot(t,y1,'r')grid

%BUSCAR EL PUNTO DE INFLEXION CON LA SEGUNDA DERIVADA ES IGUAL CEROp1=polyder(p);p2=polyder(p1);roots(p2)y2=polyval(p,2.3826);

% hallar la ecuacion de la recta y2= mx + bm=polyval(p1,2.3826);b=y2-m*2.3826;y2=polyval([m b],t);plot(t,y2,'r')

% PARAMETROS DEL CONTROLADOR% h=y(15/(0.01))*.632 % 63.2% del valor finalT=3.62;L=0.88;kcrp=y(15/0.01);kc=1.2*T/(kcrp*L)ti=2*Ltd=L/2

% CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gc=pidar(kc,ti,td);

% FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGst=series(Gs,Gc);Gt=feedback(Gst,Gm,-1);%step(Gt,t)%grid

%clc;hold off;t=0:0.01:40;%funcion de transferencia de la vlvulakrh=1; % rango de k segun Routh-Hurwitz (0- 151.88)kv=krh*0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv);

%funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp);

%funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm);

%funcion de transferencia a lazo cerradoGs=series(Gv,Gp);%disp(' funcion de trasferencia a lazo cerrado')Gslc=feedback(Gs,Gm,-1)

%step(Gslc,t); % salida del sistema a lazo cerradogrid;%raices de la ecuacion caracteristicas[nsp,dsp] = tfdata(Gslc,'v'); %descompone la funcion de trasferencia en %numerador y denominador roots(dsp);

% CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE OSCILACIONES AMORTIGUADAS (MOA)

% PARAMETRO DEL CONTROLADOR PID SEGUN TABLA DE ZIEGLE-NICHOLSP=4.85; %PERIODO ENTRE LOS DOS PICOS (1/4)kc=70;ti=P/1.5;td=P/6;

% PARAMETROS METODO DE OSCILACIONES PERMANENTES% kcrit 152 por Ruth-Hurwitz% pcrit 3.8 MOP% ti=pcit/2 y td=pcit/8%kc=(152/2);%ti=(3.8/2);%td=(3.8/8);

% FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGc=pidar(kc,ti,td);

Gst=series(Gs,Gc)Gt=feedback(Gst,Gm,-1);%hold on;%step(Gt,t)

clc;hold off;t=0:0.01:20;%funcion de transferencia de la vlvulakv=0.54;tv=1;dv=[tv 1];Gv=tf(kv,dv);

%funcion de transferencia del procesokp=.15;tp=2.8;dp=[tp 1];Gp=tf(kp,dp);

%funcion de transferencia del canal de medicionkm=1;tm=0.6;dm=[tm 1];Gm=tf(km,dm);

%funcion de transferencia a lazo cerradoGs=series(Gv,Gp);Gslc=feedback(Gs,Gm,-1)

%raices de la ecuacion caracteristicas[nsp,dsp] = tfdata(Gslc,'v');roots(dsp);

% CALCULOS DE LOS PARAMETROS DEL REGULADOR UTILIZANDO% EL METODO DE OSCILACIONES PERMANENTES (MOP) POR% Diagrama de Bode

Gla=series(Gs,Gm); %FUNCION DE TRANSFERENCIA A LAZO ABIERTO

%margin(Gla); %DIAGRAMA DE BODE grid[Km,Pm,Wg,Wp] = margin(Gla);

% Km es K critica y Wg es w criticakcrit=Km;Pc=2*pi/Wg;

% PARAMETRO DEL CONTROLADOR PID SEGUN TABLA DE ZIEGLE-NICHOLSkc=kcrit/1.7;ti=Pc/2;td=Pc/8;

% CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gc=pidar(kc,ti,td); % pidar() es una funcion creada para el calculo % de la funcion de tranferencia del P.I.D.

% FUNCION DE TRANFERENCIA DEL SISTEMA CON EL CONTROLADORGst=series(Gs,Gc)Gt=feedback(Gst,Gm,-1);

hold on;step(Gslc,t); % Grafica del comportamiento del sistema sin PIDstep(Gt,t); % Grafica del comportamiento del sistema con PIDgrid

function [Gcf]=pidar(kcf,tif,tdf)

%programa de pid = Kc( 1 + 1/(tiS)+ tdS )

%format long;

% CONTROLADOR PID = KC*[1 + 1/tiS + tdS]Gcp=tf(1);Gci=tf(1,[tif 0]);Gcd=tf([tdf 0],1);Gc1=parallel(Gcp,Gci);Gc2=parallel(Gc1,Gcd);% FUNCION DE TRANFERENCIA DEL CONTROLADOR PIDGcf=series(Gc2,kcf);

end