Control Ejercicios de Pid
Control Ejercicios de Pid
Control Ejercicios de Pid
Control proporcional
Funcin de transferencia a lazo cerrado con el controlador proporcional es:
Control PI
La funcin de transferencia a lazo cerrado de este sistema de control de marcha
con controlador PI es:
m=1000;
b=50;
u=10;
num=[kp ki];
den=[m b+kp ki];
t=0:0.1:20;
step(u*num,den,t)
axis([0 20 0 10])
Para obtener la respuesta a lazo cerrado directamente de la funcin de
transferencia a lazo abierto, ingrese los siguientes comandos en lugar de los que
se muestran abajo:
kp = 600;
ki = 1;
m = 1000;
b = 50;
u = 10;
num = [1];
den = [m b];
num1= [kp ki];
den1= [1 0];
num2=conv(num,num1);
den2=conv(den,den1);
[numc,denc]=cloop(num2,den2,-1);
t=0:0.1:20;
step(u*numc,denc,t)
axis([0 20 0 10])
Cualquiera sea el archivo-m que corra, debera obtenerse la siguiente salida:
Como puede ver, esta respuesta al escaln cumple con todos los criterios de
diseo.
Control PID
Para este ejemplo particular, no se requiri la implementacin de un
controlador derivativo para obtener una salida acorde con lo requerido. Sin
embargo, quisiera ver cmo trabajar con un controlador PID para futuras
referencias. La funcin de transferencia a lazo cerrado de este sistema de control
de marcha con el controlador PID es.
Hagamos Kp = 1, Ki = 1, y Kd = 1 .
kp=1;
ki=1;
kd=1;
m=1000;
b=50;
u=10;
num=[kd kp ki];
den=[m+kd b+kp ki];
t=0:0.1:20;
step(u*num,den,t)
axis([0 20 0 10])
Luego de correr este programa nos debera dar la respuesta al escaln del
sistema con el controlador PID. Ajuste los valores de Kp, Kd, y Ki hasta que
obtenga resultados satisfactorios. Lo dejaremos como ejercicio para que lo
trabaje.
Sugerencia: Usualmente escoger ganancias adecuadas requiere de un proceso
de prueba y error. La mejor forma de atacar este proceso es ajustar una sola
variable (Kp, Kd, o Ki) a la vez y observar cmo cambiando slo esa, se influye
en la salida del sistema.
Para este ejemplo, asumimos los valores siguientes para los parmetros fsicos.
Estos valores se derivaron experimentalmente de un motor real del laboratorio
de control para alumnos de grado del Carnegie Mellon.
Funcin de Transferencia
Usando Transformadas de Laplace, las ecuaciones del modelo de arriba pueden
expresarse en trminos de s.
Espacio de Estado
En la forma espacio de estado, las ecuaciones de arriba pueden expresarse
escogiendo la velocidad de rotacin y corriente elctrica como las variables de
estado y la tensin como una entrada. La salida se elige que sea la velocidad de
rotacin.
Requerimientos de diseo
Primero, el motor sin compensar puede rotar solo a 0.1 rad/seg. Con una
tensin de entrada de 1 Volt (esto se demostrar luego cuando se simule la
respuesta a lazo abierto). Como el requerimiento ms bsico de un motor es que
debe rotar a la velocidad deseada, el error de estado estacionario de la velocidad
del motor debe ser menor que 1%. El otro requerimiento de performance es que
el motor debe acelerarse hasta su velocidad de estado estacionario apenas se
encienda. En este caso, queremos tener un tiempo de establecimiento de 2
segundos. Como una velocidad mayor que la referencia podra daar el equipo,
queremos tener un sobrepico menor que 5%.
Si simulamos la entrada de referencia (r) con una entrada escaln unitario,
entonces la salida velocidad del motor debera tener:
De la figura vemos que cuando se aplica 1 volt al sistema, el motor puede lograr
solo una velocidad mxima de 0.1 rad/seg., diez veces menor que la velocidad
deseada. Adems, el motor tiene 3 segundos para alcanzar su velocidad de
estado estacionario; esto no satisface los 2 segundos del criterio de tiempo de
establecimiento.
Espacio de Estado
Podemos tambin representar el sistema usando las ecuaciones de espacio de
estado. Pruebe los siguientes comandos en un nuevo archivo-m.
J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
A=[-b/J K/J -K/L -R/L];
B=[0 1/L];
C=[1 0];
D=0;
step(A, B, C, D)
Corra este archivo-m en la ventana de comandos del Matlab, y obtenga la misma
salida que la de arriba.
Control proporcional
Control PID
Sintonizacin de ganancias
Ahora vemos que la respuesta es mucho ms rpida que antes, pero el Ki grande
ha empeorado la respuesta transitoria (gran sobrepico). Incrementemos Kd
para reducir el sobrepico. Vuelva programa antgerior y cambie Kd a 10. Vuelva a
correrlo para obtener este grfico:
Kp=100,
Ki=200,
Kd=10,
Todos nuestros requerimientos de diseo sern satisfechos.
Para este ejemplo, asumimos los valores siguientes para los parmetros fsicos.
Estos valores se derivaron experimentalmente de un motor real del laboratorio
de control para alumnos de grado del Carnegie Mellon.
1. Funcin de Transferencia
Usando Transformadas de Laplace las ecuaciones del modelo de arriba pueden
expresarse en trminos de s.
Sin embargo como durante este ejemplo estamos mirando a la posicin, como
que es la salida. Podemos obtener la posicin integrando Theta Punto, por lo
tanto solo necesitamos dividir la funcin de transferencia por s.
2. Espacio de Estado
Estas ecuaciones pueden tambin representarse en la forma espacio de estado.
Si elegimos posicin del motor, velocidad del motor, y corriente de armadura
como las variables de estado, podemos escribir las ecuaciones como sigue:
Requerimientos de diseo
Quisiramos poder posicionar muy precisamente al motor, entonces el error de
estado estacionario de la posicin del motor debera ser cero. Adems
quisiramos que el error de estado estacionario debido a una perturbacin
tambin sea nulo. El otro requerimiento a la performance es que el motor
alcance muy rpidamente su posicin final. En este caso, queremos tener un
tiempo de establecimiento de 40ms. y un sobrepico menor que 16%.
Si simulamos la entrada de referencia (R) por una entrada escaln unitario,
entonces la salida velocidad del motor debera tener:
De la figura vemos que cuando se aplica 1 volt al sistema, la posicin del motor
cambia en 6 radianes, seis veces mayor que la posicin deseada. Para una
entrada escaln de 1 volt, el motor debe girar alrededor de 1 radian. Adems, el
motor alcanza un estado estacionario que no satisface los criterios de diseo.
A partir del problema principal las ecuaciones dinmicas en la forma funcin de
transferencia son las siguientes:
Control proporcional
Tratemos de usar primero un controlador proporcional con una ganancia de 1.7.
agregando al programa los siguientes comandos:
Kp=1.7;
numcf=[Kp];
dencf=[1];
numf=conv(numcf,num);
denf=conv(dencf,den);
Para hallar la funcin de transferencia a lazo cerrado, usamos el comando
cloop .
[numc,denc]=cloop(numf,denf);
Note que numc y denc son el numerador y el denominador de la funcin de
transferencia a lazo cerrado general.
Ahora veamos cmo luce la respuesta al escaln. Agregando como ultimo los
comandos siguientes:
t=0:0.001:0.2;
step(numc,denc,t)
Debera obtenerse la figura siguiente:
dendcl=conv(denc,Kp);
step(numdcl,dendcl,t);
Debera obtenerse la figura siguiente:
Control PID
De las figuras de arriba vemos que a pesar que el error de estado estacionario se
v bien, el tiempo de establecimiento es muy grande, as como el sobrepico.
Tambin vemos que el error de estado estacionario a una perturbacin es
grande. Recordemos del PID, que incorporando un trmino integral se elimina
el error de estado estacionario y un trmino derivativo reducir el sobrepico.
Probemos primero el controlador PI para anular el error de estado estacionario
a la perturbacin. Cambiar el archivo anterior por estos nuevos comandos:
J=3.2284E-6;
b=3.5077E-6;
K=0.0274;
R=4;
L=2.75E-6;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0];
Kp=1.7;
Ki=20;
numcf=[Kp Ki];
dencf=[1 0];
numf=conv(numcf,num);
denf=conv(dencf,den);
[numc,denc]=cloop(numf,denf,-1);
t=0:0.001:0.4;
step(numc,denc,t)
Debera obtenerse la siguiente respuesta al escaln:
Sintonizacin de ganancias
El tiempo de establecimiento todava es alto. Incrementemos las ganancias para
acelerar la respuesta. Regrese a su archivo-m y cambie Ki a 200 y Kp a 17.
Vuelva a ejecutar el archivo y obtenga grficos como estos:
numf=conv(numcf,num);
denf=conv(dencf,den);
[numc,denc]=cloop(numf,denf,-1);
t=0:0.001:0.1;
step(numc,denc,t)
Ejectelo de nuevo y obtenga esta figura:
Dnde:
* masa del cuerpo (m1) = 2500 kg,
* masa suspendida (m2) = 320 kg,
* constante de elasticidad del sistema de suspensin(k1) = 80,000 N/m,
* constante de elasticidad rueda y neumtico(k2) = 500,000 N/m,
* constante de amortiguacin del sistema de suspensin(b1) = 350 Ns/m.
* constante de amortiguacin rueda y neumtico(b2) = 15,020 Ns/m.
* fuerza de control (u) = fuerza del controlador que estamos diseando.
Requerimientos de diseo:
Un buen sistema de suspensin debera tener un satisfactorio agarre al camino,
que provea confort aun cuando transita sobre lomas y baches en la ruta. Cuando
el colectivo est experimentando cualquier perturbacin en el camino (es decir,
rajaduras, pavimento no balanceado),la carrocera del colectivo no debe sufrir
grandes oscilaciones, y las mismas deben disiparse rpido. Como la distancia
X1-W es muy difcil de medir, y la deformacin del neumtico(X2-W) se
desprecia, usaremos la distancia X1-X2 en lugar de X1-W como la salida en
nuestro problema. Tenga en cuenta que esta es una estimacin.
La perturbacin del camino (W) en este problema se simular por una entrada
escaln. Este escaln podra representar al colectivo saliendo de un pozo.
Queremos disear un controlador realimentado de modo que la salida (X1-X2)
tenga un sobrepico menor que 5% y un tiempo de establecimiento menor que 5
segundos. Por ejemplo, cuando el colectivo corre hacia un gran escaln de 10
cm, la carrocera del colectivo oscilar en un rango de +/- 5 mm y volver a una
marcha suave dentro de 5 segundos.
Cuando queremos considerar una sola entrada U(s) , hacemos W(s) = 0. Por lo
que obtenemos la funcin de transferencia G1(s) como sigue:
G1(s) = nump/denp
G2(s) = num1/den1
m1=2500;
m2=320;
k1=80000;
k2=500000;
b1 = 350;
b2 = 15020;
nump=[(m1+m2) b2 k2];
denp=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
'G(s)1'
printsys(nump,denp)
num1=[-(m1*b2) -(m1*k2) 0 0];
den1=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
'G(s)2'
printsys(0.1*num1,den1)
.Note que el comando step generar las entrada escaln unitario para cada
entrada.
step(nump,denp)
De este grfico de la respuesta a lazo abierto para una fuerza actuante escaln
unitario, podemos ver que el sistema es sub-amortigado. La gente sentada en
el colectivo sentir apenas una pequea oscilacin y el error de estado
estacionario ronda los 0.013 mm. Pero an, el colectivo se toma un
inaceptablemente largo tiempo en alcanzar el estado estacionario o el tiempo de
establecimiento es muy largo. La solucin a este problema es agregar un
controlador realimentado en el diagrama en bloques del sistema.
step(0.1*num1,den1)
De este grfico de respuesta a lazo abierto para una perturbacin escaln de 0.1
m , podemos ver que cuando el colectivo pasa sobre una loma alta de 10 cm en el
camino, la carrocera del colectivo oscilar por un tiempo inaceptablemente
largo(100 segundos) con mayor amplitud, 13 cm, que el impacto inicial. La
gente sentada en el colectivo no estar conforme con tal oscilacin. El gran
sobrepico (del mismo impacto) y el lento tiempo de establecimiento causar
dao al sistema de suspensin. La solucin a este problema es agregar un
controlador realimentado en el sistema para mejorar la performance. El
esquema del sistema a lazo cerrado es el siguiente:
Plant = nump/denp
F * Plant=num1/den1
De modo que:
F=num1/(den1*Plant)
(1)
Para este sistema, la entrada ser el ngulo de deflexin del elevador, y la salida
ser el ngulo de inclinacin vertical.
Requerimientos de diseo
El paso siguiente es establecer algunos criterios de diseo. Queremos disear un
controlador realimentado de modo que la salida tenga un sobrepico menor que
10%, tiempo de subida menor que 2 segundos, tiempo de establecimiento menor
que 10 segundos, y error de estado estacionario menor que 2%.
Por ejemplo, si la entrada es 0.2 rad (11 grados), el ngulo de inclinacin vertical
no exceder los 0.22 rad, llegando a 0.2 rad antes de los 2 segundos, y
(2)
Estos valores se tomaron de los datos de un avin comercial de la Boeing.
1. Funcin de Transferencia
Para hallar la funcin de transferencia del sistema continuo de arriba,
necesitamos tomar transformada de Laplace de las ecuaciones del modelo de
arriba (2). Recordemos de su libro de control, cuando se halla la funcin de
transferencia, debe asumirse condiciones iniciales nulas. La
transformada de Laplace de las ecuaciones de arriba se muestra abajo
2. Espacio de estado
Conociendo el hecho de que las ecuaciones del modelo (2) ya estn en la forma
en variables de estado, podemos re-escribirlas en el modelo en espacio de
estado.
La entrada (ngulo de deflexin del elevador, delta e) ser 0.2 rad (11 grados), y
la salida es el ngulo de inclinacin vertical (theta).
Los requerimientos de diseo son
Control PID
A pesar que todos los requerimientos de diseo estn satisfechos con el
Controlador PD, puede agregarse el controlador integral (Ki) para reducir el
pico agudo y obtener una respuesta suave. Luego de varias iteraciones pruebaerror, la ganancia proporcional (Kp) de 2, la ganancia integral (Ki) de 4, y la
ganancia derivativa (Kd) de 3 proveen respuesta al escaln ms suave que an
satisface todos los requerimientos de diseo. Para confirmarlo, se tiene el
programa siguiente. Debera obtener la respuesta al escaln de abajo:
Esta vez usaremos la funcin cloop para hallar la funcin de transferencia a lazo
cerrado , y entonces obtener la respuesta al escaln .
de=0.2;
Kp=2;
Kd=3;
Ki=4;
numo=[1.151 0.1774];
deno=[1 0.739 0.921 0];
numpid=[Kd Kp Ki];
denpid=[1 0];
num1=conv(numo,numpid);
den1=conv(deno,denpid);
[numc,denc] = cloop(num1,den1);
t=0:0.01:10;
step (de*numc,denc,t)
Para este problema, asumimos que la bola rueda sin resbalamiento y la friccin
entre la barra y bola es despreciable. Las constantes y variables para este
ejemplo se definen como sigue:
M
R
d
g
L
J
r
alpha
theta
masa de la bola
radio de la bola
offset de brazo de palanca
aceleracin gravitacional
longitud de la barra
momento de inercia de la bola
coordenada de posicin de la bola
coordenada angular de la barra
ngulo del servo engranaje
0.11 kg
0.015 m
0.03 m
9.8 m/s^2
1.0 m
9.99e-6 kgm^2
1. Funcin de Transferencia
Tomando transformada de Laplace de la ecuacin de arriba, se encuentra la
siguiente ecuacin:
De esta figura es claro que el sistema es inestable a lazo abierto, causando que la
bola se deslice afuera de la barra. Por lo tanto, se requiere de algn mtodo para
controlar la posicin de la bola en este sistema. Abajo se listan tres ejemplos de
diseo del controlador para el problema de la FT. Puede elegir entre PID, Lugar
de Races, y Respuesta en Frecuencia.
2. Espacio de Estado
Las ecuaciones de espacio de estado pueden representarse en Matlab con los
siguientes comandos (estas ecuaciones son para el modelo de control de
torque).
m = 0.111;
R = 0.015;
g = -9.8;
J = 9.99e-6;
H = -m*g/(J/(R^2)+m);
A=[0 1 0 0
00H0
0001
0 0 0 0];
B=[0;0;0;1];
C=[1 0 0 0];
D=[0];
step(A,B*.25,C,D)
Control Proporcional
La funcin de transferencia a lazo cerrado para un controlador proporcional con
una ganancia proporcional (kp) igual a 100, puede modelarse con el siguiente
programa.
m = 0.111;
R = 0.015;
g = -9.8;
L = 1.0;
d = 0.03;
J = 9.99e-6;
K = (m*g*d)/(L*(J/R^2+m)); %simplifica entrada
num = [-K];
den = [1 0 0];
kp = 1;
numP = kp*num;
[numc, denc] = cloop(numP, den)
El numerador y denominador deberan ser:
numc =
0
0 0.2100
denc =
1.0000
0 0.2100
Ahora, podemos modelar la respuesta del sistema a una entrada escaln de 0.25
m. Agregue la siguiente lnea de cdigo a su archivo-m y ejectelo:
step(0.25*numc,denc)
Debera obtenerse la siguiente salida:
Como puede ver de la figura de arriba todos los objetivos de control han sido
logrados sin el uso de un controlador integral (el tiempo de establecimiento para
este ejemplo se considera logrado cuando la respuesta es menor que el 2% de su
valor final). Recuerde, que para un problema de control hay ms que una
solucin.
% FUNCION DE TRANFERENCIA
disp 'Y(s)/U(s)== [1/ms + b]'
num=[1];
den=[m b];
step(u*num,den)
title('Curva de la funcin de transferencia sin controlador')
Usando un Control PI
Para este ejemplo usamos solo un controlador PI por hace que el sistema sea
mas estable.
Un controlador integral al sistema elimina el error de estado estacionario. Por
ahora, haga Kp = 800 y Ki = 1 y vea qu sucede con la respuesta.
% Valores de las variables de la F.T de lazo cerrado
kp = 750;
ki = 1;
m = 6300;
b = 850 ;
u = 11.5;
% F.T de lazo cerrado de un controlador PI
disp 'Y(s)/u(s)== [Kps + Ki / ms^2 + (b + Kd)s + Ki]'
num = [1];
den = [m b];
num1= [kp ki];
den1= [1 0];
num2=conv(num,num1);
den2=conv(den,den1);
[numc,denc]=cloop(num2,den2,-1);
t=0:0.1:20;
step(u*numc,denc,t)
axis([0 20 0 10])
title('Curva de la funcin de transferencia con un controlador PI')
R=1;
L=0.6;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
step(num,den,0:0.1:3)
title('Respuesta al Escaln del sistema de lazo abierto')
De la figura vemos que cuando se aplica 1 volt al sistema, el motor puede lograr
solo una velocidad mxima de 0.3 rad/seg., diez veces menor que la velocidad
deseada. Adems, el motor tiene 3 segundos para alcanzar su velocidad de
estado estacionario; esto no satisface los 2 segundos del criterio de tiempo de
establecimiento
Control PID
De la figura de arriba vemos que tanto el error de estado estacionario cuanto el
sobrepico son muy grandes. Recordemos del tutorial PID que incorporando un
trmino integral se eliminar el error de estado estacionario y un trmino
derivativo reducir el sobrepico. Probemos un controlador PID con Ki y Kd
pequeos. Modifique su archivo-m de manera que se sea ve lo siguiente. Luego
de correr este nuevo archivo-m se da la figura siguiente.
J=0.05;
b=0.4;
K=0.05;
R=1;
L=0.6;num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
Kp=100;
Ki=1;
Kd=1;
numc=[Kd, Kp, Ki];
denc=[1 0];
numa=conv(num,numc);
dena=conv(den,denc);
[numac,denac]=cloop(numa,dena);
step(numac,denac)
title('Control PID con pequeo Ki and Kd')
Sintonizacin de ganancias
Ahora el tiempo de establecimiento es muy largo. Incrementemos K i para
reducir el tiempo de establecimiento. Regrese Al programa anterior y cambie K i
a 100. Vuelva a ejecutar el archivo y debera obtenerse un grfico como ste:
Ahora vemos que la respuesta es mucho ms rpida que antes, pero el Ki grande
ha empeorado la respuesta transitoria (gran sobrepico). Incrementemos Kd
para reducir el sobrepico. Vuelva programa antgerior y cambie Kd a 11. Vuelva a
correrlo para obtener este grfico:
Ejemplo 4
Con valores propuestos
* masa del cuerpo (m1) = 3500 kg,
* masa suspendida (m2) = 550 kg,
* constante de elasticidad del sistema de suspensin(k1) = 90,500 N/m,
* constante de elasticidad rueda y neumtico(k2) = 600,123 N/m,
* constante de amortiguacin del sistema de suspensin(b1) = 440Ns/m.
* constante de amortiguacin rueda y neumtico(b2) = 16,567 Ns/m.
* fuerza de control (u) = fuerza del controlador que estamos diseando.
printsys(0.1*num1,den1)
step(0.1*num1,den1)
axis([0 10 -.1 .1])
title('Respuesta de la Funcin de Trasferencia')
step(nump,denp)
De este grfico de la respuesta a lazo abierto para una fuerza actuante escaln
unitario, podemos ver que el sistema es sub-amortigado. La gente sentada en
el colectivo sentir apenas una pequea oscilacin y el error de estado
estacionario ronda los 0.013 mm. Pero an, el colectivo se toma un
inaceptablemente largo tiempo en alcanzar el estado estacionario o el tiempo de
establecimiento es muy largo. La solucin a este problema es agregar un
controlador realimentado en el diagrama en bloques del sistema.
Ejemplo 6
Con valores propuestos
Para este problema, asumimos que la bola rueda sin resbalamiento y la friccin
entre la barra y bola es despreciable. Las constantes y variables para este
ejemplo se definen como sigue:
M
R
d
g
L
J
r
alpha
masa de la bola
radio de la bola
offset de brazo de palanca
aceleracin gravitacional
longitud de la barra
momento de inercia de la bola
coordenada de posicin de la bola
coordenada angular de la barra
1 kg
0.02 m
0.4 m
9.8 m/s^2
2.5 m
9.99e-6 kgm^2
K = (m*g*d)/(L*(J/R^2+m));
num = [-K];
den = [1 0 0];
printsys(num,den)
step(0.50*num,den)
title(' resultado de la funcion de transferencia')
step(0.15*num,den)
Espacio de Estado
step(A,B*.50,C,D)
Control Proporcional-Derivativo
Ahora, agregaremos un trmino derivativo al controlador. Con este programa
veremos si el sistema queda estable.
% valores de las contantes y variables
m = 3;
R = 0.3;
g = -5.8;
L = 5.5;
d = 0.2;
J = 6.99e-6;
J = 9.99e-6;
% fucnion de transferencia
disp 'R(s)/U(s)== (m*g*d)/((L*(J/R^2+m))'
K = (m*g*d)/(L*(J/R^2+m));
num = [-K];
den = [1 0 0];
% valores del controlador PD
kp = 15;
kd = 40;
numPD = [kd kp];
numh = conv(num, numPD);
[numc, denc] = cloop(numh, den);
t=0:0.01:5;
step(0.50*numc,denc,t)
title('resultado del controlador PD')
BIBLIOGRAFA
www.engin.umich.edu/group/ctm/basic/basic.htm/
www.engin.umich.edu/group/ctm/PID/PID.htm/