75797089 Ejercicios Controladores Pid

71
2011 Helmer Josué Tuz Poot Profesor:M.I.Alban Alejandro Ávila López 12/9/2011 Ejercicios de controladores

description

jewelry

Transcript of 75797089 Ejercicios Controladores Pid

Page 1: 75797089 Ejercicios Controladores Pid

2011

Helmer Josué Tuz Poot

Profesor:M.I.Alban Alejandro Ávila López

12/9/2011

Ejercicios de controladores

Page 2: 75797089 Ejercicios Controladores Pid

2

Índice Ejemplo 1: Modelación de un sistema de Control de Marcha Ejemplo 2: Modelación de Velocidad del Motor de DC Reconocimiento Físico y sistema de ecuaciones Ejemplo 3: Modelación de Posición de un Motor de DC Ejemplo 4: Modelación de un de Sistema de Suspensión Para un Bus usando Función de Transferencia Ejemplo 5: Modelación de un Control de Inclinación Ejemplo 6: Modelación del Experimento Barra y Bola Valores propuestos para cada ejercicio Bibliografía

Page 3: 75797089 Ejercicios Controladores Pid

3

Ejemplo 1.-

Modelación de un sistema de Control de Marcha

Reconocimiento Físico y sistema de ecuaciones

El modelo del sistema de control de marcha es relativamente simple. Si se desprecia la inercia de las ruedas, y si se asume que la fricción (la cual es proporcional a la velocidad del auto) es tal que se opone al movimiento del auto, entonces el problema se reduce al sistema simple de masa y resorte mostrado abajo.

Usando la ley de Newton, las ecuaciones de modelado para este sistema son:

(1)

Donde u es el esfuerzo del motor. Para este ejemplo, asumamos que: m = 1000kg b = 50N sec/m u = 500N

Requerimientos de diseño

El paso siguiente para modelar este sistema es incorporar algunos criterios de diseño. Cuando el motor proporciona una fuerza de 500 Newton, el auto alcanzará una velocidad máxima de 10 m/s (22 mph). Un auto debería poder

Page 4: 75797089 Ejercicios Controladores Pid

4

acelerar hasta esa velocidad en menos de 5 segundos. Como este es sólo un sistema de control de marcha, un 10% de sobrepico en la velocidad no hará mucho daño. Un 2% de error de estado estacionario es también aceptable por la misma razón.

Teniendo en mente lo anterior, hemos propuesto los siguientes criterios de diseño para este problema:

Tiempo de subida < 5 seg. Sobrepico < 10% Error de Estado Estacionario < 2%

Representación en Matlab

1. Función de Transferencia

Para hallar la función de transferencia del sistema continuo de arriba, necesitamos tomar la transformada de Laplace de las ecuaciones del modelo (1). Cuando se encuentra la función de transferencia, debe asumirse condiciones iniciales nulas. La transformada Laplace de las dos ecuaciones se muestra abajo.

Como nuestra salida es la velocidad, sustituyamos V(s) en términos de Y(s)

La función de transferencia del sistema es

Para resolver este problema usando Matlab.

m=1000; b=50; u=500; num=[1]; den=[m b];

Respuesta a lazo abierto

Page 5: 75797089 Ejercicios Controladores Pid

5

Ahora veamos cómo responde el sistema a lazo abierto a una entrada escalón. Copie el siguiente comando al final del archivo-m escrito para la función de transferencia (el archivo-m con las matrices num y den) y ejecútelo en la ventana de comandos del Matlab: step(u*num,den)

Debería obtenerse la figura siguiente:

Función de transferencia a Lazo Cerrado

Para resolver este problema y mejorar la performance del sistema, adicionaremos un controlador y una realimentación unitaria. La figura que se muestra abajo es el diagrama en bloque de un sistema típico.

La función de transferencia de la planta es la función de transferencia derivada arriba {Y(s)/U(s)=1/m.s + b}. El controlador se diseñará para satisfacer todos los criterios de diseño. Para la poder resolver el problema se usan controladores proporcional, integral y diferencial.

Page 6: 75797089 Ejercicios Controladores Pid

6

Función de transferencia de un PID.

Control proporcional

Función de transferencia a lazo cerrado con el controlador proporcional es:

Un controlador proporcional (Kp) decrementa el tiempo de elevación.

Por ahora, hagamos Kp igual a 100 y vea qué sucede con la respuesta. Representación de los comandos utilizados para el programa.

kp=100; m=1000; b=50; u=10; num=[kp]; den=[m b+kp]; t=0:0.1:20; step(u*num,den,t) axis([0 20 0 10])

Corriendo este programa en Matlab nos debe dar la siguiente respuesta al escalón.

Page 7: 75797089 Ejercicios Controladores Pid

7

Usando el comando cloop para hallar la respuesta a lazo cerrado directamente de la función de transferencia a lazo abierto. Si elige en hacerlo con el siguiente programa y debería obtenerse la misma figura coma la de abajo.

kp=100; m=1000; b=50; u=10; num=[1]; den=[m b]; [numc,denc]=cloop(kp*num,den,-1); t = 0:0.1:20; step (u*numc,denc,t) axis([0 20 0 10])

Como puede ver del gráfico, tanto el error de estado estacionario cuanto el tiempo de elevación no satisfacen nuestros criterios de diseño. Puede incrementar la ganancia proporcional (Kp) para mejorar la salida del sistema. Cambiando Kp = 10000, Debería verse la figura siguiente.

Control PI

La función de transferencia a lazo cerrado de este sistema de control de marcha con controlador PI es:

Page 8: 75797089 Ejercicios Controladores Pid

8

Un controlador integral al sistema elimina el error de estado estacionario. Por ahora, haga Kp = 600 y Ki = 1 y vea qué sucede con la respuesta.

kp = 600; ki = 1; 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 función 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, debería obtenerse la siguiente salida:

Page 9: 75797089 Ejercicios Controladores Pid

9

Ahora ajustemos tanto la ganancia proporcional (Kp) cuanto la ganancia integral (Ki) para obtener la respuesta deseada. Cuando usted ajuste la ganancia integral (Ki), mejor que empiece con un valor chico, ya que grandes (Ki) casi siempre inestabilizan la respuesta.

Con Kp igual a 800 y Ki igual a 40, la respuesta al escalón lucirá como la siguiente:

Page 10: 75797089 Ejercicios Controladores Pid

10

Como puede ver, esta respuesta al escalón cumple con todos los criterios de diseño.

Control PID

Para este ejemplo particular, no se requirió la implementación de un controlador derivativo para obtener una salida acorde con lo requerido. Sin embargo, quisiera ver cómo trabajar con un controlador PID para futuras referencias. La función 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])

Page 11: 75797089 Ejercicios Controladores Pid

11

Luego de correr este programa nos debería dar la respuesta al escalón 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 cómo cambiando sólo esa, se influye en la salida del sistema.

Page 12: 75797089 Ejercicios Controladores Pid

12

Ejemplo 2.- Modelación de Velocidad del Motor de DC

Reconocimiento Físico y sistema de ecuaciones

El motor de DC es un actuador común en control sistemas. Provee movimiento rotatorio directamente y, acoplado con ruedas dentadas o poleas y cables, puede proveer movimiento transicional. El circuito eléctrico de la armadura y el diagrama de cuerpo libre del rotor se muestran en la siguiente figura:

Para este ejemplo, asumimos los valores siguientes para los parámetros físicos. Estos valores se derivaron experimentalmente de un motor real del laboratorio de control para alumnos de grado del Carnegie Mellon.

momento de inercia del rotor (J) = 0.01 kg.m^2/s^2 coeficiente de amortiguamiento del sistema mecánico (b) = 0.1 Nms constante de fuerza electromotriz (K=Ke=Kt) = 0.01 Nm/Amp resistencia eléctrica (R) = 1 ohm inductancia eléctrica (L) = 0.5 H entrada (V): Fuente de Tensión salida (theta): posición del eje el rotor y eje se consideran rígidos

El torque del motor, T, se relaciona con la corriente de armadura, i, por un factor constante Kt. La fuerza contra electromotriz (fme), e, se relaciona con la velocidad de rotación mediante las siguientes ecuaciones

Page 13: 75797089 Ejercicios Controladores Pid

13

En unidades del sistema internacional SI (las que usaremos), la Kt (constante de armadura) es igual a Ke (constante del motor).

De la figura de arriba podemos escribir las siguientes ecuaciones basadas en la ley de Newton combinado con la ley de Kirchhoff:

Función de Transferencia

Usando Transformadas de Laplace, las ecuaciones del modelo de arriba pueden expresarse en términos de s.

Eliminando I(s) podemos obtener la siguiente función de transferencia a lazo abierto, donde la velocidad de rotación es la salida y el voltaje es la entrada.

Espacio de Estado

En la forma espacio de estado, las ecuaciones de arriba pueden expresarse escogiendo la velocidad de rotación y corriente eléctrica como las variables de estado y la tensión como una entrada. La salida se elige que sea la velocidad de rotación.

Requerimientos de diseño

Primero, el motor sin compensar puede rotar solo a 0.1 rad/seg. Con una tensión de entrada de 1 Volt (esto se demostrará luego cuando se simule la respuesta a lazo abierto). Como el requerimiento más básico 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

Page 14: 75797089 Ejercicios Controladores Pid

14

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 podría dañar el equipo, queremos tener un sobrepico menor que 5%.

Si simulamos la entrada de referencia (r) con una entrada escalón unitario, entonces la salida velocidad del motor debería tener:

Tiempo de establecimiento menor que 2 segundos Sobrepico menor que 5% error de estado estacionario menor que 1%

Representación en Matlab y respuesta a lazo abierto

Función de Transferencia

Podemos representar la función de transferencia anterior en Matlab definiendo las matrices numerador y denominador como sigue:

Programa para hallar la función de transferencia de lazo abierto.

J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];

Ahora veamos qué hace el sistema original a lazo abierto. Agregue los siguientes comandos y ejecutarlo.

step(num,den,0:0.1:3) title('Respuesta al Escalón del sistema a lazo abierto')

Debería obtenerse la figura siguiente:

Page 15: 75797089 Ejercicios Controladores Pid

15

De la figura vemos que cuando se aplica 1 volt al sistema, el motor puede lograr solo una velocidad máxima de 0.1 rad/seg., diez veces menor que la velocidad deseada. Además, 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 también 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.

A partir del problema principal, las ecuaciones dinámicas y la función transferencia a lazo abierto del Motor de DC son:

Page 16: 75797089 Ejercicios Controladores Pid

16

y el esquema del sistema se ve:

Los criterios de diseño con una entrada escalón de 1 rad/seg. Son:

Tiempo de establecimiento menor que 2 segundos Sobrepico menor que 5% Steady-stage error menor que 1%

Diseñemos ahora un controlador PID adicionémoslo al sistema. Cree primero un archivo-m nuevo y tipee los siguientes comandos (pinche en Modelación del motor de cc por detalles sobre estos comandos).

J=0.01; b=0.1; K=0.01; R=1; L=0.5; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];

Recordemos que la función de transferencia para un controlador PID es:

Control proporcional

Tratemos de usar primero un controlador proporcional con una ganancia de 100. Agregue el siguiente código al final de su archivo-m:

Page 17: 75797089 Ejercicios Controladores Pid

17

Kp=100; numa=Kp*num; dena=den;

Para hallar la función de transferencia a lazo cerrado, usamos el comando cloop . Agregue la siguiente línea a su archivo-m:

[numac,denac]=cloop(numa,dena);

Note que numac y denac son el numerador y el denominador de la función de transferencia a lazo cerrado general.

Ahora veamos cómo se ve la respuesta al escalón, agregue lo siguiente al final de su archivo-m, y ejecútelo en la ventana de comandos:

t=0:0.01:5; step(numac,denac,t) title('Respuesta al escalón con Control Proporcional')

Debería obtenerse la figura siguiente:

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 término integral se eliminará el error de estado estacionario y un término

Page 18: 75797089 Ejercicios Controladores Pid

18

derivativo reducirá el sobrepico. Probemos un controlador PID con Ki y Kd pequeños. 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.01; b=0.1; K=0.01; R=1; L=0.5; 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 pequeño Ki and Kd')

Sintonización de ganancias

Ahora el tiempo de establecimiento es muy largo. Incrementemos Ki para reducir el tiempo de establecimiento. Regrese Al programa anterior y cambie Ki a 200. Vuelva a ejecutar el archivo y debería obtenerse un gráfico como éste:

Page 19: 75797089 Ejercicios Controladores Pid

19

Ahora vemos que la respuesta es mucho más rápida 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 gráfico:

Entonces sabemos que si usamos un controlador PID con

Kp=100, Ki=200, Kd=10,

Page 20: 75797089 Ejercicios Controladores Pid

20

Todos nuestros requerimientos de diseño serán satisfechos.

Ejemplo 3.-Modelación de Posición de un Motor de DC

Reconocimiento físico

El motor de DC es un actuador común en control sistemas. Provee movimiento rotatorio directamente y, acoplado con ruedas dentadas o poleas y cables, puede proveer movimiento transicional. El circuito eléctrico de la armadura y el diagrama de cuerpo libre del rotor se muestran en la siguiente figura:

Para este ejemplo, asumimos los valores siguientes para los parámetros físicos. Estos valores se derivaron experimentalmente de un motor real del laboratorio de control para alumnos de grado del Carnegie Mellon.

momento de inercia del rotor (J) = 0.01 kg.m^2/s^2 coeficiente de amortiguamiento del sistema mecánico (b) = 0.1 Nms constante de fuerza electromotriz (K=Ke=Kt) = 0.01 Nm/Amp resistencia eléctrica (R) = 1 ohm inductancia eléctrica (L) = 0.5 H entrada (V): Fuente de Tensión salida (theta): posición del eje el rotor y eje se consideran rígidos

Page 21: 75797089 Ejercicios Controladores Pid

21

Ecuaciones del Sistema

El torque del motor, T, se relaciona con la corriente de armadura, i, por un factor constante Kt. La fuerza contra electromotriz (fme), e, se relaciona con la velocidad de rotación mediante las siguientes ecuaciones

En unidades del sistema internacional SI (las que usaremos), Kt (constante de armadura) es igual a Ke (constante del motor).

De la figura de arriba podemos escribir las siguientes ecuaciones basadas en la ley de Newton combinado con la ley de Kirchhoff:

1. Función de Transferencia

Usando Transformadas de Laplace las ecuaciones del modelo de arriba pueden expresarse en términos de s.

Eliminando I(s) podemos obtener la siguiente función de transferencia, donde la velocidad de rotación es la salida y la tensión es una entrada.

Sin embargo como durante este ejemplo estamos mirando a la posición, como que es la salida. Podemos obtener la posición integrando Theta Punto, por lo tanto solo necesitamos dividir la función de transferencia por s.

Page 22: 75797089 Ejercicios Controladores Pid

22

2. Espacio de Estado

Estas ecuaciones pueden también representarse en la forma espacio de estado. Si elegimos posición del motor, velocidad del motor, y corriente de armadura como las variables de estado, podemos escribir las ecuaciones como sigue:

Requerimientos de diseño

Quisiéramos poder posicionar muy precisamente al motor, entonces el error de estado estacionario de la posición del motor debería ser cero. Además quisiéramos que el error de estado estacionario debido a una perturbación también sea nulo. El otro requerimiento a la performance es que el motor alcance muy rápidamente su posición 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 escalón unitario, entonces la salida velocidad del motor debería tener:

Tiempo de establecimiento menor que 40 milisegundos Sobrepico menor que 16% Error de estado estacionario nulo Sin error de estado estacionario debido a una perturbación

Representación en Matlab y respuesta a lazo abierto

1. Función de Transferencia

Podemos poner la función de transferencia en Matlab definiendo el numerador y el denominador como vectores:

Variables del programa:

J=3.2284E-6; b=3.5077E-6;

Page 23: 75797089 Ejercicios Controladores Pid

23

K=0.0274; R=4; L=2.75E-6; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0];

Ahora veamos qué hace el sistema original a lazo abierto. Con la siguiente variable.

step(num,den,0:0.001:0.2)

Debería obtenerse la figura siguiente:

De la figura vemos que cuando se aplica 1 volt al sistema, la posición del motor cambia en 6 radianes, seis veces mayor que la posición deseada. Para una entrada escalón de 1 volt, el motor debe girar alrededor de 1 radian. Además, el motor alcanza un estado estacionario que no satisface los criterios de diseño.

A partir del problema principal las ecuaciones dinámicas en la forma función de transferencia son las siguientes:

Page 24: 75797089 Ejercicios Controladores Pid

24

y el esquema del sistema se ve:

Con una referencia escalón de 1 rad/seg., los criterios de diseño son:

Tiempo de establecimiento menor que 0.04 segundos Sobrepico menor que 16% No error de estado estacionario No error de estado estacionario debido a una perturbación

Programa de la función de transferencia:

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];

Recordemos que la función de transferencia para un controlador PID es:

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 función de transferencia a lazo cerrado, usamos el comando cloop .

[numc,denc]=cloop(numf,denf);

Page 25: 75797089 Ejercicios Controladores Pid

25

Note que numc y denc son el numerador y el denominador de la función de transferencia a lazo cerrado general.

Ahora veamos cómo luce la respuesta al escalón. Agregando como ultimo los comandos siguientes:

t=0:0.001:0.2; step(numc,denc,t)

Debería obtenerse la figura siguiente:

Veamos ahora la respuesta a una perturbación escalón agregando los siguientes comandos:

numdcl=conv(numc,1); dendcl=conv(denc,Kp); step(numdcl,dendcl,t);

Debería obtenerse la figura siguiente:

Page 26: 75797089 Ejercicios Controladores Pid

26

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. También vemos que el error de estado estacionario a una perturbación es grande. Recordemos del PID, que incorporando un término integral se elimina el error de estado estacionario y un término derivativo reducirá el sobrepico. Probemos primero el controlador PI para anular el error de estado estacionario a la perturbación. 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)

Debería obtenerse la siguiente respuesta al escalón:

Page 27: 75797089 Ejercicios Controladores Pid

27

Veamos que ha sucedido con la respuesta a una perturbación escalón, agregue lo siguiente a su archivo-m:

figure numdcl=conv(numc,dencf); dendcl=conv(denc,numcf); step(numdcl,dendcl,t);

Debería obtenerse la figura siguiente:

Sintonización de ganancias

Page 28: 75797089 Ejercicios Controladores Pid

28

El tiempo de establecimiento todavía 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 gráficos como estos:

Ahora vemos que la respuesta es más rápida que antes, pero Ki ha estropeado la respuesta transitoria (sobrepico grande). Intentemos con un controlador PID para reducir el sobrepico. Regrese al programa anterior y efectúe las siguientes modificaciones para ver la respuesta al escalón.

Kp=17; Ki=200; Kd=0.15; numcf=[Kd Kp Ki]; dencf=[1 0]; numf=conv(numcf,num); denf=conv(dencf,den);

Page 29: 75797089 Ejercicios Controladores Pid

29

[numc,denc]=cloop(numf,denf,-1); t=0:0.001:0.1; step(numc,denc,t)

Ejecútelo de nuevo y obtenga esta figura:

Vemos que nuestra respuesta al escalón se vé realmente bién, tiene un sobrepico menor que el 16%, y el tiempo de establecimiento es cercano a los 40ms, y hay error de estado estacionario cero. Sin embargo la respuesta a una perturbación escalón ahora es lentísima. Incrementemos Ki para acelerar la respuesta a la perturbación. Modifique Ki a 600 y vuelva a correr el programa. Debería obtenerse los gráficos siguientes:

Page 30: 75797089 Ejercicios Controladores Pid

30

Ejemplo 4.- Modelación de un de Sistema de Suspensión para un Bus usando Función de Transferencia

Reconocimiento Físico

El diseño de un sistema de suspensión automático para un colectivo se vuelve un problema de control interesante. Cuando se diseña el sistema de suspensión, se usa 1/4 del modelo del colectivo (una de las cuatro ruedas) para simplificar el problema a un sistema masa-resorte unidimensional. Abajo aparece un diagrama de este sistema:

Page 31: 75797089 Ejercicios Controladores Pid

31

Dónde: * masa del cuerpo (m1) = 2500 kg, * masa suspendida (m2) = 320 kg, * constante de elasticidad del sistema de suspensión(k1) = 80,000 N/m, * constante de elasticidad rueda y neumático(k2) = 500,000 N/m, * constante de amortiguación del sistema de suspensión(b1) = 350 Ns/m. * constante de amortiguación rueda y neumático(b2) = 15,020 Ns/m. * fuerza de control (u) = fuerza del controlador que estamos diseñando.

Requerimientos de diseño:

Un buen sistema de suspensión debería 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 perturbación en el camino (es decir, rajaduras, pavimento no balanceado),la carrocería del colectivo no debe sufrir grandes oscilaciones, y las mismas deben disiparse rápido. Como la distancia X1-W es muy difícil de medir, y la deformación del neumático(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 estimación.

La perturbación del camino (W) en este problema se simulará por una entrada escalón. Este escalón podría representar al colectivo saliendo de un pozo. Queremos diseñar 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 escalón de 10 cm, la carrocería del colectivo oscilará en un rango de +/- 5 mm y volverá a una marcha suave dentro de 5 segundos.

Ecuaciones del movimiento:

De la figura de arriba y de la ley de Newton, podemos obtener las ecuaciones dinámicas siguientes:

Page 32: 75797089 Ejercicios Controladores Pid

32

Ecuación de Función de Transferencia:

Asuma que todas las condiciones iniciales son nulas, así que estas ecuaciones representan la situación de cuando las ruedas del colectivo suben una loma. Las ecuaciones dinámicas de arriba pueden expresarse en la forma de matriz de transferencia tomando Transformada de Laplace de las ecuaciones de arriba. La derivación de las Funciones de Transferencia G1(s) y G2(s) de salida, X1-X2, y dos entradas, U y W, son como sigue.

Halle la inversa de la matriz A y entonces multiplique a derecha por las entradas U(s)y W(s) como lo siguiente:

Cuando queremos considerar una sola entrada U(s) , hacemos W(s) = 0. Por lo que obtenemos la función de transferencia G1(s) como sigue:

Page 33: 75797089 Ejercicios Controladores Pid

33

Cuando queremos considerar la entrada W(s) sola, hacemos U(s) = 0. Por lo que obtenemos la función de transferencia G2(s) como sigue:

También podemos expresar y derivar las ecuaciones de arriba en la forma espacio de estado. A pesar que este procedimiento expresará las primeras dos ecuaciones arriba en la forma matricial estándar, se simplificará la función de transferencia sin pasar por el álgebra, porque podemos usar una función ss2tf para pasar de la forma espacio de estado a forma función de transferencia para ambas entradas

Ingreso de ecuaciones en Matlab

Podemos poner las ecuaciones de Función de Transferencia de arriba en el Matlab definiendo el numerador y denominador de las Funciones de Transferencia en la forma, nump/denp para fuerza de entrada actuante y num1/den1 para la entrada de perturbación , de la función de transferencia estándar G1(s) y G2(s):

G1(s) = nump/denp G2(s) = num1/den1

Comandos del programa:

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];

Page 34: 75797089 Ejercicios Controladores Pid

34

'G(s)2' printsys(0.1*num1,den1)

Respuesta a lazo abierto

Podemos usar Matlab para mostrar cómo evoluciona el sistema original a lazo abierto (sin ningún control por realimentación). Agregue los siguientes comandos al programa y ejecútelo para ver la respuesta a la fuerza actuante de entrada escalón unitario y también perturbación de entrada escalón unitario .Note que el comando step generará las entrada escalón unitario para cada entrada.

step(nump,denp)

La grafica nos queda de la siguiente manera:

De este gráfico de la respuesta a lazo abierto para una fuerza actuante escalón unitario, podemos ver que el sistema es sub-amortigüado. La gente sentada en el colectivo sentirá apenas una pequeña oscilación y el error de estado estacionario ronda los 0.013 mm. Pero aún, el colectivo se toma un inaceptablemente largo tiempo en alcanzar el estado estacionario o el tiempo de establecimiento es muy largo. La solución a este problema es agregar un controlador realimentado en el diagrama en bloques del sistema.

step(0.1*num1,den1)

Page 35: 75797089 Ejercicios Controladores Pid

35

Para ver algunos detalles, puede cambiar los ejes: axis([0 10 -.1 .1])

De este gráfico de respuesta a lazo abierto para una perturbación escalón de 0.1 m , podemos ver que cuando el colectivo pasa sobre una loma alta de 10 cm en el camino, la carrocería 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 oscilación. El gran sobrepico (del mismo impacto) y el lento tiempo de establecimiento causará daño al sistema de suspensión. La solución 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:

Page 36: 75797089 Ejercicios Controladores Pid

36

De la función de transferencia y esquema de arriba, podemos dibujar el diagrama en bloques del sistema del colectivo como sigue:

Del esquema de arriba vemos que:

Plant = nump/denp F * Plant=num1/den1

De modo que:

F=num1/(den1*Plant)

Ejemplo 5.-Modelación de un Control de Inclinación

Reconocimiento Físico y sistema de ecuaciones

Las ecuaciones que gobiernan el movimiento de un avión es un conjunto de seis ecuaciones diferenciales no lineales acopladas muy complicado. Sin embargo,

Page 37: 75797089 Ejercicios Controladores Pid

37

bajo ciertas consideraciones, pueden linealizarse y desacoplarse en las ecuaciones longitudinal y lateral. El control de Inclinación es el problema longitudinal, y en este ejemplo, diseñaremos un piloto automático que controla la elevación de un avión (inclinación entre cola y proa).

Las coordenadas básicas y las fuerzas actuantes en un avión se muestran en la figura de abajo:

Asuma que el avión está en estado nominal (crucero) a altitud y velocidad constantes; esto es, se cancelan el empuje y el arrastre, y el esfuerzo elevador y el peso se contrarrestan mutuamente. Además, asuma que un cambio en el ángulo de inclinación vertical no cambia la velocidad de un avión bajo ninguna circunstancia (no es lo real pero simplifica bastante el problema). Bajo estas consideraciones, la ecuación longitudinal de movimiento del avión puede escribirse como:

(1)

Para este sistema, la entrada será el ángulo de deflexión del elevador, y la salida será el ángulo de inclinación vertical.

Requerimientos de diseño

El paso siguiente es establecer algunos criterios de diseño. Queremos diseñar 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 inclinación vertical no excederá los 0.22 rad, llegando a 0.2 rad antes de los 2 segundos, y

Page 38: 75797089 Ejercicios Controladores Pid

38

permaneciendo dentro del 2% del estado estacionario a los 10 segundos, o sea permanece entre 0.196 a 0.204 rad. a partir del estado estacionario.

Sobrepico: Menor que el 10% Tiempo de Subida: Menor que 2 segundos Tiempo de establecimiento: Menor que 10 segundos error de estado estacionario: Menor que el 2%

Función de Transferencia y Espacio de Estado

Antes de hallar la función de transferencia y el modelo en espacio de estado, introduzcamos algunos valores numéricos para simplificar las ecuaciones del modelo (1) de abajo.

(2)

Estos valores se tomaron de los datos de un avión comercial de la Boeing.

1. Función de Transferencia

Para hallar la función 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 función de transferencia, debe asumirse condiciones iniciales nulas. La transformada de Laplace de las ecuaciones de arriba se muestra abajo

Luego de un trabajo algebraico, obtendrá la siguiente función de transferencia.

2. Espacio de estado

Conociendo el hecho de que las ecuaciones del modelo (2) ya están en la forma en variables de estado, podemos re-escribirlas en el modelo en espacio de estado.

Page 39: 75797089 Ejercicios Controladores Pid

39

Como nuestra salida es el ángulo de inclinación vertical, la ecuación de salida es:

Representación en Matlab y respuesta a lazo abierto

Obtengamos primero un sistema a lazo abierto a una entrada escalón y determinemos cuáles características del sistema necesitan mejorarse. Ponga la entrada (delta e) en 0.2 rad (11 grados).

de=0.2; num=[1.151 0.1774]; den=[1 0.739 0.921 0]; step (de*num,den)

Corriendo este archivo-m, la ventana de comandos del Matlab le debería dar la figura siguiente.

Page 40: 75797089 Ejercicios Controladores Pid

40

De la figura, vemos que la respuesta a lazo abierto no satisface para nada el criterio de diseño. De hecho la respuesta a lazo abierto es inestable.

El programa de arriba usa los valores numéricos de la función de transferencia. Para usar el modelo en espacio de estado, ingresando los siguientes comandos en el programa anterior (en lugar del de abajo).

de=0.2; A=[-0.313 56.7 0; -0.0139 -0.426 0; 0 56.7 0]; B=[0.232; 0.0203; 0]; C=[0 0 1]; D=[0]; step(A,B*de,C,D)

Debería obtenerse la misma respuesta que la de abajo.

Función de transferencia a Lazo Cerrado usando un controlador

Para resolver este problema, se adicionará un controlador en realimentación para mejorar la performance del sistema. La figura que se muestra abajo es el diagrama en bloque de un sistema típico con realimentación unitaria.

Page 41: 75797089 Ejercicios Controladores Pid

41

Debe diseñarse un controlador para que la respuesta al escalón satisfaga todos los requerimientos de diseño.

En la Modelación del Control de Inclinación, la función de transferencia se derivó como

La entrada (ángulo de deflexión del elevador, delta e) será 0.2 rad (11 grados), y la salida es el ángulo de inclinación vertical (theta).

Los requerimientos de diseño son

Sobrepico: Menor que el 10% Tiempo de Subida: Menor que 2 segundos Tiempo de establecimiento: Menor que 10 segundos error de estado estacionario: Menor que el 2%

La función de transferencia de un controlador PID es:

Para estudiar la salida del sistema, implementaremos una combinación de controladores proporcional (Kp), integral (Ki), y derivativo (Kd) en un sistema de realimentación unitaria tal como se muestra abajo.

Control proporcional Lo primero a resolver en este problema es hallar la función de transferencia a lazo cerrado con un control proporcional (Kp). Ésta puede obtenerse ya sea a mano o con la función del Matlab denominada cloop. Por cualquier método, se obtendrá la función de transferencia a lazo cerrado como:

Coeficientes numéricos del numerador y denominador de la función de transferencia a lazo cerrado.

Kp = [1]; %Ingrese cualquier número para la ganancia proporcional num = [1.151 0.1774]; num1= conv(Kp,num); den1= [1 0.739 0.921 0]; [numc,denc]=cloop (num1,den1)

Page 42: 75797089 Ejercicios Controladores Pid

42

Por ahora, haga la ganancia proporcional (Kp) igual a 2 y observe el comportamiento del sistema. Se usará la función de transferencia a lazo cerrado calculada a mano. Ingrese los siguientes comandos en el programa anterior y ejecútelo en la ventana de comandos del Matlab. Debería obtener la respuesta al escalón similar a la que se ve abajo:

de = 0.2; Kp = 2; numc=Kp*[1.151 0.1774]; denc=[1 0.739 1.151*Kp+0.921 0.1774*Kp]; t=0:0.01:30; step (de*numc,denc,t)

Como ve, tanto el sobrepico cuanto el tiempo de establecimiento necesitan alguna mejora.

Control PD

Recordemos del Tutorial PID , el controlador derivativo reducirá tanto el sobrepico cuanto el tiempo de establecimiento. Probemos un Controlador PD. La función de transferencia a lazo cerrado del sistema con un Controlador PD es:

Usando los comandos de abajo y luego de un proceso de prueba y error, una ganancia proporcional (Kp) de 9 y una ganancia derivativa (Kd) de 4 proveen una razonable respuesta. Para confirmarlo, cambie su archivo-m al siguiente y ejecútelo en la ventana de comandos del Matlab. Debería obtener la respuesta al escalón similar a la de abajo:

Page 43: 75797089 Ejercicios Controladores Pid

43

de=0.2; Kp=9; Kd=4; numc=[1.151*Kd 1.151*Kp+0.1774*Kd 0.1774*Kp]; denc=[1 0.739+1.151*Kd 0.921+1.151*Kp+0.1774*Kd 0.1774*Kp]; t=0:0.01:10; step (de*numc,denc,t)

Esta respuesta al escalón muestra un tiempo de elevación menor que 2 segundos, el sobrepico menor que 10%, tiempo de establecimiento menor que 10 segundos, y el error de estado estacionario menor que 2%. Todos los requerimientos de diseño se satisfacen.

Control PID

A pesar que todos los requerimientos de diseño están 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 prueba-error, la ganancia proporcional (Kp) de 2, la ganancia integral (Ki) de 4, y la ganancia derivativa (Kd) de 3 proveen respuesta al escalón más suave que aún satisface todos los requerimientos de diseño. Para confirmarlo, se tiene el programa siguiente. Debería obtener la respuesta al escalón de abajo:

Esta vez usaremos la función cloop para hallar la función de transferencia a lazo cerrado , y entonces obtener la respuesta al escalón .

de=0.2; Kp=2; Kd=3; Ki=4;

Page 44: 75797089 Ejercicios Controladores Pid

44

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)

Ejemplo 6.-Modelación del Experimento Barra y Bola

Condiciones del Problema

Se coloca una bola sobre una barra, ver figura abajo, donde se permite rodar con 1 grado de libertad a lo largo de la barra. Se adiciona un brazo de palanca a la barra en uno de sus extremos y un servo engranaje en el otro. A medida que el servo engranaje gira un ángulo theta, la palanca cambia el ángulo de la barra en alpha. Cuando se cambia el ángulo a partir de la posición vertical, la gravedad ocasiona que la bola ruede a lo largo de la barra. Debe diseñarse un controlador para este sistema de modo que pueda manipularse la posición de la bola.

Page 45: 75797089 Ejercicios Controladores Pid

45

Para este problema, asumimos que la bola rueda sin resbalamiento y la fricción entre la barra y bola es despreciable. Las constantes y variables para este ejemplo se definen como sigue:

M masa de la bola 0.11 kg

R radio de la bola 0.015 m

d offset de brazo de palanca 0.03 m

g aceleración gravitacional 9.8 m/s^2

L longitud de la barra 1.0 m

J momento de inercia de la bola 9.99e-6 kgm^2

r coordenada de posición de la bola

alpha coordenada angular de la barra

theta ángulo del servo engranaje

Los criterios de diseño para este problema son: Tiempo de Establecimiento menor que 3 segundos Sobrepico menor que 5%

Ecuaciones del Sistema

El movimiento para la bola está dado por la siguiente ecuación:

La linealización de esta ecuación alrededor del ángulo de la barra , alpha = 0, nos da la siguiente aproximación lineal del sistema:

Page 46: 75797089 Ejercicios Controladores Pid

46

La ecuación que relaciona el ángulo de la barra con el ángulo del engranaje

puede aproximarse a una relación lineal mediante la ecuación de abajo:

Sustituyéndola en la ecuación previa, tenemos:

1. Función de Transferencia

Tomando transformada de Laplace de la ecuación de arriba, se encuentra la siguiente ecuación:

NOTA: Cuando se toma Transformada de Laplace para hallar la función de transferencia se asume que las condiciones iniciales son nulas.

Reacomodando encontramos la función de transferencia del ángulo del engranaje (theta(s)) a la posición de la bola (R(s)).

Debe notarse que la función de transferencia de la planta de arriba es un doble integrador. Como ésta es marginalmente estable nos proveerá de un arduo problema de control.

2. Espacio de Estado

El sistema de ecuaciones linealizado puede representarse también en la forma espacio de estado. Esto puede hacerse seleccionando la posición de la bola (r) y velocidad (rdot, por r punto) como las variables de estado y el ángulo del

Page 47: 75797089 Ejercicios Controladores Pid

47

engranaje (theta) como la entrada. La representación espacio de estado se muestra abajo:

Sin embargo, para nuestro ejemplo de espacio de estado usaremos un modelo ligeramente diferente. La misma ecuación se aplica todavía para la bola pero en lugar de controlar la posición a través del ángulo del engranaje, theta, controlaremos alfa doble punto. Esto es esencialmente el control del torque de la barra. La representación de

Este sistema se muestra abajo:

Representación en Matlab y Respuesta a Lazo Abierto

1. Función de Transferencia

Page 48: 75797089 Ejercicios Controladores Pid

48

La función de transferencia encontrada a partir de la transformada de Laplace puede implementarse en Matlab entrando el numerador y el denominador como vectores. Para lograrlo debemos crear un programa como se muestra a continuación.

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)); num = [-K]; den = [1 0 0]; printsys(num,den)

La salida debería ser:

num/den = 0.21 / s^2

Ahora, le gustaría observar la respuesta de la bola a una entrada escalón de 0.25 m . Para hacerlo necesitará agregar la siguiente linea al programa:

step(0.25*num,den)

Debería verse la figura siguiente mostrando las posiciones de la bola como función del tiempo:

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 algún método para controlar la posición de la bola en este sistema. Abajo se listan tres ejemplos de

Page 49: 75797089 Ejercicios Controladores Pid

49

diseño del controlador para el problema de la FT. Puede elegir entre PID, Lugar de Raíces, 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 0 0 H 0 0 0 0 1 0 0 0 0]; B=[0;0;0;1]; C=[1 0 0 0]; D=[0];

La respuesta al escalón de 0.25m (posición deseada) puede verse corriendo el comando siguiente:

step(A,B*.25,C,D)

La salida debería verse como la de abajo:

Page 50: 75797089 Ejercicios Controladores Pid

50

Al igual que el esquema para la función de transferencia, esta figura muestra que el sistema es inestable y que la bola se va a salir de la barra. Por lo tanto, requerimos algún método de control de la posición de la bola en este sistema. Abajo se muestra el ejemplo de cómo implementar un controlador en Espacio de Estado para este tipo de sistema.

Solución al Problema de la Barra y Bola Usando Control PID

La función de transferencia a lazo abierto de la planta para experimento de la barra y bola se da abajo:

Los criterios de diseño para este problema son:

Tiempo de establecimiento menor que 3 segundos Sobrepico menor que 5%

Representación a Lazo Cerrado

El diagrama en bloque para este ejemplo con un controlador y realimentación unitaria de la posición de la bola se muestra abajo:

Page 51: 75797089 Ejercicios Controladores Pid

51

Primero estudiaremos la respuesta del sistema mostrado abajo cuando se usa un controlador proporcional. Entonces, se adicionará si es necesario control integral y/o derivativo.

Recordemos, que la función de transferencia para un controlador PID es:

Control Proporcional

La función 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 deberían ser:

numc = 0 0 0.2100 denc = 1.0000 0 0.2100

Ahora, podemos modelar la respuesta del sistema a una entrada escalón de 0.25 m. Agregue la siguiente línea de código a su archivo-m y ejecútelo:

step(0.25*numc,denc)

Debería obtenerse la siguiente salida:

Page 52: 75797089 Ejercicios Controladores Pid

52

Como puede ver la adición de ganancia proporcional no estabiliza el sistema. Pruebe cambiando el valor de kp y note que el sistema permanece inestable. Se probó con los otros valores y el sistema sigue inestable.

Control Proporcional-Derivativo

Ahora, agregaremos un término derivativo al controlador. Con este programa veremos si el sistema queda estable.

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 = 10; kd = 10; numPD = [kd kp]; numh = conv(num, numPD); [numc, denc] = cloop(numh, den); t=0:0.01:5; step(0.25*numc,denc,t)

El diagrama debería ser similar al siguiente:

Page 53: 75797089 Ejercicios Controladores Pid

53

Ahora el sistema es estable pero el sobrepico es demasiado alto y el tiempo de asentamiento necesita bajarse un poco. De la página tutorial de PID en la sección de características de controladores P, I, y D , vemos que incrementando kd podemos bajar el sobrepico y disminuir apenas el tiempo de establecimiento. Por lo tanto, haga kd = 20 y la salida debería ser:

El criterio de sobrepico está logrado pero el tiempo de establecimiento necesita bajarse un poco. Para bajar el tiempo de establecimiento podemos intentar incrementar apenas kp para incrementar el tiempo de elevación. La ganancia derivativa (kd) puede también incrementarse para bajar algo del sobrepico que el incremento kp causará. Luego de experimentar un poco con las ganancias, puede lograrse la siguiente respuesta al escalón con kp = 15 y kd = 40:

Page 54: 75797089 Ejercicios Controladores Pid

54

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 más que una solución.

VALORE PROPUESTOS PARA CADA EJERSICIO EJEMPLO 1

% VALORES DE LAS VARIABLES DE LA FUNCION DE TRANSFERENCIA DE LAZO

ABIERTO

m=8000; b=300; u=1200;

% FUNCION DE TRANFERENCIA

disp 'Y(s)/U(s)== [1/ms + b]' num=[1]; den=[m b]; step(u*num,den) title('Curva de la función de transferencia sin controlador')

% VALORES DE LAS VARIABLES DE LA FUNCION DE TRANSFERENCIA DE LAZO

ABIERTO

m=8000; b=300; u=1200;

Page 55: 75797089 Ejercicios Controladores Pid

55

% FUNCION DE TRANFERENCIA

disp 'Y(s)/U(s)== [1/ms + b]' num=[1]; den=[m b]; step(u*num,den) title('Curva de la función 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)

Page 56: 75797089 Ejercicios Controladores Pid

56

axis([0 20 0 10]) title('Curva de la función de transferencia con un controlador PI')

Ahora ajustemos tanto la ganancia proporcional (Kp) cuanto la ganancia integral (Ki) para obtener la respuesta deseada. Cuando usted ajuste la ganancia integral (Ki), mejor que empiece con un valor chico, ya que grandes (Ki) casi siempre inestabilizan la respuesta.

Con Kp igual a 950 y Ki igual a 55, la respuesta al escalón lucirá como la

Ejemplo 2.-

Con valores propuestos

J=0.05; b=0.4; K=0.05;

Page 57: 75797089 Ejercicios Controladores Pid

57

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 Escalón del sistema de lazo abierto')

De la figura vemos que cuando se aplica 1 volt al sistema, el motor puede lograr solo una velocidad máxima de 0.3 rad/seg., diez veces menor que la velocidad deseada. Además, el motor tiene 3 segundos para alcanzar su velocidad de estado estacionario; esto no satisface los 2 segundos del criterio de tiempo de establecimiento

Usamos un control Control proporcional

Este controlador es usado porque con ello hacemos que el sobrepico sea menos de 1 segundo. En la gráfica se puede observar cómo se encuentra.

Tratemos de usar primero un controlador proporcional con una ganancia de 300.

Page 58: 75797089 Ejercicios Controladores Pid

58

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 término integral se eliminará el error de estado estacionario y un término derivativo reducirá el sobrepico. Probemos un controlador PID con Ki y Kd pequeños. 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 pequeño Ki and Kd')

Page 59: 75797089 Ejercicios Controladores Pid

59

Sintonización de ganancias

Ahora el tiempo de establecimiento es muy largo. Incrementemos Ki para reducir el tiempo de establecimiento. Regrese Al programa anterior y cambie Ki a 100. Vuelva a ejecutar el archivo y debería obtenerse un gráfico como éste:

Page 60: 75797089 Ejercicios Controladores Pid

60

Ahora vemos que la respuesta es mucho más rápida 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 gráfico:

Page 61: 75797089 Ejercicios Controladores Pid

61

Ejemplo 3.- Con valores propuestos

Para este ejemplo, asumimos los valores siguientes para los parámetros físicos. Estos valores se derivaron experimentalmente de un motor real del laboratorio de control para alumnos de grado del Carnegie Mellon.

momento de inercia del rotor (J) = 0.03 kg.m^2/s^2 coeficiente de amortiguamiento del sistema mecánico (b) = 0.3 Nms constante de fuerza electromotriz (K=Ke=Kt) = 0.03 Nm/Amp resistencia eléctrica (R) = 3 ohm inductancia eléctrica (L) = 0.8 H entrada (V): Fuente de Tensión salida (theta): posición del eje el rotor y eje se consideran rígidos

Representación en Matlab y respuesta a lazo abierto

1. Función de Transferencia

Podemos poner la función de transferencia en Matlab definiendo el numerador y el denominador como vectores:

Variables del programa:

% Valores de la F.T de lazo abierto J=0.03; b=0.3; K=0.03; R=3; L=0.8; % F.t de lazo abierto sin controlador disp 'Y(s)/U(s)== [K/(s((Js+b)(Ls+R)+K^2))]' num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0]; step(num,den,0:0.001:0.2)

title('Resultado de escalón de lazo abierto'

Page 62: 75797089 Ejercicios Controladores Pid

62

Usando un Control proporcional

El controlador proporcional es usado por que tiende hacer menos su sobrepico que los de un PID o un PD. El controlador proporcional con una ganancia de 4.5, el programa queda de la siguiente manera.

% Valores de la F.T de lazo abierto

J=0.03;

b=0.3;

K=0.03;

R=3;

L=0.8;

% F.t de lazo abierto sin controlador

disp 'Y(s)/U(s)== [Kp/(s((Js+b)(Ls+R)+K^2))]' num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0]; Kp=1.7; numcf=[Kp]; dencf=[1]; numf=conv(numcf,num); denf=conv(dencf,den); [numc,denc]=cloop(numf,denf); t=0:0.001:0.2; step(numc,denc,t) title(' respuesta de escalón con un controlador P')

Page 63: 75797089 Ejercicios Controladores Pid

63

Debería obtenerse la figura siguiente:

Como podemos observar el sobrepico cumple con los diseños requeridos.

Veamos ahora la respuesta a una perturbación escalón agregando los siguientes comandos:

numdcl=conv(numc,1); dendcl=conv(denc,Kp); step(numdcl,dendcl,t);

Debería obtenerse la figura siguiente:

Ejemplo 4

Page 64: 75797089 Ejercicios Controladores Pid

64

Con valores propuestos

* masa del cuerpo (m1) = 3500 kg, * masa suspendida (m2) = 550 kg, * constante de elasticidad del sistema de suspensión(k1) = 90,500 N/m, * constante de elasticidad rueda y neumático(k2) = 600,123 N/m, * constante de amortiguación del sistema de suspensión(b1) = 440Ns/m. * constante de amortiguación rueda y neumático(b2) = 16,567 Ns/m. * fuerza de control (u) = fuerza del controlador que estamos diseñando.

% valores de las varibles de la funcion de transferecncia m1=3500; m2=350; k1=90500; k2=600123; b1 = 440; b2 = 16567; % funcion de transferencia para G1(s) disp 'Y(s)/U(s)== (m1+m2) b2 k2/((m1*m2) (m1*(b1+b2))+(m2*b1)

(m1*(k1+k2))+(m2*k1)+(b1*b2) (b1*k2)+(b2*k1) k1*k2)' 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) % funcion de transferencia para G1(s) disp 'Y(s)/U(s)== -(m1*b2) -(m1*k2) 0 0/((m1*m2) (m1*(b1+b2))+(m2*b1)

(m1*(k1+k2))+(m2*k1)+(b1*b2) (b1*k2)+(b2*k1) k1*k2)'

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) step(0.1*num1,den1) axis([0 10 -.1 .1]) title('Respuesta de la Función de Trasferencia') step(nump,denp)

Page 65: 75797089 Ejercicios Controladores Pid

65

De este gráfico de la respuesta a lazo abierto para una fuerza actuante escalón unitario, podemos ver que el sistema es sub-amortigüado. La gente sentada en el colectivo sentirá apenas una pequeña oscilación y el error de estado estacionario ronda los 0.013 mm. Pero aún, el colectivo se toma un inaceptablemente largo tiempo en alcanzar el estado estacionario o el tiempo de establecimiento es muy largo. La solución a este problema es agregar un controlador realimentado en el diagrama en bloques del sistema.

Page 66: 75797089 Ejercicios Controladores Pid

66

Ejemplo 6 Con valores propuestos

Para este problema, asumimos que la bola rueda sin resbalamiento y la fricción entre la barra y bola es despreciable. Las constantes y variables para este ejemplo se definen como sigue:

M masa de la bola 1 kg

R radio de la bola 0.02 m

d offset de brazo de palanca 0.4 m

g aceleración gravitacional 9.8 m/s^2

L longitud de la barra 2.5 m

J momento de inercia de la bola 9.99e-6 kgm^2

r coordenada de posición de la bola

alpha coordenada angular de la barra

% valores de las contantes y variables m = 3; R = 0.3; g = -5.8; L = 5.5; d = 0.2; J = 6.99e-6; % fucnion de transferencia

Page 67: 75797089 Ejercicios Controladores Pid

67

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]; printsys(num,den) step(0.50*num,den) title(' resultado de la funcion de transferencia') step(0.15*num,den)

La función de transferencia encontrada a partir de la transformada de Laplace puede implementarse en Matlab entrando el numerador y el denominador como vectores. Para lograrlo debemos crear un programa como se muestra a continuación.

Ahora, le gustaría observar la respuesta de la bola a una entrada escalón de 0.50 m . Para hacerlo necesitará agregar la siguiente linea a su archivo-m:

step(0.15*num,den)

Debería verse la figura siguiente mostrando las posiciones de la bola como función del tiempo:

Espacio de Estado

Page 68: 75797089 Ejercicios Controladores Pid

68

Las ecuaciones de espacio de estado pueden representarse en Matlab con los siguientes comandos (estas ecuaciones son para el modelo de control de torque).

% 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))' H = -m*g/(J/(R^2)+m);

A=[0 1 0 0 0 0 H 0 0 0 0 1 0 0 0 0]; B=[0;0;0;1]; C=[1 0 0 0]; D=[0]; step(A,B*.50,C,D) title(' resultado de la funcion de transferencia') step(A,B*.50,C,D)

Page 69: 75797089 Ejercicios Controladores Pid

69

La respuesta al escalón de 0.50m (posición deseada) puede verse corriendo el comando siguiente:

step(A,B*.50,C,D)

La salida debería verse como la de abajo:

Control Proporcional-Derivativo

Ahora, agregaremos un término 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];

Page 70: 75797089 Ejercicios Controladores Pid

70

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')

Page 71: 75797089 Ejercicios Controladores Pid

71

BIBLIOGRAFÍA www.engin.umich.edu/group/ctm/basic/basic.htm/ www.engin.umich.edu/group/ctm/PID/PID.htm/