Está en la página 1de 32

ESCUELA POLITCNICA NACIONAL

TRABAJO DE CONTROL MODERNO

PNDULO INVERTIDO

Integrantes:

Garzn Juan Snchez David

2011-2012

INTRODUCCIN Bsicamente el pndulo invertido, consiste en un pndulo acoplado a un carro el cual es impulsado por una fuerza de control; el pndulo puede girar libremente alrededor de su pivote describiendo una trayectoria circular, mientras que el carro tendr un desplazamiento lineal restringido tan solo por su longitud de la regin de movimiento. Condiciones del problema y requerimientos de diseo El carrito con un pndulo invertido, se muestra abajo, es "empujado" con una fuerza impulsiva, F. Determinemos las ecuaciones dinmicas de movimiento del sistema, y linealicemos cerca del ngulo del pndulo, theta = Pi (en otras palabras, asumamos que pndulo no se aparta ms que unos pocos grados de la vertical, elegida en un ngulo de Pi). Encontremos un controlador para satisfacer todos los requerimientos de diseo dados arriba.

Para este ejemplo, asumamos que M m b l I F x masa del carro masa del pndulo friccin del carro longitud al centro de masa del pndulo inercia del pndulo fuerza aplicada al carro coordenadas de posicin del carro 0.5 kg 0.2 kg 0.1 N/m/seg 0.3 m 0.006 kg*m^2

theta ngulo del pndulo respecto de la vertical Anlisis de las fuerzas y sistema de ecuaciones Abajo figuran los dos diagramas de cuerpo libre del sistema.

Sumando las fuerzas en el diagrama de cuerpo libre del carro en la direccin horizontal, se obtiene la siguiente ecuacin del movimiento:

Note que tambin puede sumar las fuerzas en la direccin vertical, pero no se ganar ninguna informacin til. Sumando las fuerzas en el diagrama de cuerpo libre del pndulo en la direccin horizontal, puede obtener la ecuacin para N:

Si sustituye esta ecuacin en la primera ecuacin, se obtiene la primera ecuacin del movimiento de este sistema: (1) Para obtener la segunda ecuacin de movimiento, sume las fuerzas perpendiculares al pndulo. Si resuelve el sistema a lo largo de este eje se ahorrar un montn de lgebra. Debera obtener la siguiente ecuacin:

Para librarse de los trminos P y N en la ecuacin anterior, sume los momentos sobre el centroide del pndulo para obtener la siguiente ecuacin:

Combinando estas dos ltimas ecuaciones, se obtiene la segunda ecuacin dinmica: (2) Este conjunto de ecuaciones debera ser linealizado alrededor de theta = Pi. Asuma que theta = Pi + ( representa un pequeo ngulo en la direccin vertical). Por lo tanto, cos(theta) = -1, sin(theta) = -, y (d(theta)/dt)^2 =0. Luego de la linealizacin las dos ecuaciones de movimiento sern:

(donde u representa la entrada) 1. Funcin de Transferencia Para obtener analticamente la funcin de transferencia de las ecuaciones del sistema linealizado, debemos tomar primero la transformada de Laplace de las ecuaciones del sistema. Las transformadas de Laplace son:

NOTE: Cuando se halla la funcin de transferencia se considera condiciones iniciales nulas. Como como estamos mirando al ngulo Phi como la salida de inters, resuelva la primera ecuacin para X(s),

y entonces sustityala en la segunda ecuacin:

Re ordenando, la funcin de transferencia es:

donde,

De la funcin de transferencia de arriba puede verse que hay un polo y un cero en el origen. Estos puede ser cancelados y la funcin de transferencia ser:

2. Espacio de Estado Luego de un poco de lgebra, las linealizadas ecuaciones del sistema pueden tambin representarse en la forma espacio de estado:

[ ]

][ ] ][ ]

[ ]

La matriz C es de 2 por 4, porque la posicin del carro y la posicin del pndulo son parte de la salida. Para el problema de diseo en espacio de estado estaremos controlando un sistema de salida mltiple por lo que observaremos la posicin del carro en el primer rengln de salida y la del pndulo en el segundo rengln Representacin en Matlab y respuesta a lazo abierto 1. 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 debera ser: num = 4.5455 den = 1.0000 0.1818 -31.1818 -4.4545 Para observar la respuesta del sistema de la velocidad a una fuerza impulsiva aplicada al carro se us: t=0:0.01:5; 0

impulse(num,den,t) axis([0 1 0 60]) La respuesta de la velocidad es:

No es estable a lazo abierto. ESPACIO DE ESTADO Abajo, se muestra cmo se encara el problema usando Matlab para el modelo en espacio de estado, Matlab le dar las matrices A, B, C, y D para el modelo en espacio de estado y un grfico de la posicin del carro y ngulo del pndulo como respuesta a un entrada escaln de 0.2 m aplicada al carro. M = .5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; p = i*(M+m)+M*m*l^2; %denominador para las matrices A y B A = [0 1 0 0;

0 -(i+m*l^2)*b/p (m^2*g*l^2)/p 0;

1; m*g*l*(M+m)/p 0]

0 -(m*l*b)/p B=[ 0;

(i+m*l^2)/p; 0; m*l/p] C = [1 0 0 0; 0 0 1 0] D = [0; 0] T=0:0.05:10; U=0.2*ones(size(T)); [Y,X]=lsim(A,B,C,D,U,T); plot(T,Y) axis([0 2 0 100]) la salida es: A= 0 1.0000 0 0 0

0 -0.1818 2.6727 0 0 0 1.0000

0 -0.4545 31.1818 B= 0 1.8182 0

4.5455 C= 1 0 D= 0 0 0 0 0 1 0 0

La lnea azul representa la posicin del carro y la lnea verde representa el ngulo del pndulo. ESTABILIDAD POR LYAPUNOV Q=C'*C X=dlyap(A',Q) X= 1.0000 0 0 0

0 1.0522 -1.0468 0.1482 0 -1.0468 -0.0342 0.0927 0 0.1482 0.0927 -0.0342

eig(X); semidifinida positiva por lo cual es sistema es estable. ans = -0.7068 -0.0014 1.0000 1.6920 CONTROLABILIDAD Y OBSERVABILIDAD El paso siguiente es verificar la controlabilidad y la observabilidad del sistema. Para que el sistema sea de estado completamente controlable, la matriz de controlabilidad [ ]

debe ser de rango n. El rango de la matriz es el nmero de renglones independientes (o columnas). Anlogamente, para que el sistema sea de estado completamente observable, la matriz de observabilidad [ ]

tambin debe tener rango n. Como nuestra matriz de controlabilidad y matriz de observabilidad son '4x4', el rango de ambas matrices debe ser 4. La funcin rank puede darle el rango de cada matriz. Matriz controlabilidad. co=ctrb(A,B) co = 0 1.8182 -0.3306 12.2089

1.8182 -0.3306 12.2089 -4.4287 0 4.5455 -0.8264 141.8858

4.5455 -0.8264 141.8858 -31.3196 controllability=rank(co) controllability = 4; si es controlable.

ob=obsv(A,C) ob = 1.0000 0 0 0 0 0 0 0 0 0 1.0000 0 -0.1818 -0.4545 0.0331 0.0826 0 1.0000 0 0 2.6727 31.1818 -0.4860 -1.2149 0 0 0 1.0000 0 0 2.6727 31.1818

observabillity=rank(ob) observabillity = 4; si es observable CONTROLADOR. k=acker(a,b,[-10,-12,-14,-16]); ac=a-b*k; s3=feedback(s2,[1 1]); step(s3)

OBSERVADOR Se lo hace por partes ya que nuestra matriz C es de 2 x 4 y eso nos da un conflicto al realizar la matriz de observabilidad: a= x1 x1 0 x2 1 x3 0 x4 0

x2 26.87 22.29 -86.74 -17.16 x3 0 0 0 1

x4 67.17 55.73 -192.3 -42.89 b= u1 x1 0

x2 1.818 x3 0

x4 4.545 c= x1 x2 x3 x4 y1 1 0 0 0 y2 0 0 1 0 d= u1 y1 0 y2 0 Trabajo con el carro entonces c1=[1 0 0 0];d1=0 po=ao^4 + 52*ao^3+1004*ao^2+8528*ao+274560; l=po*mo'*[0;0;0;1];

ao2=ao-l*c1; so=ss(ao2,bo,c1,d1); step(so)

Grafica de convergencia en menos de 1 segundo: tb=linspace(0,10,50); >> [y,t,x]=initial(sc,[1;0;0;0],tb); >> [y,t,e]=initial(so,[1;0;0;0],tb); >> xo=x-e; >> plot(t,x,t,xo);

Trabajo en el pndulo entonces c2=[0 0 1 0] po=ao^4 + 52*ao^3+1004*ao^2+8528*ao+274560; l=po*mo'*[0;0;0;1]; ao2=ao-l*c2; so=ss(ao2,bo,c1,d1); step(so)

Grafica de convergencia en menos de 2 segundos: tb=linspace(0,10,50); [y,t,x]=initial(sc,[1;0;0;0],tb); [y,t,e]=initial(so,[1;0;0;0],tb); xo=x-e; plot(t,x,t,xo);

ESPACIO DE ESTADO DISCRETO El mtodo que usaremos es el ('zoh'). Asumiendo que la frecuencia del ancho de banda a lazo cerrado anda en 1 rad/seg. tanto para el carro cuanto para el pndulo, haga el tiempo de muestreo 1/100 seg/muestra. M = .5; m = 0.2; b = 0.1; i = 0.006; g = 9.8; l = 0.3; p = i*(M+m)+M*m*l^2; %denominador para A y B

A = [0

0;

0 -(i+m*l^2)*b/p (m^2*g*l^2)/p 0; 0 0 0 1; m*g*l*(M+m)/p 0];

0 -(m*l*b)/p B=[ 0;

(i+m*l^2)/p; 0; m*l/p]; C = [1 0 0 0; 0 0 1 0]; D = [0; 0]; Ts=1/100; [ad,bdcd,dd]=c2dm (A,B,C,D,0.01,'zoh') El modelo discreto es: ad = 1.0000 0.0100 0.0001 0.0000 0 0 0 bd = 0.0001 0.0182 0.0002 0.0454 cd = 0.9982 0.0267 0.0001 0.0000 1.0016 0.0100 -0.0045 0.3119 1.0016

1 0 0 0 0 0 1 0 dd = 0 0 Hemos obtenido el modelo en espacio de estado discreto

CONTROLABILIDAD Y OBSERVABILIDAD(DISCRETO) ad = [1.0000 0.0100 0.0001 0.0000; 0 0.9982 0.0267 0.0001; 0 0.0000 1.0016 0.0100; 0 -0.0045 0.3119 1.0016]; bd = [0.0001; 0.0182; 0.0002; 0.0454]; cd = [1 0 0 0;

0 0 1 0]; dd = [0; 0]; co = ctrb (ad,bd); ob = obsv (ad,cd); Controllability = rank (co) Observability = rank (ob) En la ventana de comandos, debera ver Controllability = Observability = 4 4

Esto prueba que nuestro sistema discreto es de estado completamente controlable y de estado completamente observable. Modelo Discreto sin compensacin.

CONTROLADOR DISCRETO. k=acker(ad,bd,[-8 -10 -12 -14]); ad2=ad-bd*k; sd2=ss(ad2,bd,cd,dd); step(sd2); sd3=feedback (sd2,[1 1]);

DISEO DE OBSERVADORES La respuesta anterior satisface todos los requerimientos de diseo; sin embargo, fu hallada asumiendo que todos los estados son medibles. Esta consideracin puede no ser vlida para todos los sistemas. En esta seccin, desarrollamos una tcnica para estimar los estados de una planta a partir de la informacin disponible en la misma. El sistema que estima los estados de otro sistema se denomina an observador. Por lo que, en esta seccin vamos a disear un observador completo de estado para estimar los estados que no son medibles. Un esquema bsico del sistema planta-observador se muestra abajo.

OBSERVADOR DISCRETO. Para disear el observador, primero, necesitamos hallar la matriz L . Para hallar la matriz L , necesitamos hallar los polos del sistema sin el observador (los polos de ad-bd*K). ad = [1.0000 0 0 0 bd = [0.0001; 0.0182; 0.0002; 0.0454]; cd = [1 0 0 0; 0 0 1 0]; 0.0100 0.0001 0.0000; 0.9982 0.0267 0.0001; 0.0000 1.0016 0.0100; -0.0045 0.3119 1.0016];

dd = [0; 0]; x=5000; %factor de peso para la posicin del carro y=100; %factor de peso para el ngulo del pndulo Q= [ x 0 0 0; 0 0 0 0; 0 0 y 0; 0 0 0 0]; R = 1; K = dlqr(ad,bd,Q,R); polos = eig (ad-bd*K) En la ventana de comandos, debera ver polos = 0.9156+0.0729i 0.9156-0.0729i 0.9535+0.0079i 0.9535-0.0079i Queremos ubicar los polos del observador de modo que el observador trabaje mucho ms rpido que el sistema sin el observador. Ubiquemos los polos del observador alejados a la izquierda de los polos de arriba, digamos, en [-0.3 -0.31 -0.32 -0.33]. De ser necesario, estos polos pueden cambiarse despus. Para hallar la matriz L se usar la funcin del Matlab denominada place. ad = [1.0000 0.0100 0.0001 0.0000; 0 0 0 0.9982 0.0267 0.0001; 0.0000 1.0016 0.0100; -0.0045 0.3119 1.0016];

cc = [1 0 0 0; 0 0 1 0];

P = [-0.3 -0.31 -0.32 -0.33]; L = place (ad',bd',P)' Debera verse la siguiente matriz L. L= 2.6310 -0.0105

172.8146 -1.3468 -0.0129 -2.2954 2.6304 173.2787

Ahora obtendremos la respuesta total del sistema, incluyendo el observador. T=0:0.01:5; U=0.2*ones(size(T)); ad = [1.0000 0.0100 0.0001 0.0000; 0 0 0 bd = [0.0001; 0.0182; 0.0002; 0.0454]; cc = [1 0 0 0; 0 0 1 0]; dd = [0; 0]; x=5000; %factor de peso para la posicin del carro y=100; %factor de peso para el ngulo del pndulo 0.9982 0.0267 0.0001; 0.0000 1.0016 0.0100; -0.0045 0.3119 1.0016];

Q=[x 0 0 0; 0 0 0 0; 0 0 y 0; 0 0 0 0]; R = 1; K = dlqr(ad,bd,Q,R) Nbar = -61.55; L = [2.6310 -0.0105;

172.8146 -1.3468; -0.0129 -2.2954 Fce = [ad-bd*K zeros(size(ad)) Gce = [bd*Nbar; zeros(size(bd))]; Hce = [cd zeros(size(cd))]; Jce = [0;0]; [Y,X] = dlsim (Fce,Gce,Hce,Jce,U); stairs (T,Y) legend ('cart (x)','pendulum (phi)') 2.6304; 173.2787; bd*K; (ad-L*cd)];

Como habr notado, esta respuesta es casi la misma que antes, y se han satisfecho todos los requerimientos de diseo.

SOLUCIN AL PROBLEMA DEL PNDULO INVERTIDO USANDO CONTROL PID 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.

Representacin a lazo abierto Lo primero que hay que hacer cuando se usa control PID en Matlab es hallar la funcin de transferencia del 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. 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 den = 1.0000 0.1818 -31.1818 -4.4545 Funcin de transferencia a Lazo Cerrado 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. 0

Le ser ms fcil determinar la funcin de transferencia apropiada para pasarla al Matlab si reordenamos primero el esquema como sigue:

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 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)) 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. 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 denc = 1.0000 4.7273 -26.6363 0.0910 0 0 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. 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 k=100, y se pone los ejes con axis ([0, 2.5, -0.2, 0.2]), debera obtener el grfico siguiente de la respuesta velocidad:

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. 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:

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,

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. 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.

También podría gustarte