documento final 2 - uniandes

111
IEL2-I-06-49 1 DESARROLLO DE UNA GUÍA DE PRÁCTICAS PARA EL ÁREA DE CONTROL APLICADA A UN PROCESO MULTIVARIABLE MEDIANTE EL USO DE UN PC Por Fabian Augusto Rangel Andrade Tesis para la obtención del título de Ingeniería Electrónica Asesor Mauricio Duque Ingeniero Eléctrico, Dr. Universidad de los Andes Facultad de Ingeniería Departamento de Ingeniería Eléctrica y Electrónica Bogotá D.C. 2006

Upload: others

Post on 02-Aug-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Documento final 2 - Uniandes

IEL2-I-06-49

1

DESARROLLO DE UNA GUÍA DE PRÁCTICAS PARA EL ÁREA DE CONTROL APLICADA A UN PROCESO MULTIVARIABLE

MEDIANTE EL USO DE UN PC

Por

Fabian Augusto Rangel Andrade

Tesis para la obtención del título de Ingeniería Electrónica

Asesor Mauricio Duque

Ingeniero Eléctrico, Dr.

Universidad de los Andes Facultad de Ingeniería

Departamento de Ingeniería Eléctrica y Electrónica Bogotá D.C.

2006

Page 2: Documento final 2 - Uniandes

IEL2-I-06-49

2

A mis padres, Gabriel y Claudia Los quiero mucho

Page 3: Documento final 2 - Uniandes

IEL2-I-06-49

3

AGRADECIMIENTOS

Primero que todo, quiero dar gracias a Dios que fue mi guía a través de todo este proyecto. Mauricio Duque Agradezco a mi asesor, Mauricio Duque, que fue mi consejero durante este proceso. Juan Carlos Hoyos Sus conocimientos y apoyo incondicional permitieron la realización de este proyecto. César Cadena Su tiempo y ayuda fueron pieza fundamental para el desarrollo de mi trabajo. A mi familia Agradezco a mis padres, a mis hermanos y a toda mi familia por estar siempre conmigo, por creer en mí y por permitirme llegar hasta donde estoy ahora. Los quiero mucho. Al resto A Ingrid por su paciencia y apoyo en los momentos difíciles de este proyecto. A todos mis amigos que me acompañaron durante toda mi carrera. Y a todas esas personas que de una u otra manera estuvieron involucradas en el desarrollo de este proyecto.

Page 4: Documento final 2 - Uniandes

IEL2-I-06-49

4

CONTENIDO

1 INTRODUCCIÓN ............................................................................................................6

2 OBJETIVOS ....................................................................................................................8

3 MARCO TEÓRICO .........................................................................................................9 3.1 EL HELICÓPTERO..................................................................................................9 3.2 EL MODELO DEL HELICÓPTERO CE 150..........................................................10

4 UNIDAD 1: IDENTIFICACIÓN......................................................................................19 4.1 REAL TIME TOOLBOX..........................................................................................20 4.2 GUIDE -GUI DEV ELOPMENT ENV IRONMENT ..................................................21 4.3 INTERFAZ GRÁFICA CON EL HELICÓPTERO ..................................................22 4.4 IDENTIFICACIÓN MODELO DE ELEVACIÓN.....................................................30 4.5 DISEÑO DEL CONTROLA DOR............................................................................33

5 UNIDAD 2: LINEALIZACIÓN.......................................................................................37 5.1 LINEALIZACIÓN DE LA ELEVACIÓN...................................................................39 5.2 LINEALIZACIÓN DEL AZIMUTH...........................................................................43 5.3 LINEALIZACIÓN MODELO COMPLETO..............................................................47

6 UNIDAD 3: EL PROBLEMA DE CONTROL (TÉCNICAS TRADICIONALES) ..........56 6.1 DISEÑO BASADO EN EL LUGAR GEOMÉTRICO DE LAS RA ÍCES .................56 6.2 EL REGULA DOR ALGEBRAICO..........................................................................57 6.3 DISEÑO POR VARIABLES DE ESTADO.............................................................58 6.4 DISEÑO DE CONTROLA DORES PARA EL HELICÓPTERO .............................59

7 UNIDAD 4: EL PROBLEMA DE CONTROL (CONTROL PREDICTIVO) ..................66 7.1 CONTROL PREDICTIVO BASADO EN MODELOS.............................................66 7.2 CONTROL PREDICTIVO GENERALIZADO.........................................................67 7.3 EJEMPLO NUMÉRICO DE UN CONTROLA DOR GPC.......................................70 7.4 DISEÑO DE CONTROLA DORES GPC PARA EL HELICÓPTERO ....................77

8 RESULTADOS..............................................................................................................80 9 CONCLUSIONES .........................................................................................................82 10 BIBLIOGRAFÍA.............................................................................................................84

Page 5: Documento final 2 - Uniandes

IEL2-I-06-49

5

LISTA DE FIGURAS

Figura 1. El modelo del helicóptero CE 150 ....................................................................10 Figura 2. Diagrama esquemático del helicóptero............................................................12 Figura 3. Diagrama de bloques de la dinámica completa del sistema ...........................15 Figura 4. Modelo empírico (simplif icado) del helicóptero................................................16 Figura 5. El editor de Layouts de GUIDE (Layout Editor) ...............................................21 Figura 6. Diagrama de bloques Simulink para la comunicación con el helicóptero .......23 Figura 7. Sencillo diagrama de bloques comunicación Real Time Toolbox. ..................23 Figura 8. Ventana GUI HUMUSOFT MF614 ...................................................................27 Figura 9. Ventana GUI comunicación con Simulink desde GUIDE ................................29 Figura 10. Respuesta escalón obtenida para identif icación .............................................31 Figura 11. Respuesta escalón obtenida para identif icación con valores diferentes.........31 Figura 12. GUI ident para el modelo de elevación ............................................................32 Figura 13. Salida del modelo para comparación de datos ................................................32 Figura 14. Diagrama de bloques Simulink implementación controlador Algebraico ........35 Figura 15. Salida elevación controlador Algebraico..........................................................35 Figura 16. Diagrama de bloques Simulink del modelo completo......................................38 Figura 17. Modelo de elevación del helicóptero................................................................39 Figura 18. Modelo de elevación con las variables de estado. ..........................................40 Figura 19. Comparación modelo no lineal elevación con lineal en punto de operación ..42 Figura 20. Modelo azimuth del helicóptero........................................................................43 Figura 21. Modelo azimuth con las variables de estado. ..................................................43 Figura 22. Salida azimuth en el punto de operación. ........................................................45 Figura 23. Comparación modelo no lineal azimuth con lineal en punto de operación. ....46 Figura 24. Modelo completo con variables de estado.......................................................48 Figura 25. Salidas elevación y azimuth comparación modelo no lineal y lineal ...............52 Figura 26. Regulador Algebraico. ......................................................................................57 Figura 27. Lugar geométrico de raíces en Sisotool para elevación..................................61 Figura 28. Lugar geométrico de raíces en Sisotool para azimuth. ...................................61 Figura 29. Esquema controlador por lugar de raíces........................................................62 Figura 30. Salidas elevación y azimuth controlador por lugar de raíces. .........................62 Figura 31. Salidas elevación y azimuth regulador Algebraico. .........................................63 Figura 32. Esquema control por variables de estado con observador .............................65 Figura 33. Salidas elevación y azimuth controlador por variables de estado...................65 Figura 34. Filosofía control GPC .......................................................................................68 Figura 35. Controlador GPC ..............................................................................................70 Figura 36. Esquema control GPC SISO............................................................................74 Figura 37. Salidas humedad relativa y temperatura interior controlador GPC SISO .......74 Figura 38. Esquema de control GPC MIMO......................................................................76 Figura 39. Salidas humedad relativa y temperatura interior controlador GPC MIMO......77 Figura 40. Salidas elevación y azimuth controlador GPC SISO.......................................78 Figura 41. Salidas elevación y azimuth controlador GPC MIMO......................................79

Page 6: Documento final 2 - Uniandes

IEL2-I-06-49

6

1 INTRODUCCIÓN

Con este proyecto busco ampliar los conocimientos adquiridos en el área de control, que

fue la que logró captar el mayor interés durante mi carrera, y transmitir estos

conocimientos a los demás estudiantes a través de las unidades sugeridas y sus

respectivas herramientas de apoyo.

Este trabajo nos muestra el desarrollo de una serie de prácticas sobre el modelo del

helicóptero CE 150 en forma detallada, material que sería parte del manual para el

instructor. Las actividades realizadas en las diferentes unidades surgen de los

experimentos recomendados en el manual del helicóptero y pensando en la posición del

estudiante, a partir de las dif icultades encontradas durante el desarrollo del trabajo.

Las unidades representan las etapas de realización del proyecto paso a paso, desde la

familiarización con la planta hasta la realización de diferentes estrategias de control sobre

el modelo. El trabajo abarca conceptos claves del curso de control como identif icación,

modelaje, realimentación, validación, linealización, estabilidad, error, respuesta escalón,

entre otros.

El proyecto también busca ser un soporte para los estudiantes de Control Digital y para

quiénes quieren profundizar más en esta área, ya que no solamente el desarrollo se

encuentra encaminado a una sola planta, sino que puede ser empleado en cualquier otro

proceso. Después de conocer el modelo del helicóptero detalladamente, pasaremos al

diseño de los controladores empezando desde las técnicas tradicionales como son el

Lugar de las raíces, el regulador Algebraico y el diseño mediante variables de estado para

f inalmente aplicar una técnica nueva y con bastante acogida actualmente como lo es el

Control Predictivo Generalizado (GPC). Se mostrará todo el desarrollo de las técnicas

anteriormente mencionadas, sus algoritmos y la obtención de los controladores mostrando

cada paso y verif icando su funcionamiento con ejemplos antes de controlar el modelo del

helicóptero.

Page 7: Documento final 2 - Uniandes

IEL2-I-06-49

7

Finalmente después de todo este proceso, podremos realizar la comparación entre un

Control Predictivo y otras técnicas de control tradicionales, analizando sus ventajas y

desventajas, en el caso monovariable como multivariable.

En el año 2005 fue realizado por un estudiante de Ingeniería Electrónica el proyecto de

grado: “Diseño de un controlador predictivo multivariable” [2], pieza clave para el

desarrollo de mi trabajo. Sobre el helicóptero ya existe un trabajo de tesis en la universidad donde se aplicó el control usando inteligencia artif icial [3], más exactamente

dos métodos de control, el FMRLC (Control difuso con aprendizaje para un modelo de

referencia) y el CMAC (cebellar model articulation controller) que tiene como base las

redes neuronales y se encuentra inspirado en el funcionamiento del cerebelo.

Page 8: Documento final 2 - Uniandes

IEL2-I-06-49

8

2 OBJETIVOS

El objetivo principal de este proyecto de grado es el desarrollo de una serie de prácticas,

en nuestro caso unidades, para el área de control en base al modelo del helicóptero CE

150 que permita efectuar una comparación entre el Control Predictivo y otras técnicas de

control tradicionales, en el caso monovariable como multivariable.

• Diseño de la comunicación del PC con la planta por medio del Real Time Toolbox de Matlab

• Desarrollo detallado de las unidades de aprendizaje sobre el modelo

• Crear una herramienta softw are de simulación de un controlador utilizando las

técnicas de control tradicional y otras herramientas de apoyo para la obtención

del modelo a controlar

• Ajuste de las herramientas software de simulación para la obtención de los controladores lineales predictivos SISO y MIMO

Page 9: Documento final 2 - Uniandes

IEL2-I-06-49

9

3 MARCO TEÓRICO

3.1 EL HELICÓPTERO

El helicóptero es un aparato de aviación que se eleva y se sostiene en el aire por la

acción de hélices que giran alrededor de un eje vertical. Es mucho más pesado que el

aire, y se eleva mediante uno o varios rotores motorizados y no como los aviones que

utilizan alas f ijas.

Los helicópteros representan hoy en día un importante medio de transporte, de vigilancia

aérea y sirven también como vehículos de combate aéreo [4].

El control de un helicóptero siempre ha sido un problema desafiante en el área de control,

y es que la planta representa un sistema MIMO con pobre amortiguamiento y que se

expone a perturbaciones severas. Además, es un sistema inestable, bastante no lineal y

altamente acoplado en forma cruzada. Lo que se busca con el control realimentativo es

reducir la carga de trabajo del piloto a un nivel aceptable de manejo [5].

El helicóptero CE 150 intenta recrear un helicóptero verdadero a escala, pero realmente el prototipo solo representa la dinámica de elevación y giro, más no el movimiento hacia

adelante, que es otro factor importante en un helicóptero real. La maqueta permite

simular el ascenso y el descenso, que al igual que en un helicóptero real se controlan

aumentando o reduciendo la velocidad del rotor. También, se tienen en cuenta factores

como el peso del cuerpo, la resistencia del aire y el sentido hacia donde giran los rotores.

Los sistemas de control son parte integrante de la sociedad moderna y sus numerosas

aplicaciones las encontramos alrededor de nosotros. El objetivo principal de un sistema

de control es regular la salida de un proceso [6]. En este proyecto se va a trabajar con el

prototipo estudiantil de un helicóptero a escala, el modelo del helicóptero CE 150 que será

descrito a continuación.

Page 10: Documento final 2 - Uniandes

IEL2-I-06-49

10

3.2 EL MODELO DEL HELICÓPTERO CE 150

El modelo del helicóptero CE 150 de la compañía Humusoft es uno de los tantos

productos diseñados para el estudio teórico y la investigación práctica de principios

básicos y avanzados en la ingenier ía de control. Por medio de esta planta se está

fomentando el modelaje de sistemas dinámicos, la identif icación, el análisis y por

supuesto, el diseño de controladores por métodos clásicos y modernos.

El sistema consiste de un cuerpo llevando 2 hélices manejadas por motores DC y un

soporte macizo. El cuerpo consta de 2 grados de libertad. La rotación de las hélices

influye en ambos ángulos de posición del cuerpo (elevación y azimuth). Los ejes de

rotación del cuerpo son perpendiculares. Los motores DC son manejados por

amplif icadores de poder usando modulación por ancho de pulso. Los ángulos son

medidos por sensores IRC. Es posible cambiar el centro de gravedad moviendo un

pequeño peso a lo largo del eje horizontal del helicóptero por un servomotor [7].

El modelo matemático del helicóptero es un típico sistema MIMO 2x2 con signif icantes

acoplamientos cruzados. El sistema puede ser linealizado a un modelo lineal de sexto

orden (dependiendo de la precisión del modelaje) cuando se encuentra operando cerca

de la región estable [9].

Figura 1. El modelo del helicóptero CE 150 [7]

Page 11: Documento final 2 - Uniandes

IEL2-I-06-49

11

3.2.1 DESCRIPCIÓN DEL PROTOTIPO El prototipo del helicóptero denominado CE 150 es un producto destinado al estudio

teórico y práctico de técnicas básicas y avanzadas en el área de control. El hardw are del

prototipo consta de los siguientes elementos: el modelo helicóptero CE 150, la unidad de

interfaz CE 150, la tarjeta de adquisición de datos y control MF614, el sistema de

cableado y la caja de protección. Igualmente, el equipo suministra un softw are de control

CE 150 que no es transparente al usuario y la Real Time Toolbox de Matlab que se

encuentra adaptada al prototipo.

3.2.2 ESTRUCTURA MECÁNICA En la f igura 1 podemos observar el modelo del helicóptero. Como se muestra en la

gráfica, el sistema está constituido de una estructura metálica o cuerpo y un soporte que

sirve de apoyo.

El cuerpo tiene dos grados de libertad: elevación respecto del plano horizontal y azimuth

en ese mismo plano. Los ángulos de rotación permitidos máximos son ± 45º para la

elevación y ± 130º para el azimuth.

3.2.3 SISTEMA DE CONTROL Son empleados sensores IRC para la medida del ángulo de elevación como para el

azimuth, y éstos se sitúan sobre los ejes de rotación de los motores que proporcionan el

movimiento al helicóptero. Estos motores son de corriente continua controlados por PWM

en el inducido. Es posible considerar que el motor principal actúa fundamentalmente

sobre la elevación, aunque también lo hace sobre el azimuth, y el motor secundario actúa

únicamente sobre el azimuth. El motor principal admite un voltaje máximo aplicado de

12V a lo cual gira a 9000 r.p.m., mientras que el motor secundario t iene un voltaje nominal

de 6V girando a 12000 r.p.m.

Por lo tanto, tenemos un sistema multivariable con dos entradas (voltajes aplicados a los

motores) medidos en unidades de máquina y que solo permiten valores en un rango entre

[-1,1] y dos salidas (elevación y azimuth) medidas en grados ó radianes, dependiendo del

modelo del sistema, donde además se tiene un alto grado de acoplamiento y de no

linealidad.

Page 12: Documento final 2 - Uniandes

IEL2-I-06-49

12

Figura 2. Diagrama esquemático del helicóptero [7]

La unidad de interfaz sirve para amplif icar las señales que provienen del computador

(PC), a través de la tarjeta de conversión A/D y D/A, y también para acondicionar las

señales proporcionadas por los IRC que sufrirán la conversión D/A al ser adquiridas por el

computador [8].

3.2.4 MANUAL EDUCATIVO El manual del helicóptero [8] consta de dos partes: el manual técnico y el manual

educativo. El manual técnico nos muestra las instrucciones de seguridad más

importantes, una breve reseña de las características y la descripción del helicóptero, el

rango de experimentos que se pueden realizar, las especif icaciones, así como el

procedimiento de instalación hardw are, el diagrama de bloques para el cableo, la

instalación softw are y el programa de demostración del PID.

Nos vamos a concentrar en el manual educativo que es el que más nos interesa para el

desarrollo del proyecto. Si usted desea consultar ó tiene alguna duda con respecto al

procedimiento de instalación hardw are o software se recomienda recurrir al manual del

usuario. La comunicación con la planta a través del Real Time Toolbox de Matlab será

tratada más adelante al igual que el funcionamiento de la tarjeta de adquisición de datos

MF614.

Page 13: Documento final 2 - Uniandes

IEL2-I-06-49

13

El manual educativo fue escrito por el Dr. Petr Horáček de la Universidad Técnica de la

República Checa en Praga. El modelo del helicóptero se encuentra basado en la idea del

Dr. Horáček y el primer prototipo fue construido por él y sus estudiantes.

El modelo del helicóptero CE 150 y los manuales asociados representan materiales

didácticos para los estudiantes de ingeniería de control en todos los niveles académicos y

los experimentos cubren un amplio rango de problemas encontrados en la industria.

El modelo pertenece al conjunto de sistemas de enseñanza controlables directamente por

un PC IBM ó un computador compatible en tiempo real. De esta forma, no es necesario

ninguna clase de instrumento de laboratorio como osciloscopio, multímetro, generador de

señales, protoboard, etc. Todas las funciones de los instrumentos de laboratorio

mencionadas son hechas por el software que ejecutamos en el computador. Además, el

estudiante no t iene acceso físico con las señales que van y vienen al prototipo. Así, no

hay peligro de causarle daño al modelo ó a la tarjeta electrónica de adquisición de datos

por la manipulación de cables. En lugar del acceso físico directo, el acceso al softw are de

todas las señales medidas y manipuladas está disponible al usuario.

Se pueden destacar dos ambientes software que están disponibles al usuario, el primero

es un programa demo escrito en lenguaje C que hace las veces de interfaz con el usuario

para facilitar los primeros experimentos con control PID, y el segundo es el Real Time Toolbox de Matlab que como ya se dijo, se encuentra suministrado con el modelo del

helicóptero y habilita al usuario para comunicarse directamente desde Matlab.

El objetivo del manual es el de presentar problemas típicos y sugerir experimentos, dando

algunas ayudas para la resolución del problema. Es importante mencionar que no es

necesaria la consulta de libros de control, pero de igual forma los principiantes o los

estudiantes que apenas comienzan a familiarizarse con la teor ía de control deben usarlos

para aprender los conceptos básicos que no son descritos en el manual. El documento se

encuentra dividido en bloques, y cada bloque comienza con la formulación del problema,

seguido por las sugerencias y la descripción de los principios para su respectiva solución.

Podemos encontrar también, los resultados típicos a estos problemas y los resultados

numéricos que sirven de base al estudiante.

Page 14: Documento final 2 - Uniandes

IEL2-I-06-49

14

El manual está dividido en capítulos. El capítulo 2 se encuentra dedicado al modelaje

matemático, donde el modelo válido de la estructura general después de algunas

simplif icaciones está derivado en términos de la descripción del espacio de estados no

lineal y el correspondiente diagrama de bloque. En el capítulo 3 encontramos la

descripción de los diferentes experimentos realizados para la medida directa e indirecta

de los parámetros del sistema. El modelo se linealiza alrededor de diferentes puntos de

operación y se deriva también la matriz de función de transferencia así como el modelo en

el espacio de estados. Los siguientes capítulos son dedicados al diseño de controladores

y se sugieren los diferentes experimentos para controlar la planta a partir de métodos

tradicionales. Las f iguras y los resultados de simulación los podemos encontrar en el

capítulo 6 [7].

3.2.5 DINÁMICA DEL SISTEMA COMPLETO El modelaje de la dinámica de cada subsistema del helicóptero lo podemos encontrar en

el manual de usuario del helicóptero, y se recomienda echarle un vistazo si se presenta

alguna duda entendiendo el modelo completo.

El diagrama de bloques de la dinámica no lineal del sistema completo es armado en base

a las ecuaciones y derivaciones ya realizadas [7]. El resultado se muestra en la f igura 3.

Page 15: Documento final 2 - Uniandes

IEL2-I-06-49

15

Figura 3. Diagrama de bloques de la dinámica completa del sistema – modelo teórico [7]

Page 16: Documento final 2 - Uniandes

IEL2-I-06-49

16

Figura 4. Modelo empírico (simplificado) del helicóptero [9]

Page 17: Documento final 2 - Uniandes

IEL2-I-06-49

17

3.2.6 MODELO EMPÍRICO DEL SISTEMA Un modelo simplif icado del sistema puede ser observado en la f igura 4. El modelo puede

ser usado como un simulador del proceso real y en él va a estar f ijado el desarrollo del

proyecto. Notamos que el modelo consta de 2 entradas y 2 salidas. Las entradas son los

comandos que llegan al motor en unidades de máquina MU, y las salidas son los ángulos

de elevación y azimuth en grados [9].

No vamos a incluir la etapa de identif icación para la obtención de los parámetros del

modelo del helicóptero. Vale la pena aclarar que toda esta información acerca del manual

educativo, el modelo f ísico y los experimentos que permiten hallar los parámetros fue

desarrollada por el Dr. Horáček y la podemos encontrar como ya se ha dicho en el manual para el usuario del helicóptero [7]. Este tema se sale de nuestro interés y en particular de

los objetivos del proyecto, pero es relevante para continuar con el desarrollo de éste y se

aconsejar revisar el manual si se presentan dudas en este tema.

En la siguiente tabla aparecen los valores ó resultados típicos de los parámetros del

modelo simplif icado del helicóptero. Estos valores fueron consultados en Internet y han

sido obtenidos a través del manual del helicóptero as í como también por experimentos de

identif icación [9].

Variable Valor Unidades

ψk π180 [ radMU ]

ϕk π180 [ radMU ]

gτ 21083.3 −⋅ [ mN ⋅ ]

1a 186.0 [ 2MUmN ⋅ ]

1b - 0445.0 [ MUmN ⋅ ]

2a 033.0 [ 2MUmN ⋅ ]

2b 0294.0 [ MUmN ⋅ ]

ψB 3105 −⋅ [ smKg 2⋅ ]

I 31037.4 −⋅ [ 2mKg ⋅ ]

ϕB 31069.8 −⋅ [ smKg 2⋅ ]

Page 18: Documento final 2 - Uniandes

IEL2-I-06-49

18

ϕI 31014.4 −⋅ [ 2mKg ⋅ ]

1T 1.0 [ s ]

2T 25.0 [ s ]

rK - 00891.0 [ MUmN ⋅ ]

rT0 7.2 [ s ]

prT 75.0 [ s ]

gyroK 015.0 [ smN ⋅ ]

Tabla 1. Valores de los parámetros del modelo empírico

Se tienen bastantes valores nominales para los parámetros del helicóptero a partir de

otros experimentos de identif icación (del manual, Gradiente, Simplex, Algoritmos

genéticos) que se suministraron durante el curso de Control por Computador 2004- II, pero

de aquí en adelante solo nos importarán los que encontramos en la tabla 1 que serán

reemplazados en nuestro diagrama de bloques de la f igura 4.

Page 19: Documento final 2 - Uniandes

IEL2-I-06-49

19

4 UNIDAD 1: IDENTIFICACIÓN

La identif icación es el proceso por medio del cual se encuentran las constantes de un

modelo matemático previamente seleccionado. En la identif icación de un sistema es

preciso estudiar las partes del mismo y en qué influyen para que un sistema pueda ser

controlado [10].

Antes de entrar a identif icar un modelo para la elevación, se diseñó una interfaz gráfica

(GUI) para la comunicación del PC con la planta, que es posible llevar a cabo gracias a la

tarjeta de adquisición de datos MF614, por medio del Real Time Toolbox de Matlab. Esta

interfaz fue hecha en el paquete GUIDE de Matlab que permite la creación de interfases

gráficas GUIs y con el f in de familiarizar al estudiante con la planta, en pocas palabras,

contar con una fácil interacción con el sistema real, de manera que el usuario pueda

observar el comportamiento real del proceso.

La comunicación con el helicóptero se hace a través de un sencillo diagrama de bloques

en Simulink donde es necesario agregar el componente que representa la tarjeta MF614,

junto con sus respectivos parámetros, para la transferencia de datos de entrada y salida

en tiempo real. Este diagrama será mostrado y explicado más adelante. Lo que nos

interesa aquí, es realizar una interfaz gráfica desde el ambiente GUIDE que se comunique

con el modelo en Simulink en tiempo real y que permita cambiar los valores de entrada a

los motores simplemente deslizando una barra y donde se pueda visualizar el valor actual

del parámetro. Esta tarea se pudo efectuar en base a un ejemplo que encontramos en el

Help de Matlab “A GUI to Set Simulink Model Parameters”, que ilustra como crear una

GUI que ajusta los parámetros de un modelo en Simulink.

Vamos a echar un vistazo primero a lo que es el Real Time Toolbox y el GUIDE de

Matlab, para luego volver a nuestra interfaz gráfica que permite variar los parámetros (en

este caso, los voltajes de entrada a los motores principal y lateral) del helicóptero.

Page 20: Documento final 2 - Uniandes

IEL2-I-06-49

20

4.1 REAL TIME TOOLBOX El Real Time Toolbox es un paquete para conectar a Simulink con el mundo real.

Además de esto, el paquete tiene la capacidad de adquirir los datos en tiempo real

procesándolos inmediatamente a ellos en el modelo de Simulink y enviándolos de regreso

al mundo exterior. El concepto de cargabilidad de drivers hardware permite tratar

virtualmente cualquier tarjeta I/O (entrada/salida) sin la necesidad de conocer sus detalles

hardw are.

El paquete de Real Time Toolbox extendido contiene una librer ía de bloques con soporte

de entradas y salidas en tiempo real. Todos los comandos básicos de Real Time Toolbox

tienen tanto interfaz gráfico como interfaz por medio de comandos. Todas las

características son implementadas como bloques de Simulink con la interfaz gráfica

standard, lo cual proporciona un punto de partida fácil para principiantes as í como un

trabajo de alta productividad para los usuarios más experimentados.

Real Time Toolbox cuenta con una librería que comparte con Simulink llamada Real Time

Toolbox Simulink Block Library la cual se encuentra disponible en la versión extendida de

Real Time Toolbox y que convierte a Simulink en un ambiente de simulación en tiempo

real. Para ser capaz de trabajar con este producto, se debe aprender cómo configurar un

driver hardw are, como usar los diferentes tipos de bloques de entrada/salida en tiempo

real, cómo conectarlos a ellos al sistema y definir sus parámetros dependiendo del tipo de

sistema [11].

4.2 GUIDE – GUI DEVELOPMENT ENVIRONMENT El ambiente para desarrollo de interfases gráficas en Matlab más conocido como GUIDE

por sus siglas en inglés (Graphical User Interfase Development Environment), proporciona

un conjunto de herramientas para crear interfases gráficas (GUIs). Estas herramientas

simplif ican grandiosamente el proceso de laying out (dibujo de esquemas) y la

programación de una GUI. La GUI también permite una visualización fácil de procesos de

entrada y salida.

Page 21: Documento final 2 - Uniandes

IEL2-I-06-49

21

Una interfaz de usuario gráfica (GUI) es un display gráfico que contiene sistemas o

componentes que permiten al usuario desarrollar tareas interactivas. Para desarrollar

estas tareas, el usuario de la GUI no necesita escribir rutinas o comandos y a veces ni

siquiera necesita conocer detalles de la tarea que está ejecutando. Los componentes de

la GUI pueden ser menús, botones para presionar (push buttons), radio buttons, cajas de

listas (list boxes) y barras para deslizar (sliders), solo por nombrar un poco. En Matlab

GUI también puede mostrar datos en forma tabular ó como gráficas, y puede agrupar

componentes relacionados por grupos. Cada componente y la misma GUI se encuentra

asociado con una o más componentes escritas por el usuario conocidas como llamados

(callbacks).

Cuando se abre una interfaz gráfica GUI en GUIDE, lo cual se hace simplemente

digitando la palabra “guide” en Matlab, ésta es mostrada en el editor de Layouts (Layout

Editor), el cual es el panel de control para todas las herramientas de GUIDE. El editor de

layouts permite dibujar esquemas de GUI rápidamente y de forma fácil solamente

arrastrando componentes, como botones para presionar, menús automáticos, ó ejes,

desde la paleta de componentes hasta dentro del área del layout. La siguiente f igura

muestra el editor de layouts.

Figura 5. El editor de Layouts de GUIDE (Layout Editor) [12]

Page 22: Documento final 2 - Uniandes

IEL2-I-06-49

22

GUIDE guarda las interfases gráficas GUIs en 2 tipos de archivo, los cuales se generan la

primera vez que guardamos ó corremos la GUI:

- El archivo FIG (FIG-file): un archivo con extensión .fig que contiene una

descripción completa del layout de la f igura GUI y los componentes de

la GUI: botones para presionar, menús, ejes, y así sucesivamente.

Cuando se hacen cambios al layout de la GUI en el editor de layouts, los

cambios son guardados automáticamente en el archivo FIG.

- El archivo M (M-file): un archivo con extensión .m que contiene el código

que controla la GUI, incluyendo los llamados a sus componentes. Este

archivo es referido como el GUI M-file. Cuando corremos ó guardamos

una GUI desde el Editor de layouts, GUIDE genera el archivo .m con

fragmentos vacíos reservados para cada uno de los llamados.

Entonces, es posible programar estos llamados usando el editor de

archivos .m (M-file editor) [12].

4.3 INTERFAZ GRÁFICA CON EL HELICÓPTERO Después de haber echado un vistazo al concepto de Real Time Toolbox y al paquete para

creación de interfases gráficas GUIs conocido como GUIDE, es momento de volver a

nuestro problema que es la comunicación del PC, más exactamente por medio de un

diagrama de bloques Simulink en t iempo real , con el helicóptero. En la f igura 6

observamos el diagrama de bloques en Simulink que nos permite transferir datos desde el

PC hasta la planta y viceversa, a partir de la tarjeta MF614.

Como se puede ver en la f igura, tenemos 4 bloques que pertenecen exclusivamente al

paquete Real Time Toolbox de Matlab, que son el ‘Adapter’ que representa la tarjeta

MF614 de Humusoft, dos bloques ‘RT Out’ y un bloque ‘RT In’. Por ahora, pasaremos por

alto el bloque que simboliza la tarjeta y nos concentraremos en los otros bloques. Para

entender mejor la situación se presenta la f igura 7.

Page 23: Documento final 2 - Uniandes

IEL2-I-06-49

23

Figura 6. Diagrama de bloques Simulink para la comunicación con el helicóptero

Figura 7. Sencil lo diagrama de bloques que representa la comunicación por Real Time Toolbox

Como vemos en el gráfico, la tarjeta MF614 es la encargada de la transferencia de datos

y por lo tanto, se encuentra interconectada al helicóptero. La comunicación por medio del

PC está representada por el bloque usuario. Si notamos muy bien la f igura, observamos

que la salida del PC es la entrada a la tarjeta, y la salida de la tarjeta es lo que recibe el

usuario ó mejor dicho, la entrada al PC. Un poco confuso, pero con el dibujo bastante

fácil de entender. Ahora si es posible comprender lo que sucede en la f igura 6, donde los

bloques ‘RT Out’ signif ican la salida del PC ó entrada a la tarjeta, y el bloque ‘RT In’

simboliza lo que recibe el PC ó la salida de la tarjeta.

Page 24: Documento final 2 - Uniandes

IEL2-I-06-49

24

El bloque ‘Adapter’ es un bloque especial el cual carga el dr iver del hardw are, pero no

realiza ninguna acción durante simulación por su cuenta. Asimismo, éste no t iene

entradas ni salidas. Este bloque contiene una GUI con la definición del dr iver del

hardw are. La GUI es invocada cuando damos doble click sobre el bloque ‘Adapter’. El

bloque simplemente se ubica en el modelo de Simulink, y cuando damos doble click sobre

él aparece una ventana donde debemos escoger el archivo para cargar el driver. Luego

de escoger el driver nos encontramos con otra ventana que nos permite seleccionar los

parámetros hardw are del driver. Los valores que por defecto son mostrados en esta

ventana corresponden a los valores por defecto de fábrica de la tarjeta de adquisición de

datos, así que si no son cambiados los parámetros, el bloque va a trabajar con estos

valores [11]. Como ya se había dicho, todas estas funciones que efectuamos

gráficamente en Real Time a través de ventanas se pueden realizar por medio de

comandos en el ambiente de programación de Matlab.

La tarjeta de adquisición de datos MF614 de Humusoft, que corresponde a nuestro driver

de hardw are para la comunicación con el helicóptero se puede cargar mediante el

comando rtload (‘mf614’, slot, opt). El parámetro slot especif ica el número de ranura PCI

(slot number). El valor 65535 signif ica auto-detectar la tarjeta, es decir, que la tarjeta

puede estar en cualquier ranura. El parámetro opt es un vector de opciones específ icas

hardw are. El valor de opt (1) específ ica las opciones I/O (entrada/salida) digital. Éste es

un bit orientado y además muestra una suma de números a bits de peso individuales. La siguiente tabla resume estos números.

Parámetro Opción Valor

bit 0 Modo entrada

digital byte 1

bit 0 Modo salida

digital byte 2

Los valores desde opt (2) hasta opt (9) especif ican los rangos de entrada análogos para

los canales del 1 al 8. Los rangos de entrada se encuentran codif icados por los números

listados en la siguiente tabla.

Page 25: Documento final 2 - Uniandes

IEL2-I-06-49

25

Rango Código

0…5V 0

± 5V 1

0…10V 2

± 10V 3

Cuando se usa GUI para especif icar las ganancias de los canales (channels), las columnas corresponden a los canales y las f ilas corresponden a los valores de ganancia.

Si queremos seleccionar una ganancia para un solo canal solo debemos dar click en el

botón de radio (radio button) en la posición apropiada. Si queremos seleccionar una

ganancia para todos los canales al mismo tiempo damos click en el botón para presionar

(push button) marcado por el valor de ganancia, a la izquierda de la f ila correspondiente al

arreglo de botones radio.

Los valores desde opt (10) hasta opt (13) especif ican la frecuencia del f iltro pasabajas

para las entradas codif icadas (encoder inputs). Y por último los valores desde opt (14)

hasta opt (17) especif ican el modo timer/counter para los timers desde el 1 hasta el 4.

Los modos timer están codif icados por los números listados en la siguiente tabla.

Modo Código

Contador con reset en lectura 0

Contador sin reset 1

Contador encadenado 2

Generador de frecuencia 3

Pulso con retraso 4

En el modo 0 el contador cuenta los pulsos de entrada. La operación de lectura de tal

canal retorna la cuenta actual de pulsos y resetea el contador.

En el modo 1 el contador cuenta los pulsos de entrada. La operación de lectura de tal

canal retorna la cuenta actual de pulsos pero no resetea el contador.

En el modo 2 el contador es encadenado con el contador anterior usando el mismo

modo. La operación de lectura desde el canal anterior retorna valores de 32 bits en vez

de valores de 16 bits.

Page 26: Documento final 2 - Uniandes

IEL2-I-06-49

26

En el modo 3 el contador trabaja como un generador de frecuencia con frecuencia

variable y un ciclo útil. Los dos canales de salida son asignados a un contador en este

modo. El primero (TimerxA) representa la frecuencia, el segundo (TimerxB) representa el

ciclo útil (de -1 a 1).

En el modo 4 el contador trabaja como un generador de pulsos con retraso. Al igual que

en el modo anterior, los dos canales de salida son asignados a un contador en este modo.

El pr imero (TimerxA) representa el ancho del pulso, y el segundo (TimerxB) el retraso del

pulso. Cada operación de escritura al canal TimerxB genera un pulso con retraso.

Ambos parámetros slot y opt son opcionales. Los valores por defecto son:

slot: 65535

opt (1): [0].

También, las ganancias de los canales son opcionales y sus valores por defecto son 1

(rango ± 5V).

Ahora prestemos atención a la asignación de canales de la tarjeta MF614. Los canales

hardw are de entrada y salida son asignados a números de canal comenzando con los

canales análogos, y siguiendo con los canales digitales. Esta asignación la podemos ver

en la siguiente tabla [11].

HUMUSOFT MF614 Real Time Toolbox

AD0…AD7 Inputs 1…8

IRC0…IRC3 Inputs 9…12

Count0…Count3 Inputs 13…16

DIN0…DIN7 Inputs 17…24 en modo bit

Input 17 en modo byte

DA0…DA3 Outputs 1…4

Timer0A…Timer0B Outputs 5…6

Timer1A…Timer1B Outputs 7…8

Timer2A…Timer2B Outputs 9…10

Timer3A…Timer 3B Outputs 11…12

DOUT0…DOUT7 Outputs 13…20 en modo bit

Output 13 en modo byte

Page 27: Documento final 2 - Uniandes

IEL2-I-06-49

27

La siguiente f igura muestra la ventana GUI de la tarjeta MF614 de Humusoft:

Figura 8. Ventana GUI HUMUSOFT MF614

Como observamos en la f igura 8, podemos notar en el espacio Command line el comando

que carga el driver hardw are con sus respectivos parámetros:

rtload (‘mf614’, 65535, [0 1 1 1 1 1 1 1 1 2500000 2500000 2500000 2500000 3 3 3 4]);

El signif icado del número 65535 ya fue explicado anteriormente, por tanto nos vamos a

enfocar en los valores del vector opt. El valor 0 en opt (1) signif ica que se va a trabajar el

modo de entrada y salida digital t ipo bit. El valor 1 desde opt (2) hasta opt (9) quiere decir

que vamos a operar en el rango ± 5V. El valor 250Khz desde opt (10) hasta opt (13)

representa la frecuencia. Y f inalmente, el valor 3 desde opt (14) hasta opt (16) especif ica

que los 3 timers (del 0 al 2) van a operar en el modo 3 (generador de frecuencia),

mientras que el último timer (timer 3) va a operar en el modo 4 (pulso con retraso).

Volviendo a la f igura 6, el bloque ‘RT Out’ PWM Output t iene asignado los canales del 5 al

10 y observando nuestra última tabla estos canales corresponden al Timer0A, Timer 0B,

Timer 1A, Timer1B, Timer 2A y Timer2B respectivamente. El bloque recibe a través de un

mux los siguientes valores en orden: 20000, voltaje motor principal, 20000, voltaje motor

secundario, 50 y el valor del centro de gravedad. Como estos timers van a operar en el

modo 3, el primer valor que reciben corresponde a la frecuencia y el segundo valor al ciclo

útil. De esta manera, al Timer 0A le es asignado un valor de 20000, que corresponde a

una frecuencia de 20KHz a la cual trabaja el motor principal y al Timer 0B se le asigna el

Page 28: Documento final 2 - Uniandes

IEL2-I-06-49

28

valor de entrada de este mismo motor que corresponde al ciclo útil y que concuerda con

nuestra tabla, ya que este voltaje de entrada se encuentra en unidades de máquina (MU)

y no puede salir del rango (-1,1) al igual que el ciclo útil. Así, es posible entender los

demás valores que entran a este bloque, y nos damos cuenta que el valor del centro de

gravedad del helicóptero trabaja a una frecuencia de tan solo 50Hz.

El bloque ‘RT Out’ Watchdog t iene asignado los canales 11 y 12, y recibe los valores [1 0].

A través de nuestra tabla, y recordando que el Timer 3 opera en el modo 4, el valor 1

corresponde al ancho de pulso (pulse width) y el valor 0 es el retraso del pulso. Y el

bloque ‘RT In’ Encoder input tiene asignado los canales 9 y 10 que corresponden a IRC0

e IRC1 los encoders infrarrojos que proporcionan la medida del ángulo de elevación y el

ángulo azimuth, que pueden ser consultados por el usuario.

El sistema de comunicación de la f igura 6 se pudo realizar gracias al ejemplo en diagrama

de bloques Simulink del controlador PID para el helicóptero que se incluye con el modelo

de la planta y que se encuentra disponible al usuario. Simplemente se realizaron algunos

pequeños cambios para mostrar la planta en su estado natural, y no controlable como

venía en el ejemplo, y los bloques que pertenecen exclusivamente a Real Time Toolbox

se dejaron quietos. La configuración de sus parámetros hardw are acaba de ser

explicada. Los bloques ‘Elevation’ y ‘Azimuth’ corresponden a los valores de entrada a los

motores principal y secundario, y como ya se dijo, están en unidades de máquina (MU) y se encuentran dentro del rango (-1,1).

La interfaz gráfica (GUI) busca comunicarse con estos bloques Simulink desde el

ambiente GUIDE para manipular estos parámetros que representan los voltajes de

entrada a los motores del helicóptero. Para el usuario ó estudiante, será una pequeña

ventana donde podrá modif icar el valor de entrada al motor principal y al motor lateral

simplemente deslizando una barra ó digitando el valor que desee. Por supuesto, estos

cambios sucederán en t iempo real, es decir, mientras el helicóptero se encuentra

corriendo. La ventana GUI luce de la siguiente forma:

Page 29: Documento final 2 - Uniandes

IEL2-I-06-49

29

Figura 9. Ventana GUI comunicación con Simulink desde GUIDE

Como observamos en la f igura, la ventana corresponde al ambiente GUIDE cuando se

está corriendo. El motor principal recibe un valor de entrada de 0.62 y el motor

secundario recibe un valor de entrada de -0.28 en MU. La ventana se realizó en el Layout

Editor. El nombre del archivo es modif icadu y como sabemos, genera 2 tipos de archivos

que son el .m y el .fig. En el momento, solo nos interesa el archivo .m que contiene los

espacios en blanco de los llamados (callbacks) a los componentes gráficos (slider y

current value) para la programación. La programación del archivo se realizó también en

base al código generado del ejemplo de aplicación “A GUI to Set Simulink Parameters” del

HELP de Matlab, ajustando los parámetros al modelo del helicóptero y modif icando los

nombres de los llamados a las funciones. Los pasos para la creación de la GUI se llevaron a cabo por medio del documento “Creating Graphical User Interfaces” [12].

El código del programa de la GUI se anexa al f inal del documento debidamente

comentado. La interfaz gráfica corriendo, que vemos en la f igura 9, envía los valores en

el rango (-1,1) que desee el usuario para el motor principal y el motor secundario al

diagrama de bloques Simulink (f igura 611), más exactamente a los bloques ‘Elevation’ y

‘Azimuth’. El valor actual de cada parámetro se puede observar en la ventana gráfica

como también se puede comprobar si inspeccionamos el bloque correspondiente de

Simulink.

Page 30: Documento final 2 - Uniandes

IEL2-I-06-49

30

4.4 IDENTIFICACIÓN MODELO DE ELEVACIÓN Ahora sí, volviendo a nuestro problema de identif icación de un modelo de elevación para

el helicóptero, y como ya contamos con esta poderosa herramienta que permite analizar

el comportamiento de la planta, podemos entrar a realizar pruebas.

Primero que todo, dejamos el motor secundario quieto, es decir, que el valor de entrada

será cero. Como ya se dijo, en el momento solamente nos vamos a enfocar en la

dinámica de elevación del helicóptero. Valores de entrada positivos a los motores hacen

girar las hélices en el sentido de las manecillas del reloj y valores de entrada negativos las

hacen girar en el sentido contrario. Un modelo para elevación se puede identif icar

excitando el sistema con una señal sbpa (secuencia binar ia pseudo-aleatoria) como

entrada, ó a partir de la respuesta escalón del sistema. Nos vamos a inclinar por el

segundo método, en el cual se considera el sistema como una caja negra donde vamos a

analizar el comportamiento de la señal de salida a partir de la variación de la señal de

entrada.

El helicóptero comienza a elevarse a partir de un valor de 0.5 aproximadamente, pero

para ese valor presenta todavía pequeñas oscilaciones. Para un valor de 0.6 el sistema

se encuentra en estado estable y para un rango de 0.6 a 0.68 se encuentra todavía en

esa misma región, para valores mayores a 0.67 el helicóptero se sale de la región de

estabilidad y se va al inf inito, es decir, llega a su máximo nivel de saturación.

Con este conocimiento, se aplicó una entrada escalón al motor principal con valor 0.6 y

delay de 5s y se le sumó un pequeño escalón (en el punto de operación) de valor 0.06 y

con delay de 10s. El resultado obtenido fue el siguiente:

Page 31: Documento final 2 - Uniandes

IEL2-I-06-49

31

Figura 10. Respuesta escalón obtenida para identificación

Se realizó otra prueba similar, en la cual se aplica una entrada escalón al motor principal

con valor de 0.61 y delay de 1s al cual se le suma un pequeño escalón (en el punto de

operación) también de valor 0.06 y con delay de 10s. El resultado puede verse en la

f igura 11.

Basándonos en estas gráficas y en los datos arrojados por el modelo a través del bloque

‘RT In’ (f igura 7), contamos con valores de entrada y salida para realizar la identif icación

del modelo de elevación en ident. Estos datos medidos por los sensores IRC son

mandados hacia el w orkspace por medio del bloque ‘datos_salida’, como se ve en la

f igura.

Figura 11. Respuesta escalón obtenida para identificación con valores diferentes

Con los datos obtenidos a través de estas dos pruebas y la utilización de la herramienta

ident de Matlab fue posible hallar una función de transferencia del modelo. La

Page 32: Documento final 2 - Uniandes

IEL2-I-06-49

32

herramienta de Identif icación de Sistemas conocida como Ident sirve para construir

modelos de sistemas a partir de datos observados.

La ventana de interfaz gráfica al usuario ident para nuestro modelo de elevación se

muestra a continuación:

Figura 12. GUI ident para el modelo de elevación

Figura 13. Salida del modelo para comparación de datos

Es posible observar la relación entre los datos observados y el modelo estimado cuando

activamos la casilla Model Output que se encuentra en la ventana de identif icación.

Cuando activamos este icono se despliega una ventana como la f igura 13, que nos

Page 33: Documento final 2 - Uniandes

IEL2-I-06-49

33

muestra la información del sistema estimado. En esta ventana es posible comparar los

datos observados de salida con la salida del modelo a los datos de entrada observados

[13]. La f igura presenta el caso del modelo de elevación para diferentes modelos

paramétricos.

El modelo paramétrico seleccionado fue Box-Jenkins con parámetros [2 2 2 2 1] (bj22221)

que arroja un resultado aceptable de comparación entre los datos observados y el modelo

estimado, y que además permite hallar una función de transferencia de orden menor.

Después de realizar el respectivo procedimiento para hallar la función de transferencia del

modelo estimado, el resultado obtenido es el siguiente:

sTzz

zzG m 2.0,

8204.0776.1428.4754.3

)( 2 =+−

+=

4.5 DISEÑO DEL CONTROLADOR Después de hallar la función de transferencia que define el modelo de elevación podemos

pasar f inalmente al diseño de nuestro controlador. Como no nos interesa enfocarnos en

una sola técnica de control por el momento, podemos escoger la técnica que más nos

guste ó que nos sea más familiar. El controlador escogido fue el Regulador Algebraico.

Se diseñó el controlador tomando un valor de zita de 0.707 ( )707.0=ξ y con tiempo de

asentamiento igual a 5s ( )sTs 5= .

21221

21

21

222

21

21

4494.0231.114494.0231.1))((

266.06153.0,266.06153.0

8161.08.0,8161.08.0306.16.12

143.1)5)(707.0(

44,5,707.0

8204.0776.11428.4754.3

)(

21

−−

−−

−−

+−⇒+−=−−

+==−==

+−=−−=++→++

==⋅

===

+−+

=

zzzzzzzz

jezjez

jsjsssWsWs

TsWsTs

zzzz

zG

TsTs

nn

n

ξ

ξξ

21 4494.0231.11 −− +−= zzP

Page 34: Documento final 2 - Uniandes

IEL2-I-06-49

34

421

3211

2101

101

22

110

1111

121

11121

1

21

1

21

11

1

1

)428.48204.0()754.3428.4596.28204.0(

)754.3428.4776.2596.2()754.3776.2(1

))(428.4754.3()1)(1)(8204.0776.11()428.4754.3()1)(8204.0776.11(

)1(8204.0776.11

428.4754.3

18204.0776.11

)428.4754.3()(

)()(

−−

−−

−−−−−−−−

−−−−−

−−

−−

−−

−−

−−

+−++++−+

++−+++−+=

+++++−+−=

++−+−=

+−⋅=

+−=

+=

=+−+

=⇒

zrszrrs

zrrszrsP

zrzrrzzzszzzPRzzSzzzP

BRzSzAPzzA

zB

dzz

zzzG

zAzBz

d

d

Como los dos polinomios P deben ser iguales se genera el siguiente sistema de

ecuaciones que permite hallar los coeficientes del controlador Algebraico:

0428.48204.00754.3428.4596.28204.0

4494.0754.3428.4776.2596.2231.1754.3776.2

21

211

101

01

=+−

=+++−=++−

−=++−

rsrrs

rrsrs

Si lo escribimos de una mejor forma como una matriz, que representa el mismo sistema

de 4 ecuaciones y 4 incógnitas:

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛−

=⋅

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

00147.2

545.1

428.4008204.0754.3428.40596.20754.3428.4776.200754.31

x

El vector x corresponde a nuestras incógnitas en orden (en este caso 1s 0r 1r y 2r ).

Después de resolver el sistema:

1281.03287.0

2274.06915.0

2

1

0

1

=−=

==

rrrs

Por tanto, la función de transferencia del controlador queda de la siguiente manera

después de reemplazar por los valores hallados:

Page 35: Documento final 2 - Uniandes

IEL2-I-06-49

35

6915.03085.01281.03287.02274.0

)6915.01)(1(1281.03287.02274.0

)1)(1()( 2

2

11

21

11

1

22

110

−−+−

=+−

+−=

+−++

= −−

−−

−−

−−

zzzz

zzzz

zszzrzrr

zGc

Para implementar el controlador en la planta real, se modif ica el diagrama de bloques

Simulink de la f igura 6 de la siguiente forma:

Figura 14. Diagrama de bloques Simulink para la implementación del controlador Algebraico

La respuesta obtenida se muestra a continuación para un valor de referencia de 0.6 al

cual se le suma un escalón de 0.06 en t=15s:

Figura 15. Salida elevación controlador Algebraico

Page 36: Documento final 2 - Uniandes

IEL2-I-06-49

36

El resultado obtenido es bastante bueno, y el sistema se estabiliza en el tiempo de

asentamiento diseñado. Lo clave en este punto es lograr una buena identif icación que se

aproxime lo más cercano posible al modelo en elevación del helicóptero. Es importante

mencionar lo que observaremos en las simulaciones sobre la planta real, el ángulo de

elevación se presenta en un rango de (0-500), siendo 0 el valor mínimo y 500 el valor

máximo. El ángulo azimuth se encuentra en un rango de (0-1500). Por lo tanto, debemos

tener cuidado a la hora de implementar los controladores que diseñemos, y agregar un

factor de escalamiento que se ajuste con la referencia a probar. Este factor de

escalamiento se observa en la f igura 14 como una ganancia en la realimentación.

El programa del controlador Algebraico contiene el mismo algoritmo de diseño. Si

corremos el programa con esta planta y con las mismas especif icaciones de diseño

veremos que vamos a llegar al mismo resultado. Además, junto con el programa se

anexa el diagrama de bloques Simulink que permite verif icar el resultado por simulación,

transfiriendo los datos al modelo automáticamente. El regulador Algebraico será

explicado en forma más detallada en la Unidad 3, donde se profundizará sobre técnicas

tradicionales de control para la aplicación en la planta.

Page 37: Documento final 2 - Uniandes

IEL2-I-06-49

37

5 UNIDAD 2: LINEALIZACIÓN

La linealización como su propio nombre lo indica, es el efecto de linealizar sistemas que

se forman de funciones compuestas de su variable dependiente, es decir, que por medios

matemáticos una función que no cumple el pr incipio de superposición, se transforma en

una función semejante que s í lo cumple [10].

No siempre nos vamos a encontrar con sistemas lineales, y mucho menos en la vida

diaria, donde las plantas reales son bastante no lineales. Para diseñar un controlador se

supone que el sistema es lineal, mejor dicho, se debe asegurar que el sistema sea lineal.

Si en el sistema está presente cualquier componente no lineal, se debe linealizar el

sistema antes de hallar la función de transferencia.

Lo primero que se debe hacer es reconocer el componente no lineal y escribir la ecuación

diferencial no lineal. Cuando se hace lineal una ecuación diferencial no lineal, se hace

para entradas a pequeña señal alrededor de la solución en estado de equilibrio cuando la

entrada a pequeña señal es igual a cero. Lo que sigue, es hacer lineal la ecuación

diferencial no lineal y luego tomar la transformada de Laplace de la ecuación diferencial

linealizada, suponiendo condiciones iniciales cero. El últ imo paso es separar las variables

de entrada y salida, y construir la función de transferencia [6].

Para nuestro caso del helicóptero, el modelo presenta algunos componentes no lineales,

que como ya se dijo, deberán ser linealizados antes de hallar la función de transferencia.

El diagrama de bloques Simulink del modelo completo construido a partir de la f igura 4 se

puede observar en la f igura 16.

Page 38: Documento final 2 - Uniandes

IEL2-I-06-49

38

Figura 16. Diagrama de bloques Simulink del modelo completo

Page 39: Documento final 2 - Uniandes

IEL2-I-06-49

39

Podemos ver en el modelo que el helicóptero presenta los siguientes componentes no

lineales: una función matemática que eleva al cuadrado, y dos funciones trigonométricas,

un seno y un coseno. La función matemática se repite en el subsistema azimuth. En el

modelo completo podemos notar la presencia de los subsistemas antes mencionados: el

motor pr incipal, el motor secundario ó lateral, elevación y azimuth, al igual que la unión de

éstos.

Para nuestro estudio de linealización, solamente dividiremos el modelo en dos

subsistemas que son elevación y azimuth, y el acople que existe entre éstos. En nuestro

modelo la parte superior corresponde a la dinámica de elevación y la parte inferior

corresponde a la dinámica azimuth (f igura 16). Para comprender mejor la linealización del

modelo completo analizaremos cada modelo por separado, asumiendo que se encuentran

aislados completamente el uno del otro, es decir, eliminando el acople existente entre

ellos, representado por la función de transferencia de primer orden del modelo. Es obvio

que los lazos que conectan ambos modelos también serán despreciables.

5.1 LINEALIZACIÓN DE LA ELEVACIÓN El modelo de elevación después de eliminar los lazos que no nos interesan y ser aislado

del sistema completo queda de la siguiente manera:

Figura 17. Modelo de elevación del helicóptero

Redibujando el modelo para la obtención de las variables de estado:

Page 40: Documento final 2 - Uniandes

IEL2-I-06-49

40

Figura 18. Modelo de elevación con las variables de estado

En la f igura 18 observamos como la función de transferencia 10020

100)( 2 ++

=ss

sG fue

reemplazada por bloques para una fácil visualización de las variables de estado del

sistema. La ecuación principal que define el sistema es:

θθτθθ ψ&&& BsenuKubuaI ggyro −−⋅−+= 111

211 cos

Del modelo podemos notar que:

434

313

101101

xxx

xux

−=

−=

&

&

Entonces, las ecuaciones que definen el sistema en el espacio de estados son:

434

313

1112412

412

12

1

10101010

)cos(1

xxxxux

uxKsenxxBxbxaI

x

xx

x

gyrog

−=−=

⋅−−−+==

==

=

&

&

&&&

&&

τθ

θ

θ

ψ

A continuación, el sistema va a ser linealizado en un punto de operación. Para hallar el

punto de operación nos enfocamos en la ecuación principal que define el sistema, y

Page 41: Documento final 2 - Uniandes

IEL2-I-06-49

41

recordando que las derivadas son cero en estado estable, hallamos el valor de entrada

para el ángulo (en radianes) deseado.

0cos

cos

1112

11

1112

11

=−⋅−+

−−⋅−+=

θτθ

θθτθθ ψ

senuKubua

BsenuKubuaI

ggyro

ggyro&&&

Por ejemplo, si se quiere un ángulo de elevación θ de 0 radianes, la entrada que se debe

aplicar 1u es (reemplazando los parámetros del modelo que se encuentran en la tabla 1):

⎩⎨⎧=

=−−

=−+

=−⋅−+

3199.00

0015.00445.0186.0

0

0)0()0cos(

1

112

1

1112

11

1112

11

u

uuu

uKubua

senuKubua

gyro

ggyro τ

Es decir, que si queremos un ángulo θ de 0 radianes debemos aplicar una entrada 01 =u

ó 3199.01 =u . Si se introducen estos valores a la entrada del modelo vamos a llegar al

ángulo deseado, comprobando así que la respuesta obtenida es correcta.

El modelo va a ser linealizado en el punto de operación ( 0=θ , 3199.01 =u ), y las

ecuaciones que contienen componentes no lineales van a ser linealizadas utilizando la

aproximación del primer término de la serie de Taylor en este punto.

)()()( 00 0xx

dxdf

xfxf xx −≈− =

44

44

44

43199.044

244

6398.0)(1024.06398.0)(

)3199.0(6398.01023.0)(

)3199.0(2)3199.0()(

)(

4

xxfxxf

xxf

xxfxf

xxf

x

≅−=

−+=

−+=

=

=

11

1011

11

)(

)0(cos)0()(

)(

1

xxf

xxfxf

senxxf

x

−+=

=

=

Page 42: Documento final 2 - Uniandes

IEL2-I-06-49

42

1)(

)0()0()(

cos)(

1

1011

11

1

−−=

=

=

xf

xsenxfxf

xxf

x

Finalmente, las ecuaciones que definen el sistema en el espacio de estados después de

ser linealizadas quedan de la siguiente forma:

434

313

1411212

21

10101010

)6398.0(1

xxxxux

uKxbaI

xI

Bx

Ix

xx

gyrog

−=−=

−++−−=

=

&

&

&

&

ψτ

En forma matricial y después de reemplazar por los valores de los parámetros:

( )xy

u

xxxx

xxxx

00010

10432.30

1010000100005.170144.1764.8

0010

1

1

4

3

2

1

4

3

2

1

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛−

+

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−

−−=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

&

&

&

&

Hallamos su respectiva función de transferencia:

4.8767.2896.13114.2117043.0015.0

)764.8144.1()10()11360020(015.0

)(

234

2

22

2

1

+++++−−

=+++

−+−=

+−= −

ssssss

sssss

y

DBAsICy

Validando el modelo en Simulink y comparando con el modelo de elevación se obtiene la

siguiente respuesta:

Figura 19. Comparación modelo no lineal elevación con modelo lineal en punto de operación

Page 43: Documento final 2 - Uniandes

IEL2-I-06-49

43

Para los que no son muy familiares con la comprobación de linealización, la prueba es

bastante sencilla. Se aplica un pequeño escalón en el modelo no lineal en el punto de

operación, y este mismo escalón debe ser aplicado en el modelo lineal hallado. La

variación debe ser la misma ó muy parecida, como se observa en la figura 19.

La linealización de la elevación para cualquier punto de operación queda de la siguiente

forma:

( )xy

uxK

Ibxa

IIB

usenxKxIx gyrogyrog

00010

10

)cos(10

10100001000

)2(10)cos(10010

11141111

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛−

+

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−

+−

⋅+−=

ψτ&

5.2 LINEALIZACIÓN DEL AZIMUTH

Al igual que en elevación, el modelo azimuth después de eliminar los lazos que no nos

interesan y ser aislado del sistema completo queda de la siguiente manera:

Figura 20. Modelo azimuth del helicóptero

Redibujando el modelo para la obtención para las variables de estado:

Figura 21. Modelo azimuth con las variables de estado

Page 44: Documento final 2 - Uniandes

IEL2-I-06-49

44

La ecuación que define el sistema azimuth es:

ϕϕ ϕϕ &&& BubuaI −+= 222

22

Del modelo se puede notar que:

434

323

4141

xxx

xux

−=

−=

&

&

Entonces, las ecuaciones que definen el modelo en el espacio de estados son:

434

323

2422

422

12

1

4444

)(1

xxxxux

xBxbxaI

x

xxx

−=−=

−+==

===

&

&

&&&

&&

ϕϕ

ϕ

ϕϕ

De la misma forma que en elevación, el sistema va a ser linealizado en un punto de

operación. De nuevo, nos enfocamos en la ecuación que define el sistema azimuth, y

asumiendo las derivadas cero, hallamos el valor de entrada para el ángulo (en radianes)

deseado.

0222

22

222

22

=+

−+=

ubua

BubuaI ϕϕ ϕϕ &&&

Como observamos, para el modelo azimuth no es posible establecer un ángulo, pero

resolviendo la ecuación anter ior podemos encontrar el valor de entrada 2u del punto de

operación (reemplazando los valores de los parámetros que se encuentran en la tabla 1):

⎩⎨⎧−

=

=+

=+

8909.00

00294.0033.0

0

2

22

2

222

22

u

uu

ubua

Como vemos, tenemos dos valores de entrada que nos llevan a un estado estable.

Vamos a usar el segundo término, es decir, el valor diferente de cero, ya que si tomamos

como entrada 02 =u la respuesta que obtendremos será cero también. Si introducimos

8909.02 −=u en el modelo la respuesta que se obtiene es -0.5652 radianes (-32.383º),

como podemos ver en la f igura 22.

Page 45: Documento final 2 - Uniandes

IEL2-I-06-49

45

Figura 22. Salida azimuth en el punto de operación ( 8909.02 −=u )

De esta manera, el modelo va a ser linealizado en el punto de operación ( 5652.0−=ϕ ,

8909.02 −=u ), y el procedimiento de linealización será el mismo que en la sección

anterior.

44

44

48909.044

244

782.1)()8909.0(782.17937.0)(

)8909.0(2)8909.0()(

)(

4

xxfxxf

xxfxf

xxf

x

−≅+−=

++−=

=

−=

Finalmente, las ecuaciones que definen el sistema en el espacio de estados después de

ser linealizadas quedan de la siguiente forma:

434

433

42222

21

4444

)782.1(1

xxxxxx

xbaI

xIB

x

xx

−=−−=

+−+−=

=

&

&

&

&

ϕϕ

ϕ

En forma matricial y después de reemplazar los valores de los parámetros:

( )xy

u

xxxx

xxxx

00010400

44000400102.70099.200010

2

2

4

3

2

1

4

3

2

1

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

+

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−

−−=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

&

&

&

&

Page 46: Documento final 2 - Uniandes

IEL2-I-06-49

46

Es importante aclarar que la salida 2y se encuentra en radianes, y que si se desea el

resultado en grados solamente es necesario multiplicar por una constante, representada

por el bloque ‘Kphi1’ en el modelo de la f igura 20. Lo mismo ocurre para el caso de

elevación. Es decir, se tiene la siguiente ecuación:

)()( 22 radianesyKgradosy ⋅=

Hallando la función de transferencia del modelo:

sssssssy

DBAsICy

58.3379.321.10632.113

)4)(099.2(632.113

)(

23422

1

+++−=

++−=

+−= −

Validando el modelo en Simulink y comparando con el modelo azimuth se obtiene la

siguiente respuesta:

Figura 23. Comparación modelo no lineal azimuth con modelo lineal en el punto de operación

La linealización general del modelo azimuth para cualquier punto de operación queda

entonces de la siguiente forma:

( )xy

ubxa

IIB

x

0001

0400

44000400

)2(1

00

0010

2242

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

+

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−

+−

= ϕϕ

ϕ

&

Page 47: Documento final 2 - Uniandes

IEL2-I-06-49

47

5.3 LINEALIZACIÓN MODELO COMPLETO Ahora que ya se ha f inalizado el estudio de la linealización y la obtención de la función de

transferencia del modelo de elevación y el modelo azimuth, podemos pasar a mirar el

modelo completo.

El modelo del helicóptero completo (f igura 16) está constituido por los subsistemas de

elevación y azimuth, ya estudiados anteriormente, junto con un acople representado por

una función de transferencia de orden uno que va de elevación a azimuth y un lazo que va

desde azimuth a elevación. Se ha modif icado un poco el modelo para la identif icación de

las variables de estado, como observamos en la f igura 24.

Veremos que después de entender los modelos por aparte (elevación y azimuth), la

linealización y la obtención de la función de transferencia del modelo total será mucho

más sencilla. Entre las novedades encontramos un lazo de acople representado por una

función de transferencia de orden uno, que adiciona un estado más al sistema, y un lazo

que va desde azimuth a elevación que modif ica la ecuación general del modelo de

elevación. El acople 175.000891.00241.0

11

)(+

−−=

++

=s

ssTsT

KsGpr

orr (f igura 16) fue

descompuesto en varios bloques para la identif icación de la variable de estado (f igura 24).

Las ecuaciones que definen el sistema son:

1222

22

1112

11 cos

uKBubuaI

uKsenBubuaI

r

gyrog

−−+=

⋅−−−+=

ϕϕ

ϕθθτθθ

ϕϕ

ψ

&&&

&&&&

Como vemos, son bastante similares a las estudiadas en las secciones anteriores.

Page 48: Documento final 2 - Uniandes

IEL2-I-06-49

48

Figura 24. Modelo completo con variables de estado

Page 49: Documento final 2 - Uniandes

IEL2-I-06-49

49

En base a la f igura 24, las ecuaciones del modelo en variables de estado no lineal son:

prpr

pr

rr

pr

rrr

gyrog

Tx

Tu

x

xxxxux

uT

TKx

TT

KKxBxbxaI

x

xxxuxxxx

xxuKsenxxBxbxaI

x

xx

919

878

727

10

90

6822

826

65

414

343

61112312

312

21

4444

))((1

10101010

)cos(1

−=

−=

−=

−−−−+==

==−=−=

⋅−−−+==

=

&

&

&

&&&

&&

&

&

&&&

&

ϕϕ

ψ

ϕ

ϕ

τθ

(1)

Al igual que con el modelo de elevación y el modelo azimuth, el sistema completo va ser

linealizado en un punto de operación. Entonces, nos enfocamos en las ecuaciones que

definen el sistema, sin olvidar otra vez que las derivadas se hacen cero en estado estable.

0

cos

112

11

1112

11

=−+

⋅−−−+=

θτ

ϕθθτθθ ψ

senubua

uKsenBubuaI

g

gyrog &&&& (2)

01222

22

1222

22

=++

−++=

uKubua

BuKubuaI

r

r ϕϕ ϕϕ &&& (3)

El estudiante puede elegir el punto de operación donde él desee linealizar el modelo.

Como ya vimos en las secciones anteriores, para hallar el punto de operación no

debemos olvidar que el ángulo de elevación se f ija por el estudiante, mientras que el

ángulo azimuth es desconocido por el momento, ya que no se tiene acceso directo a éste.

El ángulo de elevación escogido θ va permitir hallar las entradas 1u y 2u que deben ser

aplicadas al sistema para lograr estado estable.

Como ejemplo, vamos a escoger un ángulo de elevaciónθ y encontraremos los valores

de entrada 1u y 2u . Después de esto, vamos a linealizar el sistema completo en forma

general para cualquier punto de operación.

Para θ = 0 radianes la ecuación (2) va quedar de la siguiente forma:

Page 50: Documento final 2 - Uniandes

IEL2-I-06-49

50

⎩⎨⎧

=

=−

=+

2392.00

00445.0186.0

0

1

12

1

112

11

u

uu

ubua

Y si observamos la ecuación (3) vemos que depende de 1u , así que el valor que

escojamos de 1u va a generar dos valores diferentes de 2u . Si seleccionamos el valor

diferente de cero, es decir 2392.01 =u , el valor de la entrada 2u debe ser:

⎩⎨⎧−−

=

=++

=−−+

=++

0796.08113.0

00021313.00294.0033.0

0)2392.0)(00891.0(0294.0033.0

0

2

22

2

22

2

1222

22

u

uu

uu

uKubua r

Como vemos, van a aparecer diferentes combinaciones de entradas para un ángulo

seleccionado. Para nuestro ejemplo se va a linealizar en el punto de operación con los

siguientes valores: 0=θ 2392.01 =u y 8113.02 −=u . Al f inal del documento, se anexa

un programa que le facilita el cálculo al usuario, y permite calcular las entradas necesarias

para un ángulo de elevación deseado.

1)(

)0()0()(

cos)(

)(

)0(cos)0()(

)(

1

1011

11

11

1011

11

1

1

−−=

=

−+=

=

=

=

xf

xsenxfxf

xxf

xxf

xxfxf

senxxf

x

x

6582.0623.1)(

)811.0(2)811.0()(

)(

0572.04784.0)(

)239.0(2)239.0()(

)(

88

881.088

288

33

3239.033

233

8

3

−−≅

++−=

=

−≅

−+=

=

−=

=

xxf

xxfxf

xxf

xxf

xxfxf

xxf

x

x

Entonces, las ecuaciones del modelo en variables de estado lineal para este punto de

operación quedan de la siguiente forma:

Page 51: Documento final 2 - Uniandes

IEL2-I-06-49

51

prpr

pr

rr

pr

rrr

gyrog

Tx

Tux

xxxxux

uT

TKx

TT

KKxBxbxaI

x

xxxuxxxx

xuKxxBxbxaI

x

xx

919

878

727

10

90

682826

65

414

343

611231312

21

4444

))()6582.0623.1((1

10101010

))0572.04784.0((1

−=

−=

−=

−−−−+−−==

==−=−=

−−−+−==

=

&

&

&

&&&

&&

&

&

&&&

&

ϕϕ

ψ

ϕ

ϕ

τθ

En forma matricial, y reemplazando por los valores de los parámetros:

( )21

9

8

7

6

5

4

3

2

1

0333.100400748.700010000000

333.100000000044000000004000000601.5836.50099.200000

0001000000000010000000001010000008211.00018.10144.1764.8000000010

uux

xxxxxxxxx

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

+⋅

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

−−

−−−−

−−−−

=

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

&

&

&

&

&

&

&

&

&

uxyy

⋅⎟⎟⎠

⎞⎜⎜⎝

⎛+⋅⎟⎟

⎞⎜⎜⎝

⎛=⎟⎟⎠

⎞⎜⎜⎝

⎛00

000010000000000001

2

1

Hallando la función de transferencia del modelo:

u

ssssssss

ssssssssssssss

yy

uu

sssssss

ssssssssssss

yy

DBAsICy

⋅⎟⎟⎟⎟

⎜⎜⎜⎜

+++−

+++

++++++++++++++−

=⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎠

⎞⎜⎜⎝

⎛⋅

⎟⎟⎟⎟

⎜⎜⎜⎜

++−

+++⋅

+++++++++−−−⋅−

=⎟⎟⎠

⎞⎜⎜⎝

+−= −

584.3379.321.1038.93

799.2432.3863.2748.7

3.2948.3256.1591.5324.1167.76

7.24527.38181.22397.8002075.2414.261473.281013.88836.6

)4)(099.2(38.93

)099.2)(333.1()3695.0(748.7

)764.8144.1()4)(099.2(67.76

)764.8144.1()10)(099.2)(3333.1()9.4108.4416.139(362.6

)(

23423

234523456

23

2

1

2

1

2

2222

23

2

1

1

Page 52: Documento final 2 - Uniandes

IEL2-I-06-49

52

ssssA

ssss

A

sssssA

sssssssss

A

584.3379.321.1038.93799.2432.3

863.2748.733.294809.325605.15911.5324.11

67.7669.2452765.3818087.2239695.800015.2075763.24

145.2614731.2810135.888362.6

23422

2321

234512

23456

23

11

+++−

=

+++

=

+++++=

+++++++++−

=

Validando el modelo en Simulink y comparando con el modelo completo no lineal se

obtiene el siguiente resultado:

Figura 25. Salidas elevación y azimuth comparación modelo no lineal y lineal

Como vemos en la f igura 25 la variación en la salida del modelo no lineal y lineal es muy

parecida, por tanto el modelo lineal hallado es una buena aproximación al modelo no

lineal en el punto de operación. La prueba de linealización es la misma que se hace para

sistemas de una sola entrada y una sola salida. Para nuestro ejemplo, se aplicó un

pequeño escalón de valor 0.05 y delay 15s en la entrada 1u y se observaron ambas

salidas, es decir, elevación y azimuth.

La linealización general del sistema completo para cualquier punto de operación se realiza

de la misma manera que el ejemplo que acabamos de hacer. Nos enfocamos otra vez en

las ecuaciones del modelo en variables de estado no lineal en (1). Y linealizamos el

modelo completo mediante el uso de derivadas parciales, asumiendo cada ecuación como

una función. Por ejemplo:

Page 53: Documento final 2 - Uniandes

IEL2-I-06-49

53

0,cos

),cos(1

0),2(1,,cos

)cos(1

0,0,0,1,0

2

261

1

211

6

2

9,8,7,5,42

1313

2

2

26111

1

2

61112312

3122

2

1

1

12

1

2

1

1

1

211

=∂∂⋅−

=∂∂−=

∂∂

=∂∂+=

∂∂−

=∂∂⋅

+−

=∂∂

⋅−−−+==

=∂∂

=∂∂

=∂∂

=∂∂

=∂∂

==

=

uf

IxxK

ufxuK

Ixf

xfbxa

Ixf

IB

xf

IxsenxuK

Ix

xf

xxuKsenxxBxbxaI

xf

uf

uf

xf

xf

xf

xxf

gyrogyro

ii

gyrog

gyrog

ii

ψ

ψ

τ

τ&

&

Y así sucesivamente seguimos para las demás ecuaciones. Estos términos se deben

ordenar en la matriz de la siguiente manera:

uxyy

u

uf

uf

uf

uf

uf

uf

x

xf

xf

xf

xf

xf

xf

xf

xf

xf

x

⋅⎟⎟⎠

⎞⎜⎜⎝

⎛+⋅⎟⎟

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

+⋅

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

=

0000

000010000000000001

2

1

2

9

1

9

2

2

1

2

2

1

1

1

9

9

2

9

1

9

9

2

2

2

1

2

9

1

2

1

1

1

MM

K

MLMM

L

L

&

Reemplazando por las derivadas parciales en la matriz:

u

T

ITTK

IxxK

x

T

I

KT

TK

Ibxa

IB

IxuK

bxaII

BI

xsenxuKx

x

pr

pr

rr

gyro

pr

rpr

rr

gyrogyrog

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

+

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

−−

−+−

−−

−+

−⋅+−

=

01

0040

0

0001000

0cos

00

100000000

044000000004000000

2000000

000100000000001000000000101000

000cos

00)2(1cos000000010

0

16

0

282

11131

6111

ϕ

ϕϕϕ

ϕ

ψτ

L

&

Page 54: Documento final 2 - Uniandes

IEL2-I-06-49

54

uxyy

⋅⎟⎟⎠

⎞⎜⎜⎝

⎛+⋅⎟⎟

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛0000

000010000000000001

2

1

Y teniendo la representación de estados es posible obtener la función de transferencia del

modelo en el punto de operación. Como observamos, en las matrices A y B tenemos

valores constantes, y valores variables (que dependen del punto de operación). No

podemos olvidar que:

ϕϕ

θ

θ

&&&&

&&&&

===

==

=

656

5

212

1

,

,

xxxx

xxx

x

Entonces, para cualquier punto de operación simplemente debemos reemplazar por los

valores variables correspondientes en la matriz. Si echamos un vistazo detallado a las

matrices, solamente van a estar cambiando siempre 4 valores, que dependen del punto

de operación. Como otro ejemplo, hallemos la representación de estados para el punto

de operación 2.0=θ , 3546.01 =u y 125.02 −=u .

( )21

9

8

7

6

5

4

3

2

1

0333.100400748.700010000000

333.100000000044000000004000000601.5109.50099.200000

0001000000000010000000001010000001929.10020144.1589.8000000010

uux

xxxxxxxxx

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

+⋅

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

−−

−−−−

−−

−−−

=

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜

&

&

&

&

&

&

&

&

&

uxyy

⋅⎟⎟⎠

⎞⎜⎜⎝

⎛+⋅⎟⎟

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛00

000010000000000001

2

1

Al f inal del documento, se anexa también un programa que calcula la representación en

variables de estado de un punto de operación específ ico, junto con su respectiva función

de transferencia. Además, si digitamos los polinomios de los denominadores de las 4

posiciones de la matriz de transferencia obtendremos como resultado los polos de la

función continua para analizar la estabilidad del sistema. Como observamos, el modelo

que se obtiene apenas convertimos del espacio de estados a función de transferencia es

un sistema MIMO 2x2 (2 entradas y 2 salidas) que representa al helicóptero en un punto

de operación, es decir, una aproximación lineal al modelo, que si es posible controlar.

Page 55: Documento final 2 - Uniandes

IEL2-I-06-49

55

Esto es lo que veremos en las siguientes 2 unidades, el diseño de controladores por

técnicas tradicionales y por una técnica nueva: el control predictivo.

Page 56: Documento final 2 - Uniandes

IEL2-I-06-49

56

6 UNIDAD 3: EL PROBLEMA DE CONTROL (TÉCNICAS TRADICIONALES)

Ahora que ya hemos hallado un modelo lineal de la planta, entramos a uno de los

objetivos principales del proyecto, que es el diseño de los controladores. Las primeras

técnicas que vamos a aprender son el diseño de los controladores clásicos ó tradicionales

que se estudian en un curso de control. La teoría de control clásica incluye bastantes

métodos tradicionales para controlar una planta. En esta unidad nos vamos a concentrar

en 3 solamente: el diseño mediante el lugar de raíces, el regulador Algebraico y el diseño

en variables de estado. Los tres métodos serán estudiados en el caso discreto (el

algebraico solamente se puede implementar en sistemas discretos).

6.1 DISEÑO BASADO EN EL MÉTODO DEL LUGAR GEOMÉTRICO DE LAS RAÍCES

La estabilidad relativa del sistema de control en tiempo discreto puede ser investigada en

relación con el círculo unitario en el plano z. A veces, es necesario investigar los efectos

de la ganancia del sistema o del per íodo de muestreo del sistema sobre la estabilidad

absoluta y relativa del sistema en lazo cerrado. Para estos f ines, el método del lugar

geométrico de las raíces es muy útil.

El método del lugar geométrico de las raíces desarrollado para sistemas en tiempo

continuo puede ser extendido sin modif icaciones a sistemas en tiempo discreto, excepto

porque el límite de estabilidad queda modif icado del eje ωj en el plano s al círculo

unitario en el plano z . La localización de los polos para los sistemas en lazo cerrado en

el plano z debe ser interpretada en forma distinta a la correspondiente en el plano s . Un

buen diseñador normalmente utiliza el método del lugar geométr ico de las raíces para un

diseño preliminar, a f in de localizar los polos dominantes en lazo cerrado en las

Page 57: Documento final 2 - Uniandes

IEL2-I-06-49

57

posiciones deseadas del plano z y a continuación utiliza simulación digital para mejorar

desempeño en lazo cerrado.

En el diseño por medio del lugar de raíces, los valores de z que satisfacen tanto las

condiciones de ángulo como de magnitud son las raíces de la ecuación característica, es

decir los polos en lazo cerrado.

Condición de ángulo:

L,2,1,0),12(º180)( =+±=∠ kkzF

Condición de magnitud:

1)( =zF

Una gráfica de los puntos en el plano complejo que satisfacen solamente la condición de

ángulo es el lugar geométrico de las raíces. Las raíces de la ecuación característica (los

polos en lazo cerrado) que corresponden a un valor dado de la ganancia pueden

localizarse en el lugar geométrico de las raíces mediante la condición de magnitud [14].

La herramienta Sisotool de Matlab permite el diseño de compensadores a partir del lugar

geométrico de las raíces continuo o discreto.

6.2 EL REGULADOR ALGEBRAICO Como ya se había dicho, los reguladores Algebraicos se implementan en sistemas

discretos. Se implementa un sistema de compensación de la siguiente manera:

Figura 26. Regulador Algebraico [15]

Con )(

)()( 1

1

−−

=zA

zBzzG

d

que es la función de transferencia del proceso, )()(

zAzB

m

m el

acondicionador de la dinámica de regulación, )(zT un compensador en anticipación y

Page 58: Documento final 2 - Uniandes

IEL2-I-06-49

58

)(zS y )(zR los reguladores del sistema. En la gráfica también observamos )(zζ que

representa una secuencia de perturbación (ruido, errores de modelaje, no linealidades).

El diseño del regulador consiste en encontrar Am, Bm, T, R y S. Además, el sistema debe

cumplir la ecuación Diophantina: )()()()()( zRzBzzSzAzP d−+= siendo )(zP , un

polinomio que cumple la colocación de polos deseada por el diseñador.

La ecuación Diophantina puede ser modif icada como:

)()()()1)(()( 1 zRzBzzSzzAzP d−− +−= para asegurar error cero a entrada escalón. Es

importante mencionar que la planta debe presentar un retardo puro para poder aplicar

este método [10].

6.3 DISEÑO POR VARIABLES DE ESTADO Los métodos convencionales como los del lugar geométrico de las raíces y los de

respuesta en frecuencia, son útiles para los casos de sistemas con una entrada y una

salida. Estos métodos se basan en la relación entrada-salida del sistema, es decir, en la

función de transferencia. No se aplican a sistemas no lineales, excepto en casos simples.

Un sistema de control moderno puede tener muchas entradas y muchas salidas, y éstas

están interrelacionadas de una manera complicada. Los métodos en el espacio de

estados para el análisis y la síntesis de sistemas de control son más adecuados para

tratar con sistemas con varias entradas y varias salidas que se requieren que sean

óptimos en algún sentido.

El método se basa en la descripción del sistema en términos de n ecuaciones en

diferencia o diferenciales de primer orden, que pueden combinarse en una ecuación

matricial. Con el diseño del sistema mediante el uso del concepto de espacio de estado

es posible diseñar sistemas de control con respecto a índices de desempeño dados, como

también incluir condiciones iniciales, entre otras cosas.

El método a usar en el espacio de estados es el diseño por ubicación de polos de

sistemas de control. Este proceso se puede dividir en dos fases. En la pr imera, se diseña

Page 59: Documento final 2 - Uniandes

IEL2-I-06-49

59

el sistema suponiendo que todas las variables de estado están disponibles para

realimentarse. En la segunda, se diseña el observador de estados, que estima todas las

variables de estado (o sólo las no medibles directamente), requeridas para realimentar, a

f in de completar el diseño [14].

Si el sistema cumple que: el rango de [ G GH … HGn 1− ] = n , que es la dimensión del sistema, se dice que el sistema es controlable.

Si el sistema cumple que: el rango de [ TC TTCG … TnT CG 1)( − ] = n , se dice que el

sistema es observable [16].

La controlabilidad se ocupa del problema de poder dirigir un sistema de un estado inicial

dado, a un estado arbitrario. Un sistema es controlable si puede, mediante un vector de

control no acotado, transferir dicho sistema de cualquier estado inicial a cualquier otro

estado, en un número f inito de per íodos de muestreo.

La observabilidad se ocupa del problema de determinar el estado de un sistema dinámico

a partir de observaciones de los vectores de salida y de control en un número f inito de

períodos de muestreo. Un sistema es observable si, con el sistema en el estado x (0), se

puede determinar el estado a partir de la observación de los vectores de salida y de

control a lo largo de un número f inito de per íodos de muestreo [14].

Al f inal del documento se anexa un programa donde encontramos el algor itmo en

variables de estado con más detalle, junto con dos modelos en Simulink para probar el

control en la planta mediante simulación, el sistema con observador y el sistema sin

observador.

6.4 DISEÑO DE CONTROLADORES PARA EL HELICÓPTERO Volviendo a nuestro objetivo que es el control del helicóptero, se va a controlar el sistema

en un punto de operación con la ayuda de los tres métodos estudiados. El sistema va a

ser controlado en el punto de operación 0=θ , 2392.01 =u y 8113.02 −=u . Recordando

la función de transferencia del modelo lineal en ese punto:

Page 60: Documento final 2 - Uniandes

IEL2-I-06-49

60

ssssA

ssss

A

sssssA

sssssssss

A

584.3379.321.1038.93799.2432.3

863.2748.733.294809.325605.15911.5324.11

67.7669.2452765.3818087.2239695.800015.2075763.24

145.2614731.2810135.888362.6

23422

2321

234512

23456

23

11

+++−=

+++

=

+++++=

+++++++++−

=

Si se discretiza el modelo para un sTm 2.0= :

1327.09251.0348.2556.2001249.002095.003138.0004198.0

5034.0927.1423.209613.001438.0127.0

1056.08284.0552.2908.3047.300003139.0001187.0004375.0002503.00001403.0

007328.0143.09731.0863.2229.4185.3001315.003097.001685.01234.01034.002408.0

234

23

22

23

2

21

2345

234

12

23456

2345

11

+−+−−−−−

=

−+−−−=

−+−+−++++=

+−+−+−++−−+=

zzzzzzz

A

zzzzzA

zzzzzzzzzA

zzzzzzzzzzzA

Sabemos que estos tres métodos están diseñados para sistemas SISO. Como en el

helicóptero la mayor influencia sobre 1y la hace 1u , y sobre 2y la hace 2u podemos

trabajar en el diseño de los controladores asumiendo 2 sistemas SISO de lazos

separados. Es decir, que solamente nos vamos a concentrar en las funciones de

transferencia 11A y 22A .

222221212

11112121111

uAyuAuAyuAyuAuAy

ss =→+==→+=

6.4.1 CONTROLADOR POR MEDIO DEL LUGAR DE RAÍCES

Controlador para elevación en sisotool con parámetros de diseño 9.0=ξ y sTs 5= .

007328.0143.09731.0863.2229.4185.3001315.003097.001685.01234.01034.002408.0

23456

2345

11 +−+−+−++−−+

=zzzzzz

zzzzzA

Page 61: Documento final 2 - Uniandes

IEL2-I-06-49

61

Figura 27. Lugar geométrico de raíces en Sisotool para elevación

105441.0051922.0

1)048.1(051922.0)(

−+

=−

+=

zz

zz

zGc

Controlador para azimuth en sisotool con parámetros de diseño 8.0=ξ y sTs 3= .

1327.09251.0348.2556.2001249.002095.003138.0004198.0

234

23

22 +−+−−−−−

=zzzzzzz

A

Figura 28. Lugar geométrico de raíces en Sisotool para azimuth

Page 62: Documento final 2 - Uniandes

IEL2-I-06-49

62

4731.05269.0019925.152099.25263.1

)4731.0)(1()9433.0)(7084.0(5263.1)( 2

2

−−−+−

=+−

−−−=

zzzz

zzzz

zGc

Implementando ambos controladores en el sistema completo:

Figura 29. Esquema controlador por lugar de raíces

Figura 30. Salidas elevación y azimuth controlador por lugar de raíces

6.4.2 CONTROLADOR ALGEBRAICO

Controlador Algebraico para elevación con parámetros de diseño 707.0=ξ y sTs 5= .

007328.0143.09731.0863.2229.4185.3001315.003097.001685.01234.01034.002408.0

23456

2345

11 +−+−+−++−−+

=zzzzzz

zzzzzA

Introduciendo la función de transferencia y las especif icaciones de diseño en el programa

se obtiene el siguiente resultado:

654321

654321

2482.08604.58894.26857.243787.15087.51383.1914.26878.181622.52531.7461610.52889.148

−−−−−−

−−−−−−

++−−++=

−+−+−+−=

zzzzzzSzzzzzzR

Page 63: Documento final 2 - Uniandes

IEL2-I-06-49

63

Controlador Algebraico para azimuth con parámetros de diseño 707.0=ξ y sTs 5= .

1327.09251.0348.2556.2001249.002095.003138.0004198.0

234

23

22 +−+−−−−−

=zzzzzzz

A

Introduciendo la función de transferencia y las especif icaciones de diseño en el programa

se obtiene el siguiente resultado:

4321

4321

0466.07649.08679.06794.019505.42805.3642.975720.1112373.46

−−−−

−−−−

−−−+=

−+−+−=

zzzzSzzzzR

El diagrama de bloques para implementar los controladores en el modelo completo es el

mismo de la f igura 29.

Figura 31. Salidas elevación y azimuth regulador Algebraico

6.4.3 CONTROLADOR POR VARIABLES DE ESTADO

Controlador por variables de estado para elevación con parámetros de diseño 2.1=ξ y

sTs 5= .

007328.0143.09731.0863.2229.4185.3001315.003097.001685.01234.01034.002408.0

23456

2345

11 +−+−+−++−−+

=zzzzzz

zzzzzA

Introduciendo la función de transferencia y las especif icaciones de diseño en el programa

se obtienen los siguientes valores que representan la matriz de ganancia de

realimentación del estado K con integrador:

Page 64: Documento final 2 - Uniandes

IEL2-I-06-49

64

( )

( )( )

8181.00152.00373.02449.07388.02019.29755.92663.09376.16697.13863.15615.00561.0101

0,0026.00077.00042.00309.00517.00963.0,

0000025.0

0125.000000010000001000000200000080037.00089.00608.01789.05286.01851.3

2

1

4

=−−−=

⋅×=

=−−=

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

⎛ −−−

=

kkR

DCH

G

Controlador por variables de estado para azimuth con parámetros de diseño 707.0=ξ y

sTs 5= .

1327.09251.0348.2556.2001249.002095.003138.0004198.0

234

23

22 +−+−−−−−

=zzzzzzz

A

Introduciendo la función de transferencia y las especif icaciones de diseño en el programa

se obtienen los siguientes valores que representan la matriz de ganancia de

realimentación K con integrador:

( )

( )( )

7555.00680.18622.16829.40124.15

0745.02443.120483.272688.10

0,01.00419.00628.00336.0

000125.0

,

025.000001000041327.02313.05871.05559.2

2

1

−=−−=

−−−−=

=−−−−=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛ −−

=

kkR

DC

HG

Page 65: Documento final 2 - Uniandes

IEL2-I-06-49

65

A continuación se muestra el diagrama de bloques para implementar los controladores

sobre el modelo completo:

Figura 32. Esquema control por variables de estado con observador

Como vemos en la f igura, la implementación en el sistema completo requiere el uso del

control por variables de estado con observador para cada salida. El observador o también

conocido como estimador, se utiliza para calcular las variables de estado que no son

accesibles desde la planta. El control por variables de estado en su primera fase, es

decir, sin el uso del observador funciona pero no se puede implementar sobre la planta, y

si lo intentamos vamos a llegar a errores de dimensión entre las matrices de estado.

Figura 33. Salidas elevación y azimuth controlador por variables de estado

Page 66: Documento final 2 - Uniandes

IEL2-I-06-49

66

7 UNIDAD 4: EL PROBLEMA DE CONTROL (CONTROL PREDICTIVO)

Siguiendo con nuestro diseño de controladores, entramos a la últ ima etapa del proyecto

donde vamos a hallar reguladores por medio de una técnica de control moderna: el control

predictivo. La últ ima técnica a aprender es el control GPC (Control Predictivo

Generalizado), el caso SISO y el caso MIMO. Esta unidad tiene el mismo objetivo de la

unidad 3 donde se busca controlar el modelo del helicóptero hallado en la unidad 2, con la

diferencia de que ya no se hará con las técnicas tradicionales sino con una técnica

moderna. Al f inalizar esta unidad estaremos en capacidad de realizar una comparación

entre el control clásico y el control moderno. Al igual que en la unidad pasada, se dará

una breve introducción a la técnica junto con un ejemplo sencillo numérico; que permita el

completo entendimiento del estudiante, para luego f inalmente enfrentar el modelo del

helicóptero.

7.1 CONTROL PREDICTIVO BASADO EN MODELOS El Control Predictivo Basado en Modelos ha recibido en los últimos años una gran

atención por parte de la comunidad científ ica como también en el sector industrial.

Muchas revistas científ icas han dado aportes al campo en sus aspectos teóricos y

prácticos, como también lo han hecho numerosos grupos de investigación en

universidades de todo el mundo que han puesto sus ojos en esta metodología.

Como un ejemplo de industria que ha decidido adoptar esta tecnología de control se

encuentra la dedicada a la refinación del petróleo. Se puede afirmar que esta

metodología tiene una gran proyección a futuro, pensando en poderse implementar en

otros sectores industriales, ya que al haber sido elegida en este complejo sector industrial

como metodología para controlar sus procesos, no solo buscar regular las plantas sino

también satisfacer las necesidades de alta calidad, de seguridad y de mínimo costo.

Page 67: Documento final 2 - Uniandes

IEL2-I-06-49

67

La base inicial de esta metodología de Control Predictivo es la definición de un modelo

concreto del proceso sobre el cual se harán las correspondientes predicciones. Es una

tecnología que busca adaptarse a cualquier tipo de modelo que exista.

El Control Predictivo basado en Modelos es un campo de investigación bastante amplio.

En esta unidad nos vamos a enfocar en el Control Predictivo que se encuentra asociado a

modelos en función de transferencia, que con un número moderado de parámetros, en

comparación con otro tipo de modelos, son capaces de representar cualquier dinámica del

proceso. El Control Predictivo definido de esta manera se denomina Control Predictivo

Generalizado (GPC) [17].

Se busca introducir al estudiante solamente a los controladores GPC en su aspecto

básico, el diseño de un controlador GPC SISO y el caso GPC de múltiple entrada y

múltiple salida MIMO.

7.2 CONTROL PREDICTIVO GENERALIZADO El Control Predictivo Generalizado (GPC) fue propuesto por Clarke en el año de 1987, y

se ha convertido en el método de control predictivo más aceptado, ya que proporciona un

buen control en lazo cerrado cuando se presentan inconvenientes, como que el proceso

presenta parámetros variantes más conocido como tiempo muerto variable y orden del

modelo variable, si el proceso es de fase no mínima, si se presenta inestabilidad en lazo

abierto, ó si el proceso debe ajustarse a ciertas limitaciones.

En el historial antes de que fuera propuesto el Control Predictivo Generalizado,

encontramos los criterios básicos de Control Óptimo, los controladores de Mínima

Varianza, los controladores de Mínima Varianza Generalizada y el controlador de Mínima

Varianza modif icado. Estos métodos proponen minimizar el error, trabajar con sistemas

de fase no mínima, minimizar energía, garantizar error de estado estático cero, entre otras

cosas [18].

Finalmente el GPC reúne todas estas características. El algoritmo de Control Predictivo

Generalizado consiste en aplicar una secuencia de control para minimizar la función de

costo:

Page 68: Documento final 2 - Uniandes

IEL2-I-06-49

68

[ ] [ ]∑∑==

−+∆⋅++−+⋅=uN

jj

N

Niiu jkuikwkikyNNNJ

1

2221 )1()()(ˆ),,,,(

2

1

λααλ

en donde )(ˆ kiky + es la predicción óptima en ik + de la salida del sistema calculada en

k, 1N y 2N son respectivamente los horizontes de predicción mínimo y máximo, N es el

horizonte de control, iα y jλ son las secuencia de ponderación del error y el incremento

de la acción de control respectivamente y )( ikw + es la referencia futura. El objetivo del

Control Predictivo Generalizado es calcular la secuencia de los incrementos futuros de la

acción de control de forma que minimice el índice J [19]. Esto se ilustra en la siguiente

f igura:

Figura 34. Filosofía control GPC [18]

El valor de referencia se va a asumir como constante y se encuentra disponible, entonces

la ley de control predictiva genera una secuencia que va a forzar la respuesta futura del

sistema a que sea igual al valor de referencia. Los elementos más importantes que van a

permitir encontrar la solución del criterio de optimización son:

- El modelo que representa el comportamiento de la planta

- El Banco de Predictores

- El cálculo de la ley de Control [18]

Las predicciones óptimas se van a calcular utilizando el modelo CARIMA (Controlled

Auto-Regressive and Integrated Moving Average model):

)()1()()()( 11 txtuzBtyzA +−= −−

Page 69: Documento final 2 - Uniandes

IEL2-I-06-49

69

donde )(tx representa la suma de: perturbaciones, ruidos, errores de modelaje,

constantes de linealización, entre otros. Se tienen dos aproximaciones a dicho ruido:

∆=

=−

)()()(

)()()(1

1

kzCtx

tzCtx

ξ

ξ

Finalmente:

∆+−= −−− )()()1()()()( 111 tzCtuzBtyzA ξ

donde A, B y C son polinomios en 1−z , 11 −−=∆ z y )(tξ corresponde a una secuencia de

ruido no correlacionada (blanca) [28].

ncnc

nbnb

nana

zczczczC

zbzbzbbzB

zazazazA

−−−−

−−−−

−−−−

++++=

++++=

++++=

L

L

L

22

11

1

22

110

1

22

11

1

1)()(

1)(

De forma general el banco de predictores se puede expresar matricialmente de la

siguiente forma:

fuGy

fNtu

tutu

ggg

ggg

ggg

Nty

Nty

tyty

u

NNNN

NNu

u

uu

+=

+

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

−+∆

+∆∆

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

+

+

++

−−−

−−

~~

00

)1(

)1()(

000

)(

)(

)2()1(

222 21

021

01

0

2

M

L

MLMM

L

MMMM

L

L

M

M

Los bancos de predictores se utilizan para determinar una ecuación que relacione

)( jty + en función de )1( −+ jtu . La obtención del banco de predictores se realiza

aplicando una recursión de la ecuación Diophantina.

BEGtyFjtuGjty

jj

jj

=

+−+∆=+ )()1()(

La ecuación Diophantina modif icada queda de la siguiente manera:

)()()()( 1111 −−−−− +∆= zFzzAzEzC jj

j

Page 70: Documento final 2 - Uniandes

IEL2-I-06-49

70

La acción integradora es ∆ . Y el orden del polinomio jE es 1−j .

)()1()()()1()2(

)()()1(

22 22

22

11

tyFNtuBENtytyFtuBEty

tyFtuBEty

NN +−+∆=+++∆=+

+∆=+

El cálculo de la ley de control se realiza con las siguientes ecuaciones:

}{)()(~

~~)~()~(1 fwGIGGu

uuwfuGwfuGJTT

TT

−+=

+−+−+=−λ

λ

El resultado de esta minimización es un vector ])1(,),1(),([~ −+∆+∆∆= uNtututuu L ,

donde solo nos interesan los valores en el tiempo t (tiempo presente) para hallar los

valores del controlador [18]. La implementación del controlador GPC tiene la misma

forma que un regulador RST:

Figura 35. Controlador GPC [15]

Para entender mejor el algoritmo GPC vamos a realizar un ejemplo numérico que permita

despejar todas las dudas de esta técnica. Y por supuesto, su funcionamiento será

validado mediante simulación.

7.3 EJEMPLO NUMÉRICO DE UN CONTROLADOR GPC Esta planta fue tomada de un ejercicio de un curso de Control Predictivo [17] y consiste en

el control climático de un invernadero. El proceso MIMO que se presenta aquí posee

como variables a controlar la humedad relativa interior (%) y la temperatura interior (ºC).

Las entradas de control en este caso son: el ángulo de abertura de la ventana (grados) y

la nebulización de vapor de agua (kg/seg). El resto de entradas al proceso hacen

referencia a la situación climática en el exterior del invernadero y aparecen como

perturbaciones: velocidad del viento (m/seg), radiación solar (Jul/m2seg), temperatura

exterior (ºC), humedad relativa exterior (%).

Page 71: Documento final 2 - Uniandes

IEL2-I-06-49

71

A partir de un modelo no lineal desarrollado para el invernadero, mediante la

aproximación de las respuestas a sistemas de primer orden, se ha obtenido el siguiente

modelo lineal MIMO:

⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎟⎟

⎜⎜⎜⎜

++−

+−

+−

=⎟⎟⎠

⎞⎜⎜⎝

⎛)()(

20011432

15017935.0

1001187

2001039.0

)()(

2

1

2

1

sUsU

ss

sssYsY

alrededor del siguiente punto de funcionamiento:

Ángulo abertura ventana º10

Nebulización segkg /01.0

Radiación solar exterior segmJul 2/400

Temperatura exterior Cº30

Humedad relativa exterior %50

Si se muestrea a 50 seg, se presenta la siguiente matriz de transferencia discreta:

⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎟⎟

⎜⎜⎜⎜

−−

+−

−−−

=⎟⎟⎠

⎞⎜⎜⎝

)()(

6065.015788.73

7788.010086.0

7788.017573.316

7168.012250.0

)()(

2

1

1

1

1

11

1

1

1

2

1

zUzU

zz

zz

zz

zz

zYzY

7.3.1 CONTROLADOR GPC SISO Para el diseño de los controladores SISO que son de lazo sencillo es necesario

determinar cual entrada controla una salida y hacer los lazos correspondientes. Existe

una metodología para hallar esta equivalencia, que es llamada Análisis de Ganancias

Relativas (RGA) [20]. Este análisis requiere hallar la ganancia del sistema en lazo abierto

y en lazo cerrado. Para hallar la ganancia en lazo abierto se toma la matriz de

transferencia continua y hacemos s=0, como resultado:

⎟⎟⎠

⎞⎜⎜⎝

⎛−

−−=

14327935.0187039.0

K , ahora es posible obtener las ganancias relativas de la siguiente

fórmula:

Page 72: Documento final 2 - Uniandes

IEL2-I-06-49

72

7265.02734.0

,

1221

2211

21122211

21121221

21122211

22112211

−====

−−==

−==

µµµµ

µµµµKKKK

KKKKKK

KK

Y al usar la matr iz K se obtiene:

⎟⎟⎠

⎞⎜⎜⎝

⎛−

−=

273.07265.07265.0273.0

)( yRGA , de la matriz de ganancias relativas. Entonces, el

análisis nos dice que las combinaciones de interacción son la entrada 1 con la salida 1 y

la entrada 2 con la salida 2.

Los controladores serán diseñados entonces para las posiciones (1,1) y (2,2) de la matriz

de transferencia discreta. Es decir, que el ángulo de abertura de la ventana influye con

más peso sobre la humedad relativa y la nebulización de vapor de agua sobre la

temperatura interior.

)(6065.015788.73)(

)(7168.012250.0)(

21

1

2

11

1

1

zUzzzY

zUzzzY

−−=

−−=

Para 1

1

7168.012250.0)( −

−−

=zzzG :

sTNNN mu 50,1.0,2,3,1 21 ===== λ

11

11

7168.01)(2250.0)(

−−

−−

−=

−=

zzAzzB

Como la función de transferencia no tiene un integrador, debemos agregar uno:

21111 7168.07168.11)()1()(~ −−−−− +−=−= zzzAzzA

Cálculo del banco de predictores:

13

33

213

12

22

12

11

1

5989.15989.2)~1(

2306.27168.112306.12306.2)~1(

7168.117168.07168.1)~1(

1

−−

−=−=

++=

−=−=

+=

−=−=

=

zAEzF

zzEzAEzF

zEzAzF

E

Page 73: Documento final 2 - Uniandes

IEL2-I-06-49

73

32133

2122

111

50188.038628.0225.038628.0225.0

225.0

−−−

−−

−−−==

−−==

−==

zzzBEGzzBEG

zBEG

⎟⎟⎟

⎜⎜⎜

−−−

=⎟⎟⎟

⎜⎜⎜

−−−−−

−=

5989.15989.22306.12306.27168.07168.1

,225.038628.050188.00225.038628.000225.0

fG

)2(5989.1)1(5989.2)2(5018.0)1(38628.0)(225.0)2()2(2306.1)1(2306.2)2(38628.0)1(225.0)1(

)2(7168.0)1(7168.1)2(225.0)(

−−−+−∆−−∆−∆−=+−−−+−∆−−∆−=+

−−−+−∆−=

tytytutututytytytututy

tytytuty

⎟⎟⎟

⎜⎜⎜

−−−−−−

=205.000

4217.0205.004975.04217.0205.0

TG

Hallando la matr iz de optimización:

⎟⎟⎟

⎜⎜⎜

−−−−−−

=+ −

8011.06918.02014.06835.03108.06918.03978.06835.08011.0

)( 1 TT GIGG λ

Sabemos que de esta matriz solo nos interesa el primer renglón que está en tiempo

presente:

)3(3978.0)2(6835.0)1(8011.0)1(0515.2)(9340.3)())3((3978.0))2((6835.0))1((8011.0)( 321

+−+−+−−−=∆−+−−+−−+−=∆

twtwtwtytytuftwftwftwtu

Recordando la función que permite implementar el sistema de control:

RYWTSU −= Podemos hallar los valores del controlador GPC:

1

1

0515.29340.31

8825.1

+−=

−=−=

zRzS

T

Realizamos el mismo procedimiento para la función )(2 zY con los mismos parámetros de

diseño y se obtiene el siguiente resultado:

1

1

10082.00218.0

0136.0

−=

+−=−=

zSzR

T

Page 74: Documento final 2 - Uniandes

IEL2-I-06-49

74

Como observamos en el diseño del controlador GPC para )(1 zY el procedimiento es

bastante matemático y un poco tedioso. Afortunadamente se cuenta con un programa

GPC SISO y un programa GPC MIMO que nos permite ahorrarnos todos estos cálculos.

Estos programas fueron realizados en una tesis de pregrado [2], y se anexan al f inal del

documento. Los programas fueron modif icados un poco de la versión original con el f in de

obtener mejores resultados. Si corremos el programa GPC SISO con las funciones de

transferencia anteriores y con los mismos parámetros de diseño veremos que llegaremos

a la misma respuesta. Esta poderosa herramienta va permitir a los estudiantes

comprobar resultados, aprender mejor el algoritmo GPC y por supuesto ahorrar un poco

de tiempo.

Implementando los controladores GPC SISO en el modelo de la planta:

Figura 36. Esquema de control GPC SISO

Figura 37. Salidas humedad relativa y temperatura interior controlador GPC SISO

Page 75: Documento final 2 - Uniandes

IEL2-I-06-49

75

7.3.2 CONTROLADOR GPC MIMO Para el diseño del controlador GPC MIMO si vamos a tener en cuenta la matriz de

transferencia de toda la planta:

⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎟⎟

⎜⎜⎜⎜

−−

+−

−−−

=⎟⎟⎠

⎞⎜⎜⎝

)()(

6065.015788.73

7788.010086.0

7788.017573.316

7168.012250.0

)()(

2

1

1

1

1

11

1

1

1

2

1

zUzU

zz

zz

zz

zz

zYzY

Resolviendo el sistema con los siguientes parámetros de diseño:

sTNNN mu 50,1.0,1,2,3,1 21 ====== λα

Las matrices del controlador MIMO GPC son:

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

−+−+−+

+−+−

+−

=

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

−−−−−−

⎟⎟⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜⎜⎜

−−−−−−−−

−−−−−−

=

−−

−−

−−

−−

−−

−−

21

21

21

21

21

21

62807.04662.01618.103909.006122.03297.104723.06446.08277.00

03302.218.78498.503932.15673.41742.4055824.00538.24956.2

196.76006935.04298.47004317.030317.570052159.07589.9477314.06301.5664373.00516.22717523.0

2043.1182676.1450019.00071.05788.732043.1180086.00019.005788.7300086.04479.5635783.7553863.05019.07573.3164479.563225.03863.007573.3160225.0

zzzzzz

zzzzzz

F

G

Finalmente, los valores obtenidos para el controlador son:

Page 76: Documento final 2 - Uniandes

IEL2-I-06-49

76

001803676.0002780049.0857175.13587228.0

3771.03771.11)3621.03621.0(101

2348.3572348.3571976.01976.11

0009.00008.00019.00012.00047.00063.0

9458.07109.00920.25962.08970.16595.1

22

21

12

11

2122

21321

2112

2111

2122

2121

2112

2111

−==

−=−=

+−=

−×=

−=

+−=+−−=

+−=

+−−=−+−=

−−

−−−

−−

−−

−−

−−

−−

−−

TTTT

zzSzzS

zzSzzS

zzRzzRzzRzzR

Implementando el controlador GPC MIMO en la planta:

Figura 38. Esquema de control GPC MIMO [17]

El diseño del controlador GPC MIMO es una versión extendida del GPC SISO, con la

diferencia que ya no se tiene una sola función de transferencia sino una matriz de

funciones de transferencia. Entonces, los polinomios que hallábamos en el algor itmo

SISO se convierten en vectores y matr ices en el algoritmo MIMO. El marco teórico del

Controlador Predictivo Multivariable, los pasos detallados para el diseño del controlador

Page 77: Documento final 2 - Uniandes

IEL2-I-06-49

77

GPC MIMO y la explicación de su respectivo esquema de control (f igura 38) los

encontramos en la tesis mencionada [2]. Se recomienda su consulta para despejar las

dudas que se presenten cuando apenas se está aprendiendo el Control Predictivo.

Los resultados obtenidos se muestran a continuación:

Figura 39. Salidas humedad relativa y temperatura interior GPC MIMO

7.4 DISEÑO DE CONTROLADORES GPC PARA EL HELICÓPTERO Al igual que en la unidad anterior los controladores del helicóptero serán diseñados en el

mismo punto de operación, en base al modelo lineal hallado.

7.4.1 CONTROLADOR GPC SISO Control Elevación:

1185.3229.4863.29731.0143.0007328.002408.01034.01234.001685.003097.0001315.0

123456

123456

11 +−+−+−++−−+

= −−−−−−

−−−−−−

zzzzzzzzzzzzA

Con los siguientes parámetros de diseño:

sTNNN mu 2.0,1,1.0,2,3,1 21 ====== αλ

Arroja el siguiente resultado:

654321

654321

0976.09654.11113.145775.451289.767732.666688.256903.1

0175.04018.04843.06313.14256.22707.01

−−−−−−

−−−−−−

+−+−+−=

=−−++−−=

zzzzzzRT

zzzzzzS

Page 78: Documento final 2 - Uniandes

IEL2-I-06-49

78

Control Azimuth:

1556.2348.29251.01327.0004198.003138.002095.0001249.0

1234

1234

22 +−+−−−−−

= −−−−

−−−−

zzzzzzzzA

Con los siguientes parámetros de diseño:

sTNNN mu 2.0,1,05.0,2,3,1 21 ====== αλ

Se obtiene el siguiente resultado:

321

1

6853.14465.106274.211.152205.2

000025.11

−−−

+−+−=

−=+=

zzzRT

zS

Implementando los controladores GPC como en la f igura 36 sobre el modelo se obtiene la

siguiente respuesta:

Figura 40. Salidas elevación y azimuth controlador GPC SISO

7.4.2 CONTROLADOR GPC MIMO Se realizó un controlador GPC MIMO para la matriz de transferencia discreta de la

sección 6.5 con los parámetros de diseño:

sTNNN mu 2.0,1,1.0,10,15,1 21 ====== αλ

Se obtuvieron los siguientes resultados para los parámetros R, S y T, siendo cada

parámetro una matriz de 2x2 igual que el sistema:

R11 = [51.23 -249.96 606.39 -928.38 973.27 -720.59 378.48 -138.93 34.37 -5.357 0.46

0.0119] R12 = [10.42 -23.13 18.88 -1.99 -7.04 5.06 -1.45 0.156]

R21 = 1.0e+003*[0.38 -2.14 5.58 -8.86 9.41 -6.97 3.63 -1.31 0.32 -0.049 0.0042 -0.0001]

R22 = [-135.22 550.59 -982.18 985.87 -597.71 217.90 -44.08 3.808]

S11 = [1 -2.01 -2.62 13.66 -20.72 15.68 -4.66 -1.62 1.80 -0.53 0.046 0.003]

Page 79: Documento final 2 - Uniandes

IEL2-I-06-49

79

S12 = [0 -0.099 0.07 0.12 0.011 -0.2288 0.13 -0.008 -0.01 0.0024 -0.0001 -0.00]

S21 = [0 7.68 -48.29 130.62 -187.20 141.53 -39.66 -17.54 17.41 -4.97 0.408 0.027]

S22 = [1 -0.52 -3.73 4.11 1.40 -3.69 1.55 -0.038 -0.102 0.021 -0.0008 -0.00]

T11 = 0.96

T12 = 0.799

T21 = 1.2885

T22 = -0.8995

Implementando el control GPC MIMO sobre el modelo como en la f igura 38 se obtiene la

siguiente respuesta:

Figura 41. Salidas elevación y azimuth controlador GPC MIMO

Fue necesario diseñar el controlador tomando valores más altos para el horizonte máximo de predicción y el horizonte de control, debido a que con valores bajos no se podía

controlar la planta y se obtenía una respuesta oscilatoria sobre la referencia que crecía

hacia infinito.

Page 80: Documento final 2 - Uniandes

IEL2-I-06-49

80

8 RESULTADOS

El ejemplo de control climático de un invernadero (modelo lineal) que se encuentra en la

sección 7.3 nos permite hacer una comparación del controlador GPC, en el caso SISO y

en el caso MIMO. En ambos casos se aplicaron los mismos valores de referencia: 10%

de humedad relativa exterior y -2.5ºC de temperatura interior. Las salidas del controlador

SISO presentan algunas oscilaciones y los cambios en la referencia 2 se ven reflejados

en la salida 1 como oscilaciones cortas pero que presentan un pico alto. El cambio en la

referencia 1 en cambio no afecta para nada la salida 2. Para el caso del controlador

MIMO, caso distinto al SISO las salidas no presentan ninguna oscilación. Pero las

interacciones entre las referencias y los valores de salida ocurren al revés que en el caso

SISO, ya que los cambios en la referencia 1 se ven reflejados en la salida 2 como perturbaciones. Sin embargo, el controlador corrige este error y no pierde la referencia. Y

los cambios en la referencia 2 no afectan en lo más mínimo la salida 1. Sin duda, ambos

controladores son bastante robustos y responden en tiempos similares (aproximadamente

en t=1000s), a excepción de la respuesta del controlador MIMO de la humedad relativa

que se asienta mucho más rápido.

Los controladores tradicionales diseñados en la sección 6.5 presentan respuestas

similares, oscilan un poco, presentan algunos picos a veces bastante altos y convergen

en un t iempo mayor al diseñado. No son muy robustos, y como vemos en simulación son

bastante sensibles a las perturbaciones. Lo importante es que alcanzan el valor de

referencia deseado y que siguen siendo una herramienta fundamental no solo en control

SISO sino, como vemos en este caso, para controlar sistemas multivariables. Vale la

pena aclarar que esta extensión de control SISO a sistemas MIMO es posible gracias al

método de Análisis de Ganancias Relativas (RGA) que nos dice cuál entrada t iene más

interacción sobre cuál salida.

Los controladores GPC diseñados en la sección 7.4 presentan muy buenos resultados y

muestran las ventajas que tiene esta técnica sobre los métodos tradicionales de control,

Page 81: Documento final 2 - Uniandes

IEL2-I-06-49

81

eliminando un poco esas oscilaciones y picos que se presentaban antes. Además el

sistema converge en un tiempo menor y no es tan sensible a los cambios de referencia.

Un inconveniente que se presentó durante el desarrollo del proyecto fue que no se habían

cedido los derechos de la tesis “Control Predictivo Multivariable” [2] y se tuvo que trabajar

al principio con los programas en proceso y no con los resultados f inales, esto implicó

tener que realizar algunos ajustes y pruebas a los programas, al igual que al tema de

Control Predictivo que no me era muy familiar.

Finalmente se deja al estudiante como tarea hallar el modelo lineal en otro punto de

operación, y realizar todos los pasos vistos durante el desarrollo de este proyecto. Al

igual que el diseño de los controladores vistos en este trabajo variando los diferentes

parámetros y analizando los resultados obtenidos.

No es una tarea bastante sencilla, pero se proporcionan las herramientas necesarias no

solo para trabajar con esta planta sino con cualquier otro proceso. Como vimos, estas

herramientas no solamente sirven para controlar sistemas SISO, sino que pueden

extender su aplicación a sistemas multivariables. Se deja abierto este campo de

investigación que busca incentivar al desarrollo de más herramientas software que

permitan obtener controladores por métodos tradicionales o modernos de control, que

faciliten el trabajo del estudiante y esos cálculos que a veces son un poco tediosos. Herramientas como éstas permiten realizar más pruebas en menos tiempo y la obtención

del mejor controlador para aplicar en un proceso. El desarrollo de un controlador GPC

con restricciones es un buen reto por ejemplo, así como la implementación de estos

programas (algebraico, variables de estado y GPC) en forma interactiva.

Page 82: Documento final 2 - Uniandes

IEL2-I-06-49

82

9 CONCLUSIONES

• Se logró diseñar una interfaz gráfica en GUIDE que env ía los datos al modelo Simulink en tiempo real y que permite familiarizar al estudiante con la planta real

de una forma fácil, es posible observar el comportamiento de la planta y se puede

controlar ésta jugando con las entradas.

• Se desarrollaron unas sencillas unidades de trabajo aplicables sobre el modelo del

helicóptero, al igual que herramientas softw are que sirven de apoyo para

solucionar los problemas planteados. Los programas para la obtención de

controladores no se limitan a esta planta específ ica sino que pueden usarse en

cualquier proceso (univariable ó multivariable).

• El controlador predictivo presenta un mejor comportamiento y robustez que el

control tradicional.

• Las técnicas tradicionales (Regulador Algebraico, por variables de estado y el lugar de raíces) siguen siendo una herramienta poderosa de control que se niega

a ser reemplazada. Estas técnicas presentan ciertas desventajas frente al control

GPC como tiempo de respuesta mayor, oscilaciones con picos altos que no son

deseables, sensibilidad a perturbaciones, entre otras cosas. Finalmente cumplen

con su objetivo y para nuestro caso, presentan un algoritmo más simple que el

control predictivo. Además, la ventaja que presentan sobre el GPC es que la

implementación es mucho más sencilla. Mientras que el controlador tradicional se

coloca en el lazo directo del esquema de control con realimentación, los

componentes del controlador predictivo deben colocarse uno directamente sobre

la planta, otro en el lazo de realimentación y el último mult iplicando a la referencia.

• El controlador GPC MIMO presenta una mejor respuesta que el controlador GPC

SISO, esto es de esperarse ya que el primero elimina el acople del sistema debido

a que tiene en cuenta toda la matr iz de transferencia, mientras que el segundo

como fue diseñado a partir de lazos SISO despreciando el acople es más sensible

a los cambios de referencia. El tiempo de convergencia de ambos es similar.

Page 83: Documento final 2 - Uniandes

IEL2-I-06-49

83

• Una desventaja del controlador GPC MIMO es que generalmente exige realizar

bastantes pruebas para que funcione satisfactoriamente. Se debe jugar con los

parámetros de diseño ( λ,,, 21 uNNN y α ) para obtener una respuesta

satisfactoria, y muchas veces los resultados son incoherentes porque nos salimos

de las restricciones de minimización de la función de optimización. Además el

algoritmo es bastante largo y requiere de muchos cálculos, por ello es necesaria la

ayuda de un programa de computadora. Eso sí, cuando se obtienen buenos

resultados es de esperar que el controlador sea bastante robusto en comparación

con otros controladores. Es decir, que el esfuerzo implica llegar a un excelente

regulador.

• El papel de α y λ en el control predictivo es muy parecido al papel que

desempeñan ξ y Ts como parámetros de diseño en las técnicas tradicionales de

control. Los parámetros α y λ son los encargados de manejar el sobrepaso y la velocidad de respuesta del sistema. Que tan robusto sea el controlador depende

del horizonte de control y los horizontes de predicción.

• Podría decirse que el GPC SISO es la versión moderna del regulador Algebraico,

si echamos un vistazo a los dos esquemas de control, que son de la forma RST lineal. Mientras que el primero trabaja en base a horizontes de predicción

buscando llevar su salida futura a un valor de referencia, el otro utiliza la técnica

de colocación de polos llevando el polinomio característico de la planta a un

polinomio deseado. Ambos controladores SISO son bastante robustos.

Page 84: Documento final 2 - Uniandes

IEL2-I-06-49

84

10 BIBLIOGRAFIA

[1] Guía para el profesor. Curso de Electrónica FOSS (Full Option Science System).

Desarrollado en Berkeley por la Universidad de California. Publicado y distribuido por

Delta Education, 2001.

[2] Tesis: “Diseño de Controlador Predictivo Mult ivariable”. Autor: Juan Carlos Hoyos.

Asesor: Iván Castillo Contreras. Universidad de los Andes, 2005.

[3] Tesis: “Control de un helicóptero usando Inteligencia Artif icial”. Autor: Yuber Torres

Peña. Asesor: Mauricio Duque. Universidad de los Andes, 2001.

[4] Biblioteca de Consulta Microsoft Encarta 2004.

[5] Artículo: “Simulation and Control of a helicopter pilot plant”

(Consultado en Febrero 8 de 2006)

Disponible en la página:

http://msc.fe.uni-lj.si/ Icames/simulation%20and%20control%20of%20a%20helicoter%20pilot%20plant(f inal).pdf [6] NISE S., Norman. Sistemas de Control para Ingenier ía. Tercera Edición. CECSA,

2002.

[7] Manual Educativo del modelo del helicóptero CE 150

(Consultado en Febrero 13 de 2006)

Disponible en la página: http://www.ing.unisi.it/~control/cmr/altro/heli_ce150_manual.pdf

[8] Artículo: “Identif icación mediante un observador de estados”

(Consultado en Marzo 27 de 2006)

Disponible en la página: http://www.cea-

ifac.es/actividades/jornadas/XXII/documentos/H_01_ic.pdf

[9] Manual Educativo del modelo del helicóptero CE 150

(Consultado en Febrero 13 de 2006)

Disponible en la página: http://www.ing.unisi.it/~control/cmr/altro/heli_ce150_manual.pdf

[10] Tesis: “Diseño conceptual para el aprendizaje de sistemas de control aplicado a

herramientas interactivas”. Autor: Mariana Tafur Arciniegas. Asesor: Mauricio Duque.

Universidad de los Andes, 2002.

Page 85: Documento final 2 - Uniandes

IEL2-I-06-49

85

[11] Documento: “Real Time Toolbox –User’s Manual”

(Consultado en Marzo 7 de 2006)

Disponible en la página:

http://hron.fei.tuke.sk/~balco/fei/matlab/Matlab%20-%20real%20time%20toolbox.pdf

[12] Documento: “Creating Graphical User Interfaces –Matlab”

(Consultado Marzo 9 de 2006)

Disponible en la página:

http://www.mathw orks.com/access/helpdesk/help/pdf_doc/matlab/buildgui.pdf

[13] Documento: “ Identif icación de sistemas con Matlab”. Universidad de los Andes – CIA P.

[14] OGATA, Katsuhiko. Sistemas de Control en Tiempo Discreto. Segunda Edición.

Pearson Educación, 1996.

[15] Presentación: “Reguladores Algebraicos RST”. Curso de Control por Computador.

Universidad de los Andes, 2004.

[16] Presentación: “Variables de estado”. Autor: Mauricio Duque. Universidad de los

Andes.

[17] MARTÍNEZ, M. SANCHIS, J. Control Predictivo Basado en Modelos. Departamento

de Ingeniería de Sistemas y Automática. Universidad Politécnica de Valencia (España).

Julio de 1998.

[18] Presentación: “Control Predictivo Generalizado”. Especialización en Automatización

de procesos industriales. Universidad de los Andes, 2005.

[19] Artículo: “Control predictivo multivariable de una planta piloto utilizando buses de

campo” (Consultado en Abril 20 de 2006)

Disponible en la página:

http://ctl-predictivo.upv.es/documentos/congresos/2001/planta01.pdf

[20] SMITH, Carlos A. CORRIPIO, Armando. Principles and Practice of Automatic

Process Control. Second Edition.

Page 86: Documento final 2 - Uniandes

IEL2-I-06-49

86

ANEXOS

En este anexo se proporcionan los programas realizados en MATLAB, utilizados para el desarrollo de las diferentes unidades, junto con los programas para el diseño de controladores: el regulador Algebraico y por variables de estado. Además, de los programas GPC MIMO y SISO realizados por el estudiante Juan Carlos Hoyos de la tesis: “Controlador predictivo multivariable” con algunas modif icaciones de la versión original. Por últ imo, se presenta el código del archivo .m de GUIDE de la interfaz gráfica de comunicación con el helicóptero.

ENTRADAS

Este sencillo programa permite calcular los valores de entrada para un ángulo de elevación específ ico (en radianes). Ya que tenemos funciones cuadráticas se van a obtener dos valores por ecuación: u11 = primer valor de u1 u12 = segundo valor de u1 u21 = corresponde a los valores de u2 que satisfacen la ecuación tomando el primer valor de u1 hallado u22 = corresponde a los valores de u2 que satisfacen la ecuación pero ahora tomando el segundo valor de u1 hallado. El algoritmo es: function [u11,u21,u12,u22]=entradas(angulo) theta=sin(angulo); y=[0.186 -0.0445 -0.0383*theta]; x=roots(y); xt=x'; m=[1;0]; n=[0;1]; u11=xt*m; z1=[0.033 0.0294 0.00891*u11]; u21=roots(z1); u12=xt*n; z2=[0.033 0.0294 0.00891*u12]; u22=roots(z2);

APROXIMACION LINEAL

Este sencillo programa calcula la aproximación lineal del modelo del helicóptero en variables de estado y su respectiva función de transferencia. Primero se definen los

Page 87: Documento final 2 - Uniandes

IEL2-I-06-49

87

parámetros del helicóptero (el programa trabaja con los valores de la tabla 1). La función queda abierta por si se desean cambiar los parámetros del modelo. Los valores que se deben digitar al programa son las entradas y el ángulo de elevación deseado en radianes. A, B, C y D son las matrices de la representación de estados y G la matriz de transferencia. El algoritmo es: function [A,B,C,D]= AproximacionLineal(u1,u2,ang) Tg=0.0383; Kgyro=0.015; Bpsi=0.005; I=0.00437; a1=0.186; b1=-0.0445; Bphi=0.00869; Iphi=0.00414; a2=0.033; b2=0.0294; Kr=-0.00891; Tor=2.7; Tpr=0.75; x1=ang; x3=u1; x8=u2; x6=0; a21=-(Tg*cos(x1))/I; a22=-Bpsi/I; a23=(2*a1*x3+b1)/I; a26=-(Kgyro*u1*cos(x1))/I; a66=-Bphi/Iphi; a68=(2*a2*x8+b2)/Iphi; a69=(Kr*Tor-Kr*Tpr)/(Iphi*Tpr); a99=-1/Tpr; b21=-(Kgyro*x6*cos(x1))/I; b61=-(Kr*Tor)/(Tpr*Iphi); b91=1/Tpr; A=[0 1 0 0 0 0 0 0 0;a21 a22 a23 0 0 a26 0 0 0;0 0 -10 10 0 0 0 0 0;0 0 0 -10 0 0 0 0 0;0 0 0 0 0 1 0 0 0;0 0 0 0 0 a66 0 a68 a69;0 0 0 0 0 0 -4 0 0;0 0 0 0 0 0 4 -4 0;0 0 0 0 0 0 0 0 a99]; B=[0 0;b21 0;0 0;10 0;0 0;b61 0;0 4;0 0;b91 0]; C=[1 0 0 0 0 0 0 0 0;0 0 0 0 1 0 0 0 0]; D=[0 0;0 0]; sys=ss(A,B,C,D); G=tf(sys); resp=G*[1;0]; resp1=G*[0;1];

Page 88: Documento final 2 - Uniandes

IEL2-I-06-49

88

A11=resp(1) A12=resp1(1) A21=resp(2) A22=resp1(2) t=input('Ingrese los valores de los coeficientes del polinomio del denominador de A11\n'); roots(t) t=input('Ingrese los valores de los coeficientes del polinomio del denominador de A12\n'); roots(t) t=input('Ingrese los valores de los coeficientes del polinomio del denominador de A21\n'); roots(t) t=input('Ingrese los valores de los coeficientes del polinomio del denominador de A22\n'); roots(t)

REGULADOR ALGEBRAICO

Como su nombre lo indica este programa calcula los parámetros de un regulador Algebraico (R y S). Los polos y los ceros de la planta se deben ingresar como un vector f ila con los coeficientes del polinomio de transformada z inversa empezando con el coeficiente de mayor orden (negativo) hasta el término independiente. Los valores de zita y el tiempo de asentamiento también se ingresan como un vector f ila (1x2). Este programa requiere que el usuario digite en orden la matriz que permitirá hallar los valores del controlador, se debe tener un poco de paciencia para sistemas de orden alto. Cada renglón de la matriz debe tener el mismo tamaño (numero de incógnitas), será digitado como un vector f ila y no se puede perder el orden de las variables. Obviamente las variables que no estén serán rellenadas con ceros. Es importante seguir lo que va pidiendo el programa correctamente para que no ocurran errores. El algoritmo es el siguiente:

function [R,S,A,B,ST]= Algebraico syms x s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 SV=[s1 s2 s3 s4 s5 s6 s7 s8 s9 s10]; RV=[r2 r3 r4 r5 r6 r7 r8 r9]; b=input('Ingrese los valores de zita y el t iempo de asentamiento\n'); zita=b(1); Ts=b(2); Wn=4/(zita*Ts); a=2*zita*Wn; c=Wn^(2); P1=[1 a c]; s=roots(P1); ST=input('Ingrese el tiempo de muestreo\n'); z1=exp(s(1)*ST); z2=exp(s(2)*ST); z1=vpa(x-z1,6); z2=vpa(x-z2,6); P1=collect(z1*z2,x); P1=sym2poly(P1);

Page 89: Documento final 2 - Uniandes

IEL2-I-06-49

89

B=input('Digite los ceros de la planta\n'); tam=size(B); tam=tam(2); i=1; while(B(tam-i+1)==0) i=i+1; end d=i-1; BB=B; j=1; while(j<=d) B(tam-j+1)=[]; j=j+1; end A=input('Digite los polos de la planta\n'); tam1=size(A); tam1=tam1(2); tam=size(B); tam=tam(2); ordenA=(tam1-1)+1; ordenB=(tam-1)+d; dif=ordenA-ordenB; S=1; R=r0+r1*x; nums=0; numr=2; ordenB=ordenB+1; t=ordenA; p=ordenB; if(ordenA>=3) i=1; w hile(i<=t-2) S=S+SV(i)*x^(i); ordenA=ordenA+1; nums=nums+1; R=R+RV(i)*x^(i+1); ordenB=ordenB+1; numr=numr+1; i=i+1; end end AA=A; A=vpa(poly2sym(A),6); B=vpa(poly2sym(B),6);

Page 90: Documento final 2 - Uniandes

IEL2-I-06-49

90

P2=collect(A*(1-x)*S+B*R*x^(d),x) P22=P2-1; j=1; while(j<=ordenA) if(j<=2) g(j,1)=P1(j+1); j=j+1; else g(j,1)=0; j=j+1; end end j=1; while(j<=ordenB) F(j)=0; j=j+1; end i=1; disp('El numero de incognitas que tenemos es:'); disp(nums+numr); while(i<=ordenB) disp('Para:'); disp(x^(i)); f=input('Digite en orden (s1,r0,r1,r2...) los terminos que acompañan a x sin el termino independiente el resto se rellenan con ceros\n'); F=[F;f]; g1(i,1)=input('Digite el termino independiente que acompaña a x\n'); i=i+1; end F(1,:)=[]; G=g-g1; G; y=(F^(-1))*G; S=1; R=0; i=1; h=0; if(nums==0) S=1-x; else w hile(i<=nums) S=vpa(S+y(i)*x^(i),6); h=1; i=i+1; end end k=i; i=1;

Page 91: Documento final 2 - Uniandes

IEL2-I-06-49

91

while(i<=numr) R=vpa(R+y(k+i-1)*x^(i-1),6); i=i+1; end if(h==1) S=vpa(S*(1-x),6); end R=sym2poly(R); S=sym2poly(S); R=fliplr(R); S=fliplr(S); A=fliplr(AA); B=fliplr(BB); Las salidas S y R son los coeficientes del polinomio en retraso, comenzando con el término independiente hasta el coeficiente con grado más alto negativo.

CONTROLADOR VARIABLES DE ESTADO

Este programa calcula la matriz de ganancia de realimentación del estado K mediante la fórmula de Ackermann a partir de los parámetros de diseño deseados. Las salidas son los valores k1, k2 y R que representan esta misma matr iz. Además de estos valores, el programa calcula la representación de estados discreta de la función de transferencia, es decir, las matr ices G, H, C y D. El programa requiere los polos y los ceros de la planta continua, éstos deben ser digitados como un vector f ila con los coeficientes del polinomio s empezando desde el mayor hasta el término independiente. La planta será discretizada por el método ‘zoh’ y el usuario elige el tiempo de muestreo. Además, el programa imprime si el sistema es controlable y observable, verif icando su rango. El resultado se puede aplicar en el esquema de control con o sin observador. El algoritmo es el siguiente: function [A,B,R,k1,k2,G,H,C,D,ST]= VariablesEstado b=input('Digite los ceros de la planta\n'); a=input('Digite los polos de la planta\n'); h=tf(b,a); ST=input('Digite el tiempo de muestreo\n'); sys=c2d(h,ST,'zoh') B=input('Digite los ceros de la funcion de transferencia discreta\n'); A=input('Digite los polos de la funcion de transferencia discreta\n'); [G,H,C,D]=ssdata(sys) c=size(G); t=c(2); i=1; while(i<=t) P(i,1)=0; i=i+1;

Page 92: Documento final 2 - Uniandes

IEL2-I-06-49

92

end MC=H; i=1; while(i<=t-1) MC(:, i+1)=(G^(i))*H; i=i+1; end MO=C'; j=1; while(j<=t-1) MO(:,j+1)=((G')^(i))*C'; j=j+1; end MC MO resull=det(MO); resul=det(MC); if(resul==0) disp('El sistema no es controlable'); else disp('El sistema es controlable'); %input('\n'); end if(resull==0) disp('El sistema no es observable'); else disp('El sistema es observable'); end R=acker(G',C',P) e=input('Digite el valor de zita y el tiempo de asentamiento deseados\n'); zita=e(1); Ts=e(2); Wn=4/(zita*Ts) f=2*zita*Wn; h=Wn^(2); P1=[1 f h] r=roots(P1) z1=exp(r(1)*ST) z2=exp(r(2)*ST) CG=-C*G CH=C*H i=1; while(i<=c(1)) j=1; w hile(j<=c(2)) Gg(i, j)=G(i,j); j=j+1; end i=i+1;

Page 93: Documento final 2 - Uniandes

IEL2-I-06-49

93

end i=1; while(i<=c(1)) Gg(i,c(2)+1)=0; i=i+1; end j=1; while(j<=c(2)) Gg(c(1)+1,j)=CG(j); j=j+1; end Gg(c(1)+1,c(2)+1)=1; i=1; while(i<=c(2)) Hg(i,1)=H(i); i=i+1; end Hg(c(2)+1,1)=CH; Gg Hg P2(1,1)=z1; P2(2,1)=z2; if(c(2)>=2) i=3; w hile(i<=c(2)+1) P2(i,1)=0; i=i+1; end end R1=acker(Gg,Hg,P2); k2=-R1(c(2)+1) R1(c(2)+1)=[]; k1=R1

GPC SISO. Este programa requiere 2 cosas: Primero un vector f ila donde se indique en este orden los valores de N1, N2, Nu, lambda, alpha y tiempo de muestreo. Segundo la función de transferencia. Ésta se ingresa en una matriz de 2 f ilas. En la primera f ila se introduce el polo del sistema y en la segunda el cero del sistema. Cada f ila tiene los coeficientes del polinomio de transformada z inversa empezando con el coeficiente de mayor orden. El cambio hecho al algoritmo pertenece al núcleo principal del programa, más exactamente a los ciclos para hallar las matrices G y f. La modif icación permite trabajar

Page 94: Documento final 2 - Uniandes

IEL2-I-06-49

94

con cualquier t ipo de modelo, es decir, se vuelve más general. El programa original recibe cualquier tipo de modelo pero ocurren algunos errores en el cálculo de la matriz G y f, ya que el ciclo es bastante específ ico. El resto del código se dejó igual a la versión original. El programa modif icado requiere que el usuario digite el número de términos de G1, G2…, esto con el f in de deshacernos de los términos que no se necesitan y para cuadrar las dimensiones de las matrices G y f. Estos datos serán pedidos por el programa debidamente, y la obtención de buenos resultados dependerá de la veracidad de estos datos. El algoritmo es el siguiente: function[S,T,R,A,B,ST] = SISO1 syms x y z E D F K M G k r l p q j a g S T R A B b = input('Ingrese los valores de N1, N2, Nu,L,alpha,ST\n'); N1 = b(1); %Asignando los valores N2 = b(2); %de N1, N2 Nu y L Nu = b(3); %ingresados por el usuario L = b(4); alpha = b(5); ST = b(6); a = input ('teclee la funcion de transferencia\n'); %Ingreso de la función de transferencia modo CARIMA I = eye(N2); W = ones(N2,1); A1=a(1,:) u=size(A1); u=u(2); WI=ones(u,1); t=A1*WI; A = poly2sym(a(1,:)); %Asignación de los polos de la FT (CARIMA) B = poly2sym(a(2,:)); %Asignación de los ceros de la FT (CARIMA) t=aproximar(t); t if(t==0) A2 = A; else A2=collect(A*(1-x)); %Asignarle un integrador entre los polos del sistema end E(1)= 1; %Primer término del predictor E F(1)= collect((1-A2)/x);% Primer término del predictor F k = 1; while (N2>k) %Ciclo recursivo para hallar el resto de los términos de los predictores E y F E(k+1)=vpa(E(k)+(subs(F(k),x,0)*x^k),7); %de acuerdo a N1 y N2 M=1-collect(E(k+1)*A2); M=sround(M); F(k+1,1)= vpa(collect((M)*x^-(k+1)),7);

Page 95: Documento final 2 - Uniandes

IEL2-I-06-49

95

k=k+1; end E F C= vpa(collect(E*B),7) %Ciclo para hallar la matr iz G k = 1; g=sym2poly(C(1)); b=size(g); p=input('Digite el numero de terminos que t iene G1\n'); q=b(2); i=q-p; j=1; while(j<=i) g(q+1-j)=[]; j=j+1; end G(1)= g(p); while(N2>k) g=sym2poly(C(k+1)) b=size(g); q=b(2); disp('Para k:\n'); disp(k+1) p=input('Digite el numero de términos que tiene G\n'); i=q-p; j=1; w hile(j<=1) g(q+1-j)=[]; j=j+1; end G(k+1)=vpa(g(p-k),7); k=k+1; end G r = N2; l = N1; N = N2; while(N>=N1) w hile(k>0) D(r,k) = G(l); k = k-1; r = r-1; end N = N-1; l = l+1; k = N; r = N2; end D H = inv((D'*alpha*D+I*L))*D'*alpha; H

Page 96: Documento final 2 - Uniandes

IEL2-I-06-49

96

k=1; while(N2>=k); g=sym2poly(C(k)) c=size(g); b=c(2); disp('Para k:\n'); disp(k) p=input('Digite el numero de términos que tiene G\n'); i=b-p; j=1; w hile(j<=i) g(b+1-j)=[]; j=j+1; end b=size(g); b=b(2); if(b==k) g=0; else i=1; w hile(i<=k) g(b+1-i)=[]; i=i+1; end end Gp(k,1)=vpa(poly2sym(g),7); k=k+1; end Gp; S = vpa(collect((1+(H(1,:)*Gp*x))*(1-x),x),7); R=H(1,:)*F; T=fliplr(sym2poly(H(1,:)*W)); S=fliplr(sym2poly(S)); R=fliplr(sym2poly(R)); A=fliplr(sym2poly(A)); B=fliplr(sym2poly(B)); Al igual que en el algebraico la salida son los polinomios S, R, T expresados en vectores con los coeficientes del polinomio en atraso, siendo el primer valor el término independiente y el último el valor de mayor grado negativo.

GPC MIMO

El programa MIMO conserva la misma estructura de la versión original, solamente se corrigieron algunos errores de programación que no permitían su ejecución. Se

Page 97: Documento final 2 - Uniandes

IEL2-I-06-49

97

presentaban problemas hallando el banco de predictores ya que no eran despreciados algunos valores que no son necesarios.

El programa para la obtención del controlador RST lineal multivariable requiere 4 cosas: Primero un vector f ila en el cual se debe introducir los valores en este orden de N1, N2, Nu, entradas, salidas, tiempo de muestreo. Segundo una matr iz de2 f ilas en el cual la primera f ila contiene todos los valores de alpha (se introducen tantos valores como salidas halla) y la segunda f ila contiene los valores de lambda (se introducen tantos valores como entradas halla). Tercero se introducen los ceros del sistema. Estos se introducen en una matriz de n*m filas donde n es el numero de salidas y m el numero de entradas. La primera f ila contiene el cero de la posición 1,1 de la matriz de transferencia la segunda f ila contiene el cero de la posición 1,2 de la matriz de transferencia y así sucesivamente hasta introducir todos los ceros de la matriz de transferencia. Cuarto se introducen los polos del sistema. Se introducen de la misma forma que los ceros del sistema. El algoritmo es el siguiente: function [R11,R12,R21,R22,S11,S12,S21,S22,T11,T12,T21,T22,ST] = GPCMP b = input('Ingrese los valores de N1, N2, Nu,el numero de entradas y salidas (I,O) y el tiempo de muestreo\n'); N1 = b(1); %Asignando los valores N2 = b(2); %de N1, N2 horizontes de predicción Nu horizonte de control Nu = b(3); %ingresados por el usuario i = b(4); %el numero de entradas o = b(5); %y salidas del sistema ST = b(6); d = input('Ingrese los vectores de los coeficientes de peso alpha y lambda.\n'); al2 = d(1,:); L2 = d(2,:); k = 1; j = 1; L = 0; while(i>=j) k = 1; w hile(Nu>=k) L = [L;L2(j)]; k = k+1; end j = j+1; end L(1) = []; L = diag(L); k = 1; j = 1; al = 0; while(o>=j)

Page 98: Documento final 2 - Uniandes

IEL2-I-06-49

98

k = 1; w hile(N2-N1+1>=k) al = [al;al2(j)]; k = k+1; end j = j+1; end al(1) = []; al = diag(al); c = input ('teclee los ceros del sistema. \n'); %Ingreso de la función de transferencia modo CARIMA p = input ('Teclee los polos del sistema. \n'); %Las entradas t ienen formato de arreglos con el grado mas alto primero I = eye(o); %y todos los polos y ceros, deben tener el mismo numero de columnas j = 1; k = 1; t = 1; %cstrinit while (o>=j) %Se van ordenando la matriz de ceros(B) y polos(A) k = 1; %Vamos a trabajar con exponentes positivos para mayor facilidad w hile (i>=k) %de operación con las funciones de Matlab A(j,k)= vpa(poly2sym(p(t,:)),7); %asi z^-1 se vera como x. B(j,k)= vpa(poly2sym(c(t,:)),7); k = k+1; t = t+1; end j = j+1; end A; B; A11 = f liplr(sym2poly(A(1,1))) A12 = f liplr(sym2poly(A(1,2))) A21 = f liplr(sym2poly(A(2,1))) A22 = f liplr(sym2poly(A(2,2))) B11 = f liplr(sym2poly(B(1,1))) B12 = f liplr(sym2poly(B(1,2))) B21 = f liplr(sym2poly(B(2,1))) B22 = f liplr(sym2poly(B(2,2))) k = 1; j = 1; t = 1; m = 0; MT = collect(B./A,x); %Función de Transferencia del sistema while (o>=j) %Transformación de A y B para mejor manejo a(j)= A(j,1); %A se diagonaliza utilizando el MMC de los datos de la misma fila k = 2; %B se obtiene multiplicando la matriz de los polos por la de FT.

Page 99: Documento final 2 - Uniandes

IEL2-I-06-49

99

w hile (i>=k) %en esta secuencia de ciclos se obtiene el MMC(Mínimo Comun Mult iplo) w hile(k>t) %de cada una de las f ilas de la matr iz A. if (A(j,t)== A(j,k)) m = i+1; t = t+1; else t = t+1; end end if (m==0) a(j) = collect(a(j)*A(j,k),x); end k = k+1; t = 1; m = 0; end j = j+1; end A = diag(a); %Acá se obtiene f inalmente la matriz diagonalizada A B = collect(factor(A*MT)/x); %Acá se obtiene la matriz B correspondiente a la nueva A. A = collect(A*(1-x)); %Esta es la matriz A multiplicada por el integrador. E = sym( I); %Comienzo de la recursión para la obtención de los F = vpa(collect((I-A)/x),7); %predictores E y F. En este se obtienen E1 y F1 j = 1; k = 1; while (N2>j) %Ciclo para obtener el resto de los predictores E(:,:,j+1)= vpa(E(:,:, j)+(subs(F(:,:,j),x,0)*x^j),7); %de acuerdo a N1 y N2 M = I-collect(E(:,:, j+1)*A); M = sround(M); F(:,:,j+1)= vpa(collect((M)*x^-(j+1)),7); j = j+1; end E F C = vpa(collect(E(:,:,1)*B),7); %Esta C se transformara en G y Gp o sea la G que while (N2>k) %multiplica de las entradas de control futura y Gjp que es C(:,:,k+1)= vpa(collect(E(:,:,k+1)*B),7) %la matriz que mult iplica las entradas de control pasadas. k = k+1; end k = 1; F1 = F(1,:,N1); while(o>=k) F1 = [F1;F(k,:,N1)]; j = N1+1; w hile(N2>=j) F1 = [F1;F(k,:,j)];

Page 100: Documento final 2 - Uniandes

IEL2-I-06-49

100

j = j+1; end k = k+1; end F1(1,:)=[]; F1 j = 1; l = 1; k = 1; m = 1; %Comienzo de la Asignación de G y Gp obtenidas de C G = zeros(o,i); Z = G; while(N2>=j) k = 1; G(:,:,j)= zeros(o,i); w hile(o>=k) l = 1; w hile(i>=l) b = sym2poly(C(k,l,j)); %G Nos indica acciones a futuro y Gp nos indica acciones a pasado c = size(b); %Gp no se suma con el F para tener distinciones de las 2 variables if(c(2)-j+1<=0) G(k,l, j)=0; else G(k,l, j)= b(c(2)-j+1); %de entrada en Gp y salida en F, para una manipulacion mas facil. end m = 1; w hile(j>=m) if((c(2)-m+1)<=0) break else b(c(2)-m+1) = []; m = m+1; end end Gp(k,l, j) = vpa(poly2sym(b),7); l = l+1; end k = k+1; end j = j+1; end G Gp k = N1+1; %acá cogemos solo la parte que nos interesa de Gp que estan dadas Gp12= Gp(:,:,N1); %por el horizonte de predicción N1 y N2. while(N2>=k) Gp12 = [Gp12;Gp(:,:,k)]; k = k+1; end

Page 101: Documento final 2 - Uniandes

IEL2-I-06-49

101

Gp12 k = 2; F12 = F1(1,:); %Hacemos lo mismo para F. while((N2-N1+1)*o>=k) F12 = [F12;F1(k,:)]; k = k+1; end j = 2; k = N1+1; G123= G(:,:,N1); %Acá elegimos la parte de G que nos interesa la cual ademas de los while(N2>=k) %horizontes de predicción N1 y N2 también se tiene en cuenta el G123 = [G123;G(:,:,k)]; % hor izonte de control Nu. k =k+1; end while(Nu>=j) k = N1+1; D = Z; w hile(N2>=k) if((k+1-j)<=0) M = Z; else M = G(:,:,k-j+1); end D = [D;M]; k = k+1; end G123= [G123 D]; j = j+1; end G123 k = 1; j = 1; G = G123 Gp = Gp12 while(N2>=N1+k-1) l = 0; w hile(o>l) G123((N2-N1+1)*l+k,:)= G(j,:); Gp12((N2-N1+1)*l+k,:)= Gp(j,:); l = l+1; j = j+1; end k = k+1; end k = 1; j = 1; l = 1; G = G123 while(Nu>=k) l = 0;

Page 102: Documento final 2 - Uniandes

IEL2-I-06-49

102

w hile(i>l) G123(:,Nu*l+k)= G(:,j); l = l+1; j = j+1; end k = k+1; end H = vpa(inv((G123'*al*G123)+L)*G123'*al,7); %Este es la matriz de optimización que se aplica para hallar el u óptimo. j = 1; O = H(1,:) F12 Gp12 G123 while(Nu>=j) %O es la misma H o matriz de optimización pero separada para poder separar O(1,:,j)= H(j,:); %cada instancia a futuro de las entradas optimas. Así O (: ,1) seria U(t) l = 2; %posterior de la U optima con restricciones w hile(i>=l) O(l,:, j)= H(Nu*(l-1)+j,:); l = l+1; end j = j+1; end %El bloque de control se halla S*U=T*W+R*Y por ende la separacion entre Gp (entradas pasadas) y F (salidas) O S = O(:,:,1)*Gp12; S = vpa(collect((1+(O(:,:,1)*Gp12*x))*(1-x),x),7); S2 = vpa(collect(O(:,:,1)*Gp12*x*(1-x),x),7); Ruc = vpa(collect(O(:,:,1)*F12,x),7); j = 1; k = 1; l = 1; Tuc = sym(zeros(i,o)); while(i>=j) k = 1; w hile(o>=k) l = 1; w hile(N2-N1+1>=l) Tuc(j,k) = Tuc(j,k)+O(j,(N2-N1+1)*(k-1)+l,1); l = l+1; end k = k+1; end j = j+1; end Tuc; S11 = f liplr(sym2poly(S(1,1))); S12 = f liplr(sym2poly(S2(1,2))); S21 = f liplr(sym2poly(S2(2,1)));

Page 103: Documento final 2 - Uniandes

IEL2-I-06-49

103

S22 = f liplr(sym2poly(S(2,2))); R11 = f liplr(sym2poly(Ruc(1,1))); R12 = f liplr(sym2poly(Ruc(1,2))); R21 = f liplr(sym2poly(Ruc(2,1))); R22 = f liplr(sym2poly(Ruc(2,2))); T11 = vpa(fliplr(sym2poly(Tuc(1,1))),7); T12 = vpa(fliplr(sym2poly(Tuc(1,2))),7); T21 = vpa(fliplr(sym2poly(Tuc(2,1))),7); T22 = vpa(fliplr(sym2poly(Tuc(2,2))),7); La salida son los polinomios S, R, T expresados en vectores con los coeficientes del polinomio correspondiente expresado el 1er. término con el coeficiente del término de menor orden. Como S, R, T son matr ices n x m. Aunque los términos Sxx, Rxx y Txx, son para efectos de las simulaciones en Simulink. ‘Sround’ es una función complementar ia de GPC MIMO y se pondrá a continuación. La función de esta es redondear números menores de 0.000001 a 0. La función ‘aproximar’ es una función complementaria del GPC SISO y tiene la misma finalidad que ‘sround’. function x = sround(x) k=1; l=1; m=1; d=size(x); while(k<=d(1)) l=1; w hile(l<=d(2)) a=sym2poly(x(k,l)); b=size(a); m=1; w hile(m<=b(2)) if(abs(a(m))<0.000001) a(m)=0; else a(m)=a(m); end m=m+1; end x(k,l)=poly2sym(a); l=l+1; end k=k+1; end end

INTERFAZ GRÁFICA

Finalmente, este programa contiene el código del archivo .m que se genera cuando creamos la interfaz gráfica en GUIDE. Se van a pasar los datos que presione el usuario en la ventana gráfica al modelo en Simulink. El programa consta de los llamados (callbacks) a las componentes gráficas de la GUI.

Page 104: Documento final 2 - Uniandes

IEL2-I-06-49

104

function varargout = modif icadu(varargin) % MODIFICA DU M-file for modif icadu.f ig % MODIFICADU, by itself, creates a new MODIFICA DU or raises the existing % singleton*. % % H = MODIFICADU returns the handle to a new MODIFICADU or the handle to % the existing singleton*. % % MODIFICADU('CALLBA CK',hObject,eventData,handles,...) calls the local % function named CALLBA CK in MODIFICADU.M w ith the given input arguments. % % MODIFICADU('Property','Value',...) creates a new MODIFICADU or raises the % existing singleton*. Start ing from the left, property value pairs are % applied to the GUI before modif icadu_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to modif icadu_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help modif icadu % Last Modif ied by GUIDE v2.5 11-Mar-2006 00:44:25 % Begin init ialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @modif icadu_OpeningFcn, ... 'gui_OutputFcn', @modif icadu_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before modif icadu is made visible. function modif icadu_OpeningFcn(hObject, eventdata, handles) % This function has no output args, see OutputFcn. % hObject handle to f igure

Page 105: Documento final 2 - Uniandes

IEL2-I-06-49

105

% eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % varargin command line arguments to modif icadu (see VARARGIN) f ig = handles.f igure1; % ------------------------------------------------------------ % If proof.mdl is not open: open it and br ing GUI to front % Also set model parameters to match GUI settings % ------------------------------------------------------------ model_open(handles) % Choose default command line output for modif icadu handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWA IT makes modif icadu w ait for user response (see UIRESUME) % uiw ait(handles.f igure1); % --- Outputs from this function are returned to the command line. function varargout = modif icadu_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to f igure % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % ------------------------------------------------------------ % Ensure that the Simulink model is open % ------------------------------------------------------------ function model_open(handles) % Make sure the diagram is still open if isempty(f ind_system('Name','proof')), open_system('proof'); %open_system('f14/Controller') set_param('proof/Elevation','Position',[275 14 340 56]) f igure(handles.f igure1) % Put values of elevacion and azimuth from the GUI into the Block dialogs set_param('proof/Elevation','Mean',... get(handles.elevacioncurrentvalue,'String')) set_param('proof/Azimuth',... 'Mean',... get(handles.azimuthcurrentvalue,'String')) end % ------------------------------------------------------------

Page 106: Documento final 2 - Uniandes

IEL2-I-06-49

106

% Callback for Elevacion slider % ------------------------------------------------------------ function varargout = elevacionslider_Callback(h, eventdata, handles) % hObject handle to elevacionslider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider % Ensure model is open model_open(handles) % Get the new value for the elevacion from the slider NewVal = get(h,'Value'); % Set the value of the elevacioncurrentvalue to the new value set by slider set(handles.elevacioncurrentvalue,'String',NewVal) % Set the Gain parameter of the Elevation Block to the new value set_param('proof/Elevation','Mean',num2str(New Val)) % ------------------------------------------------------------ % Callback for elevacion Current value text box % ------------------------------------------------------------ function varargout = elevacioncurrentvalue_Callback(h, eventdata, handles) % hObject handle to elevacioncurrentvalue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Hints: get(hObject,'Str ing') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % Ensure model is open model_open(handles) % Get the new value for the elevacion New StrVal = get(h,'String'); NewVal = str2double(New StrVal); % Check that the entered value falls w ithin the allow able range if isempty(New Val) | (New Val< -1) | (NewVal>1), % Revert to last value, as indicated by elevacionslider OldVal = get(handles.elevacionslider,'Value'); set(h,'String',OldVal) else % Set the value of the elevacionslider to the new value set(handles.elevacionslider,'Value',NewVal) % Set the Gain parameter of the Elevation Block to the new value

Page 107: Documento final 2 - Uniandes

IEL2-I-06-49

107

set_param('proof/Elevation','Mean',New StrVal) end % ------------------------------------------------------------ % Callback for Azimuth slider % ------------------------------------------------------------ function varargout = azimuthslider_Callback(h, eventdata, handles) % hObject handle to azimuthslider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider % Ensure model is open model_open(handles) % Get the new value for the azimuth from the slider NewVal = get(h,'Value'); % Set the value of the azimuthcurrentvalue to the new value set by slider set(handles.azimuthcurrentvalue,'String',NewVal) % Set the Numerator parameter of the Azimuth Block to the new value set_param('proof/Azimuth','Mean',num2str(NewVal)) % ------------------------------------------------------------ % Callback for azimuth Current value text box % ------------------------------------------------------------ function varargout = azimuthcurrentvalue_Callback(h, eventdata, handles) % hObject handle to azimuthcurrentvalue (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Hints: get(hObject,'Str ing') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % Ensure model is open model_open(handles) % Get the new value for azimuth New StrVal = get(h,'String'); NewVal = str2num(New StrVal); % Check that the entered value falls w ithin the allow able range if isempty(New Val) | (New Val< -1) | (NewVal>1), % Revert to last value, as indicated by azimuthslider OldVal = get(handles.azimuthslider,'Value'); set(h,'String',OldVal) else, % Use new Ki value

Page 108: Documento final 2 - Uniandes

IEL2-I-06-49

108

% Set the value of the azimuthslider to the new value set(handles.azimuthslider,'Value',New Val) % Set the Numerator parameter of the Ki Tranfer function Block to the new value set_param('proof/Azimuth','Mean',New StrVal) end % ------------------------------------------------------------ % Callback for the Simulate and store results button % ------------------------------------------------------------ function varargout = pushbutton1_Callback(h, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) [timeVector,stateVector,outputVector] = sim('proof'); % Retrieve old results data structure if isf ield(handles,'ResultsData') & ~isempty(handles.ResultsData) ResultsData = handles.ResultsData; % Determine the maximum run number currently used. maxNum = ResultsData( length(ResultsData)).RunNumber; ResultNum = maxNum+1; else, % Set up the results data structure ResultsData = struct('RunName',[],'RunNumber',[],... 'azimuthValue',[],'elevacionValue',[],'t imeVector',[],'outputVector',[]); ResultNum = 1; end if isequal(ResultNum,1), %--Enable the Plot and Remove buttons set([handles.pushbutton6,handles.pushbutton7],'Enable','on') end % Get azimuth and elevacion values to store w ith the data and put in the results list. azimuth = get(handles.azimuthslider,'Value'); elevation = get(handles.elevacionslider,'Value'); ResultsData(ResultNum).RunName = ['Run',num2str(ResultNum)]; ResultsData(ResultNum).RunNumber = ResultNum; ResultsData(ResultNum).azimuthValue = azimuth; ResultsData(ResultNum).elevacionValue = elevation; ResultsData(ResultNum).timeVector = timeVector; ResultsData(ResultNum).outputVector = outputVector; % Build the new results list string for the listbox ResultsStr = get(handles.listbox2,'String'); if isequal(ResultNum,1) ResultsStr = {['Run1 ',num2str(elevation),' ',num2str(azimuth)]}; else

Page 109: Documento final 2 - Uniandes

IEL2-I-06-49

109

ResultsStr = [ResultsStr; {['Run',num2str(ResultNum),' ',num2str(elevation),' ',num2str(azimuth)]}]; end set(handles.listbox2,'String',ResultsStr); % Store the new ResultsData handles.ResultsData = ResultsData; guidata(h,handles) % ------------------------------------------------------------ % Callback for the Remove push button % ------------------------------------------------------------ function varargout = pushbutton6_Callback(h, eventdata, handles) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Callback of the uicontrol handles.pushbutton6. currentVal = get(handles.listbox2,'Value'); resultsStr = get(handles.listbox2,'String'); numResults = size(resultsStr,1); % Remove the data and list entry for the selected value resultsStr(currentVal) =[]; handles.ResultsData(currentVal)=[]; % If there are no other entries, disable the Remove and Plot button % and change the list sting to <empty> if isequal(numResults,length(currentVal)), resultsStr = {'<empty>'}; currentVal = 1; set([handles.pushbutton6,handles.pushbutton7],'Enable','off ') end % Ensure that list box Value is valid, then reset Value and String currentVal = min(currentVal,size(resultsStr,1)); set(handles.listbox2,'Value',currentVal,'String',resultsStr) % Store the new ResultsData guidata(h,handles) % ------------------------------------------------------------ % Callback for the Plot push button % ------------------------------------------------------------ function varargout = pushbutton7_Callback(h, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Callback of the uicontrol handles.pushbutton7. currentVal = get(handles.listbox2,'Value');

Page 110: Documento final 2 - Uniandes

IEL2-I-06-49

110

% Get data to plot legendStr = cell(length(currentVal),1); plotColor = {'b','g','r','c','m','y','k'}; for ctVal = 1:length(currentVal); PlotData{(ctVal*3)-2} = handles.ResultsData(currentVal(ctVal)).timeVector; PlotData{(ctVal*3)-1} = handles.ResultsData(currentVal(ctVal)).outputVector; numColor = ctVal - 7*( f loor((ctVal-1)/7) ); PlotData{ctVal*3} = plotColor{numColor}; legendStr{ctVal} = [handles.ResultsData(currentVal(ctVal)).RunName,'; Elevation=', ... num2str(handles.ResultsData(currentVal(ctVal)).elevacionValue),'; Azimuth=', .. . num2str(handles.ResultsData(currentVal(ctVal)).azimuthValue)]; end % If necessary, create the plot f igure and store in handles structure if ~isf ield(handles,'PlotFigure') | ~ishandle(handles.PlotFigure), handles.PlotFigure = f igure('Name','proof Simulation Output','Visible','off ',... 'NumberTit le','off ','HandleVisibility','off ','IntegerHandle','off '); handles.PlotAxes = axes('Parent',handles.PlotFigure); guidata(h,handles) end % Plot data pHandles = plot(PlotData{:},'Parent',handles.PlotAxes); % Add a legend, and bring f igure to the front legend(pHandles(1:2:end),legendStr{:}) % Make the f igure visible and bring it forw ard f igure(handles.PlotFigure) % ------------------------------------------------------------ % Callback for the Close push button % ------------------------------------------------------------ function varargout = pushbutton9_Callback(h, eventdata, handles) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure w ith handles and user data (see GUIDATA) % Close the GUI and any plot w indow that is open if isf ield(handles,'PlotFigure') & ishandle(handles.PlotFigure), close(handles.PlotFigure); end close(handles.f igure1); % --- Executes during object creation, after setting all properties. function elevacionslider_CreateFcn(hObject, eventdata, handles) % hObject handle to elevacionslider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

Page 111: Documento final 2 - Uniandes

IEL2-I-06-49

111

% Hint: slider controls usually have a light gray background, change % 'usew hitebg' to 0 to use default. See ISPC and COMPUTER. usew hitebg = 1; if usewhitebg set(hObject,'BackgroundColor',[.9 .9 .9]); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end