You are on page 1of 11

21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido

http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 1/11
Ejemplo: Solucin al Problema del Pndulo
Invertido Usando el Mtodo de Respuesta en
Frecuencia
Representacin a lazo abierto
Respuesta a lazo cerrado sin compensacin
Respuesta a lazo cerrado con compensacin
Qu sucede con la posicin del carrito?
La funcin de transferencia de la planta para este problema se da abajo:
donde,
Nota: Hay una cancelacin polo/cero en esta funcin de transferencia. En ejemplos anteriores stos fueron
removidos de la funcin de transferencia. Sin embargo, en este ejemplo los dejaremos estar por razones que
despus quedarn claras.
El criterio de diseo (con el pndulo recibiendo un impulso de 1N del carrito) es:
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 2/11
Tiempo de establecimiento menor que 5 segundos.
El pndulo no se debe apartar ms all de los 0.05 radianes de la vertical.
Para ver cmo se prepar originalmente este problema, consulte la pgina modelado del pndulo invertido .
Nota: Antes de tratar de trabajar con este problema, debera decirse que es ste es complicado para resolverlo
con el mtodo de respuesta en frecuencia. Como pronto averiguar, este problema tiene un polo en el semiplano
derecho, que lo hace inestable. El mtodo de la respuesta en frecuencia funciona mejor cuando el sistema es
estable a lazo abierto. Por esta razn le sugerimos no intentar seguir este ejemplo si est tratando de aprender a
usar respuesta en frecuencia. Este problema es para quienes desean aprender cmo resolver problemas que son
ms complicados en respuesta en frecuencia.
Representacin a lazo abierto
El mtodo de la respuesta en frecuencia usa el comando bode para hallar la respuesta en frecuencia de un
sistema descripto por una funcin de transferencia en la forma de Bode.
La funcin de transferencia derivada de las transformadas de Laplace de la salida Phi (el ngulo del pndulo)
puede ser ingresada en Matlab ingresando el numerador y el denominador como vectores. Cree un archivo-m
(en el directorio de trabajo del Matlab) y copie el texto siguiente 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 0]
den = [1 b*(i+m*l^2)/q -(M+m)*m*g*l/q -b*m*g*l/q 0]
La salida debera ser:
num =
4.5455 0 0
den =
1.0000 0.1818 -31.1818 -4.4545 0
Respuesta a lazo cerrado sin compensacin
Diseemos ahora un controlador para el pndulo invertido con un impulso mediante el diagrama de Nyquist (no
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 3/11
podemos usar diagramas de Bode porque el sistema es inestable a lazo abierto). Comencemos por observar el
diagrama en bloque para este sistema:
Si tratara de modelar este sistema en Matlab, tuviera todo tipo de problemas. La mejor manera de usar Matlab
para resolver este problema es cambiar primero el esquema a algo que puede ser modelado ms sencillamente.
Reacomodando la ilustracin, puede obtener el esquema nuevo siguiente:
Ya podemos comenzar nuestro diseo. Primero, observemos los polos y ceros de esta funcin:
x = roots(num)
y = roots(den)
x =
0
0
y =
0
-5.6041
5.5651
-0.1428
Como ya sabe, tenemos una cancelacin polo-cero en el origen, as como un polo real positivo en el semiplano
derecho. Esto significa que necesitaremos un rodeo en contra-reloj a -1 para tener un sistema estable a lazo
cerrado (Z = P + N; P = 1, N = -1). El siguiente archivo-m ser muy til en el diseo de nuestro controlador.
Note que necesitar la funcin polyadd.m para ejecutar este archivo-m. Copie y pegue la funcin de su browser
a un archivo-m en su carpeta (asegrese el comando function se halle en la primera columna del archivo-m).
Nota: Los comandos Matlab no estndares usados en este ejemplo se destacan en verde.
function [ ] = pend()
clf
figure(1)
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 4/11
clf
%define la FT
num = [4.5455 0 0];
den =[1.0000 0.1818 -31.1818 -4.4545 0];
figure(1)
%pide al usuario controlador
numc = input('numc?.........');
denc = input('denc?.........');
k = input('K?............');
%muestra el bode del sistema compensado
bode(k*conv(numc,num), conv(denc,den))
%muestra el Nyquist del sistema compensado
figure(2)
subplot (2,1,1)
nyquist(k*conv(numc,num), conv(denc,den))
%muestra la respuesta LC del sistema al impulso (compensado)
subplot(2,1,2)
clnum = conv(num,denc);
temp1 = k*conv(numc,num);
temp2 = conv(denc, den);
clden = polyadd(temp1,temp2);
impulse (clnum,clden)
Nota: Los comandos Matlab de la toolbox de control de sistema se destacan en rojo.
Con este archivo-m observaremos ahora el diagrama de Nyquist del sistema sin compensar regulando la
ganancia del numerador y denominador del controlador, igual a uno. Ingrese pend en la ventana de comandos, e
ingrese 1 para numc, denc, y K. Debera verse en pantalla los grficos siguientes:
numc?.........1
denc?.........1
K?............1
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 5/11
Respuesta a lazo cerrado con compensacin
El sistema es inestable a lazo cerrado (no hay rodeos a -1). Nuestro primer paso ser agregar un integrador que
cancele el cero extra en el origen (entonces tendremos dos polos y dos ceros en el origen). Use el comando
pend de nuevo.
numc?.........1
denc?.........[1 0]
K?............1
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 6/11
Note que el diagrama de Nyquist rodea el punto -1 en un sentido a-reloj. Ahora tenemos dos polos en el
semiplano derecho (Z= P + N = 1 + 1). Necesitamos agregar fase para obtener un rodeo en contra-reloj. lo
haremos agregando un cero a nuestro controlador. Para los principiantes, ubicaremos este cero en -1.
numc?.........[1 1]
denc?.........[1 0]
K?............1
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 7/11
como puede ver, esto no trajo suficiente fase. El rodeo a -1 todava es a-reloj. vamos a necesitar agregar un
segundo cero.
numc?.........conv([1 1],[1 1])
denc?.........[1 0]
K?............1
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 8/11
An tenemos un rodeo del punto -1 a-reloj. Sin embargo, si agregamos algo de ganancia, podemos estabilizar al
sistema moviendo el diagrama de Nyquist a la izquierda, moviendo el crculo contra-reloj fuera de -1, de modo
que N = -1.
numc?.........conv([1 1],[1 1])
denc?.........[1 0]
K?............10
Como puede ver, el sistema ahora es estable. Ahora podemos concentrarnos en mejorar la respuesta. Para
lograrlo, podemos modificar los polos del controlador . Se debe tener en cuenta que polos pequeos (cerca del
origen) afectarn la respuesta a bajas frecuencias, mientras que polos grandes (lejos del origen) afectarn la
respuesta a altas frecuencias. Cuando se disea va respuesta en frecuencia, interesa obtener grficos simples, ya
que stos sern ms fciles de manipular para lograr nuestro objetivo de diseo. Por lo tanto, usaremos estos
conceptos para 'aplanar' la respuesta en frecuencia (diagrama de Bode). Al mismo tiempo, notar que el
diagrama de Nyquist adoptar una forma oval.
Si se prueba diferentes combinaciones de polos y ganancias, podemos obtener una respuesta muy razonable.
(Ingrese el comando axis([0 5 -0.05 0.1]) despus del comando pend.)
numc?.........conv([1 1.1],[1 5])
denc?.........[1 0]
K?............10
La respuesta satisfizo los objetivos de diseo. Sintase libre para variar los parmetros y observe qu sucede.
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 9/11
Qu sucede con la posicin del carro?
El diagrama en bloque para este problema se dio al principio de pgina. El mismo 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 pndulo. La funcin de
transferencia de la posicin del carro a la fuerza impulsiva, con la respuesta en frecuencia del controlador
realimentado que se ha diseado, se da como sigue:
Recordemos que den1=den2 (las dos funciones de transferencia G1 y G2 slo difieren en el numerador), de
modo que la funcin de transferencia de X a F puede simplificarse a:
Funcin de Transferencia
Ahora que tenemos la funcin de transferencia del sistema completo, echemos un vistazo a la respuesta. Primero
necesitamos la funcin de transferencia de la posicin del carro. Para obtenerlo necesitamos volver a las
ecuaciones en transformada Laplace del sistema y hallar la funcin de transferencia de X(s) a U(s). Esta funcin
de transferencia est abajo:
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 10/11
donde,
Si necesita ayuda acerca de la transformada de Laplace refirase por favor a modelado del pndulo invertido.
Se ha vuelto a introducir el polo/cero en el origen que fue cancelado en la funcin de transferencia de Phi, . De
modo que ahora den1 = den2, se har ms fcil el clculo. Ahora, cree un nuevo archivo-m 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;
k = 10;
numcontroller = conv([1 1.1],[1 5]);
dencontroller = [1 0];
numc = conv(numx,dencontroller);
denc = polyadd(conv(dencontroller,den),k*conv(numcontroller,num));
t=0:0.01:100;
impulse(numc,denc,t)
Como puede ver, el carrito se mueve en direccin negativa y se estabiliza cerca de los -0.18 metros. Este diseo
podra funcionar bastante bien para el controlador verdadero, asumiendo que el carrito tena mucho lugar para
moverse. Teniendo en mente, que esto fue suerte pura. No se tratar de disear nada para estabilizar la posicin
21/5/2014 CTM Ejemplo: Respuesta en Frecuencia: Control del Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/invFR.html 11/11
del carro, y el hecho es que tenemos es un efecto secundario fortuito.
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
Respuesta en Frecuencia : 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

You might also like