Sei sulla pagina 1di 8

21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido

http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 1/8
Ejemplo: Solucin al Problema del Pndulo
Invertido Usando Control PID
Representacin a lazo abierto
Funcin de transferencia a Lazo Cerrado
Agregado de un controlador PID
Qu sucede con la posicin del carro?
La funcin de transferencia de la planta para este problema se da abajo:
donde,
El criterio de diseo (con el pndulo recibiendo un 1N fuerza impulsiva del carrito) es:
Tiempo de establecimiento menor que 5 segundos.
El pndulo no debiera apartarse ms que 0.05 radianes de la vertical.
para ver cmo se prepar originalmente este problema, consulte la pgina modelado del pndulo invertido .
Representacin a lazo abierto
Lo primero que hay que hacer cuando se usa control PID en Matlab es hallar la funcin de transferencia del
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 2/8
sistema y verificar para ver si tiene sentido. La funcin de transferencia calculada de las transformadas de
Laplace para la salida Phi (el ngulo del pndulo) puede ponerse en Matlab ingresando el numerador y el
denominador como vectores. Cree un archivo-m y copie el siguiente texto para modelar la funcin de
transferencia:
M = .5;
m = 0.2;
b = 0.1;
i = 0.006;
g = 9.8;
l = 0.3;
q = (M+m)*(i+m*l^2)-(m*l)^2; %simplifica entrada
num = [m*l/q 0]
den = [1 b*(i+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q]
La salida sera:
num =
4.5455 0
den =
1.0000 0.1818 -31.1818 -4.4545
Funcin de transferencia a Lazo Cerrado
El control de este problema es un poco diferente que los problemas tpicos de control que haya usado. Como
estamos tratando de controlar la posicin del pndulo, el cual debe volver a la vertical luego de una perturbacin
inicial, la seal de referencia que estamos persiguiendo debera ser cero. La fuerza aplicada al carro puede
agregarse como una perturbacin impulsiva. El esquema para este problema debera verse como el siguiente.
Le ser ms fcil determinar la funcin de transferencia apropiada para pasarla al Matlab si reordenamos
primero el esquema como sigue:
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 3/8
Ahora, podemos hallar la funcin de transferencia a lazo cerrado .
Agregado del controlador PID
Esta funcin de transferencia a lazo cerrado puede modelarse en Matlab copiando el siguiente cdigo al final de
su archivo-m (dependiendo de si est usando la funcin de transferencia a partir de las transformadas de
Laplace directa o a partir de la representacin en espacio de estado):
kd = 1;
k = 1;
ki = 1;
numPID = [kd k ki];
denPID = [1 0];
numc = conv(num,denPID)
denc = polyadd(conv(denPID,den),conv(numPID,num))
Nota: Los comandos Matlab no estndares usados en este ejemplo se destacan en verde.
La funcin polyadd no se halla en la toolbox de Matlab. Tendr que copiarla a un archivo-m nuevo para usarla.
En esta funcin de transferencia se considera que ser necesario control derivativo y control integral junto con
control proporcional. Esto no tiene que ser necesariamente el caso. Si prefiere empezar con Control PI, no tiene
ms que remover el trmino kd de numPID. Si prefiere empezar con Control PD, no tiene ms que remover el
trmino ki de numPID y cambiar denPID de modo que sea [1]. Asumiendo que no ha cambiado el control
PID, debera obtenerse los siguientes numerador y denominador a lazo cerrado en la ventana de comandos del
Matlab:
numc =
4.5455 0 0
denc =
1.0000 4.7273 -26.6363 0.0910 0
Ya podemos comenzar con control real de este sistema. Primero veamos que la respuesta al impulso se vea con
los nmeros que ya tenamos. Ingrese el siguiente cdigo al final de su archivo-m:
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 4/8
t=0:0.01:5;
impulse(numc,denc,t)
axis([0 1.5 0 40])
Debera obtenerse el grfico siguiente de la respuesta velocidad a la perturbacin impulsiva:
Esta respuesta an no es estable. Comencemos incrementando el control proporcional del sistema. Suba la
variable k para ver qu efecto tiene en la respuesta. Si hace k=100, y pone los ejes con axis([0, 2.5,
-0.2, 0.2]), debera obtener el grfico siguiente de la respuesta velocidad:
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 5/8
El tiempo de establecimiento es aceptable y cerca de 2 segundos. Como el error de estado estacionario ya ha
sido reducido a cero, no se necesita ms control integral. Puede remover la ganancia constante integral para ver
por s mismo que es necesario un pequeo control integral. El sobrepico es demasiado alto, de modo que se
debe arreglar. Para aliviar este problema, incremente la variable kd. Con kd=20, debera obtenerse un resultado
satisfactorio . Ahora debe ver el grfico siguiente de la respuesta velocidad:
Como puede ver, el sobrepico se redujo de modo que el pndulo no se mueve ms que 0.05 radianes de la
vertical. Se han satisfecho todos los criterios de diseo, as que ya no se necesita ms iteraciones.
Qu sucede con la posicin del carro?
Al principio de pgina, se dio el diagrama en bloque para este problema. El diagrama no estaba totalmente
completo. El bloque que representa la posicin fue ignorado porque era una variable que no iba a ser
controlada. Sera sin embargo interesante, para ver qu est sucediendo con la posicin del carro cuando se
coloca el controlador para el ngulo del pndulo . Para verlo necesitamos considerar el diagrama en bloques real
del sistema:
Reacomodando un poco ms, se obtiene el siguiente diagrama en bloque:
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 6/8
El lazo de realimentacin representa el controlador que hemos diseado para el ngulo del pndulo. La funcin
de transferencia de la posicin del carro a la fuerza impulsiva, con el controlador PID realimentado que se ha
diseado, se da como sigue:
Recordemos que si el par polo/cero en el origen que fue cancelado se vuelve a agregar, den1=den2. De modo
que la funcin de transferencia de X a F puede simplificarse a:
Ahora que tenemos la funcin de transferencia del sistema completo, echemos un vistazo a la respuesta. Primero
necesitamos la funcin de transferencia para la posicin del carro. Para obtenerla necesitamos volver a las
ecuaciones del sistema en transformada Laplace y encontrar la funcin de transferencia de X(s) a U(s). Esta
funcin de transferencia se muestra abajo:
donde,
Para ayuda acerca de la transformada de Laplace refirase por favor a modelado del pndulo invertido .
El par polo/cero en el origen que habamos cancelado en la funcin de transferencia de Phi, se ha vuelto a
introducir. As que ahora den1 = den2, lo que reduce la dificultad del clculo. Ahora, cree un nuevo archivo-m
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 7/8
y ejectelo en la ventana de comandos:
M = .5;
m = 0.2;
b = 0.1;
i = 0.006;
g = 9.8;
l = 0.3;
q = (M+m)*(i+m*l^2)-(m*l)^2; %simplifica entrada
num1 = [m*l/q 0 0];
den1 = [1 b*(i+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q 0];
num2 = [(i+m*l^2)/q 0 -m*g*l/q];
den2 = den1
kd = 20;
k = 100;
ki = 1;
numPID = [kd k ki];
denPID = [1 0];
numc = conv(num2,denPID);
denc = polyadd(conv(denPID,den2),conv(numPID,num1));
t=0:0.01:5;
impulse(numc,denc,t)
Como puede ver, el carrito se mueve en la direccin negativa con una velocidad constante. As que a pesar que
el controlador PID estabiliza el ngulo del pndulo, este diseo no sera factible de llevar a cabo en un sistema
fsico real.
21/5/2014 CTM Ejemplo: control PID del modelo del pndulo invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invPID.html 8/8
User Feedback
We would like to hear about suggestions you have for improvement, difficulties you had with the tutorials, errors
that you found, or any other comments that you have. This feedback is anonymous.
Submit Feedback Reset
PID Ejemplos
Control de Marcha | Velocidad del Motor | Posicin de un Motor | Suspensin de un Colectivo | Pndulo
Invertido | Control de Inclinacin | Barra y Bola
Pndulo Invertido : Ejemplos
Modelacin | PID | Lugar de Races | Respuesta en Frecuencia | Espacio de Estado | Control Digital
Tutoriales
Matlab Bsico | Modelacin | PID | Lugar de Races | Respuesta en Frecuencia | Espacio de Estado |
Control Digital | Ejemplos

8/12/97 CJC

Potrebbero piacerti anche