Sie sind auf Seite 1von 14

21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido

http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 1/14
Ejemplo de Control Digital: Pndulo Invertido Con
el Mtodo de Espacio de Estado
Espacio de estado Discreto
Controlabilidad y Observabilidad
Diseo del Controlador via Ubicacin de Polos
Entrada de Referencia
Diseo de Observadores
En esta versin de control digital del problema del pndulo invertido, usaremos el mtodo de espacio de estado
para disear el controlador digital. Si pincha en Pndulo Invertido : Modelacin , las ecuaciones de espacio de
estado se derivaron como
donde
M masa del carro 0.5 kg
m masa del pndulo 0.5 kg
b friccin del carro 0.1 N/m/sec
l longitud al centro de masa del pndulo 0.3 m
I inercia del pndulo 0.006 kg*m^2
u fuerza escaln aplicada al carro
x coordenadas de posicin del carro
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 2/14
phi ngulo del pndulo respecto de la vertical
las salidas son el desplazamiento del carro (x en metros) y el ngulo de deflexin del pndulo (phi en radianes).
Los requerimientos de diseo son
Tiempo de establecimiento para x y phi menores que 5 segundos
Tiempo de Subida para x menor que 1 segundo
Sobrepico de phi menor que 0.35 rad (20 grados)
error de estado estacionario de x y phi menor que el 2%
Espacio de estado Discreto
Lo primero a hacer es convertir las anteriores ecuaciones de espacio de estado continuas a espacio de estado
discreto . Para hacerlo, usaremos la funcin del Matlab denominada c2dm. Para usarlo c2dm, necesitamos
especificar seis argumentos: cuatro matrices de espacio de estado (A, B, C, y D), tiempo de muestreo (Ts en
seg/muestra), y el 'method'. Ya debera estar al tanto de cmo ingresar las matrices A, B, C, y D. El tiempo de
muestreo debera ser menor que 1/(30*BW) seg., donde BW es el ancho de banda a lazo cerrado . El mtodo
que usaremos es el mantenedor de orden cero ('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. Ya estamos listos para usar c2dm. Ingrese los
siguientes comandos a un archivo-m.
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 1 0 0;
0 -(i+m*l^2)*b/p (m^2*g*l^2)/p 0;
0 0 0 1;
0 -(m*l*b)/p m*g*l*(M+m)/p 0];
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;
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 3/14
[F,G,H,J]=c2dm (A,B,C,D,Ts,'zoh')
Corriendo este archivo-m, la ventana de comandos del Matlab le da las siguientes cuatro matrices.
F =
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
G =
0.0001
0.0182
0.0002
0.0454
H =
1 0 0 0
0 0 1 0
J =
0
0
Hemos obtenido el modelo en espacio de estado discreto
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
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 4/14
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. En un archivo-m nuevo, ingrese los siguientes
comandos y ejectelo en la ventana de comandos.
F = [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];
G = [0.0001;
0.0182;
0.0002;
0.0454];
H = [1 0 0 0;
0 0 1 0];
J = [0;
0];
co = ctrb (F,G);
ob = obsv (F,H);
Controllability = rank (co)
Observability = rank (ob)
En la ventana de comandos, debera ver
Controllability =
4
Observability =
4
Esto prueba que nuestro sistema discreto es de estado completamente controlable y de estado completamente
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 5/14
observable.
Diseo del Controlador via Ubicacin de Polos
El esquema de un sistema para relimentacin completa de estados se muestra abajo.
El paso siguiente es asumir que los cuatro estados son medibles, y encontrar la matriz de control (K). Si pincha
en Pndulo Invertido: Espacio de Estado de tiempo continuo, se us el mtodo Regulador Linear Cuadrtico
(LQR) para hallar la matriz de control (K). En esta versin digital, usaremos el mismo mtodo LQR. Este
mtodo le permite hallar la matriz de control ptima que resulta de algn balance entre los errores del sistema y
el esfuerzo de control. Para detalles, consulte su libro de control. Para usar el Mtodo LQR, necesitamos hallar
tres parmetros: la matriz ndice de performance (R), la matriz de costo de estado (Q), y factores de peso. Por
simplicidad, elegiremos la matriz ndice de performance igual a 1 (R=1), y la matriz de costo de estado (Q) igual
a H' x H. Los factores de peso sern elegidos por prueba-error. La matriz de costo de estado (Q) posee la
estructura siguiente
Q =
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
El elemento en la posicin 1,1 se usar para pesar la posicin del carro y el elemento en la posicin 3,3 se usar
para pesar el ngulo del pndulo. Los factores de peso para la posicin del carro y el ngulo del pndulo sern
elegidos individualmente.
Ahora estamos listos para hallar la matriz de control (K) y ver la respuesta del sistema. Ingrese los siguientes
comandos en un archivo-m nuevo y ejectelo en la ventana de comandos del Matlab. Debera verse la siguiente
respuesta al escaln .
T=0:0.01:5;
U=0.2*ones(size(T));
F = [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];
G = [0.0001;
0.0182;
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 6/14
0.0002;
0.0454];
H = [1 0 0 0;
0 0 1 0];
J = [0;
0];
x=1; %factor de peso para la posicin del carro
y=1; %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(F,G,Q,R)
[Y,X]=dlsim(F-G*K,G,H,J,U);
stairs(T,Y)
legend('Cart (x)','Pendulum (phi)')
Note: La funcin dlsim es la versin discreta del lsim y tiene similares caractersticas a dstep.
La curva verde representa el ngulo del pndulo, en radianes, y La curva azul representa la posicin del carro en
metros. Los sobrepicos del pndulo y del carro estn bin, pero sus tiempos de asentamiento deben mejorarse y
el tiempo de subida del carro debe bajarse. Adems el carro se ha movido, de hecho, en la direccin contraria.
Por ahora, nos concentraremos en mejorar los tiempos de asentamiento y de trepada, y luego corregiremos el
error de estado estacionario.
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 7/14
Incrementemos los factores de peso (x e y) y veamos si decrecen los tiempos de trepada y asentamiento.
Regrese a su archivo-m y cambie x e y a x=5000 e y=100. Luego de correr este archivo-m en la ventana de
comandos ver la siguiente (nueva) respuesta al escaln .
De esta figura, vemos que todos los requerimientos de diseo se han satisfecho excepto el error de estado
estacionario de la posicin del carro (x). Podemos sencillamente corregir esto introduciendo un factor de escala
de alimentacin directa (Nbar).
Entrada de Referencia
Diferente a otros mtodos de diseo, el sistema con realimentacin completa de estados no compara la salida
con la referencia; en su lugar, compara todos los estados multiplicados por la matriz de control (K*x) con la
referencia (vea el esquema de abajo). Por lo que, no debiramos esperar ver que la salida sea igual a la entrada.
Para obtener la salida deseada, necesitamos escalar la entrada de referencia de modo que la salida sea igual a la
referencia. Esto puede hacerse sencillamente introduciendo el factor de escala de alimentacin directa llamado
Nbar. Abajo se muestra el esquema bsico con Nbar.
Desgraciadamente, no podemos usar nuestra funcin rscale para hallar Nbar. Pero ciertamente podemos hallarla
por prueba y error. Luego de varias pruebas, un Nbar igual a -61.55 provee la respuesta satisfactoria. Pruebe el
siguiente archivo-m y obtenga la respuesta al escaln de abajo.
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 8/14
T=0:0.01:5;
U=0.2*ones(size(T));
F = [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];
G = [0.0001;
0.0182;
0.0002;
0.0454];
H = [1 0 0 0;
0 0 1 0];
J = [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(F,G,Q,R)
Nbar=-61.55;
[Y,X]=dlsim(F-G*K,G*Nbar,H,J,U);
stairs(T,Y)
legend('Cart (x)','Pendulum (phi)')
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 9/14
Note que el error de estado estacionario de la posicin del carro se ha eliminado. Ahora hemos diseado un
sistema que satisface todos los requerimientos de diseo.
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. para
mayores explicaciones sobre cmo trabaja un observador, consulte los libros de control.
Un esquema bsico del sistema planta-observador se muestra abajo.
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 10/14
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 F-G*K). Copie los siguientes comandos a un archivo-m
nuevo y ejectelo en la ventana de comandos del Matlab.
F = [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];
G = [0.0001;
0.0182;
0.0002;
0.0454];
H = [1 0 0 0;
0 0 1 0];
J = [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];
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 11/14
R = 1;
K = dlqr(F,G,Q,R);
polos = eig (F-G*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 . Ingrese los siguientes comandos en un archivo-m nuevo y
ejectelo.
F = [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];
H = [1 0 0 0;
0 0 1 0];
P = [-0.3 -0.31 -0.32 -0.33];
L = place (F',H',P)'
Debera verse la siguiente matriz L en la ventana de comandos.
L =
2.6310 -0.0105
172.8146 -1.3468
-0.0129 2.6304
-2.2954 173.2787
Ahora obtendremos la respuesta total del sistema, incluyendo el observador. Nuevamente, cree un nuevo
archivo-m y copie el siguiente cdigo.
T=0:0.01:5;
U=0.2*ones(size(T));
F = [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];
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 12/14
G = [0.0001;
0.0182;
0.0002;
0.0454];
H = [1 0 0 0;
0 0 1 0];
J = [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(F,G,Q,R)
Nbar = -61.55;
L = [2.6310 -0.0105;
172.8146 -1.3468;
-0.0129 2.6304;
-2.2954 173.2787;
Fce = [F-G*K G*K;
zeros(size(F)) (F-L*H)];
Gce = [G*Nbar;
zeros(size(G))];
Hce = [H zeros(size(H))];
Jce = [0;0];
[Y,X] = dlsim (Fce,Gce,Hce,Jce,U);
stairs (T,Y)
legend ('cart (x)','pendulum (phi)')
despus de haber corrido este archivo-m, debera obtenerse la siguiente respuesta al escaln .
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 13/14
Como habr notado, esta respuesta es casi la misma que antes, y se han satisfecho todos los requerimientos de
diseo.
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
Control Digital : Ejemplos
Control de Marcha:RL | Velocidad del Motor:PID | Posicin de un Motor:RL | Suspensin de un
Colectivo:SS | Pndulo Invertido:SS | Control de Inclinacin:SS | Barra y Bola:PID
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
21/5/2014 CTM: Ejemplo de Control Digital: Pndulo Invertido
http://www.ib.cnea.gov.ar/~instyctl/Tutorial_Matlab_esp/digINVSS.html 14/14

8/21/97 DK

Das könnte Ihnen auch gefallen