Sei sulla pagina 1di 473

CONTROL AVANZADO

Diseño y Aplicaciones en Tiempo Real

ARTURO ROJAS-MORENO, Ph.D.


Universidad Nacional de Ingenierı́a, Perú

 Control Óptimo
 Control Adaptivo

 Control Predictivo

 Control Robusto

 Control No Lineal

 Programas en MATLAB y C/C++


II

Control Avanzado
Diseño y Aplicaciones en Tiempo Real

Copyright 
c 2001 Arturo Rojas-Moreno. Reservados todos los derechos.

ISBN 9972–9318–0–3

Ni todo el libro ni parte de esta publicación puede ser reproducida, archivada,


transmitida o distribuida en forma alguna o mediante algún medio electrónico,
mecánico, o de otra ı́ndole, sin que exista previamente y por escrito el permiso de
autorización del autor.
Dedicatoria

A mi Familia
A mi Alma Mater
Índice general

Dedicatoria III

Prefacio XI

1. Matemática Asistida con Computadora 1


1.1. Cálculo Matricial . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Operaciones y Tipos de Matrices . . . . . . . . . . . . 1
1.1.2. Determinantes y Matriz Inversa . . . . . . . . . . . . . 5
1.1.3. Derivadas e Integrales con Matrices y Vectores . . . . 14
1.2. Análisis Vectorial . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1. Independencia, Ortonormalidad y Normas . . . . . . . 15
1.2.2. Rango de una Matriz, Eigenvalores y Eigenvectores . . 18
1.2.3. Diagonalización de Matrices . . . . . . . . . . . . . . . 19
1.2.4. Formas Cuadráticas y Bilineales . . . . . . . . . . . . 20
1.3. La Transformada de Laplace . . . . . . . . . . . . . . . . . . 26

2. Sistemas Discretos 29
2.1. Diseño de Sistemas de Control Digital . . . . . . . . . . . . . 29
2.2. Concepto de Estado y Variables de Estado . . . . . . . . . . . 31
2.2.1. Linealización de Procesos . . . . . . . . . . . . . . . . 31
2.3. Fundamentos de Sistemas Discretos . . . . . . . . . . . . . . . 38
2.3.1. Muestreo y Reconstrucción . . . . . . . . . . . . . . . 38
2.3.2. La Transformada Z . . . . . . . . . . . . . . . . . . . . 45
2.3.3. La Transformada Z Inversa . . . . . . . . . . . . . . . 49
2.3.4. Función de Transferencia de Pulso . . . . . . . . . . . 51
2.3.5. El Espacio de Estado Discreto . . . . . . . . . . . . . 53
2.3.6. Controlabilidad y Observabilidad . . . . . . . . . . . . 64
VI ÍNDICE GENERAL

3. Modelado de Procesos 69
3.1. Modelo del Proceso Péndulo Invertido . . . . . . . . . . . . . 69
3.1.1. Modelo del Subsistema Carro-Péndulo . . . . . . . . . 70
3.1.2. Modelo del Subsistema Motor-Polea . . . . . . . . . . 72
3.1.3. Representación en el Espacio de Estado . . . . . . . . 74
3.1.4. Obtención del Modelo Lineal . . . . . . . . . . . . . . 75
3.1.5. El Modelo en el Espacio de Estado Discreto . . . . . . 76
3.2. Modelo del Proceso Grúa-Puente . . . . . . . . . . . . . . . . 77
3.2.1. Modelo del Subsistema Carro-Varilla . . . . . . . . . . 77
3.2.2. Modelo del Subsistema Motor-Polea . . . . . . . . . . 79
3.2.3. Representación en el Espacio de Estado . . . . . . . . 79
3.2.4. Obtención del Modelo Lineal . . . . . . . . . . . . . . 80
3.2.5. El Modelo en el Espacio de Estado Discreto . . . . . . 80
3.2.6. Resumen de Variables y Parámetros . . . . . . . . . . 81
3.2.7. Identificación de la Zona Muerta del Servomotor . . . 81
3.3. Modelo del Servomotor D.C. No Lineal . . . . . . . . . . . . . 84
3.3.1. El Subsistema Mecánico . . . . . . . . . . . . . . . . . 84
3.3.2. El Subsistema Eléctrico . . . . . . . . . . . . . . . . . 86
3.3.3. Conversión de Energı́a Eléctrica en Mecánica . . . . . 87
3.3.4. Modelo y Compensación de no Linealidades . . . . . . 89
3.3.5. Linealización y Discretización del Proceso . . . . . . . 90
3.4. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 91
3.5. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 116

4. Control Óptimo 123


4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.2. Control Óptimo Cuadrático No Estacionario . . . . . . . . . . 125
4.3. Control Óptimo Cuadrático Estacionario . . . . . . . . . . . . 127
4.4. El Regulador Óptimo Proporcional . . . . . . . . . . . . . . . 128
4.5. Selección de las Matrices de Ponderación . . . . . . . . . . . . 130
4.6. Diseño del Observador Óptimo Cuadrático . . . . . . . . . . . 136
4.7. El Regulador Óptimo Proporcional Integral . . . . . . . . . . 139
4.8. Procedimiento de Diseño e Implementación . . . . . . . . . . 145
4.9. Control Óptimo Cuadrático del Péndulo Invertido . . . . . . 145
4.9.1. Formulación del Problema . . . . . . . . . . . . . . . . 145
4.9.2. El Modelo del Proceso a Controlar . . . . . . . . . . . 146
4.9.3. Cálculo de la Matriz de Ganancia del Controlador . . 147
4.9.4. Cálculo la Matriz de Ganancia del Observador . . . . 149
ÍNDICE GENERAL VII

4.9.5. Simulación del Sistema de Control Óptimo . . . . . . 150


4.9.6. El Hardware del Sistema de Control . . . . . . . . . . 153
4.9.7. Implementación del Software de Control . . . . . . . . 160
4.9.8. Resultados Experimentales . . . . . . . . . . . . . . . 177
4.10. Control Óptimo Cuadrático de la Grúa-Puente . . . . . . . . 179
4.10.1. Formulación del Problema . . . . . . . . . . . . . . . . 179
4.10.2. Simulación del Sistema Controlado . . . . . . . . . . . 180
4.10.3. El Hardware y el Software del Sistema de Control . . 183
4.10.4. Resultados experimentales . . . . . . . . . . . . . . . . 187
4.11. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 187
4.12. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 202

5. Control Adaptivo 205


5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
5.2. Modelando Procesos No Lineales . . . . . . . . . . . . . . . . 207
5.3. Procedimientos de Estimación . . . . . . . . . . . . . . . . . . 208
5.3.1. El Método de los Mı́nimos Cuadrados Recursivo . . . 208
5.3.2. Mı́nimos Cuadrados Recursivo Mejorado . . . . . . . . 211
5.3.3. Estimación de Estados . . . . . . . . . . . . . . . . . . 219
5.4. La Ley de Control . . . . . . . . . . . . . . . . . . . . . . . . 219
5.5. Procedimiento de Diseño . . . . . . . . . . . . . . . . . . . . . 221
5.6. Control Adaptivo de un Servomotor No Lineal . . . . . . . . 222
5.6.1. Formulación del Problema . . . . . . . . . . . . . . . . 222
5.6.2. El Modelo del Proceso . . . . . . . . . . . . . . . . . . 222
5.6.3. Estimación de Parámetros . . . . . . . . . . . . . . . . 223
5.6.4. Estimación de Estados . . . . . . . . . . . . . . . . . . 224
5.6.5. La Ley de Control . . . . . . . . . . . . . . . . . . . . 224
5.6.6. La Ley de Control Residual . . . . . . . . . . . . . . . 225
5.6.7. Simulación del Sistema de Control Adaptivo . . . . . . 225
5.6.8. Implementación del Hardware . . . . . . . . . . . . . . 229
5.6.9. Implementación del Software de Control . . . . . . . . 235
5.6.10. Resultados Experimentales . . . . . . . . . . . . . . . 252
5.7. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 253
5.8. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 279

6. Control Predictivo 283


6.1. Control Predictivo Basado en Modelos . . . . . . . . . . . . . 283
6.2. Principios del Control Predictivo Basado en Modelos . . . . . 284
6.3. El Modelo del Proceso . . . . . . . . . . . . . . . . . . . . . . 287
VIII ÍNDICE GENERAL

6.4. El Modelo del Predictor . . . . . . . . . . . . . . . . . . . . . 290


6.4.1. Predicción de y(t + k/t) . . . . . . . . . . . . . . . . . 290
6.4.2. Predicción de n(t + k/t) . . . . . . . . . . . . . . . . . 292
6.5. El Controlador Predictivo . . . . . . . . . . . . . . . . . . . . 296
6.5.1. Objetivo del Controlador . . . . . . . . . . . . . . . . 296
6.5.2. Respuesta Libre y Respuesta Forzada . . . . . . . . . 297
6.5.3. La Ley de Control . . . . . . . . . . . . . . . . . . . . 301
6.6. Procedimiento de Diseño . . . . . . . . . . . . . . . . . . . . . 303
6.7. Control de Posición de un Servomotor . . . . . . . . . . . . . 304
6.7.1. Formulación del Problema . . . . . . . . . . . . . . . . 304
6.7.2. Respuesta Libre del Proceso . . . . . . . . . . . . . . . 305
6.7.3. Respuesta del Proceso al Escalón . . . . . . . . . . . . 306
6.7.4. La Ley de Control . . . . . . . . . . . . . . . . . . . . 306
6.7.5. Simulación del Sistema de Control Predictivo . . . . . 306
6.7.6. Implementación del Hardware . . . . . . . . . . . . . . 311
6.7.7. El Software de Control . . . . . . . . . . . . . . . . . . 312
6.7.8. Resultados Experimentales . . . . . . . . . . . . . . . 321
6.8. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 324
6.9. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 342

7. Control Robusto 347


7.1. Estructura del Control con Modelo Interno . . . . . . . . . . 347
7.2. Formulación del Problema CMI . . . . . . . . . . . . . . . . . 353
7.2.1. El Modelo del Proceso . . . . . . . . . . . . . . . . . . 353
7.2.2. Descripción de Incertidumbres del Modelo . . . . . . . 353
7.3. Control Robusto para Procesos Estables . . . . . . . . . . . . 356
7.3.1. Rendimiento Nominal . . . . . . . . . . . . . . . . . . 357
7.3.2. El Filtro Discreto CMI . . . . . . . . . . . . . . . . . . 361
7.3.3. Estabilidad Robusta . . . . . . . . . . . . . . . . . . . 362
7.3.4. Rendimiento Robusto . . . . . . . . . . . . . . . . . . 363
7.4. Control Robusto para Procesos Inestables . . . . . . . . . . . 368
7.4.1. Rendimiento Nominal . . . . . . . . . . . . . . . . . . 370
7.4.2. El Filtro Discreto CMI . . . . . . . . . . . . . . . . . . 372
7.4.3. Estabilidad y Rendimiento Robustos . . . . . . . . . . 372
7.5. Procedimiento de Diseño . . . . . . . . . . . . . . . . . . . . . 373
7.6. Control Robusto de un Servomotor No Lineal . . . . . . . . . 374
7.6.1. Formulación del Problema . . . . . . . . . . . . . . . . 374
7.6.2. Diseño del Sistema de Control Robusto . . . . . . . . 374
ÍNDICE GENERAL IX

7.6.3. Simulación del Sistema de Control Robusto . . . . . . 374


7.6.4. Implementación del Hardware . . . . . . . . . . . . . . 375
7.6.5. Implementación del Software . . . . . . . . . . . . . . 376
7.6.6. Resultados Experimentales . . . . . . . . . . . . . . . 380
7.7. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 380
7.8. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 399

8. Control No Lineal 405


8.1. Herramientas Matemáticas . . . . . . . . . . . . . . . . . . . 406
8.1.1. Derivadas y Corchetes de Lie . . . . . . . . . . . . . . 406
8.1.2. Difeomorfismo y Transformación de Estados . . . . . . 408
8.1.3. Transformación no Lineal de Estados . . . . . . . . . . 409
8.1.4. El Teorema de Frobenius . . . . . . . . . . . . . . . . 410
8.2. Grado Relativo . . . . . . . . . . . . . . . . . . . . . . . . . . 412
8.3. Forma Normal de Procesos No lineales . . . . . . . . . . . . . 413
8.4. Linealización Exacta y la Ley de Control . . . . . . . . . . . . 414
8.5. Observadores No Lineales . . . . . . . . . . . . . . . . . . . . 418
8.6. Procedimiento de Diseño . . . . . . . . . . . . . . . . . . . . . 421
8.7. Control No Lineal de un Servosistema . . . . . . . . . . . . . 422
8.7.1. Formulación del Problema . . . . . . . . . . . . . . . . 422
8.7.2. Modelo del Proceso . . . . . . . . . . . . . . . . . . . . 422
8.7.3. Determinación del Grado Relativo . . . . . . . . . . . 424
8.7.4. Comprobar Linealización Exacta . . . . . . . . . . . . 424
8.7.5. La Forma Normal . . . . . . . . . . . . . . . . . . . . 425
8.7.6. La ley de Control No Lineal . . . . . . . . . . . . . . . 427
8.7.7. Diseño del Observador No Lineal de Estados . . . . . 430
8.7.8. Simulación del Sistema de Control No Lineal . . . . . 431
8.7.9. Implementación del Hardware . . . . . . . . . . . . . . 439
8.7.10. Implementación del Software . . . . . . . . . . . . . . 439
8.7.11. Resultados Experimentales . . . . . . . . . . . . . . . 443
8.8. Problemas Resueltos . . . . . . . . . . . . . . . . . . . . . . . 444
8.9. Problemas Propuestos . . . . . . . . . . . . . . . . . . . . . . 451

. Bibliografı́a 453

. Índice alfabético 456


Prefacio

Fundamentos

A nadie escapa el hecho de que estamos presenciando un dramático y per-


manente desarrollo de dispositivos y equipos basados en técnica digital, tales
como microcontroladores, tarjetas de desarrollo para procesamiento digital
de señales, sistemas encapsulados, computadoras industriales, sistemas de
adquisición de datos, entre otros. Tales dispositivos y equipos, que cada vez
son más pequeños y de menor costo, pero paradójicamente más potentes,
han provocado que actualmente la gran mayorı́a de los sistemas de control
se diseñen basados en técnicas digitales.
Con respecto a las técnicas empleadas en el diseño de los sistemas de con-
trol, podemos observar en la industria que cada vez son más las aplicaciones
basadas en técnicas no tradicionales, las cuales denominaremos técnicas de
control avanzado. En este contexto, las técnicas de control avanzado que
han logrado mayor aceptación son las siguientes: control predictivo, control
no lineal, control robusto, control adaptivo, control óptimo, entre otras. La
literatura técnica y las publicaciones para cada una de ellas, es de hecho
abundante pero lamentablemente esparcida, de modo que el tratamiento
aislado de cada técnica puede consumir gran cantidad de tiempo y esfuerzo.
Esta publicación integra en un solo volumen, los fundamentos y los pro-
cedimientos encaminados al diseño de sistemas de control avanzado y su
correspondiente implementación en tiempo real. El material desarrollado
basa sus fundamentos en la representación de los sistemas de control en el
espacio de estado discreto. Sin embargo, no se deja de mencionar y de tratar
el punto de vista tradicional, cuando sea necesario.
He sido muy cuidadoso en cubrir con amplitud y con la claridad del caso,
empleando muchas veces ejemplos explicativos, aquellos conceptos funda-
mentales requeridos para un mejor entendimiento del material presentado.
Las aplicaciones en tiempo real desarrolladas para validar los métodos de
XII Prefacio

diseño presentados en los capı́tulos del cuatro al ocho, constituyeron proyec-


tos de investigación realizados en la Sección de Postgrado de la Facultad de
Ingenierı́a Eléctrica y Electrónica de la Universidad Nacional de Ingenierı́a
(http://fiee.uni.edu.pe), casa de estudios de la cual soy docente.

Herramientas Computacionales
La gran mayorı́a de los ejercicios y problemas formulados en este libro se
desarrollan con el auxilio de la computadora personal. Especı́ficamente, para
el desarrollo de los ejemplos y problemas, y para la simulación de las aplica-
ciones, se emplea el software “MATLAB” (versión 4.2) con sus herramientas
“Control Systems”, “Signal Processing” y “SIMULINK”. El software para
las aplicaciones en tiempo real está escrito en C/C++ de “Borland”, versión
4.52. Evidentemente, los programas elaborados también pueden ejecutarse
en versiones de software más actualizadas. Los programas fuente se pueden
descargar de mi página web: http:/fiee.uni.edu.pe/728681F. Antes de
emplear tales programas, leer el archivo README.TXT.

Sistema de Unidades y Acentuación en Programas Fuente


Esta publicación emplea el Sistema Internacional (SI) de unidades. Para
separar la parte entera de la parte decimal de los números decimales, seguire-
mos usando el punto (.) en lugar de la coma (,), debido a que los paquetes
de software MATLAB y Borland C/C++ sólo permiten emplear el pun-
to (.) para expresar números decimales. Como tales paquetes de software
no emplean el acento ortográfico, en los listados de los programas fuente
prescindiremos de tal acentuación.

Sobre el Contenido de los Capı́tulos


Capı́tulo 1: Matemática Asistida con Computadora. Describe
en forma sucinta algunos tópicos de matemáticas aplicadas (básicamente
análisis matricial y vectorial) necesarios para el desarrollo de los capı́tulos
posteriores. La mayorı́a de los ejemplos se desarrollan con el auxilio del
software MATLAB. De allı́ la razón del nombre del capı́tulo.
Capı́tulo 2: Sistemas Discretos. Presenta los conceptos fundamen-
tales acerca de los sistemas de control realimentados operando en el tiempo
discreto, y la representación de los mismos en el espacio de estado.
Capı́tulo 3: Modelación de Procesos. En este capı́tulo se desarrolla
la modelación de los tres procesos, cuyos sistemas de control avanzado van a
XIII

ser implementados en tiempo real. Tales procesos son: el péndulo invertido,


la grúa-puente y el servomotor D.C. (“Direct Current”) sujeto a cargas no
lineales. En su sección problemas, el capı́tulo presenta la modelación de
diversos procesos tı́picos.
Capı́tulo 4: Control Óptimo. Desarrolla los fundamentos del control
óptimo cuadrático discreto y dos aplicaciones en tiempo real: control óptimo
de posición del péndulo invertido y control óptimo de posición de la grúa-
puente. En su sección problemas, el capı́tulo desarrolla diseños de sistemas
de control óptimo cuadrático para varios procesos tı́picos.
Capı́tulo 5: Control Adaptivo. Discute brevemente acerca de los
principales sistemas de control adaptivo, para luego presentar en detalle
el procedimiento de diseño de un sistema de control adaptivo con autosin-
tonización. El procedimiento desarrollado se aplica para implementar en
tiempo real el control adaptivo con autosintonización de la posición de un
servomotor D.C. operando con carga no lineal y variable. En su sección
problemas, el capı́tulo presenta diseños de sistemas de control adaptivo con
autosintonización para varios procesos tı́picos.
Capı́tulo 6: Control Predictivo. Presenta los fundamentos del con-
trol predictivo basado en modelos y desarrolla una aplicación en tiempo
real: control predictivo de la posición de un servomotor D.C. sujeto a cargas
no lineales empleando el algoritmo de la matriz dinámica de control. En su
sección problemas, el capı́tulo desarrolla diseños de sistemas de control pre-
dictivo para diversos procesos tı́picos, naturalmente, empleando el algoritmo
de la matriz dinámica de control.
Capı́tulo 7: Control Robusto. Trata los fundamentos del control ro-
busto basado en la técnica de control con modelo interno. A continuación,
dicha técnica se aplica para el control robusto en tiempo real de la posición
de un servomotor D.C. modelado con incertidumbres. También, en su sec-
ción problemas, el capı́tulo desarrolla diseños de sistemas de control robusto
para diversos procesos tı́picos, empleando el algoritmo de control con modelo
interno.
Capı́tulo 8: Control No Lineal. Desarrolla los fundamentos relaciona-
dos con el control no lineal de procesos empleando la técnica denomina-
da linealización por realimentación. Para validar los fundamentos de dicha
técnica, se desarrolla el diseño e implementación del sistema de control por
linealización de la realimentación de la posición de un servomotor D.C. no
lineal. En su sección problemas, el capı́tulo desarrolla diseños de sistemas
de control no lineal para diversos procesos tı́picos.
XIV Prefacio

Pre-requisitos y Configuración de Cursos


Por su contenido y su presentación, este volumen puede ser usado como libro-
texto en las especialidades de Ingenierı́a Eléctrica, Electrónica, Mecánica
y/o Mecatrónica, para el dictado de un curso semestral, tanto de antegrado
(a llevarse en los últimos semestres) como de postgrado. Para un curso de
antegrado se sugiere desarrollar los capı́tulos 1, 2, 3, 4 y 6, y tratar sucin-
tamente los capı́tulos 5, 7 y 8. Para un curso de postgrado se sugiere cubrir
los capı́tulos 3 al 8, quedando los capı́tulos 1 y 2 como medio de consulta.
Por su carácter aplicativo, por el tratamiento claro y fácilmente com-
prensible del material presentado y gracias a la gran cantidad de ejemplos,
problemas y aplicaciones desarrollados, este libro puede ser empleado tam-
bién por la gran audiencia de ingenieros y técnicos especializados que ejercen
en la industria y por los investigadores de otras áreas (fı́sicos, matemáticos,
entre otros) que deseen familiarizarse con las técnicas digitales para diseñar
e implementar en tiempo real sistemas de control avanzado.

Agradecimientos
La publicación de este libro fue financiada en parte por el Instituto Gene-
ral de Investigación de la UNI. Mi agradecimiento a su Director, Dr. Guiller-
mo Lira. Mi gratitud especial a mis alumnos que colaboraron con esta pub-
licación: Leonardo Gushiken (capı́tulos 3 y 4), Omar Tupayachi (capı́tulos 3
y 8) y Raúl Benitez (capı́tulos 6 y 7). Luis Lecina (alumno de la Universidad
Politécnica de Cataluña) colaboró con el capı́tulo 5. La revisión de todo lo
escrito estuvo a cargo de mi alumna Claudia Córdova, mientras que Rommel
Romero (mi futuro alumno) se encargó de todo lo relativo a la impresión del
libro.

Arturo Rojas Moreno, Ph.D.


arojasm@viabcp.com
arojas@uni.edu.pe
http://fiee.uni.edu.pe/728681F
Capı́tulo 1

Matemática Asistida con


Computadora

Este capı́tulo es una breve exposición de los fundamentos matemáticos rela-


cionados con el análisis matricial, el análisis vectorial y la transformada de
Laplace. El material seleccionado está estrechamente relacionado con el mate-
rial a desarrollarse en los capı́tulos siguientes. Para mayores detalles del material
cubierto se recomienda consultar las referencias [18], [19], [20], [21], [22], [14]
y el apéndice A de [3]. Los cálculos, en su gran mayorı́a, se realizan con el aux-
ilio del paquete MATLAB. Todos los archivos correspondientes a los ejercicios
desarrolados se pueden descargar del sitio: http://fiee.uni.edu.pe/728681F.

1.1. Cálculo Matricial


1.1.1. Operaciones y Tipos de Matrices
Nomenclatura
La nomenclatura que se explica a continuación no está libre de excep-
ciones a la regla. Tales excepciones serán aclaradas conforme aparezcan.
Una matriz A de orden (o dimensión) n × m, la cual será denotada
siempre con letra mayúscula, es un arreglo rectangular con sus elementos
aij dispuestos en n filas y m columnas. Es decir:
 
a11 . . . a1m
 ..  ; i = 1, . . . , n; j = 1, . . . , m
A = [aij ] =  ... . 
an1 . . . anm
2 Matemática Asistida con Computadora

Los elementos de una matriz pueden ser números (reales o complejos),


funciones, otras matrices, etc. Cuando n = 1, A se convierte en un vector
fila. Cuando m = 1, A toma la forma de un vector columna. Sin embargo,
los vectores serán denotados en negrita. Por ejemplo, el vector columna x(t)
de orden n se representa como:
 
x1 (t)
 
x(t) =  ... 
xn (t)
El vector fila correspondiente es:
   T
xT (t) = x1 (t) · · · xn (t) ; x(t) = x1 (t) · · · xn (t)
donde el superı́ndice T indica transpuesta.
El cambio de dominio (o de argumento) de una matriz o vector debido a
una transformación sólo afecta al dominio. Por ejemplo, las transformadas
de Laplace de A(t), x(t) e Y(t) (subsección 1.3) se representan como A(s),
x(s) e Y(s) respectivamente.
La relación entre la salida y(.) y la entrada u(.) de un sistema, depen-
diendo del argumento, se designa como:
y(t) = g(t) ∗ u(t); y(s) = G(s)u(s)
y(k) = g(k) ∗ u(k); y(z) = G(z)u(z)
donde el asterisco denota la operación convolución, t y k son los tiempos
continuo y discreto, s y z son las variables laplaciana y zeta, G(s) y G(z)
son funciones de transferencia y, g(t) y g(k) son las respuestas del sistema a
un impulso unitario. Más adelante veremos que el asterisco también denota
la operación conjugada en expresiones complejas.
Estados de equilibrio de matrices y vectores variantes con el tiempo
continuo t o discreto k se denotan con una barra sobre la letra empleada.
Por ejemplo, los estados de equilibrio de A(k) e Y(k) son Ā(k) e Ȳ(k)
respectivamente. En muy contados casos, la barra sobre una variable tiene
el significado de señal reconstruida por un dispositivo de retención.
En el caso de vectores variantes con el tiempo (continuo o discreto),
y cuando sea necesario, emplearemos variables reducidas (escritas con le-
tra minúscula), las cuales también se denominan variables de desviación o
perturbacionales. Por ejemplo, la variable reducida de Y(k) es:
y(k) = Y(k) − Ȳ(k)
1.1 Cálculo Matricial 3

Las formas estimadas de A(.), x(.) e Y(.) (para cualquier argumento) se


representan como Â(.), x̂(.) e Ŷ(.), respectivamente.

Operaciones con Matrices


Una matriz A con todos sus elementos aij iguales a cero se denomina
matriz cero o nula y se denota como A = 0. Dos matrices A = [aij ] y
B = [bij ] son iguales si son del mismo orden y además [aij ] = [bij ].
La suma de dos matrices, denotada como C = A ± B, sólo es posible si
A y B son del mismo orden:

C = [cij ] = A ± B = [aij ± bij ]

La multiplicación de dos matrices, denotada como C = AB, sólo es


posible si el número de columnas de A es igual al número de filas de B. Si
A es de orden n × m y B es de orden m × r, entonces C debe ser de orden
n × r. Los elementos de C se determinan como sigue:

m
cij = aik bkj ; i = 1, 2, . . . , n; j = 1, 2, . . . , m
k=1

Por ejemplo:
 

b11


a11 a12 a13  b21  = c 11 a11 b11 + a12 b21 + a13 b31
=
a21 a22 a23 c21 a21 b11 + a22 b21 + a23 b31
b31
Si κ es un escalar, entonces κA resulta una matriz en donde cada elemento
queda multiplicado por κ. Es decir:

κA = κ[aij ] = [κaij ]

La multiplicación es asociativa:

ABCD = (AB)(CD) = A(BCD) = (ABC)D

y distributiva:

(A + B)(C + D) = AC + AD + BC + BD

Cuando AB = BA, se dice que A y B son matrices que conmutan. Sin


embargo, en general, la multiplicación no es conmutativa:

AB = BA
4 Matemática Asistida con Computadora

Si AB = 0, implica que A = 0 o B = 0, o que A y B sean singulares


(ecuación (1.1)). Si AB = AC, no necesariamente implica que B = C.
La matriz transpuesta, denotada como AT , es la matriz A con sus filas y
columnas intercambiadas. Por consiguiente:

(AT )T = A; (A + B)T = AT + B T ; (AB)T = B T AT



Un número complejo se designa como s = σ + jω, donde j = −1 es la
unidad de los números imaginarios y tanto σ como ω son números reales.
La operación conjugada, denotada como A∗ , toma la conjugada a todos los
elementos complejos de A. Para la operación conjugada se cumple:

(A∗ )∗ = A; (A + B)∗ = A∗ + B ∗ ; (AB)∗ = A∗ B ∗

La operación hermitiana, denotada como AH , toma la conjugada y luego


la transpuesta (o toma la transpuesta y luego la conjugada) de la matriz A.
Es decir:
AH = (A∗ )T = (AT )∗
Por consiguiente:

(AH )H = A; (A + B)H = AH + B H ; (AB)H = B H AH

Tipos de Matrices
Si el orden de una matriz A es n × n, entonces la matriz se denomina
cuadrada de orden n. Esta matriz posee una diagonal principal, o simple-
mente una diagonal con elementos aii . La traza de una matriz cuadrada se
define como:
traza(A) = a11 + · · · + ann
Una matriz cuadrada se denomina matriz diagonal cuando los elementos que
no pertenecen a su diagonal son todos ceros:
 
d11 0 0 . . . 0
 0 d22 0 . . . 0 
 
D = [dii ] =  . .. .. .. 
 .. . . . 
0 0 0 . . . dnn

Una matriz cuadrada se denomina triangular superior si los elementos debajo


de su diagonal son todos ceros. Si los elementos encima de de su diagonal
son todos ceros, entonces la matriz es triangular inferior.
1.1 Cálculo Matricial 5

La matriz identidad I, denotada también como In (n es el orden de


la matriz), es una matriz diagonal que sólo posee unos. Si A es cuadrada,
AI = IA, y en general se cumple que:
A es simétrica si: AT = A
A es antisimétrica si: AT = −A
A es ortogonal si: AAT = AT A = I
A es periódica si: Aκ+1 = A; κ es un entero positivo
κ
A es nilpotente si: A = 0; κ es un entero positivo
A es hermitiana si: (A ) = (A∗ )T = AH = A
T ∗

A es antihermitiana si: AH = −A
A es unitaria si: AAH = AH A = I
A es normal si: AAH = AH A
A−1 es inversa de A si: AA−1 = A−1 A = I
A es singular si: det(A) = 0 (1.1)
donde det(A) denota el determinante de A, punto que se trata en la siguiente
subsección.
Una matriz cuadrada A con elementos complejos puede ser escrita co-
mo la suma de una matriz hermitiana B = 12 (A + AH ) más una matriz
antihermitiana C = 12 (A − AH ). Es decir:
1 1
A = B + C = (A + AH ) + (A − AH )
2 2

1.1.2. Determinantes y Matriz Inversa


Determinantes
El determinante de la matriz A = [aij ] de orden 2 es:


a11 a12
det = a11 a22 − a12 a21 (1.2)
a21 a22
Para obtener el determinante de una matriz de orden n > 2 podemos
emplear el método de la expansión. Si tomamos como base la primera fila,
el determinante de una matriz A se obtiene de:

n
det(A) = (−1)1+j a1j det(A1j ) = (−1)1+1 a11 det(A11 ) + (−1)1+2 a12 det(A12 ) + · · ·
j=1
6 Matemática Asistida con Computadora

donde A1j , j = 1, . . . , n es la matriz que resulta luego de eliminar la fila 1


y la columna j de A. Por ejemplo, el determinante de una matriz de orden
n = 3 se calcula como:
 
a11 a12 a13

a22 a23
det  a21 a22 a23  = (−1) a11 det 1+1
+
a32 a33
a31 a32 a33



1+2 a21 a23 1+3 a21 a22
(−1) a12 det + (−1) a13 det (1.3)
a31 a33 a31 a32

Con relación a dos matrices cuadradas A y B de orden n:


1. Si cada elemento de una fila o columna de A es cero, det(A) = 0.
2. det(A) = det(AT ).
3. Si κ multiplica una fila o columna de A, entonces el det(A) queda
multiplicado por κ.
4. Si B se obtiene intercambiando dos filas o columnas de A, entonces
det(B) = −det(A).
5. Si dos filas o columnas de A son iguales, entonces det(A) = 0.
6. Si sumamos un múltiplo de una fila o columna de A a cualquiera de
sus filas o columnas, el valor del det(A) no cambia.
7. det(AB) = det(BA) = det(A)det(B)
8. Si los eigenvalores de A son λ1 , λ2 , . . . , λn , det(A) = λ1 λ2 . . . λn .
La determinación de eigenvalores se trata en la subsección 1.2.2.

Matriz Inversa
Si A y B son dos matrices no singulares; es decir, si det(A) = 0 y
det(B) = 0, entonces:

(AB)−1 = B −1 A−1 ; (AT )−1 = (A−1 )T


1
((A∗ )T )−1 = ((A−1 )∗ )T ; det(A−1 ) =
det(A)
Si A es una matriz no singular de orden 2, vale recordar que:



a b −1 1 d −b
A= ; A = (1.4)
c d ad − bc −c a
1.1 Cálculo Matricial 7

Si A es una matriz no singular de orden 3:


 
a b c
A= d e f 
g h i





e f b c b c
 det −det det 

h i
h i
e f 
1   d f a c a c 

A−1 = −det det −det
det(A) 

g i
g i
d f 

 d e a b a b 
det −det det
g h g h d e

det(A) = aei + gbf + cdh − gec − ahf − idb (1.5)


Lema de Inversión de Matrices. Si A, B, C y D son matrices no
singulares de orden n × n, n × m, m × n y n × n respectivamente, entonces:

(A + BDC)−1 = A−1 − A−1 B(D−1 + CA−1 B)−1 CA−1 (1.6)

Este lema se demuestra pre-multiplicando cada miembro de la ecuación (1.6)


por (A + BDC). Luego, efectuar las operaciones matriciales resultantes:
(A + BDC)(A + BDC)−1 = I

(A + BDC)[A−1 − A−1 B(D−1 + CA−1 B)−1 CA−1 ] =


I +BDCA−1 −B(D−1 +CA−1 B)−1 CA−1 −BDCA−1 B(D−1 +CA−1 B)−1 CA−1 =
I + BDCA−1 − (BDD−1 + BDCA−1 B)(D−1 + CA−1 B)−1 CA−1 =
I + BDCA−1 − BD(D−1 + CA−1 B)(D−1 + CA−1 B)−1 CA−1 =
I + BDCA−1 − BDCA−1 = I
Valor Absoluto. Si g = gr + jgi es un número o una función real o
compleja, su valor absoluto, conocido también como módulo o magnitud y
denotado como |g|, es un número real positivo o cero. El ángulo de g en rad
se denota como ∠g. Si e[.] e m[.] son los operadores real e imaginario
respectivamente, entonces se cumple que:

e[g] = gr ; m[g] = gi ; g = e[g] + jm[g] = |g|∠g


 
 2 2  m[g]
|g| =  (e[g]) + (m[g])  ; ∠g = arctan
e[g]
8 Matemática Asistida con Computadora

Si G es una matriz compleja con elementos gij , entonces las operaciones


anteriores se ejecutan elemento por elemento; es decir:

e[G] = e[gij ]; m[G] = m[gij ]

G = |G|∠G = |gij |∠gij ; |G| = |gij |; ∠G = ∠gij


La tabla 1.1 muestra los comandos para ejecutar operaciones matriciales
empleando MATLAB.

Ejemplo 1.1

Dada la matriz cuadrada A, calcular B.


 
1−j 2−j 3−j
A =  4j −2 3 + 5j 
6 − j 7 − j 8 + 3j

(A∗ + AT − 0,7jA3 )A−1 AH |A|∠A e[A]m[A]


B=
(2j + 1) traza(A)det(A)
Solución: El programa en MATLAB para calcular B es el siguiente:
% ejem1_1.m EJEMPLO SOBRE CALCULO MATRICIAL COMPLEJO
clear all
A = [1-j 2-j 3- j
4j -2 3+5j
6-j 7-j 8+3j];
B = (conj(A)+conj(A’)-0.7j*A^3)*inv(A)*A’*abs(A)* ...

angle(A)*real(A)*imag(A)/((2*j+1)*trace(A)*det(A));

% B = 1.0e+002 *
% 0.2488 - 0.0957i 0.8007 - 0.3510i -2.1614 + 0.9495i
% 0.2952 + 0.3551i 0.9809 + 1.0977i -2.6468 - 2.9592i
% 0.8222 + 0.1991i 2.7135 + 0.5050i -7.3267 - 1.3550i

Ejemplo 1.2

Determinar la matriz hermitiana B y la antihermitiana C de la matriz A


del ejemplo anterior.
1.1 Cálculo Matricial 9

Cuadro 1.1: Comandos para cómputo matricial

Operación Código MATLAB


Suma A+B A + B
Resta A−B A - B
Multiplicación AB A*B
Multiplicación κA; κ: complejo kappa*A
Conjugada A∗ conj(A)
Transpuesta (A real) AT A’
Transpuesta (A compleja) AT conj(A’); A.’
Hermitiana AH A’
Potencia An A^n
Determinante det(A) det(A)
Inversa A−1 inv(A)
División izquierda A*X = B; X = A\B
División derecha X*A = B; X = B/A
Valor absoluto |A| abs(A)
Ángulo ∠A angle(A)
Parte real [A] real(A)
Parte maginaria [A]
 imag(A)
n
Traza i=1 aii trace(A)
Matriz identidad In eye(n)
10 Matemática Asistida con Computadora

Solución: Las matrices pedidas son:


1 1
B = (A + AH ); C = (A − AH )
2 2
y se puede comprobar que B = B H y C = −C H . Ver programa ejem1 2.m.
% ejem1_2.m MATRICES HERMITIANAS
clear all
A = [1-j 2-j 3-j
4j -2 3+5j
6-j 7-j 8+3j];
B = (A + A’)/2; C = (A - A’)/2;

ZB = B - B’; % ZB RESULTA LA MATRIZ CERO


ZC = C + C’; % ZC RESULTA LA MATRIZ CERO

Ejemplo 1.3
Multiplicación con Partición de Matrices.- Dos matrices Anm y Bmp
(los subı́ndices indican las dimensiones) pueden ser particionadas como sigue:
   
An1 m1 · · · An1 mm Bm1 p1 · · · Bm1 pp
 .. ..   .. .. 
A= . . ; B= . . 
Ann m1 · · · Ann mm Bmm p1 · · · Bmm pp
La condición necesaria para realizar el producto Cnp = Anm Bmp empleando
particiones, es que las columnas de A y las filas de B sean particionadas
en la misma forma. Por tanto, n = n1 + · · · + nn , m = m1 + · · · + mm y
p = p1 + · · · + pp . Determinar si el producto siguiente es válido y si lo es,
obtener C = AB.
  
A22 A23 A21 B22 B23
AB =  A32 A33 A31   B32 B33 
A42 A43 A41 B12 B13
Solución: Podemos notar que para A: n = 2 + 3 + 4 = 9, m = 2 + 3 + 1 = 6,
y para B: m = 2 + 3 + 1 = 6 y p = 2 + 3 = 5. Por consiguiente, la partición
es correcta. La multiplicación ahora es directa:
 
A22 B22 + A23 B32 + A21 B12 A22 B23 + A23 B33 + A21 B13
C =  A32 B22 + A33 B32 + A31 B12 A32 B23 + A33 B33 + A31 B13 
A42 B22 + A43 B32 + A41 B12 A42 B23 + A43 B33 + A41 B13
En notación MATLAB, conociendo las matrices particionadas, el producto
resulta:
1.1 Cálculo Matricial 11

C = [A22*B22+A23*B32+A21*B12 A22*B23+A23*B33+A21*B13
A32*B22+A33*B32+A31*B12 A32*B23+A33*B33+A31*B13
A42*B22+A43*B32+A41*B12 A42*B23+A43*B33+A41*B13];

Ejemplo 1.4

Matriz Aumentada.- Si los vectores x, y, v y w son de orden n, m, p y q


respectivamente, obtener una ecuación que reemplace a las dos ecuaciones
diferenciales siguientes:
dx dy
= Ax + Bv; = Cy + Dw
dt dt
Solución: Las matrices A con C y B con D forman matrices aumentadas
como sigue:

dx




dt A 0 x B 0 v
dy = +
dt
0 C y 0 D w

Ejemplo 1.5
Si los λi son los eigenvalores de la matriz A de orden n, comprobar numéri-
camente que:
det(A) = λ1 λ2 . . . λn ; i = 1, . . . , n
Solución: Ver el programa ejem1 5.m.
% ejem1_5.m COMPRUEBA QUE det(A)=L(1)L(2)L(3)L(4)
clear all
A = [1-j 2-j 3-j -3+8j
4j -2 3+5j 4-2j
6-j 7-j 8+3j 3+j
2 -1 j 0];
L = eig(A); % DETERMINA LOS EIGENVALORES DE A
detA = det(A); P = L(1)*L(2)*L(3)*L(4);
% SE DEBE CUMPLIR QUE: P = detA

Ejemplo 1.6

Conocidas las matrices Ann , Bnm , Cmn y Dmm con det(A) = 0 y det(D) = 0,
y definiendo:




A B A 0 A B
E= ; G= ; H=
0 D C D C D
12 Matemática Asistida con Computadora

demuestre numéricamente que:


det(E) = det(G) = det(A)det(D)
det(H) = det(A)det(D − CA−1 B) = det(D)det(A − BD−1 C)
Solución: El siguiente programa demuestra numéricamente lo pedido.
% ejem1_6.m DETERMINANTE DE MATRICES PARTICIONADAS
clear all
% MATRICES DATOS CON n=2 Y m=3:
A = [-3+j 4-2j
5-8j -7-2j];
B = [ j -1+3j 2-5j
4+7j 6 3+8j];
C = [ 2-j j
1+j -5j
-3-7j 8];
D = [2+j -3-j 4j
1+3j 0 -7j
1+j -9-2j -5];
% CONDICION: det(A) Y det(D) DISTINTOS DE 0
% zeros(m,n) CREA UNA MATRIZ DE CEROS DE ORDEN (m,n)
E = [A B
zeros(3,2) D];
G = [A zeros(2,3)
C D];
M = det(A)*det(D);
% SE DEBE CUMPLIR: det(E) = det(G) = M DISTINTO DE 0
H = [A B
C D];
J = det(A)*det(D-C*inv(A)*B);
K = det(D)*det(A-B*inv(D)*C);
% SE DEBE CUMPLIR: det(H) = det(J) = K

Ejemplo 1.7

Demostrar numéricamente que:



−1
−1
A B A −A−1 BD−1
=
0 D 0 D−1

−1

A 0 A−1 0
=
C D −D−1 CA−1 D−1
Solución: Ver el programa ejem1 7.m.
1.1 Cálculo Matricial 13

% ejem1_7.m INVERSION DE MATRICES PARTICIONADAS


clear all
% MATRICES DATOS CON n=2 Y m=3:
A = [-3+j 4-2j
5-8j -7-2j];
B = [ j -1+3j 2-5j
4+7j 6 3+8j];
C = [ 2-j j
1+j -5j
-3-7j 8];
D = [2+j -3-j 4j
1+3j 0 -7j
1+j -9-2j -5];
% CONDICION: det(A) y det(D) DISTINTOS DE 0
% LA MATRIZ CERO DEBE SER DE ORDEN (m,n)
Z1 = zeros(3,2);
E = [A B
Z1 D];
G = [inv(A) -inv(A)*B*inv(D)
Z1 inv(D)];
% LA MATRIZ CERO DEBE SER DE ORDEN (m,n):
Z2 = zeros(2,3);
F = [A Z2
C D];
H = [inv(A) Z2
-inv(D)*C*inv(A) inv(D)];
% E*G, G*E, F*H y H*F DEBEN RESULTAR MATRICES IDENTIDAD

Ejemplo 1.8

Demostrar numéricamente que:

−1

A B A−1 + A−1 B(D − CA−1 B)−1 CA−1 −A−1 B(D − CA−1 B)−1
=
C D −(D − CA−1 B)−1 (D − CA−1 B)−1

−1

A B (A − BD−1 C)−1 −(A − BD−1 C)−1 BD−1
=
C D −D C(A − BD−1 C)−1
−1
D C(A − BD−1 C)−1 BD−1 + D−1
−1

Solución: Ver en el siguiente programa la demostración pedida.


% ejem1_8.m INVERSION DE MATRICES PARTICIONADAS
clear all
% MATRICES DATOS CON n=2 Y m=3:
A = [-3+j 4-2j
14 Matemática Asistida con Computadora

5-8j -7-2j];
B = [ j -1+3j 2-5j
4+7j 6 3+8j];
C = [ 2-j j
1+j -5j
-3-7j 8];
D = [2+j -3-j 4j
1+3j 0 -7j
1+j -9-2j -5];
% CONDICION: det(D) Y det(D-C*inv(A)*B) DISTINTOS DE 0
E = [A B;C D];
G11 = inv(A) + inv(A)*B*inv(D-C*inv(A)*B)*C*inv(A);
G12 = -inv(A)*B*inv(D-C*inv(A)*B);
G21 = -inv(D-C*inv(A)*B)*C*inv(A);
G22 = inv(D-C*inv(A)*B);
G = [G11 G12;G21 G22];
% CONDICION: det(D) Y det(A-B*inv(D)*C) DISTINTOS DE 0
H11 = inv(A-B*inv(D)*C);
H12 = -inv(A-B*inv(D)*C)*B*inv(D);
H21 = -inv(D)*C*inv(A-B*inv(D)*C);
H22 = inv(D)*C*inv(A-B*inv(D)*C)*B*inv(D)+inv(D);
H = [H11 H12;H21 H22];
% E*G, E*H, G*E y H*E DEBEN RESULTAR MATRICES IDENTIDAD

1.1.3. Derivadas e Integrales con Matrices y Vectores


Derivada e integral de una matriz A(t) = [aij (t)] de orden n × m:
     
d
dt a11 (t) ··· d
dt a1m (t)  a11 (t) ··· a1m (t)
d  .. ..   .. .. 
A(t) =  . . ; A(t) =  . 
dt   .
d
dt an1 (t) ··· d
dt anm (t)
an1 (t) · · · anm (t)
(1.7)
Derivada e integral de un vector x(t) = [x1 . . . xn ]T :
 d    
dt x1 (t)  x1 (t)
d  ..   .. 
x(t) =  . ; x(t) =  .  (1.8)
dt d

dt x n (t) xn (t)
Cuando las matrices A y B y el escalar κ son funciones de t, se cumple:
d d d d dA dB
[A + B] = A + B; [AB] = B+A
dt dt dt dt dt dt
−1
d dA dk d −1 dA
[Ak] = k+A ; A = −A−1 (1.9)
dt dt dt dt A
1.2 Análisis Vectorial 15

Derivada parcial de una función escalar J(x) de variable vectorial:


 ∂J   ∂2J ∂2J 2J 
∂x 2 ∂x 1 ∂x 2
· · · ∂x∂1 ∂x
∂J 
∂x1
 ∂2J  1 n

=  ...  ; =  .. .. ..  (1.10)
∂x ∂x 2  . . . 
∂J ∂2J ∂2J ∂2J
∂xn ∂xn ∂x1 ∂xn ∂x2 · · · ∂x2 n

Derivada total de una función escalar V (x(t)) de variable vectorial:



d ∂V T dx
V (x(t)) = (1.11)
dt ∂x dt
Jacobiano de una función vectorial f(x) de orden m con argumento vectorial
de orden n:  ∂f ∂f2 ∂fm

1
· · ·
 ∂x
∂f1
1 ∂x1
∂f2
∂x1
∂fm 
∂f  ∂x · · · ∂x2 
= .. 
2 ∂x2
 . .  (1.12)
∂x  .. .. . 
∂f1 ∂f2 ∂fm
∂xn ∂xn ··· ∂xn
Si la matriz cuadrada A y los vectores x e y son reales y de orden n se
cumple:
∂ T
x Ax = Ax + AT x
∂x
∂ T ∂ T
x Ay = Ay; x Ay = AT x (1.13)
∂x ∂y
Si A es una matriz hermitiana de orden n y x e y son vectores complejos de
orden n, se cumple:
∂ H
x Ax = Ax
∂x∗
∂ H ∂ H

x Ay = Ay; x Ay = AT x∗ (1.14)
∂x ∂y

1.2. Análisis Vectorial


1.2.1. Independencia, Ortonormalidad y Normas
Independencia de Vectores
Se dice que los vectores xi , i = 1, . . . , n son linealmente independientes
si:

n
ci xi = 0
i=1
16 Matemática Asistida con Computadora

La ecuación anterior implica que las constantes ci = 0, i = 1, . . . , n, o que


det([x1 . . . xn ]) = 0.

Operación con Vectores Complejos y Reales


Si x e y son vectores complejos de orden n:


n
xH y = (yH x)∗ = yT x∗ = x∗i yi
i=1


n
n
xH x = x∗i xi = |xi |2
i=1 i=1
 
x1 x∗1 x1 x∗2 . . . x1 x∗n
 .. .. 
xxH =  . . . . .  (1.15)
xn x∗1 xn x∗2 . . . xn x∗n
Si x e y son vectores reales de orden n:


n
n
x T y = yT x = xi yi ; xT x = x2i
i=1 i=1
 
x21 x1 x2 . . . x1 xn
 .. .. 
xxT =  . . . . .  (1.16)
xn x1 xn x2 . . . x2n

Vectores Ortonormales
Los vectores reales x1 , x2 , . . . son ortonormales si xTi xj = 0 cuando i = j
y = 0 cuando i = j.
xTi xj

Normas de Vectores y Matrices


Norma de un Vector
En general, una norma es una medida del tamaño de un vector o matriz.
La ejecución de la norma resulta en un escalar positivo. La norma de un
vector denotada como  x  posee las propiedades siguientes:

 x ≥ 0 para todo x = 0
1.2 Análisis Vectorial 17

 x = 0 si y sólo si x = 0
 κx = κ  x  κ es un escalar
Desigualdad triangular:  x + y ≤ x  +  y 
Desigualdad de Schwarz: |xH y| ≤ x  y 

La norma más empleada es la Euclidiana:



 x 2 = (xH x)1/2 = |x1 |2 + |x2 |2 + · · · + |xn |2 (1.17)

que es un caso particular de la siguiente norma:


 √ 
 x = (P x)H (P x) = xH P H P x = xH Qx)] ≥ 0; Q = P H P = QH

Otras normas pueden ser definidas como:



n
 x = |xi |;  x ∞ = máx |xi |;  x −∞ = mı́n |xi |
i i
i=1
 n 1/p

 x p = |xi |p
i=1

Norma de una Matriz


La norma de una matriz A de orden n es el menor valor de κ tal que:

 A ≤ κ  A 

Tal norma cumple las propiedades de la norma de un vector. En adición,


también cumple:

 A = AH ;  A = AT ;  Ax ≤ A  x 

 A 2 = máx[xH AH Ax], si xH x = 1
x
|λ| ≤ A , si λ es un eigenvalor de A
Otras normas para una matriz A de orden n son:
 1/2

n
n n
n
 A = |aij |;  A F =  |aij |2 
i=1 j=1 i=1 j=1
18 Matemática Asistida con Computadora

m   
n
 A 1 = máx |aij | ;  A ∞ = máx  |aij |
j i
i=1 j=1

 A 2 = máx λi (AH A)
i

1.2.2. Rango de una Matriz, Eigenvalores y Eigenvectores


Rango de una Matriz
Si A es una matriz de orden n × m, su rango, denotado como rango(A),
es igual al número máximo r de sus vectores columnas linealmente indepen-
dientes. Si A es una matriz de orden n × m y B es de orden m × k:

rango(AB) = rango(AH ) = rango(AH A) = rango(AAH )


rango(AB) = rango(AT ) = rango(AT A) = rango(AAT )
rango(AB) ≤ rango(A); rango(AB) ≤ rango(B)
rango(AB) = rango(A), si A y B son no singulares
rango(AB) = rango(B), si A y B son no singulares

Si A es una matriz de orden n y det(A) = 0, entonces:

rango(A) = n

Eigenvalores y Eigenvectores
Un eigenvalor de una matriz de orden n, conocido también como valor
propio, modo, “eigenvalue”, valor o raı́z caracterı́stica, es un escalar λ que
permite una solución no trivial de la ecuación:

Ax = λx x≤0 (1.18)

Factorizando x obtenemos la ecuación caracterı́stica de A:

det(λI − A) (1.19)

Asociado con cada eigenvalor λi existe un eigenvector ei de magnitud arbi-


traria que es solución de Aei = λei . Para un eigenvector normalizado ê, su
norma Euclidiana es uno:  ê = 1.
1.2 Análisis Vectorial 19

1.2.3. Diagonalización de Matrices


Matrices Similares
Se dice que dos matrices A y B de orden n son similares si existe una
matriz P no singular tal que P −1 AP = B y B = P AP −1 .
Sea A una matriz de orden n que posee n eigenvalores distintos. Sea
E = [e1 . . . en ] una matriz formada con los eigenvectores de A y sea Λ
una matriz diagonal cuyos elementos son los eigenvalores de A. Entonces se
dice que A y Λ son similares porque:
 
λ1 0 . . . 0
 0 λ2 . . . 0 
−1  
E AE = Λ =  . .. ..  ; EΛE −1 = A (1.20)
 .. . . 
0 0 . . . λn

Forma Canónica de Jordan


Si una matriz A de orden n posee r eigenvectores linealmente indepen-
dientes, la forma de Jordan es una matriz J que posee n − r unos sobre la
diagonal, con todos los demás elementos iguales a cero. Por ejemplo, si los
valores propios de A de orden n = 5 son λ1 , λ1 , λ1 , λ2 , λ3 , entonces son
posibles varias formas de J (se muestran cuatro):
   
λ1 1 0 0 0 λ1 1 0 0 0
 0 λ1 1 0 0   0 λ1 0 0 0 
   
J1 = 
 0 0 λ1 0 0 
 J2 =  0 0 λ1 0 0 

 0 0 0 λ2 0   0 0 0 λ2 0 
0 0 0 0 λ3 0 0 0 0 λ3
   
λ1 0 0 0 0 λ1 0 0 0 0
 0 λ1 0 0 0   0 λ2 0 0 0 
   
J3 = 
 0 0 λ1 0 0 
 J4 =  0 0 λ1 1 0 

 0 0 0 λ2 0   0 0 0 λ1 1 
0 0 0 0 λ3 0 0 0 0 λ3

Notar que J1 y J4 deben poseer tres eigenvectores linealmente independien-


tes, la matriz diagonal J3 cinco y J2 cuatro. Para un problema especı́fico, la
forma correcta de la matriz J se determina de acuerdo a las reglas siguientes:
1. Si una matriz cuadrada A de orden k posee k eigenvalores múltiples,
y si el rango de [λI − A] es k − s, donde 1 ≤ s ≤ k, entonces exis-
20 Matemática Asistida con Computadora

ten s eigenvectores linealmente independientes asociados con λ. Por


consiguiente, existen s bloques de Jordan.

2. La suma de los órdenes de los bloques de Jordan derivados con la regla


anterior debe ser igual a la multiplicidad k (ver ejemplo 1.14).

1.2.4. Formas Cuadráticas y Bilineales


Formas Cuadráticas

Una forma cuadrática es un polinomio real que contiene términos de la


forma aij x∗i xj . Si A = [aij ] = AH es una matriz hermitiana de orden n y x
es un vector complejo de orden n, entonces:


n
n
H
x Ax = aij x∗i xj ; aji = a∗ij
i=1 j=1

Si A = [aij ] = AT es una matriz real y simétrica de orden n y x es un vector


real de orden n:


n
n
xT Ax = aij xi xj ; aji = aij
i=1 j=1

Formas Bilineales

Una forma bilineal es un polinomio real que contiene términos de la forma


aij x∗i yj . Si A = [aij ] es una matriz compleja de orden n, y si los vectores
complejos x e y son de orden n y m respectivamente, entonces:


n
m
xH Ay = aij x∗i yj
i=1 j=1

Si A = [aij ] es real de orden n, y si los vectores reales x e y son de orden n


y m respectivamente, entonces:


n
m
xT Ay = aij xi yj
i=1 j=1
1.2 Análisis Vectorial 21

Definición y Semidefinición de Matrices


Para una matriz A de orden n, las expresiones A > 0, A ≥ 0, A < 0
y A ≤ 0 denotan que A es definida positiva, semidefinida positiva, definida
negativa y semidefinida negativa respectivamente. Hemos visto que la forma
cuadrática xH Ax está asociada con la matriz hermitiana A, ası́ como xT Ax
lo está con la matriz real y simétrica A.
Una matriz A de orden n es definida positiva si su forma cuadrática
asociada es siempre positiva, excepto cuando x = 0. Si todos los eigenvalores
de A son positivos, entonces A > 0.
Una matriz A de orden n es semidefinida positiva si su forma cuadrática
asociada es mayor o igual a cero cuando x = 0. Si los eigenvalores de A son
positivos o nulos, entonces A ≥ 0.
Una matriz A de orden n es definida negativa si su forma cuadrática
asociada es siempre negativa, excepto cuando x = 0. Si todos los eigenvalores
de A son negativos, entonces A < 0.
Una matriz A de orden n es semidefinida negativa si su forma cuadrática
asociada es menor o igual a cero cuando x = 0. Si los eigenvalores de A son
negativos o nulos, entonces A ≤ 0.
Si la matriz A posee eigenvalores positivos y negativos, entonces A es
indefinida.
La tabla 1.2 muestra los comandos para ejecutar otras operaciones ma-
triciales y vectoriales empleando MATLAB.

Ejemplo 1.9

Resolver el siguiente sistema (más incógnitas que ecuaciones):

(5 − j)x1 + (2 + 3j)x2 + (3 − j)x3 + (−1 + 4j)x4 + (−6 + j)x5 = 2 − 9j


4jx1 − 2x2 + (3 + 5j)x3 − 7jx4 + (8 − 2j)x5 = 4 − j
(6 − j)x1 + (7 − j)x2 + (8 − 3j)x3 + (3 − j)x4 + (1 + 4j)x5 = 3 + j

Solución: Ver el programa ejem1 9.m.


% ejem1_9.m SISTEMA DE ECUACIONES: MAS INCOGNITAS QUE ECUACIONES
clear all
A = [5-j 2+3j 3-j -1+4j -6+j
4j -2 3+5j -7j 8-2j
6-j 7-j 8-3j 3-j 1+4j];
22 Matemática Asistida con Computadora

Cuadro 1.2: Comandos para cómputo matricial y vectorial

Operación Código MATLAB

Producto interno complejo xH y x’*y


Producto interno real xT y x’*y
Producto por elemento aij bij A.*B
División por elemento aij /bij A.\B; A./B
Potencia por elemento (aij )bij A.^B

Norma matricial  A 1 = máxj m |aij | norm(A,1)
 i=1
Norma matricial  A 2 = máxi λi (AH A) norm(A,2)

Norma matricial  A ∞ = máxi nj=1 |aij | norm(A,inf)
 1/2
Norma matricial  A F = |a | 2 norm(A,’fro’)
ij ij
n
Norma vectorial  x p = ( i=1 |xi |p )1/p norm(x,p)

Norma vectorial  x 2 = xH x norm(x)
Norma vectorial  x ∞ = máxi |xi | norm(x,inf)
Norma vectorial  x −∞ = mı́ni |xi | norm(x,-inf)
Rango rank(A)
Eigenvalores λi eig(A)
Eigenvectores E = [e1 . . . en ] [E,D]=eig(A)
1.2 Análisis Vectorial 23

B = [2-9j;4-j;3+j];
X = A\B; %
% X =
% 3.5719 - 3.4126i --> x1;
% 0 --> x2
% -2.8535 + 1.6221i --> x3
% 0 --> x4
% 0.9991 - 0.4860i --> x5

Ejemplo 1.10

Resolver el siguiente sistema (menos incógnitas que ecuaciones):

(5 − j)x1 + (2 + 3j)x2 + (3 − j)x3 = 2 − 9j


4jx1 − 2x2 + (3 + 5j)x3 = 4 − j
(6 − j)x1 + (7 − j)x2 + (8 − 3j)x3 = 3 + j
(−1 + 4j)x1 + (−6 + j)x2 + (3 − j)x3 = −3 + 7j
−7jx1 + (8 − 2j)x2 + (1 + 4j)x3 = −9

Solución: Ver el programa ejem1 10.m.


% ejem1_10.m SISTEMA DE ECUACIONES: MENOS INCOGNITAS QUE ECUACIONES
clear all
A = [5-j 2+3j 3-j
4j -2 3+5j
6-j 7-j 8-3j
-1+4j -6+j 3-j
-7j 8-2j 1+4j];
B = [2-9j;4-j;3+j;-3+7j;-9];
X = A\B;
% X =
% 1.2270 - 2.1969i --> x1
% 0.6871 + 1.2202i --> x2
% -0.9472 + 0.4153i --> x3

Ejemplo 1.11

Comprobar numéricamente que:

xH y = (yH x)∗ = yT x∗

Solución: Ver el programa ejem1 11.m.


24 Matemática Asistida con Computadora

% ejem1_11.m CALCULO VECTORIAL


clear all
% VECTORES DATOS
x = [-1+j;3-5j;-5+6j;8-9j;4-2j;-1+j];
y = [-5+j;-3+j;-8+9j;5-6j;2+7j;-3-j];
% COMPROBAR QUE x’*y = conj(y’*x) = conj(y’)*conj(x)
p = x’*y; q = conj(y’*x); r = conj(y’)*conj(x);
[p q r] % p, q y r DEBEN SER IGUALES

Ejemplo 1.12

En el siguiente programa se calculan diferentes normas matriciales y vecto-


riales.

% ejem1_12.m NORMAS
clear all
% VECTOR DATO
x = [-1+j;3-5j;-5+6j;8-9j;4-2j;-1+j];
a = norm(x,5); % NORMA p = 5 (a = 12.3798)
b = norm(x,2); % NORMA EUCLIDIANA (b = 16.2481)
c = norm(x,inf); % NORMA INFINITO (c = 12.0416)
d = norm(x,-inf); % NORMA -INFINITO (d = 1.4142)
% MATRIZ DATO
A = [1-j 2-j 3-j -4-j
4j -2 3+5j 2-8j
6-j 7-j 8+3j -7+3j
3+5j 2-8j 1-j 2-9j];
e = norm(A); % MAXIMO EIGENVALOR DE A: e = 18.7269
f = norm(A,2); % LO MISMO QUE norm(A): e = f = 18.7269
g = norm(A,1); % max(sum(abs(A)))): g = 29.2046
h = norm(A,inf); % max(sum(abs(A’))): h = 29.3136
k = norm(A,’inf’); % IGUAL QUE norm(A,inf): k = h = 29.3136
m = norm(A,’fro’); % sqrt(sum(diag(A’*A))): m = 23.7276
p = ’fro’; % p DEBE SER 1, 2, inf o ’fro’
n = norm(A,2); % NORMA p: n = 18.7269

Ejemplo 1.13

Sean las matrices Anm , Bmp y Cmm . Demostrar numéricamente las siguien-
tes propiedades del rango: rango(A) ≤ mı́n(n, m); rango(A) = rango(AH );
rango(AB) ≤ min(rango(A), rango(B)); rango(CB) = rango(B).

Solución: El siguiente programa presenta las demostraciones pedidas.


1.2 Análisis Vectorial 25

% ejem1_13.m PROPIEDADES DEL RANGO


clear all
% MATRICES DATO
A = [-1+j 3-5j -5+6j -2+5j
8-9j 4-2j -1+j -4
-2+3j 4-6j -2-5j 7j]; % ORDEN (3,4)
B = [1+j -3-5j
8+9j -4+2j
-2+3j -4-6j
-5-6j -2+5j]; % ORDEN (4,2)
C = [-1+j -2+j 3-j -5-7j
4-2j -1+j -4 2
4-6j -2-5j 7j -j
7j -1 9j 4j]; % ORDEN (4,4)
rA = rank(A); rAH = rank(A’); rB = rank(B);
rAB = rank(A*B); rCB = rank(C*B);
% SE DEBE CUMPLIR: rA MENOR O IGUAL QUE min(3,4);
% rA = rAH
% rAB MENOR O IGUAL QUE min(rA,rB)
% rCB = rB

Ejemplo 1.14

El siguiente programa determina la forma de Jordan para la matriz:


 
0 1 0 3
 0 −1 1 1 
A=  0 0

0 1 
0 0 −1 −2

% ejem1_14.m FORMA CANONICA DE JORDAN


clear all
A = [0 1 0 3;0 -1 1 1;0 0 0 1;0 0 -1 -2]; % ORDEN 4
[E D] = eig(A);
% E = % MATRIZ DE EIGENVECTORES
% 1.0000 -0.7071 0.9045 0.7068
% 0 0.7071 0 -0.7074
% 0 0 0.3015 -0.0002
% 0 0 -0.3015 0.0002

% D = % LOS EIGENVALORES DE A FORMAN LA DIAGONAL DE D


% 0 0 0 0
% 0 -1 0 0
26 Matemática Asistida con Computadora

% 0 0 -1 0
% 0 0 0 -1
rank((-1)*eye(4)-A); % RESULTA 2 => 2 BLOQUES DE JORDAN
% ASOCIADOS CON LA RAIZ TRIPLE (-1)
% FORMA DE JORDAN: 0 0 0 0
% 0 -1 1 0
% 0 0 -1 0
% 0 0 0 -1

Ejemplo 1.15

Determinar la definición de las matrices siguientes:


   
2 2 −2 1 2 1
A =  2 6 0 ; B= 2 4 2 
−1 0 2 3 6 0
Solución: Ver el programa ejem1 15.m.
% ejem1_15.m DEFINICION DE MATRICES
clear all
A = [2 2 -2;2 6 0;-1 0 2];
EigA = eig(A); % EIGENVALORES DE A: 0.1996, 6.8922, 2.9083
% A > 0 DADO QUE TODOS SUS EIGENVALORES SON POSITIVOS
B = [1 2 1;2 4 2;3 6 0];
EigB = eig(B); % EIGENVALORES DE B: 0, 7.1098, -2.1098
% B ES INDEFINIDA PUES UN EIGENVALOR ES > 0 Y EL OTRO ES < 0

1.3. La Transformada de Laplace


La transformada de Laplace de una función g(t) se define como:
 ∞
g(s) = L[g(t)] = g(t)e−st dt (1.21)
0

donde s es la variable laplaciana. La transformada de Laplace es útil para


modelar sistemas lineales invariantes con el tiempo. Su transformada inversa
se designa como:
g(t) = L−1 [g(s)] (1.22)
Como ejemplo, la transformada de Laplace de la función g(t) = e−at , donde
a es real, se determina como sigue:
 ∞  ∞
−e−(s+a)t 1
L[e−at ] = e−at e−st dt = =
0 s+a s+a
0
1.3 La Transformada de Laplace 27

La tabla 1.3 muestra la transformada de Laplace de algunas funciones. Al-


gunas de sus propiedades se muestran en la tabla 1.4.

Cuadro 1.3: Transformadas de Laplace


Descripción g(t) g(s)
Impulso unitario δ(t) 1
1
Escalón unitario µ s
1
Rampa unitaria t s2
Rampa de orden n tn n!
sn+1
; n! = n(n − 1) . . .
1
Exponencial e−at s+a
ω
Seno senωt s2 +ω 2
s
Coseno cosωt s2 +ω 2
Seno amortiguado e−at senωt ω
(s+a)2 +ω 2
Coseno amortiguado e−at cosωt s+a
(s+a)2 +ω 2

Cuadro 1.4: Propiedades de la transformada de Laplace


Descripción Propiedad
 
Derivación L dg = sg(s) − g(0), g(0) = [g(t)]t=0
 dtn 
Derivación de orden n L ddtng = sn g(s) − sn−1 g(0) − · · · − g n−1 (0)
 n−1 
d
g n−1 (0) = dtn−1
  g(t) t=0
t g(s)
Integral L 0 g(t)dt = s
Desplazamiento en tiempo L[g(t − t0 )µ(t − t0 )] = e−t0 s g(s)
Desplazam. en frecuencia L[e−at g(t)] = g(s + a)
Valor inicial lı́mt→0 g(t) = lı́ms→∞ sg(s)
Valor final lı́mt→∞ g(t) = lı́ms→0 sg(s)

Ejemplo 1.16

La figura 1.1 muestra un carro de masa m = 1000 kg desplazándose con una


velocidad v gracias a la acción de la fuerza u producida por su motor. Si se
28 Matemática Asistida con Computadora

desprecia la inercia de las ruedas y se asume que la fuerza de fricción bv es


lo único que se opone al movimiento, donde b= 50 N-s/m es el coeficiente
de fricción, entonces la dinámica del proceso puede modelarse como:
dv
mv̇(t) + bv(t) = u(t); v̇ =
dt
Determinar la función de transferencia del proceso y su respuesta a un es-
calón de 1 m/s, sabiendo que la entrada es u y la salida es v.
v velocidad
friccion
bv m u

Figura 1.1: Móvil en movimiento.

Solución: La función de transferencia del proceso se obtiene aplicando la


propiedad de derivación de orden n (tabla 1.4), con todas las condiciones
iniciales iguales a cero:
v(s) 1
msv(s) + bv(s) = u(s); =
u(s) ms + b

Dado que la entrada es un escalón, u(s) = 1s . La salida se determina de:



 
−1 −1 1 1 −1 1 1
v(t) = L [v(s)] = L = L − b
s(ms + b) b s s+ m

y empleando la tabla 1.3 obtenemos:


1
v(t) = (1 − e−bt/m )
b

Ejemplo 1.17
Empleando las propiedades del valor inicial y del valor final, determinar tales
valores para la velocidad del móvil del problema anterior.
Solución: El valor inicial se determina de: lı́mt→0 v(t) = lı́ms→∞ sv(s) = 0.
El valor final se obtiene de: lı́mt→∞ v(t) = lı́ms→0 sv(s) = 1b .
Capı́tulo 2

Sistemas Discretos

En este capı́tulo se exponen los conceptos de variables de estado, muestreo


y reconstrucción de señales en los procesos a controlar. También se trata la dis-
cretización directa de procesos continuos, la transformada Z como herramienta
de discretización, las formas canónicas de los procesos en el espacio de estado
discreto y los conceptos de controlabilidad y observabilidad. El material expuesto
pretende dar una base sólida acerca de los sistemas de control en el dominio
discreto. Todos los archivos correspondientes a los ejercicios desarrollados en
este capı́tulo se pueden descargar del sitio: http://fiee.uni.edu.pe/728681F.

2.1. Diseño de Sistemas de Control Digital


La figura 2.1 muestra la estructura de un sistema de control digital,
cuyo objetivo de control es lograr que la señal de salida Y del proceso (de
carácter continuo, como en la mayorı́a de los casos) siga a la señal de re-
ferencia r cumpliendo determinadas especificaciones de diseño, tales como:
mı́nimo tiempo de estabilización, mı́nimo sobreimpulso y/o error en estado
estacionario nulo en Y . En otras palabras, el algoritmo de control implemen-
tado, en este caso digitalmente, debe ser capaz de crear una señal de control
U (la variable manipulada), la cual actuando sobre el proceso a través de un
actuador, minimice la señal de error e. El bloque de filtraje es útil para eli-
minar las componentes contaminantes de alta frecuencia de la señal de ruido
de medición n. El filtro de ruido puede ser analógico o digital y su inclusión
depende de la magnitud del ruido y su relevancia dentro del funcionamiento
del sistema de control.
30 Sistemas Discretos

Disturbios

r e Muestreador D/A U Actuador Y


y Computadora y y
Digital
A/D Retencion Proceso

Filtraje Medicion

Figura 2.1: Estructura de un sistema de control digital.

En la estructura de control descrita en el párrafo anterior, el algorit-


mo de control se implementa en un dispositivo digital que puede ser una
computadora personal, una computadora de procesos (con capacidad para
manejar varios lazos de control), un microcontrolador o una tarjeta PDS
(Procesamiento Digital de Señales). El procesamiento digital del algoritmo
de control requiere de la presencia de los dispositivos de adquisición de datos:
muestreadores, conversores de señal A/D (analógico a digital) y D/A (digital
a analógico) y retenedores (reconstructores) de señal.
La configuración mostrada en la figura 2.1 no es única. Por ejemplo, dado
el caso, la señal de referencia y la comparación de señales pueden ser gene-
radas dentro de la computadora digital. En otros casos, si el actuador y los
dispositivos de medición son capaces de procesar señales digitales, entonces
tales dispositivos pueden actuar directamente sobre el proceso, dando lugar
a nuevas configuraciones. En las aplicaciones descritas en este libro, el dispo-
sitivo de procesamiento digital es una computadora personal, los sensores de
señal son decodificadores electrónicos de pulsos (“encoders”), mientras que
el actuador es una combinación de un servomotor D.C. (de corriente directa)
con un amplificador electrónico PWM (“Pulse Width Modulation”).
El empleo del procesamiento digital permite la realización de algorit-
mos de control sofisticados existentes en la teorı́a de control moderna, pero
también refuerza la interrogante sobre qué algoritmo de control es adecuado
para determinada aplicación. Una respuesta a esta interrogante sólo es posi-
ble si se tiene conocimiento suficiente del modelo de la dinámica del proceso
a controlar y de sus señales. Tal conocimiento va a permitir la selección ade-
cuada de un algoritmo de control que sea capaz de hacer cumplir el objetivo
de control con el menor gasto (computacional, por ejemplo) y con el mayor
rendimiento (satisfacción de las especificaciones de diseño).
2.2 Concepto de Estado y Variables de Estado 31

2.2. Concepto de Estado y Variables de Estado


La dinámica de un proceso multivariable, es decir, un proceso que posee
múltiples entradas y múltiples salidas, puede ser representada en el espacio
de estado mediante dos conjuntos de ecuaciones diferenciales ordinarias de
primer orden, denominadas las ecuaciones de estado y de salida, como sigue:

Ẋ = f(X, U, v, t)
Y = h(X, U, w, t) (2.1)
donde f y h son funciones vectoriales de variable vectorial de orden n y r
respectivamente, X es el vector de estado de orden n, U es el vector de
control de orden m, Y es el vector de salida de orden r, v es el vector de
disturbios (de orden n) en los estados, y w es el vector de disturbios (de
orden r) en las salidas. El tiempo t se incluye como parte del argumento
para indicar que pueden existir parámetros variantes con el tiempo. En este
punto es conveniente definir el concepto de estado:
El vector de estado X = [X1 . . . Xn ]T de un proceso (donde el su-
perı́ndice T indica transpuesta) es el mı́nimo conjunto de variables, las va-
riables de estado X1 . . . Xn , las cuales contienen información suficiente
acerca de la historia pasada del proceso. Esta información permite computar
todos los futuros estados del proceso, asumiendo por supuesto, que todas las
futuras entradas U son también conocidas, como del mismo modo lo son las
ecuaciones dinámicas que describen dicho sistema. El número n de variables
de estado define el orden o la dimensión del sistema.
El espacio de estado es el espacio n-dimensional de todos los estados.
Cuando el sistema es de orden n = 2, el espacio de estado es conocido como
el plano de fase con coordenadas X1 y X2 . Los puntos de equilibrio en el
espacio de estado para el proceso descrito en (2.1) se determinan cuando el
estado del proceso no cambia gracias a la acción de una fuerza de entrada
Ū. Por tanto, los puntos de equilibrio (X̄) se determinan de:
˙ = f(X̄, Ū) = 0
X̄ (2.2)

2.2.1. Linealización de Procesos


La representación linealizada en el espacio de estado de (2.1), sin la
presencia de parámetros variantes con el tiempo, es la siguiente:
ẋ = Ax + Bu + Ev
32 Sistemas Discretos

y = Cx + Du + F w (2.3)

donde A es la matriz de estado, B es la matriz de control, E es la matriz


de disturbios en los estados, C es la matriz de salida de los estados, D es
la matriz de salida de las entradas y F es la matriz de disturbios en las
salidas. Las dimensiones de dichas matrices son: Ann , Bnm , Enn , Crn , Drm
y Err , donde el primer subı́ndice es el número de filas de la matriz y el
segundo, el número de columnas. Es importante notar que en (2.3) estamos
empleando las variables residuales (también llamadas variables de desviación
o perturbacionales) siguientes:

x = X − X̄

u = U − Ū

Sin la presencia de disturbios (v = w = 0), y para la operación del


proceso alrededor del estado de equilibrio (X̄, Ū), las matrices A, B, C y D
pueden ser determinadas evaluando las siguientes matrices jacobianas:
 ∂f1 ∂f1   ∂f1 ∂f1 
∂X1 · · · ∂Xn ∂U1 · · · ∂Um
 ..   .. 
A =  ... ..
. .  B =  ... ..
. . 
∂fn ∂fn ∂fn ∂fn
∂X1 ··· ∂Xn ¯ ¯
(X,U) ∂U1 ··· ∂Um ¯ ¯
(X,U)
   
∂h1
∂X1 ··· ∂h1
∂Xn
∂h1
∂U1 ··· ∂h1
∂Um
 .. .. ..   .. .. .. 
C =  . . .  D= . . .  (2.4)
∂hr
∂X1 ··· ∂hr
∂Xn ¯ ¯
(X,U)
∂hr
∂U1 ··· ∂hr
∂Um ¯ ¯
(X,U)

La matriz de transferencia para procesos multivariables lineales se de-


termina empleando la ecuación matricial siguiente:

Y(s) = [C(sI − A)−1 B + D]U(s) (2.5)

donde s es la variable laplaciana e I es la matriz identidad. Cuando las


señales Y y U son unidimensionales, la ecuación anterior se convierte en
la ecuación de transferencia de un proceso univariable. La ecuación carac-
terı́stica del proceso se obtiene de:

det(sI − A) = 0 (2.6)

donde det es la operación determinante. Las raı́ces de (2.6) son también


conocidas como raı́ces caracterı́sticas, eigenvalores, valores propios, modos,
2.2 Concepto de Estado y Variables de Estado 33

entre otras denominaciones. Los eigenvalores determinan la estabilidad del


proceso alrededor de un punto de equilibrio X̄ en el espacio de estado como
sigue:
El proceso descrito por la ecuación (2.3) es estable, siempre que todos los
eigenvalores de su ecuación caracterı́stica (2.6) posean parte real negativa.
Cuando al menos uno de tales eigenvalores posea parte real positiva o cero,
entonces el proceso es inestable.
De acuerdo a la ecuación (2.2), el proceso descrito por (2.3) con u y v
nulos posee un solo punto de equilibrio: el origen. Empleando este hecho,
la estabilidad del proceso descrito en (2.3) también puede ser formulada
empleando el concepto de estado, como sigue:
El proceso descrito por la ecuación (2.3) es estable, cuando no siendo
forzado (es decir, cuando u = v = 0), el estado del proceso tiende a cero
para cualquier estado inicial finito x0 .

Ejemplo 2.1

La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sección


horizontal A=9 m2 de cada tanque es constante. El objetivo de control es
estabilizar (controlar) la altura H2 empleando como fuerza de control el
flujo de alimentación Qo . Determinar el modelo linealizado de este proceso
hidráulico.

Q p
0 0

ρ Tanque
H1
1
p
1 γ
g
Q
p 1
0
ρ
Tanque
H2
2
p
2 γ
Q
2

Figura 2.2: Proceso hidráulico.

Solución: Los flujos de salida Q1 y Q2 de los tanques se pueden modelar


34 Sistemas Discretos

como:  
Q1 = γ P1 − P0 ; Q2 = γ P2 − P0
donde P1 , P2 y P0 son las presiones en el fondo de los tanques y en el exterior
respectivamente, y γ=0.4 es una constante que depende de la geometrı́a del
orificio. Si ρ=1.23 kg/m3 es la densidad del lı́quido y g=9.81 m/s2 es la
aceleración de la gravedad:

P1 − P0 = ρgH1 ; P2 − P0 = ρgH2

El flujo acumulado en cada tanque es:


dH1 dH2
Q0 − Q1 = A ; Q1 − Q2 = A
dt dt
Resolviendo las ecuaciones anteriores para las alturas, obtenemos:

1 γ ρg 
Ḣ1 = Q0 − H1 = f1
A A

γ ρg  
Ḣ2 = [ H1 − H2 ] = f2
A
y su correspondiente ecuación de salida:


H1
Y = [0 1]
H2

Definamos las siguientes variables residuales: h1 = H1 − H̄1 , h2 = H2 − H̄2 ,


q0 = Q0 − Q̄0 . Conociendo Q̄0 = 3 m3 /s, el estado de equilibrio del proceso
se puede obtener de:
√ 
˙ = 1 Q̄ − γ ρg H̄ = 0
H̄ 1 0 1
A A
√  
˙ = γ ρg [ H̄ − H̄ ] = 0
H̄ 2 1 2
A
lo que resulta en:
Q̄2
H̄1 = H̄2 = 2 0
γ ρg
Aplicando el jacobiano, el proceso linealizado resulta:

ḣ = P h + B q0 ; y = h2 = C h
2.2 Concepto de Estado y Variables de Estado 35

donde:
   √ 

∂f1 ∂f1 −
γ ρg
√ 0
h1
h= ; P = ∂H1
∂f2
∂H2
∂f2 = 2A
√ H̄1
γ ρg

γ ρg

h2 ∂H1 ∂H2 √ − √
(H̄1 ,H̄2 ) 2A H̄1 2A H̄2
 

∂f1
∂Q0 1/A
B= ∂f2 = ; C = [0 1]; D = [0]
∂Q0
0
Q̄0

Ejemplo 2.2
El proceso péndulo no lineal mostrado en la figura 2.3 puede rotar libre-
mente alrededor del pivote gracias a la acción de un torque externo U . En
dicha figura Bp =1.3366 N-m/rad/s es la fricción viscosa rotacional en el
punto pivote, Lo =1.6350 m es la longitud de la varilla de peso desprecia-
ble, Mo =0.5 kg es la masa de la esfera y g=9.81 m/s2 es la aceleración
de la gravedad. La salida de interés es la posición angular θ del péndulo.
Para las situaciones mostradas en las figuras 2.3(a) y 2.3(b) determine: las
ecuaciones no lineales de estado y de salida, los puntos de equilibrio, las
ecuaciones linealizadas de estado y de salida, las funciones de transferencia,
las ecuaciones caracterı́sticas, y la estabilidad del proceso.

0110 Bp Mo

10
1010 U
Θ U
1010 Φ

10 Lo
1010 Lo
10 Mo Bp
(a) (b)

Figura 2.3: Péndulo no lineal en posición de equilibrio estable (figura (a)) y


en posición de equilibrio inestable (figura (b)).

Solución: El proceso en estudio es univariable; es decir, una sola entrada


U actuando sobre el proceso, y una sola salida: la posición angular. Primero
analizaremos la situación mostrada en la figura 2.3(a). El torque resultante
alrededor del pivote es:
U = Mo L2o Θ̈ + Bp Θ̇ + Mo gLo senΘ (2.7)
36 Sistemas Discretos

Notar que (2.7) es no lineal debido al senΘ. Seleccionando en (2.7) como


variables de estado X1 = Θ, X2 = Θ̇ y como salida Y = X1 se obtiene:
Ẋ1 = X2
g Bp 1
Ẋ2 = − senX1 − 2
X2 + U
Lo Mo Lo Mo L2o
Y = X1 (2.8)
cuya representación compacta (ecuación (2.1) con v = w = 0) resulta:
Ẋ = f; Y = X1 = h
donde:


 
X1 f1 X2
X= ; f= = Bp 1 (2.9)
X2 f2 − Lgo senX1 − x
Mo L2o 2
+ Mo L2o
U

Notar en (2.9) que n = 2, m = 1, r = 1. Empleando (2.2), los estados de


equilibrio se obtienen de:
˙
X̄ 1 = X̄2 = 0
˙ g Bp 1
X̄ 2 = − senX̄1 − X̄2 + Ū = 0
Lo Mo L2o Mo L2o
y = X1 − X̄1 (2.10)
cuya solución, con Ū = 0, es: X̄2 = 0 y X̄1 = 2kπ, k = 0, ±1, . . . Por
consiguiente, los estados de equilibrio son (0[2π], 0) para la figura 2.3(a) y
(π[3π], 0) para la figura 2.3(b). Empleando (2.4), la linealización de (2.9)
alrededor del estado de equilibrio (X̄1 , X̄2 , Ū ) = (0, 0, 0) resulta:
ẋ = Ax + Bu; y = Cx + Du
donde:
   
∂f1 ∂f1
∂X1 ∂X2
0 1
A = = B
∂f2
∂X1
∂f2
∂X2
− Lgo − M opL2
(0,0) o

 
∂f1 0
B = ∂U =
∂f2 1
∂U 0 Mo L2o
   
∂h ∂h
C = ∂X1 ∂X2 = 1 0
(0,0)


∂h
D = = [0] (2.11)
∂U 0
2.2 Concepto de Estado y Variables de Estado 37

La función de transferencia del proceso se puede determinar de:


Y (s)
= C(sI − A)−1 B
U (s)
 −1  
s −1 0
= [1 0] g Bp 1
Lo Mo L2
+s Mo L2o
o

1
= (2.12)
Mo L2o s2 + Bp s + Mo gLo

La ecuación caracterı́stica se determina de (2.6):

det(sI − A) = Mo L2o s2 + Bp s + Mo gLo = 0 (2.13)

que resulta siendo el denominador de la función de transferencia dada en


(2.12). Con los valores dados de Mo , Lo y Bp , las dos raı́ces de (2.13) resultan:
s1,2 = −0,7482±2,6038i, lo cual nos indica que el estado de equilibrio (0, 0, 0)
es estable.
Cuando el péndulo se encuentra en la posición mostrada en la figura
2.3(b), entonces Θ = Φ + π, sen(Φ + π) = −senΦ, Θ̇ = Φ̇ y Θ̈ = Φ̈. Por
consiguiente, la ecuación que describe la dinámica del péndulo no lineal es:

U = Mo L2o Φ̈ + Bp Φ̇ − Mo gLo senΦ (2.14)

Con el procedimiento empleado para la situación mostrada en la figura


2.3(a), fácilmente podemos determinar que:
 
0 1
A= g Bp
Lo − Mo L2 o

y su ecuación caracterı́stica resulta:

det(sI − A) = Mo L2o Φ̈ + Bp Φ̇ − Mo gLo senΦ

la cual posee dos raı́ces: s1 = −3,5587 y s2 = 2,6024. El eigenvalor positivo


nos indica que el punto de equilibrio (π, 0) es inestable.
La ecuación de estado ẋ = Ax + Bu para el proceso péndulo, puede
determinarse aplicando en (2.7) el criterio de linealización senΘ ∼
= Θ, ha-
ciendo u = U , y seleccionando como variables de estado x1 = Θ y x2 = Θ̇.
Sin embargo, la forma general de linealización requiere de la aplicación de
las matrices jacobianas dadas en (2.4).
38 Sistemas Discretos

2.3. Fundamentos de Sistemas Discretos


2.3.1. Muestreo y Reconstrucción
La figura 2.4 muestra un lazo de control que incluye una computado-
ra digital equipada con los dispositivos de adquisición de datos necesarios.
La señal controlada y, luego de ser sensada, pasa por un muestreador, gen-
erándose un tren de impulsos y ∗ separados uno del otro en T segundos (el
tiempo de muestreo). Luego, el tren de impulsos es digitalizado por medio
del dispositivo A/D, lo que resulta en la señal yd , la cual ya puede ser
procesada por la computadora con el fin de generar el algoritmo de control.
La señal de control digitalizada ud sufre el proceso inverso: pasa por un
dispositivo D/A y luego por un muestreador para generar el tren de impulsos
u∗ . Mediante un dispositivo de retención de orden cero, que se describe más
adelante, la señal de control es reconstruida, lo que resulta en una señal de
control continua ū capaz de actuar sobre el actuador-proceso continuo.
Notar que la señal de referencia digitalizada rd se genera internamente.
Si la referencia fuera una señal externa, entonces debe ser procesada como
la señal y. En lo que sigue, asumiremos que el tiempo de muestreo T es el
mismo para todos los muestreadores y que dichos muestreadores operan sin-
crónicamente; es decir, que el retardo entre la operación de un muestreador
con respecto a otro es despreciable. Es importante anotar que los conver-
tidores de señal, muestreadores y dispositivos de retención, son parte de la
interfaz (tarjeta de adquisición de datos, por ejemplo) de la computadora
digital con su mundo circundante (el proceso-actuador y los dispositivos de
medición).
Un tren de impulsos, por ejemplo la señal u∗ , puede modelarse como:




u (t) = u(kT )δ(t − kT ) (2.15)
k=0

donde T es el tiempo de muestreo de u(t), k es el tiempo discreto (t = kT ),


y δ(t − kT ) es la función impulso unitario o delta de Dirac que se define
como:
1 si t = kT
δ(t − kT ) =
0 si t = kT

Empleando la conocida identidad L[δ(t − kT )] = e−kT s , la transformada de


2.3 Fundamentos de Sistemas Discretos 39

COMPUTADORA DIGITAL

rd ud u* u
D RETENCION’
DE CONTROL
ALGORITMO

ACTUADOR PROCESO
A T

D FILTRAJE
y MEDICION
yd A y* T

Figura 2.4: Lazo de control con una computadora como controlador.

Laplace de u∗ resulta:

∞ ∞


u (s) = L[ u(kT )δ(t − kT )] = u(kT )L[δ(t − kT )]
k=0 k=0


= u(kT )e−kT s = u∗ (esT ) (2.16)
k=0

La frecuencia de muestreo se determina de la relación:



ωs = (2.17)
T
El tren de impulsos u∗ (t) se puede representar alternativamente mediante
su serie de Fourier:

1
u∗ (t) = u(t)ejωs t (2.18)
T
k=−∞

cuya transformada de Laplace ahora resulta (ver referencias [4], [3]):



∗ 1
u (s) = u(s + iνωs ) (2.19)
T
k=−∞

La señal u∗ (s) posee dos propiedades importantes. La primera es su carácter


periódico, que puede demostrarse reemplazando en la ecuación (2.16) la
40 Sistemas Discretos

variable laplaciana s por s + jνωs , ν = 0, ±1, ±2, . . ., como sigue:





∗ −kT (s+jνωs )
u (s + jνωs ) = u(kT )e = u(kT )e−kT s e−kT jνωs
ν=0 ν=0
∗ sT
= u (e ) (2.20)

donde hemos usado el hecho de que ωs T = 2π. La segunda propiedad es


como sigue: si u(s) posee un polo en s = s1 , entonces u∗ (s) debe poseer
polos en s = s1 +jνωs , ν = 0, ±1, ±2, . . . Esta propiedad puede demostrarse
expandiendo la sumatoria en la ecuación (2.19):

∗ 1 1
u (s) = u(s + iνωs ) = [u(s) + u(s + jωs ) + u(s + 2jωs )
T T
k=−∞
+ · · · + u(s − jωs ) + u(s − 2jωs ) + · · ·]

Si u(s) posee un polo en s = s1 , entonces cada término de la expansión


contribuye con un polo en s = s1 + jνωs .
La figura 2.5 muestra la respuesta en frecuencia de las señales u(t) y
u∗ (t), asumiendo que u(t) es de banda limitada. Del gráfico de |u∗ (ejω )|
podemos extraer la siguiente conclusión referente al teorema fundamental
del muestreo:
Para que la señal continua original u(t) pueda ser reconstruida com-
pletamente a partir de sus muestras, la frecuencia de muestreo tiene que
seleccionarse de modo tal que:
π
ωs ≥ 2ωmax T ≤ (2.21)
ωmax

La figura 2.6 muestra en detalle el proceso de muestreo y reconstrucción


de la señal u empleando un dispositivo de retención de orden cero, el cual
reconstruye la señal mediante aproximaciones rectangulares. Tener en cuenta
que u es una señal genérica. Podemos detrerminar la función de transferencia
gr0 (s) de la retención como sigue. El área del pulso rectangular de base
(k + 1)T − kT es u(kT )[µ(t − KT ) − µ(t − (k + 1)T )], donde µ(.) es la función
escalón unitario que se define como:

1 si t ≥ kT
µ(t − kT ) =
0 si t < kT
2.3 Fundamentos de Sistemas Discretos 41

u(t) u(j ω)

t ωmax ωmax ω

u*(t) jω
u*(e )

ωs ωs
2 2
t ωs ωmax ωmax ωs ω

Figura 2.5: Respuesta en frecuencia de las señales u(t) y u∗ (t) para ilustrar
el teorema del muestreo.

El área total de la señal u a la salida de la retención es:




ū(t) = u(kT )[µ(t − kT ) − µ(t − (k + 1)T )]
k=0

e−kT s
Empleando la conocida transformación L[µ(t − kT )] = s , la transforma-
da de Laplace de u(t) resulta:

1 1
ū(s) = u(kT )e−kT s [1 − e−T s ] = u∗ (s) [1 − e−T s ]
s s
k=0

Por consiguiente, la función de transferencia de la retención de orden cero


viene a ser:
ū(s) 1 − e−sT
= G r0 (s) = (2.22)
u∗ (s) s
Este último resultado será usado posteriormente.

Discretización Directa
Es bastante útil discretizar directamente expresiones que contengan in-
tegrales y derivadas. La aproximación rectangular calcula el área debajo de
una cierta curva e(t) mediante la suma de rectángulos de la forma T e(iT −T )
(T es el tiempo de muestreo), tal como se ilustra a continuación. Por consi-
guiente, términos que contengan integración pueden discretizarse empleando
42 Sistemas Discretos

_
u(s) u*(s) 1 e- sT u(s)
T s
’ DE ORDEN CERO
RETENCION _
u (t) u*(t) u (t)

u(2T)

u(3T)
u(T)
u(0)
t 0 T 2T 3T 4T 0 T 2T 3T 4T

Figura 2.6: Proceso de muestreo y reconstrucción.

aproximación rectangular como sigue:


 t
u(t) = e(τ )dτ
0

k
k−1
u(kT ) ≈ T e(iT − T ); u(kT − T ) ≈ T e(iT − T )
i=0 i=0
u(kT ) − u(kT − T ) = T e(kT − T ); u(k) − u(k − 1) = T e(k − 1) (2.23)

En la última expresión hemos obviado en el argumento su dependencia con


el tiempo de muestreo T , pues se sobreentiende que todos los términos se dis-
cretizan empleando el mismo tiempo de muestreo. Términos que contengan
derivadas pueden discretizarse empleando diferencias por atraso:

de(t) ∆e(kT ) e(kT ) − e(kT − T )


= ė(t) ≈ =
dt T T
dė(t) ∆2 e(kT ) ∆e(kT ) − ∆e(kT − T ) ė(t) − ė(t − T )
= ë(t) ≈ 2
= 2
=
dt T T T
..
. (2.24)

Si la discretización de la derivada se realiza por adelanto, entonces las dife-


rencias son de la forma:

x(kT + T ) − x(kT ); x(k + 1) − x(k)


Ejemplo 2.3

Discretizar el modelo no lineal del proceso péndulo descrito en el ejemplo 2.2


y graficar diez segundos de su respuesta a un torque tipo escalón unitario.
2.3 Fundamentos de Sistemas Discretos 43

Asumir los siguientes valores: Lo = 1.6350 m, Mo = 0.5 Kg, Bp = 1.3366


N-m/rad/s, g = 9.81 m/s2 y T = 0.01 s.
Solución: Discretizando por adelanto las ecuaciones dadas en (2.8) y ob-
viando la escritura del tiempo de muestreo T en los argumentos, obtenemos:
X1 (k + 1) = X1 (k) + T X2 (k)


g Bp 1
X2 (k + 1) = X2 (k) + T − senX1 (k) − x2 (k) + U (k)
Lo Mo L2o Mo L2o
y(k) = x1 (k)
El siguiente programa en código MATLAB determina la respuesta que se
muestra en la figura 2.7. Observar que cada muestra k equivale a T s.
% ejem2_3.m RESPUESTA DEL PENDULO NO LINEAL A UN ESCALON
clear all
Lo = 1.6350; Mo = 0.5; Bp =1.3366; g = 9.81; T = 0.01;
X1(1) = 0; X2(1) = 0;
for k = 1:1000 % CADA MUESTRA k EQUIVALE A T SEGUNDOS
U(k) = 1; % ESCALON DE ENTRADA
X1(k+1) = X1(k) + T*X2(k);
X2(k+1) = X2(k) + T*( -(g/Lo)*sin(X1(k)) - (Bp/(Mo*Lo^2))*X2(k) ...
+ (1/(Mo*Lo^2))*U(k) );
Y(k) = X1(k);
end
plot(Y); grid
ylabel(’Posicion (rad)’)
xlabel(’Tiempo discreto k’)
print -deps -f fig2_7

Ejemplo 2.4
Discretizar el siguiente controlador ideal PID:

 t
1 de(t)
u(t) = K e(t) + e(t)dt + TD (2.25)
TI 0 dt
donde K es la ganancia proporcional, TI es el tiempo de integración y TD
es el tiempo derivativo. En un primer caso emplear integración rectangular
y luego usar integración trapezoidal.
Solución: Empleando las relaciones (2.23) y (2.24) en (2.25) se obtiene:
! "
T
k
TD
u(k) = K e(k) + e(i − 1) + [e(k) − e(k − 1)]
TI T
i=0
44 Sistemas Discretos

0.2

0.18

0.16

0.14
Posición (rad)

0.12

0.1

0.08

0.06

0.04

0.02

0
0 100 200 300 400 500 600 700 800 900 1000
Tiempo discreto k

Figura 2.7: Respuesta del péndulo no lineal al escalón.


 k ! 
T
u(k − 1) = K e(k − 1) + e(i − 1) − e(k − 1)
TI
i=0
#
TD
+ [e(k − 1) − e(k − 2)]
T
Restando las expresiones anteriores y despejando u(k) obtenemos:
u(k) = u(k − 1) + q0 e(k) + q1 e(k − 1) + q2 e(k − 2) (2.26)
donde:
TD TD T TD
q0 = K(1 + ); q1 = −K(1 + 2 − ); q2 = K
T T TI T
Si la integración emplea el método trapezoidal (aproximación de segmen-
tos de área mediante trapezoides), entonces:
! k
"
1 e(i − 1) + e(i) TD
u(k) = K e(k) + T + [e(k) − e(k − 1)]
TI 2 T
i=0

!  k 
T
k
u(k − 1) = K e(k − 1) + e(i − 1) − e(k − 1) + e(i) − e(k)
2TI
i=0 i=0
2.3 Fundamentos de Sistemas Discretos 45

#
TD
+ [e(k − 1) − e(k − 2)]
T
Restando las expresiones anteriores y despejando u(k) obtenemos una ex-
presión similar a (2.26), donde:
TD T TD T TD
q0 = K(1 + + ); q1 = −K(1 + 2 − ); q2 = K
T 2TI T 2TI T

2.3.2. La Transformada Z
Es útil introducir la siguiente relación:
z = eT s = eT (σ+jω) = eT σ [cosωT + jsenωT ] (2.27)
Reemplazando en la ecuación (2.16) la señal u por una variable genérica g,
llegamos a la siguiente definición de la transformada Z:


g(z) = Z[g(kT )] = g(kT )z −k = g(0) + g(T )z −1 + g(2T )z −2 + · · · (2.28)
k=0
La serie en (2.28) converge si |g(kT )| se restringe a valores finitos y si |z| > 1.
Las sumatorias siguientes son bastante útiles para resolver problemas
relacionados con la transformada Z:
N −1
1 − aN
ak = ; |a| < 1
1−a
k=0

1
ak = ; |a| < 1
1−a
k=0

a
kak = ; |a| < 1
(1 − a)2
k=0

N2
aN1 − aN2 −1
ak = ; |a| < 1
1−a
k=N1

aN1
ak = ; |a| < 1 (2.29)
1−a
k=N1

A manera de ejemplo, la transformada Z del impulso unitario δ(kT ), sa-


biendo que δ(0T ) = 1, resulta:


Z[δ(kT )] = δ(kT )z −k = z −0 = 1
k=0
46 Sistemas Discretos

mientras que la transformada Z del escalón µ(kT )=1 empleando la segunda


de las sumatorias dadas en (2.29) resulta:

1 z
Z[µ(kT )] = z −k = =
1 − z −1 z−1
k=0

la cual es válida para |z −1 | < 1 (o |z| > 1), pues la serie debe ser conver-
gente. La tabla 2.1 ilustra la transformada Z de algunas secuencias notables,
mientras que la tabla 2.2 presenta la relación existente entre la transformada
Z y la transformada de Laplace.
A continuación se formulan algunas propiedades de la transformada Z:

(1) Linealidad:
Z[ag1 (kT ) + bg2 (kT )] = aZ[g1 (kT )] + bZ[g2 (kT )]

(2) Desplazamiento a la derecha:


Z[g(kT − dT )] = z −d g(z), d ≥ 0

(3) Desplazamiento a la izquierda:



Z[g(kT + dT )] = z d [g(z) − d−1 −ν ], d≥0
ν=0 g(νT )z

(4) Amortiguamiento:
Z[g(kT )e−akT ] = g(zeaT )

(5) Multiplicación por una variable:


Z[kg(kT )] = −z dg(z)
dz

(6) Multiplicación por una exponencial:


Z[ak g(kT )] = g( az )

(7) Teorema del valor inicial:


lı́mk→0 x(kT ) = lı́mz→∞ x(z)

(8) Teorema del valor final:


lı́mk→∞ g(kT ) = lı́mz→1 z−1
z g(z) = lı́mz→1 (1 − z −1 )g(z)

Por ejemplo, sabiendo que Z[cosωk] es conocido, la transformada Z de


ak cosωk puede ser determinada empleando la propiedad de multiplicación
por una exponencial, como sigue:


k z(z − cosω) z(z − acosω)
Z[a cosωk] = 2 = 2
z − 2zcosω + 1 z=z/a z − 2zacosω + a2
2.3 Fundamentos de Sistemas Discretos 47

Cuadro 2.1: Transformada Z de algunas secuencias.

No g(t) g(z)

(1) δ(k) 1

(2) δ(k − d)) z −d


z
(3) µ(k) z−1
z −d+1
(4) µ(k − d) z−1
z
(5) kµ(k) (z−1)2
z
(6) ak µ(k) z−a
1
(7) ak−1 µ(k − 1) z−a
az
(8) kak µ(k) (z−a)2
z sinω
(9) µ(k)senωk z 2 −2zcosω+1
z(z−cosω)
(10) µ(k)cosωk z 2 −2zcosω+1
za senω
(11) µ(k)ak senωk z 2 −2za cosω+a2
z(z−acosω)
(12) µ(k)ak cosωk z 2 −2zacosω+a2
k(k−1)···(k−m+2) k−d+1 z −d+1
(13) (d−1)! a (1−z −1 )d
48 Sistemas Discretos

Cuadro 2.2: Transformada de Laplace versus transformada Z.

No g(t) g(s) g(kT ) g(z)

(1) δ(t) 1 δ(k) 1


1 z
(2) µ(t) s µ(k) z−1
1 Tz
(3) t s2
k (z−1)2
1
(4) e−at s+a (e−aT )k z
z−e−aT
1 T ze−aT
(5) te−at (s+a)2
kT (e−aT )k (z−e−aT )2

2 T 2 ze−aT (z+e−aT )
(6) t2 e−at (s+a)3
(kT )2 (e−aT )k (z−e−aT )3
z(1−e−aT )
(7) 1 − e−at a
s(s+a) 1 − (e−aT )k (z−1)(z−e−aT )
z(e−aT −e−bT )
(8) e−at − e−bt b−a
(s+a)(s+b) (e−aT )k − (e−bT )k (z−e−aT )(z−e−bT )
ω zsenωT
(9) senωt s2 +ω 2
senωkT z 2 −2zcosωT +1
s z(z−cosωT )
(10) cosωt s2 +ω 2
cosωkT z 2 −2zcosωT +1
ze−aT senωT
(11) e−at senωt ω
(s+a)2 +ω 2
(e−aT )k senωkT z 2 −2ze−aT cosωT +e−2aT
z(z−e−aT cosωT )
(12) e−at cosωt s+a
(s+a)2 +ω 2
(e−aT )k cosωkT z 2 −2ze−aT cosωT +e−2aT
2.3 Fundamentos de Sistemas Discretos 49

La forma general para obtener Z[g(s)] es mediante el método de los


residuos (derivado de la integral de convolución). Si se tiene:

q(s)
g(s) =
p(s)

donde el grado del polinomio p(s) es mayor que el de q(s), y además si


suponemos que todas las raı́ces de q(s) poseen parte real negativa, entonces
g(z) se obtiene de:
P


g(s)z
g(z) = (s − ai )
z − eT s s=ai
i=1
Q
#
1 dmj −1 mj g(s)z
+ (s − bj ) (2.30)
(mj − 1)! dsmj −1 z − eT s s=bj
j=1

donde P es el número de polos ai no repetidos de G(s) y Q es el número de


polos bj que se repiten con multiplicidad mj .
Ejemplo 2.5
Determinar g(z) sabiendo que:
1
g(s) =
s2 (s + 1)
Solución: Para este caso P = 1, a1 = −1, Q = 1, b1 = 0, m1 = 2. Luego:


1 z
g(z) = (s + 1) 2 +
s (s + 1) (z − eT s ) s=−1

#
1 d 2 1 z z −z(z − 1 − T )
s 2 = −T
+
(2 − 1)! ds s (s + 1) (z − e ) s=0 z − e
T s (z − 1)2

2.3.3. La Transformada Z Inversa


En el dominio continuo, la transformada de Laplace g(s) = L[g(t)] posee
una inversa L−1 [g(s)] = g(t) que es única. En contraste, la transformación
Z[g(t)] = g(z) posee una inversa Z −1 [g(z)] = g(t) que no es única debido a
que la señal discreta no está definida entre muestras. En el dominio discreto,
sin embargo, la transformación g(z) = Z[g(kT )] posee una única inversa
Z −1 [g(z)] = g(kT ).
50 Sistemas Discretos

Una forma de determinar g(kT ) es dividir el numerador de g(z) entre su


denominador. Otra forma es expandir g(z) en fracciones parciales y obtener
la transformada Z −1 de cada uno de los términos resultantes. Un método
generalizado para determinar la inversa de g(z) consiste en factorizar g(z)
en factores de primer orden; luego, usar la siguiente fórmula de inversión:

P
g(kT ) = [(z − ai )g(z)z k−1 ]z=ai
i=1
Q

1 dmj −1
+ [(z − bj )mj g(z)z k−1 (2.31)
(mj − 1)! dz mj −1 z=bj
j=1

donde P es el número de polos ai no repetidos de G(z) y Q es el número de


polos bj que se repiten con multiplicidad mj . Por ejemplo, determinar g(kT )
de:
z
g(z) =
(z − 2)(z − 3)(z − 4)(z − 1)2 (z − 5)3
Para este caso: P = 3, a1 =2, a2 =3, a3 =4, Q=2, b1 =1, b2 =5, m1 =2 y m2 =3.
Por consiguiente:
g(kT ) = [(z − a1 )g(z)z k−1 ]z=a1
+ [(z − a2 )g(z)z k−1 ]z=a2 + [(z − a3 )g(z)z k−1 ]z=a3


1 dm1 −1
+ [(z − b1 )m1
g(z)z k−1
(m1 − 1)! dz m1 −1 z=b

m 2 −1
1
1 d
+ [(z − b2 )m2 g(z)z k−1
(m2 − 1)! dz m2 −1 z=b2

Ejemplo 2.6
Determinar g(kT ) para:
z z
(a) : g(z) = ; (b) : g(z) =
(z − 1)(z − 2) (z − 1)2
Solución: Para el primer caso: P = 2, a1 = 1, a2 = 2, Q = 0. Por tanto:

k
k
z z
g(k) = + = −1 + 2k
z − 1 z=1 z − 1 z=2
Para el segundo caso: P = 0, Q = 1, b1 = 1, m1 = 1. Luego:



1 d 2 z d k
g(k) = (z − 1) z k−1
= (z ) =k
1! dz (z − 1)2 z=1 dz z=1
2.3 Fundamentos de Sistemas Discretos 51

2.3.4. Función de Transferencia de Pulso


Conociendo la función de transferencia G(s) = y(s)/u(s) de un sistema,
la correspondiente función de transferencia de pulso se determina de la
relación:



y(z) 1 − e−sT G(s)
= G(z) = Z[Gr0 G(s)] = Z G(s) = (1 − z −1 )Z
u(z) s s
(2.32)
Para el caso multivariable, la matriz de transferencia de pulso G(z) se
determina empleando la relación (2.32) para cada elemento de la matriz de
transferencia G(s). Para derivar la función de transferencia de pulso para el
caso de procesos en cascada o formando lazos cerrados, debemos proceder
con cautela, porque no siempre es posible encontrar una relación de la forma
y(z) = G(z)u(z). Los siguientes ejemplos ilustran los casos tratados.
Ejemplo 2.7
Dado el tiempo de muestreo T , determinar la función de transferencia de
pulso para el proceso:
K −Tt s
G(s) = e , Tt = dT, d = 1, 2, 3, . . .
s+a
Solución: Empleando la relación (2.32) y la tabla 2.2 obtenemos:


−1 K sT −d b1 z −1
G(z) = Z[Gr0 G(s)] = (1 − z )Z (e ) = z −d
s(s + a) 1 + a1 z −1
K
a1 = −e−aT ; b1 = (1 − e−aT )
a
Ejemplo 2.8
Determinar la salida muestreada para los casos ilustrados en las figuras
2.8(a)-(f).
Solución: En la figura (a) se tiene: y(s) = G2 (s)x∗ (s) y x(s) = G1 (s)u(s),
donde x(s) es una señal auxiliar. Muestreando x(s) como sigue:
[x(s)]∗ = x∗ (s) = [G1 (s)u(s)]∗ = G∗1 (s)u∗ (s)
Reemplazando ahora x∗ (s) en y(s), y luego muestreando y(s) obtenemos
una expresión en el dominio discreto, a saber: y ∗ (s) = G∗2 (s)G∗1 (s)u∗ (s).
Esta última relación es equivalente a:
y(z) = G2 (z)G1 (z)u(z)
52 Sistemas Discretos

T T
G 1 (s) G 2 (s)
u(s) u*(s) x(s) x*(s) y(s)
(a)
T y(s)
G 1 (s) G 2 (s)
u(s) u*(s)
(b)
u(s) T
G 1 (s) G 2 (s)
x(s) x*(s) y(s)
(c)
T -Ts
1-e
D(z) G p (s)
u(s) u*(s) s y(s)

(d) G(s)
u(s) T y(s) u(s) y(s)
x(s)
G(s) G(s)
+ x*(s) +
- - T
H(s) H(s)
y*(s)
(e) (f)

Figura 2.8: Sistemas discretos a lazo abierto y a lazo cerrado.

En la figura (b) se tiene: y(s) = G2 (s)G1 (s)u∗ (s). Muestreando y obte-


nemos:
y ∗ (s) = [G2 (s)G1 (s)u∗ (s)]∗ = [G2 G1 (s)]∗ u∗ (s)

Por consiguiente:
y(z) = [G2 G1 (s)](z)u(z)

En la figura (c) se tiene: y(s) = G2 (s)x∗ (s) y x(s) = G1 (s)u(s). Proce-


diendo como en los casos anteriores se obtiene:

y(z) = G2 (z)[G1 u](z)

En la figura (d) tenemos: y(s) = G(s)D(z)u∗ (s). Muestreando y(s) ob-


tenemos:
y(z) = G(z)D(z)u(z)
2.3 Fundamentos de Sistemas Discretos 53

Para la figura (e) se tiene: y(s) = G(s)x∗ (s) y x(s) = u(s) − H(s)y(s).
Reemplazando y(s) en x(s), muestreando y despejando x∗ (s) se obtiene:

u∗ (s)
x∗ (s) =
1 + [GH](z)

Reemplazando x∗ (s) en y(s) = G(s)x∗ (s) resulta:

G(z)
y(z) = u(z)
1 + [GH](z)

Para la figura (f) tenemos y(s) = G(s)u(s) − G(s)H(s)y ∗ (s). Muestre-


ando y despejando y ∗ (s) se obtiene:

[GH](z)
y(z) = u(z)
1 + [GH](z)

2.3.5. El Espacio de Estado Discreto


En la sección 2.2 vimos que la dinámica linealizada de un proceso (sin la
presencia de disturbios) puede ser representada en el espacio de estado por
la ecuación (2.3):

ẋ = Ax + Bu; y = Cx + Du (2.33)

La solución de la ecuación de estado anterior, dado un estado inicial x(t0 ),


es:
 t
x(t) = eA(t−t0 ) x(t0) ) + eAt e−Aτ Bu(τ )dτ
t0
 t
= φ(t − t0 )x(t0) + φ(t − τ )Bu(τ )dτ (2.34)
t0

donde:


−1 −1 A(t−t0 ) Aν (t − t0 )ν
φ(t − t0 ) = L [(sI − A) ]=e =
ν!
ν=0

es la matriz de transición. Para demostrar que efectivamente (2.34) es una


solución de la ecuación de estado (2.33), basta derivar la expresión (2.34)
con respecto al tiempo, para ası́ obtener ẋ = Ax + Bu.
54 Sistemas Discretos

La representación de la ecuación de estado en el dominio laplaciano toma


la forma:
sx(s) − x(t0 ) = Ax(s) + Bu(s)
x(s) = (sI − A)−1 x(t0 ) + (sI − A)−1 Bu(s)
y(s) = Cx(s) + Du(s) (2.35)
Ejemplo 2.9
Dado u = 3e−t , determinar la respuesta de un proceso descrito por las
siguientes ecuaciones de estado y de salida:
x˙1 = −7x1 + x2 + 2u; x˙2 = −12x1 − u
y = 3x1 − 4x2 − 2u
Condiciones iniciales: x1 (0) = −6, x2 (0) = 1. Graficar la respuesta y(t) y
compararla con las respuestas obtenidas mediante discretización para los
tiempos de muestreo de 0.1 s y 0.04 s.
Solución: Según la tabla 2.2: L[3e−t ] = 3/(s + 1). Aplicando la ecuación
(2.35) obtenemos:



−7 1 2
A= ; B=
−12 0 −1


  −6
C = 3 −4 ; D = [−2]; x(0) =
1

−1

−1


s + 7 −1 −6
s + 7 −1 2
x(s) = + u(s)
12 s 12 1
s −1



#
1 s 1 −6 2 3
= 2 +
s + 7s + 12 −12 s + 7 1 −1 s+1
 2 
−6s +s−2
(s+1)(s+3)(s+4)
= s2 +77s−14
(s+1)(s+3)(s+4)

 
−6s2 +s−2
  (s+1)(s+3)(s+4) 3
y(s) = Cx(s) + Du(s) = 3 −4 s2 +77s−14 −2
(s+1)(s+3)(s+4)
s+1
−22s2 − 305s + 50 6 297/6 −767/2 918/3
= − = + +
(s + 1)(s + 3)(s + 4) s + 1 s+1 s+3 s+4
297 −t −767 −3t 918 −4t
y(t) = e + e + e , t≥0
6 2 3
2.3 Fundamentos de Sistemas Discretos 55

Las respuestas mostradas en la figura 2.9 se realizaron con el programa


ejem2 9.m. Para T ≤ 0,04 s, las respuestas y(t) e y(kT ) prácticamente coin-
ciden. Conforme T aumenta, la diferencia entre y(t) e y(kT ) es más notoria,
lo cual nos indica que los sistemas muestreados dependen de T .

% ejem2_9.m COMPARACION DE RESPUESTAS A UNA ENTRADA ARBITRARIA u(t)


A = [-7 1
-12 0]; B = [2;-1]; Cc = [3 -4]; Dc = [-2];
T1 = 0.1; % TIEMPO DE MUESTREO EN SEGUNDOS
[G,H,C,D] = c2dm(A,B,Cc,Dc,T1,’zoh’); % CONTINUA A DISCRETA
x = [-6;1]; % CONDICION INICIAL
for k = 1:100 % CADA MUESTRA k EQUIVALE A T SEGUNDOS
u(k) = 3*exp(-k*T1); % ENTRADA
y1(k) = C*x + D*u(k);
x = G*x + H*u(k);
end
T2 = 0.04; % TIEMPO DE MUESTREO EN SEGUNDOS
[G,H,C,D] = c2dm(A,B,Cc,Dc,T2,’zoh’); % CONTINUA A DISCRETA
x = [-6;1]; % CONDICION INICIAL
for k = 1:250 % CADA MUESTRA k EQUIVALE A T SEGUNDOS
u(k) = 3*exp(-3*k*T2); % ENTRADA
y2(k) = C*x + D*u(k);
x = G*x + H*u(k);
end
% SOLUCION y(t)
t = 0:0.1:10;
y = 297*exp(-t)/6 - 767*exp(-3*t)/2 + 918*exp(-4*t)/3;

% GRAFICOS
t=linspace(0,10,101); t1=linspace(0,10,100);
t2=linspace(0,10,250);
plot(t,y,t1,y1,’--’,t2,y2,’-.’); grid
ylabel(’Respuesta y(t)’)
xlabel(’Tiempo en segundos’)
print -deps -f fig2_9

Solución de la Ecuación de Estado Discreta


Discretizando la ecuación (2.33) para un tiempo discreto k = t/T y
asumiendo que entre muestras la señal de control u es constante, entonces
para la señal de entrada u(t) = u(kT ), kT ≤ (k + 1)T y para un estado
inicial x(kT ) = u(kT ), kT ≤ (k + 1)T , la ecuación de estado se convierte
56 Sistemas Discretos

10

−10
y

−20
Salida

−30

−40

−50
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 2.9: Respuestas y(t) para el ejemplo 2.9. Curva sólida: y(t); en trazos:
y(kT1 ), T1 = 0,04 s; curva punto y raya: y(kT2 ), T2 = 0,1 s.

en:  t
x(t) = φ(t − kT )x(t0) + u(kT ) φ(t − τ )Bdτ
t0

Si sólo interesa la solución para t = (k + 1)T y empleando el cambio de


variables que sigue λ = (k + 1)T − τ , dλ = −dτ , obtenemos las siguientes
ecuaciones discretas de estado y de salida:

x(k + 1) = Gx(k) + Hu(k); y(k) = Cx(k) + Du(k) (2.36)

donde:

T
AT
G = Φ(T ) = e ; H= φ(λ)dλ B (2.37)
0

Notar que (2.36) es una ecuación vectorial de diferencias que puede ser
resuelta recursivamente, como sigue:

x(1) = Gx(0) + Hu(0)


x(2) = Gx(1) + Hu(1) = G2 x(0) + GHu(0) + Hu(1)
2.3 Fundamentos de Sistemas Discretos 57

..
.

k
x(k) = Gk x(0) + Gν−1 Hu(k − ν) (2.38)
ν=1

donde Gk es la denominada matriz de transición discreta. Una segunda alter-


nativa de solución de (2.36) se da en el dominio de z. Aplicando la propiedad
de desplazamiento hacia la izquierda, podemos formular que Z[x(k)] = x(z)
y Z[x(k + 1)] = z[x(z) − x(0)]. Por tanto, de (2.36) se obtiene:

z[x(z) − x(0)] = Gx(z) + Hu(z)

Despejando:

x(z) = (zI − G)−1 zx(0) + (zI − G)−1 Hu(z) (2.39)

y empleando la ecuación de salida resulta:

y(z) = C(zI − G)−1 zx(0) + [C(zI − G)−1 H + D]u(z) (2.40)

Comparando las ecuaciones (2.38) y (2.39) verificamos que:

Gk = Z −1 [(zI − G)−1 z] (2.41)

La matriz de transferencia de pulso se determina haciendo x(0) = 0 en


(2.40):
y(z) = Gp (z)u(z) = [C(zI − G)−1 H + D]u(z) (2.42)
mientras que la ecuación caracterı́stica del sistema se obtiene de:

det(zI − G) = 0 (2.43)

la cual nos informa acerca de la estabilidad del sistema. Recordar que un


sistema continuo es estable cuando todos sus eigenvalores poseen parte real
negativa. Por consiguiente, la zona de estabilidad para sistemas continuos
es el semiplano izquierdo del plano s. Desde que:

z = esT = e(σ+jω)T = eσT ejωT = |z|∠z

y como |z| ≤ 1 cuando σ ≤ 0 para cualquier ∠z, entonces la zona de esta-


bilidad en el plano z resulta un cı́rculo de radio unidad:
Un sistema discreto es estable si las raı́ces de su ecuación caracterı́stica,
los eigenvalores, se encuentran dentro del cı́rculo unitario (en el dominio de
z). En otro caso, el sistema no es estable.
58 Sistemas Discretos

Formas Canónicas en el Espacio de Estado Discreto

La forma general de la función de transferencia de pulso para un proceso


es:

y(z) b0 + b1 z −1 + · · · + bn z −n b0 z n + b1 z n−1 + · · · + bn
Gp (z) = = =
u(z) 1 + a1 z −1 + · · · + an z −n z n + a1 z n−1 + · · · + an
(2.44)
y su correspondiente ecuación de diferencias toma la forma:

y(k+n)+a1 y(k+n−1)+· · ·+an y(k) = b0 u(k+n)+b1 u(k+n−1)+· · ·+bn u(k)


(2.45)
Conforme a la selección de las variables de estado, un proceso posee diversas
representaciones en el espacio de estado. Las formas canónicas más notables,
con relación a la función de transferencia de pulso dada en (2.44), se descri-
ben a continuación.

Primera Forma Canónica Controlable:


    
0 1 0 ··· 0 x1 (k) 0
 0 0 1 ··· 
0 x2 (k)   0 
    
 .. .. .. 
.. ..   .. 
x(k + 1) =  . . . . . + .  u(k)
    
 0 0 0 ··· 1   xn−1 (k)   0 
−an −an−1 −an−2 ··· −a1 xn (k) 1
(2.46)
 
y(k) = bn − an b0 bn−1 − an−1 b0 ··· b1 − a1 b0 x(k) + b0 u(k) (2.47)

Segunda Forma Canónica Controlable:


    
0 1 0 ··· 0 x1 (k) β1
 0 0 1 ··· 
0 x2 (k)   β2 
    
 .. .. .. 
.. ..   .. 
x(k + 1) =  . . . 
. . + .  u(k)
    
 0 0 0 ··· 1   xn−1 (k)   βn−1 
−an −an−1 −an−2 ··· −a1 xn (k) βn
(2.48)
 
y(k) = 1 0 ··· 0 x(k) + β0 u(k) (2.49)

donde: β0 = b0 , β1 = b1 − a1 b0 , β2 = b2 − a1 β1 − a2 β0 , etc. Generalizando:

βn = bn − a1 βn−1 − · · · − an−1 β1 − an−1 β0


2.3 Fundamentos de Sistemas Discretos 59

Tercera Forma Canónica Controlable:


    
−a1 −a2 ··· −an−1 −an x1 (k) 1
 1 0 ··· 0 0    x2 (k) 0
    
 0 1 ··· 0 0     .. ..
x(k + 1) =    +   u(k) (2.50)
. .
 .. .. .. ..   
 . . . .  xn−1 (k)   0 
0 0 ··· 1 0 xn (k) 0
 
y(k) = b1 − a1 b0 b2 − a2 b0 · · · bn − an b0 x(k) + b0 u(k) (2.51)

Primera Forma Canónica Observable:


    
0 0 ··· 0 0 −an x1 (k) bn − an b0
 1 0 ··· 0 0 −an−1  x2 (k)   bn−1 − an−1 b0 
    
 .. .. .. .. ..  ..   .. 
x(k + 1) =  . . . . .  . + .  u(k)
    
 0 0 ··· 1 0 −a2   xn−1 (k)   b2 − a2 b0 
0 0 ··· 0 1 −a1 xn (k) b1 − a1 b0
  (2.52)
y(k) = 0 0 ··· 0 1 x(k) + b0 u(k) (2.53)

Segunda forma canónica observable:


    
−a1 1 0 ··· 0 0 x1 (k) b1 − a1 b0
 −a2 0 1 ··· 0 0  x2 (k)   b2 − a2 b0 
    
 .. .. .. .. .. ..   .. 
x(k + 1) =  . . . . . . + .  u(k)
    
 −an−1 0 0 ··· 0 1   xn−1 (k)   bn−1 − an−1 b0 
−an 0 0 ··· 0 0 xn (k) bn − an b0
  (2.54)
y(k) = 1 0 ··· 0 0··· x(k) + b0 u(k) (2.55)

Forma Canónica Diagonal (eigenvalores no repetidos)


 
x1 (k + 1)     
  p1 0 ··· 0 x1 (k) 1
 x2 (k + 1)      
 ..   0 p2 ··· 0  x2 (k)   1 
 . = .. .. ..  .. + ..  u(k) (2.56)
   . . .  .   . 
 xn−1 (k + 1) 
0 0 ··· pn xn (k) 1
xn (k + 1)
 
y(k) = c1 c2 ··· cn x(k) + b0 u(k) (2.57)
60 Sistemas Discretos

donde los pi son los eigenvalores no repetidos de Gp (z) = y(z)/u(z), y:

ci n

y(z) y(z)
= b0 + ; ci = lı́m (z − pi ) (2.58)
u(z) z − pi z→pi u(z)
i=1

Forma Canónica de Jordan (eigenvalores repetidos).- En la subsección 1.2.3


vimos que si la matriz de estado A de orden n de un proceso con función de
transferencia de pulso G(z) = y(z)/u(z) posee r eigenvectores linealmente
independientes (es decir, el rango de A es r), entonces la forma de Jordan es
una matriz J que posee n − r unos sobre su diagonal, con todos los demás
elementos iguales a cero. Por citar un ejemplo, si A, de orden n = 8, contiene
un eigenvalor p1 de multiplicidad 3, otro eigenvalor p2 de multiplicidad 2,
otros tres eigenvalores distintos, y su rango es 6, entonces la forma de Jordan
presenta 8 − 6 = 2 unos sobre la diagonal. Es decir:
    
p1 0 0 0 0 0 0 0 x1 (k) 0
 0 p1 1 0 0 0 0 0   x2 (k)   0 
    
 0 0 p1 0 0 0 0 0   x3 (k)   1 
    
 0 0 0 p2 1 0 0 0   x4 (k)   0 
x(k + 1) =       
0 0 0 0 p 0 0 0   x5 (k)  +  1  u(k)
 2    
 0 0 0 0 0 p6 0 0   x6 (k)   1 
    
 0 0 0 0 0 0 p7 0   x7 (k)   1 
0 0 0 0 0 0 0 p8 x8 (k) 1
  (2.59)
y(k) = c 1 c2 c3 c4 c5 c6 c7 c8 c9 x(k) + b0 u(k) (2.60)
ci 8
y(z) c1 c2 c3 c4 c5
= b0 + 3
+ 2
+ + 2
+ +
u(z) (z − p1 ) (z − p1 ) z − p1 (z − p2 ) z − p2 z − pi
i=6
(2.61)

Ejemplo 2.10
La función de transferencia de pulso de un proceso se modela como:
6 −i
y(z) i=0 bi z
= 
u(z) 1 + 6i=1 ai z −i
donde b0 = 1, b1 = −2,8, b2 = −0,65, b3 = 6,8, b4 = −4,25, b5 = −1,3,
b6 = 1,2, a1 = 1,3, a2 = −1,69, a3 = −0,345, a4 = 0,49, a5 = 0,02 y
a6 = −0,04. Determinar la estabilidad del proceso. Determinar la ecuación
2.3 Fundamentos de Sistemas Discretos 61

de estado y la ecuación de salida para la segunda forma canónica controlable


y para la primera forma canónica observable. Demuestre que la matriz de
estado de ambas formas canónicas poseen los mismos eigenvalores y que
ambas representaciones generan la misma función de transferencia de pulso.
Solución: El siguiente programa resuelve las preguntas planteadas.
% ejem2_10.m FORMAS CANONICAS
clear all
b0=1; b1=-2.8; b2=-0.65; b3=6.8; b4=-4.25; b5=-1.3; b6=1.2;
a1=1.3; a2=-1.69; a3=-0.345; a4=0.49; a5=0.02; a6=-0.04;
num = [b0 b1 b2 b3 b4 b5 b6];
rnum = roots(num); % RAICES DEL POLINOMIO DEL NUMERADOR
% rnum: -1.5, 2, 1, 1, 0.8, -0.5
den =[1 a1 a2 a3 a4 a5 a6];
rden = roots(den); % RAICES DEL POLINOMIO DEL DENOMINADOR
% roots: 0.5, 0.5, 0.5, -0.4, -0.4, -2
% EL PROCESO ES INESTABLE DEBIDO A LAS RAICES -0.4, -0.2 Y -2

% SEGUNDA FORMA CANONICA CONTROLABLE:


% x(k+1) = Gc*x(k) + Hc*u(k); y(k) = Cc*x(k) + Dc*u(k)
beta0 =b0; %
beta1 = b1-a1*beta0;
beta2 = b2-a1*beta1-a2*beta0;
beta3 = b3-a1*beta2-a2*beta1-a3*beta0;
beta4 = b4-a1*beta3-a2*beta2-a3*beta1-a4*beta0;
beta5 = b5-a1*beta4-a2*beta3-a3*beta2-a4*beta1-a5*beta0;
beta6 = b6-a1*beta5-a2*beta4-a3*beta3-a4*beta2-a5*beta1-a6*beta0;
Gc = [0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
-a6 -a5 -a4 -a3 -a2 -a1];
Hc = [beta1
beta2
beta3
beta4
beta5
beta6];
Cc = [1 0 0 0 0 0]; Dc =[beta0];
% PRIMERA FORMA CANONICA OBSERVABLE:
% x(k+1) = Go*x(k) + Ho*u(k); y = Co*x(k) + Do*u(k)
Go = [0 0 0 0 0 -a6
62 Sistemas Discretos

1 0 0 0 0 -a5
0 1 0 0 0 -a4
0 0 1 0 0 -a3
0 0 0 1 0 -a2
0 0 0 0 1 -a1];
Ho = [b6-a6*b0
b5-a5*b0
b4-a4*b0
b3-a3*b0
b2-a2*b0
b1-a1*b0];
Co = [0 0 0 0 0 1]; Do=[b0];
[numc,denc] = ss2tf(Gc,Hc,Cc,Dc);
[numo,deno] = ss2tf(Go,Ho,Co,Do);
% SE COMPRUEBA QUE: num=numc=numo, den=denc=deno, eig(Gc)=eig(Go)

Ejemplo 2.11

Conocidas las matrices G, H, C y D (ver programa ejem2 11.m), determine


la ecuación de estado y la ecuación de salida de su forma canónica de Jordan.
Demuestre que la matriz de estado de Jordan y la matriz de estado G poseen
los mismos eigenvalores y que ambas representaciones generan la misma
función de transferencia de pulso.
Solución: El siguiente programa resuelve las preguntas planteadas.
% ejem2_11.m FORMAS CANONICAS DE JORDAN
clear all
% x(k+1) = G*x(k) + H*u(k); y(k) = C*x(k) + D*u(k);
G = [0 1 0 3
0 -1 1 1
0 0 0 1
0 0 -1 -2];
H = [1;0;-4;0];
C = [1 0 0 0]; D = [-2];
[num,den] = ss2tf(G,H,C,D);
eigG = eig(G); % eigG = EIGENVALORES DE G: -1, -1, -1, 0
rangG = rank(G); % rankA = 3 => G POSEE 3 VECTORES PROPIOS
% LINEALMENTE INDEPENDIENTES => 4-3=1 (UN 1 SOBRE LA DIAGONAL)
[c,p,k] = residue(num,den); % EXPANSION EN FRACCIONES PARCIALES
% c = [-8.0000 -8.0000 0.0000 9.0000]’;
% p = [-1.0000 -1.0000 -1.0000 0];
% k = -2;
c1=c(1); c2=c(2); c3=c(3); c4=c(4);
2.3 Fundamentos de Sistemas Discretos 63

p1=p(1); p2=p(2); p2=p(3); p2=p(4);


% x(k+1) = Gj*x(k) + Hj*u(k); y = Cj*x(k) + Dj*u(k)
Gj = [p1 0 0 0
0 p1 1 0
0 0 p1 0
0 0 0 p2];
Hj = [0;1;1;1];
Cj = [c1 c2 c3 c4]; Dj = [k];
[numj,denj] = ss2tf(Gj,Hj,Cj,Dj);
eigGj = eig(Gj); % EIGENVALORES DE Gj: -1, -1, -1, 0
% SE COMPRUEBA QUE: num=numj, den=denj, eigG=eigGj

Procesos Discretos con Tiempo Muerto


En el dominio continuo, la transformada de Laplace del tiempo muerto
es e−Tt s . Si Tt = dT , d = 1, 2, . . . y dado que eT s = z, entonces en el dominio
discreto el tiempo muerto toma la forma z −d . Este tiempo muerto puede
existir en la entrada, en la salida o entre las variables de estado del proceso,
tal como se ilustra a continuación:

x(k + 1) = Ax(k − dx ) + Bu(k − du )


y(k + dy ) = Cx(k)

donde los tiempos muertos dk , du y dy toman valores enteros positivos.


Si la relación d = Tt /T no fuera un entero (o también si lo fuera), resulta
útil emplear la aproximación de Padé para el tiempo muerto:
1 1 num(s)
e−Tt s = 1 − sTt + (sTt )2 − (sTt )3 + · · · =
!2 !3 den(s)
Con una aproximación de tercer orden, podemos acomodar retardos de fase
de hasta 200o (3.5 rad) [11], lo cual es suficiente para capturar el efecto del
tiempo muerto en muchas aplicaciones. Tal aproximación tiene la forma:
num(s) 1 − Tt s/2 + (Tt s)2 /10 − (Tt s)3 /120
e−T s ≈ =
den(s) 1 + Tt s/2 + (Tt s)2 /10 + (Tt s)3 /120

Ejemplo 2.12

Comparar la respuesta a un escalón del proceso:


y(s) 10 −5,8s
= e
u(s) 2s + 1
64 Sistemas Discretos

con respecto a la respuesta originada por el proceso cuando el tiempo muerto


se aproxima por una relación de Padé de tercer orden. Luego determinar la
ecuación de estado aproximada del proceso.
Solución: El programa ejpades.m en SIMULINK (figura 2.10) resuelve el
problema planteado y los resultados se ilustran en la figura 2.11. Para re-
alizar la simulación usando el programa ejpades.m, ejecutar previamente
el programa ejpade.m, el cual también determina la ecuación de estado y
las funciones de transferencia aproximadas del proceso, tanto en el dominio
continuo como en el dominio discreto.

% ejpade.m PROCESO CON TIEMPO MUERTO D


clear all
Tt=5.8; % TIEMPO MUERTO
% APROXIMACION DE TERCER ORDEN DEL TIEMPO MUERTO D:
numD=[-Tt^3/120 Tt^2/10 -Tt/2 1];
denD=[Tt^3/120 Tt^2/10 Tt/2 1];
% PROCESO PARCIAL
nump=[0 10]; denp=[2 1];
% PROCESO APROXIMADO
num=conv(numD,nump);
den=conv(denD,denp);
[A,B,C,D]=tf2ss(num,den);
% PROCESO DISCRETO APROXIMADO
T=0.5;
[numd,dend]=c2dm(num,den,T,’zoh’);
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
% GRAFICOS
load yd; load yda;
t=linspace(0,11,size(yd,1));
plot(t,yd,t,yda,’--’), grid
xlabel(’Tiempo en segundos’)
ylabel(’Respuestas al escalon’)
print -deps -f ejpade
print -deps -s ejpades

2.3.6. Controlabilidad y Observabilidad


Concepto de Controlabilidad
Un proceso dinámico lineal se dice que es controlable, si es que existe un
vector u(k) realizable y capaz de trasladar el estado del proceso desde un
estado inicial x(0) hacia cualquier estado final x(N ) en un tiempo finito N .
2.3 Fundamentos de Sistemas Discretos 65

10 yd_
Mux
2s+1
u Proceso parcial Tiempo yd Graph
muerto yd Mux
yda
10 −Tt^3/120s3+Tt^2/10.s 2−Tt/2s+1 yda_
yda
2s+1 Tt^3/120.s3+Tt^2/10.s 2+Tt/2.s+1
Proc. parcial Aproximación del tiempo muerto

Figura 2.10: Comparación de las respuestas a un escalón del proceso y de


su modelo aproximado mediante una relación Padé de tercer orden (ejemplo
2.12).
12

10

8
Respuestas al escalóon

−2
0 2 4 6 8 10 12
Tiempo en segundos

Figura 2.11: Comparación de las respuestas a un escalón del proceso (curva


sólida) y de su modelo aproximado (curva en trazos) mediante una relación
Padé de tercer orden (ejemplo 2.12).
66 Sistemas Discretos

Despejando u(k) de la ecuación (2.38) para k = N se obtiene:

[u(N − 1) . . . u(0)]T = u(N ) = M −1 [x(N ) − GN x(0)]


M = [H GH . . . GN −1 H]

donde det(M ) = 0. M es conocida como la matriz de controlabilidad, la cual


puede contener columnas o filas linealmente dependientes. Por consiguiente,
para que un proceso sea completamente controlable, lo que quiere decir, para
que su matriz de controlabilidad sólo posea filas o columnas independientes,
se debe cumplir que:

rango(M ) = rango([H GH . . . GN −1 H]) = n (2.62)

donde n es el orden del proceso. Para N < n no existe solución para u, y


para N > n la solución no es única.
La determinación de la controlabilidad completa en el espacio de estado
continuo es similar. Basta reemplazar en M , A por G y B por H.

Concepto de Observabilidad
Un proceso lineal dinámico con salida y(k) se denomina observable si
algún estado x(k) puede ser obtenido a partir de un número finito de salidas
y(k), y(k − 1), . . . , y(k − n). Consideremos la siguiente ecuación de salida:

y(k) = Cx(k)

Empleando la ecuación de estado x(k + 1) = Gx(k) + Hu(k), podemos


deducir que:

y(k) = Cx(k)
y(k + 1) = CGx(k) + CHu(k)
y(k + 2) = CG2 x(k) + CGHu(k) + CHu(k + 1)
..
.
y(k + n − 1) = CGn−1 x(k) + [0, CH, CGH, . . . , CGn−2 H]Un (2.63)

donde (asumiendo que los vectores de entrada son completamente conocidos)

Un = [u(k + n − 1) . . . u(k + 1) u(k)]T


2.3 Fundamentos de Sistemas Discretos 67

La ecuación (2.63) toma la forma:

Yn = N x(k) + SUn (2.64)

donde:

Yn = [y(k) y(k + 1) . . . y(k + n − 1)]T


N = [C CG . . . CGn−1 ]T = [C T GT C T . . . (GT )n−1 C T ]
 
0 0 0 0 0
 0 0 0 0 CH 
 
S =  . . . 
 .
. . . .
. 
0 CH CGH . . . CG n−2 H

Despejando, el vector incógnita se obtiene de:

x(k) = N −1 [Yn − SUn ] (2.65)

siempre que det(N ) = 0. Luego, para que el proceso dinámico sea observable,
la matriz de observabilidad N debe cumplir:

rango[N ] = n (2.66)

La determinación de la observabilidad completa en el espacio de estado


continuo es similar. Basta reemplazar A por G en la expresión de N .

Ejemplo 2.13

Determine si los procesos sistema hidráulico y péndulo descritos en los ejem-


plos 2.1 y 2.2 son completamente controlables y observables.
Solución: El siguiente programa resuelve las preguntas planteadas.
% ejem2_13.m CONTROLABILIDAD Y OBSERVABILIDAD
clear all
% SISTEMA HIDRAULICO
Area = 9; gamma = 0.4; rho = 1.23; g = 9.81;
Q0e = 3; % FLUJO DE ENTRADA EN EQUILIBRIO
H1e = Q0e^2/(gamma*rho*g); % NIVEL DE EQUILIBRIO
H2e = H1e;
a11 = -gamma*sqrt(rho*g)/(2*Area*sqrt(H1e)); a21=-a11; a22=a11;
A = [a11 0
a21 a22]; % n = 2
68 Sistemas Discretos

B = [1
0];
C = [0 1]; D = [0];
M = [B A*B]; % MATRIZ DE CONTRABILIDAD
rangM = rank(M);% rangM = 2 = n => COMPLETAMENTE CONTROLABLE
N = [C’ A’*C’]; % MATRIZ DE OBSERVABILIDAD
rangN = rank(N);% rangN = 1 < 2 => NO ES COMPLETAMENTE OBSERVABLE

% PROCESO PENDULO
Bp = 1.3366; Lo = 1.635; Mo = 0.5; g = 9.81;
AP = [0 1
-g/Lo^2 -Bp/(Mo*Lo^2)]; % n = 2
BP = [0
1/(Mo*Lo^2)]; CP = [1 0]; DP = [0];
MP = [BP AP*BP]; % MATRIZ DE CONTRABILIDAD
rangMP = rank(MP); % rangMP = 2 = n => COMPLETAMENTE CONTROLABLE
NP = [CP’ AP’*CP’];% MATRIZ DE OBSERVABILIDAD
rangNP = rank(NP); % rangNP = 2 = n => COMPLETAMENTE OBSERVABLE
Capı́tulo 3

Modelado de Procesos

Este capı́tulo presenta la derivación de modelos dinámicos de procesos con-


tinuos con su correspondiente linealización y discretización. También se explora
la respuesta de los procesos a entradas tı́picas y se determina las caracterı́sticas
de controlabilidad y observabilidad de los mismos, empleando como herramienta
de cálculo la computadora. Las tres primeras secciones se dedican a los procesos
cuyos sistemas de control avanzado van a ser implementados en tiempo real.
Tales procesos son: el péndulo invertido, la grúa-puente y el servomotor de cor-
riente continua sujeto a cargas no lineales. En su sección problemas resueltos
se presenta la modelación de diversos procesos, cuyos sistemas de control serán
diseñados en los capı́tulos siguientes. La última sección propone la derivación
de modelos dinámicos de otros procesos. Todos los archivos correspondientes a
los ejercicios y problemas desarrollados en este capı́tulo se pueden descargar del
sitio: http://fiee.uni.edu.pe/728681F.

3.1. Modelo del Proceso Péndulo Invertido


El proceso péndulo invertido consiste de un péndulo montado sobre un
carro que se desplaza en forma horizontal. Este carro está impulsado por un
servomotor D.C. a través de un sistema de poleas, tal como se muestra en la
figura 3.1. Para mayor claridad, el proceso péndulo invertido se ha separado
en dos subsistemas: el subsistema conformado por el carro y el péndulo, que
se trata en la subsección 3.1.1, y el subsistema conformado por el motor y
el sistema de poleas, que se desarrolla en la subsección 3.1.2.
70 Modelado de Procesos

+ Fuerza de
u control y’
-
Servomotor
D.C. y
θ Pendulo

z F

Carro

Figura 3.1: Proceso péndulo invertido.

3.1.1. Modelo del Subsistema Carro-Péndulo


El subsistema carro-péndulo se ilustra en la figura 3.2 y está conformado
por un carro y una varilla. De la figura 3.2 podemos observar que los centros
de gravedad de la varilla y de la esfera son:
y y’
z

11
00
00
11
00
11
l v /2 00
11

me g
θ
mvg lv
le
z’
0
z
P
F

Figura 3.2: Subsistema carro-péndulo.

ze = z + le sen θ (3.1)
lv
zv = z + sen θ (3.2)
2
3.1 Modelo del Proceso Péndulo Invertido 71

Para modelar el sistema mecánico empleamos la segunda ley de Newton


para los movimientos lineal y rotacional. Para el movimiento lineal, dicha
ley establece que para un sistema de N partı́culas:


N
d2
M
mi 2 ri = Fj (3.3)
dt
i=1 j=1

donde mi es la masa de la i-ésima partı́cula, ri es la posición del centro de


masa de la i-ésima partı́cula y Fj es la j-ésima fuerza aplicada al sistema de
partı́culas. Aplicando la ecuación (3.3) a nuestro sistema (en la dirección z)
obtenemos:
d2 d2 d2
mc 2 z + me 2 ze + mv 2 zv = F (3.4)
dt dt dt
Luego, sustituyendo ze (ecuación (3.1)) y zv (ecuación (3.2)) en la ecuación
(3.4) obtenemos:

d2 d2 d2 lv
mc z + me (z + l e sen θ) + mv (z + sen θ) = F (3.5)
dt2 dt2 dt2 2
y desarrollando las derivadas resulta:

lv lv
(mc +me +mv )z̈ −(me le +mv )(sen θ)+ θ̇2 (me le +mv )(cos θ)θ̈ = F (3.6)
2 2
Para completar el modelo, utilizamos la segunda ley de Newton aplicada al
movimiento rotatorio alrededor del punto P del carro. Esta ley establece que
para un sistema de N partı́culas en movimiento rotacional respecto a un sis-
tema de referencia inercial, sometidas a M torques externos perpendiculares
al plano de giro, se cumple que:


N
d2 M
Ji 2 θi = τj (3.7)
dt
i=1 j=1

donde τj es el j-ésimo torque externo, Ji es el momento de inercia de la


i-ésima partı́cula respecto al punto P y θi es el ángulo recorrido por la i-
ésima partı́cula alrededor del punto P. Para aplicar esta ley al movimiento
rotatorio de la varilla alrededor del punto P utilizamos la tercera ley de
Newton, la cual nos permite remplazar el efecto de la aceleración del sistema
de referencia Z  −Y  por una fuerza mi z̈ aplicada en el centro de gravedad de
72 Modelado de Procesos

las partı́culas i de dicho sistema, pero en dirección opuesta a la aceleración.


Empleando la ecuación (3.7) en la figura 3.2 obtenemos:
lv lv
(Je +Jv )θ̈ = me g(senθ)le +mv g(sen θ) −me z̈(cos θ)le −mv z̈(cos θ) (3.8)
2 2
y ordenando:
lv lv
(me le + mv )g(sen θ) − (me le + mv )z̈(cos θ) = (Je + Jv )θ̈ (3.9)
2 2
donde:
lv2
Je = me le2 ; Jv = mv (3.10)
3

3.1.2. Modelo del Subsistema Motor-Polea


El subsistema motor-polea está representado en la figura 3.3. El modelo
del sistema eléctrico se encuentra aplicando la ley de voltajes de Kirchhoff
a la parte eléctrica de dicha figura. Además, debido a que la inductancia en
servomotores D.C. de magneto permanente es pequeña, podemos despreciar
su efecto en el modelo. Ası́ obtenemos:

Ra θm
+
u Va Vb Jo rp
-
La Jm F
Bm Bo

Figura 3.3: Subsistema motor-polea.

Ra ia + Vb = KA u = Va (3.11)

El voltaje contraelectromotriz está representado por:

Vb = Kb θ̇m (3.12)

Aplicando la segunda ley de Newton para el movimiento rotatorio en el


sistema mecánico del servomotor, obtenemos:

Tm = Jeq θ̈m + Beq θ̇m + n F rp (3.13)


3.1 Modelo del Proceso Péndulo Invertido 73

donde:

Jeq = Jm + n2 (Jo + Jp ) (3.14)


2
Beq = Bm + n Bo (3.15)

El torque producido en el eje del servomotor viene dado por la ecuación:

Tm = Km ia (3.16)

Sustituyendo la ecuación (3.16) en (3.13) y despejando ia se obtiene:

Jeq Beq n rp
ia = θ̈m + θ̇m + F (3.17)
Km Km Km

Luego, substituyendo las ecuaciones (3.17) y (3.12) en (3.11) y despe-


jando F obtenemos:

Km KA Jeq Beq Km Kb
F = u− θ̈m − + θ̇m (3.18)
Ra n rp n rp n rp Ra n rp

Para transformar el desplazamiento angular del servomotor en el desplaza-


miento horizontal del carro en función del radio de la polea y del factor de
reducción del servomotor, empleamos:
z
θm = (3.19)
n rp

Substituyendo la última relación en (3.18), obtenemos la ecuación general


del subsistema servomotor, como sigue:

Km KA Jeq Beq Km Kb
F = u − 2 2 z̈ − + ż (3.20)
Ra n rp n rp n2 rp2 Ra n2 rp2

Las ecuaciones (3.6), (3.9) y (3.20) representan el modelo matemático


del proceso péndulo invertido controlado por la corriente de armadura. Tales
ecuaciones pueden ser escritas en forma compacta:

M1 z̈ − M2 (sen θ)θ̇2 + M2 (cos θ)θ̈ − F = 0 (3.21)

M2 g(sen θ) − M2 z̈(cos θ) − J1 θ̈ = 0 (3.22)


F = Kx KA u − J2 z̈ − Bx ż (3.23)
74 Modelado de Procesos

donde:
lv
M1 = mc + me + mv ; M2 = me le + mv (3.24)
2

Jeq
J1 = Je + Jv ; J2 = (3.25)
n2 rp2

Km Beq Kb Km
Kx = ; Bx = + (3.26)
Ra nrp n2 rp2 n2 rp2 Ra

3.1.3. Representación en el Espacio de Estado


Las ecuaciones obtenidas pueden ser representadas en el espacio de es-
tado mediante la siguiente asignación de variables de estado:

x1 = θ (3.27)
x2 = θ̇ (3.28)
x3 = z (3.29)
x4 = ż (3.30)

Escribiendo dichas ecuaciones en el espacio de estado, obtenemos:


 
  x2
ẋ1  M2 (sin x1 )(cos x1 )x22 −Bx (cos x1 )x4 −(M1 +J2 )g(sin x1 )+Kx (cos x1 )KA u 
 ẋ2   (M2 (cos2 x1 )−(M1 +J2 )J1 )/M2

 = 
 ẋ3   x4 
 
ẋ4 M22 g(sin x1 )(cos x1 )−J1 M2 (sin x1 )x22 +J1 Bx x4 −J1 Kx KA u
M22 (cos2 x1 )−(M1 +J2 )J1
(3.31)
y puesto que en nuestro sistema tenemos como salidas disponibles el despla-
zamiento angular de la varilla y el desplazamiento del carro, la ecuación de
salida toma la forma siguiente:

y = Cx (3.32)

donde:


1 0 0 0
C= (3.33)
0 0 1 0
3.1 Modelo del Proceso Péndulo Invertido 75

3.1.4. Obtención del Modelo Lineal


Para poder analizar la ecuación matricial (3.31) empleando técnicas de
control lineal, es necesario obtener un modelo lineal del proceso. Suponiendo
que las variables de estado se desvı́an levemente con respecto a una condi-
ción de operación (un estado de equilibrio, por ejemplo), la aproximación
lineal se puede obtener mediante la expansión en series de Taylor, despre-
ciando los términos de orden superior. Consideremos que nuestro proceso
sea representado por la siguiente expresión:
ẋ = f(x, u) (3.34)
 T
ẋ = ẋ1 ẋ2 ẋ3 ẋ4
 T  T
f = f1 f2 f3 f4 = ẋ1 ẋ2 ẋ3 ẋ4
en donde u es la señal de control, ẋ es el vector de estados y f es una función
vectorial de variable vectorial. La expansión en serie de Taylor alrededor del
punto de operación (x̄, ū) resulta:


∂f (x̄, ū) ∂f (x̄, ū)
x̄˙ = f (x̄, ū) + (x − x̄) + (u − ū) +
∂x ∂u

2
1 ∂ f (x̄, ū) 2 ∂ 2 f (x̄, ū) ∂ 2 f (x̄, ū) 2
(x − x̄) + 2 (x − x̄)(u − ū) + (u − ū) + · · ·
2! ∂x2 ∂x∂u ∂u2
(3.35)
Si la variación de las variable residuales (x−x̄) y (u− ū) es pequeña, entonces
se pueden despreciar los términos de orden superior. En el caso que nos
ocupa, el punto de operación (o estado de equilibrio) se ubica alrededor del
origen: x̄ = [0, 0, 0, 0]T = 0 y ū = 0, entonces la ecuación (3.35) se puede
escribir como:
∂f (0, 0) ∂f (0, 0)
ẋ = f (0, 0) + x+ u (3.36)
∂x ∂u
Dado que f (x, u) es una función de variable vectorial, su derivada parcial
con respecto a x y u viene a representar la operación jacobiana (ver ejemplos
2.1 y 2.2). Entonces, la ecuación (3.35) se convierte en:
   ∂f1 (0,0) 
∂f1 (0,0) ∂f1 (0,0) ∂f1 (0,0) ∂f1 (0,0)
 ∂f2 (0,0) ∂f2 (0,0) ∂f2 (0,0) ∂f2 (0,0) 
∂x1 ∂x2 ∂x3 ∂x4 ∂u
 ∂f2 (0,0) 
 ∂x   
ẋ = f (0, 0) +   ∂f3 (0,0) ∂f3 (0,0) ∂f3 (0,0) ∂f3 (0,0)  x + 
1 ∂x 2 ∂x 3 ∂x 4 
∂f3 (0,0)  u
∂u
 ∂x1 ∂x2 ∂x3 ∂x4   ∂u

∂f4 (0,0) ∂f4 (0,0) ∂f4 (0,0) ∂f4 (0,0) ∂f4 (0,0)
∂x1 ∂x2 ∂x3 ∂x4 ∂u
(3.37)
76 Modelado de Procesos

Luego, aplicando la última expresión a la ecuación (3.31), obtenemos el


siguiente modelo lineal para el sistema de péndulo invertido:

ẋ = Ax + Bu (3.38)

donde:  
0 1 0 0
 (M1 +J2 )M2 g Bx M2 
 (M1 +J2 )J1 −M22
0 0 (M1 +J2 )J1 −M22 
A=


 (3.39)
 0 0 0 1 
−M22 g −J1 Bx
(M1 +J2 )J1 −M22
0 0 (M1 +J2 )J1 −M22
 
0
 −Kx M2 KA 
 (M1 +J2 )J1 −M22 
B=  (3.40)
 0 
J1 Kx KA
(M1 +J2 )J1 −M22

3.1.5. El Modelo en el Espacio de Estado Discreto


La obtención del modelo del proceso en el espacio de estado discreto
ya ha sido explorada en la subsección 2.3.5. En resumen, las ecuaciones de
estado en tiempo continuo del proceso están dadas por:

ẋ(t) = Ax(t) + Bu(t) (3.41)

y(t) = Cx(t) + Du(t) (3.42)


La solución de tales ecuaciones es:
 t
x(t) = Φ(t − t0 )x(t0 ) + Φ(t − τ )Bu(τ )dτ (3.43)
t0

donde t0 es el tiempo inicial, y:



Ak (t − t0 )k
Φ(t − t0 ) = eA(t−t0 ) = (3.44)
k!
k=0

El modelo en tiempo discreto está dado por:

x(kT + T ) = Gx(kT ) + Hu(kT ) (3.45)

donde T es el tiempo de muestreo. Las matrices G y H se obtienen de:

G = Φ(T ) (3.46)
3.2 Modelo del Proceso Grúa-Puente 77


 T
H= Φ(λ)(dλ) B (3.47)
0
La ecuación de salida en tiempo discreto viene a ser:

y(kT ) = Cx(kT ) + Du(kT ) (3.48)

en donde C y D son matrices constantes que no dependen del perı́odo de


muestreo T ; por consiguiente, son las mismas que para el caso continuo.

3.2. Modelo del Proceso Grúa-Puente


El modelado del proceso grúa-puente es similar al caso del péndulo in-
vertido. La única variante es que en este caso el péndulo debe apuntar hacia
abajo, tal como se muestra en la figura 3.4. Al igual que en el caso del
péndulo invertido, para mayor facilidad, se ha subdividido el proceso en dos
subsistemas: carro-varilla y motor-polea.
+ Fuerza de
u control
-
Servomotor
D.C. y

z F

Carro

θ
’ puente
Grua
y’

Figura 3.4: Proceso grúa-puente.

3.2.1. Modelo del Subsistema Carro-Varilla


El subsistema carro-varilla está representado en la figura 3.5. De dicha
figura podemos observar que los centros de gravedad de la varilla y de la
esfera son:
ze = z − le sen θ (3.49)
78 Modelado de Procesos

y y’
z

P z’
0
F z
lv
θ
2
111
000
000
111
le
000
111
000 m v g
111 lv

me g

Figura 3.5: Subsistema carro-varilla de la grúa-puente.

lv
zv = z −
sen θ (3.50)
2
Aplicando la ley de Newton para el movimiento lineal dada por la ecuación
(3.3) en la dirección z, obtenemos:

d2 d2 d2
mc z + me z e + mv zv = F (3.51)
dt2 dt2 dt2
Luego, sustituyendo ze y zv en función de z:

d2 d2 d2 lv
mc 2
z + me 2
(z − l e sen θ) + mv 2
(z − sen θ) = F (3.52)
dt dt dt 2
y desarrollando las derivadas, tenemos:

lv lv
(mc +me +mv )z̈+(me le +mv )(sen θ)θ̇2 −(me le +mv )(cos θ)θ̈ = F (3.53)
2 2
Ahora, aplicando en la figura 3.5 la segunda ley de Newton para el movimien-
to rotatorio dada por la ecuación (3.7) alrededor del punto P:

lv lv
(Je + Jv )θ̈ = me z̈(cos θ)le + mv z̈(cos θ) − me g(senθ)le − mv g(sen θ)
2 2
(3.54)
3.2 Modelo del Proceso Grúa-Puente 79

y reordenando, obtenemos:
lv lv
(me le + mv )z̈(cos θ) − (me le + mv )g(sen θ) = (Je + Jv )θ̈ (3.55)
2 2
donde:
lv2
Je = me le2 ; Jv = mv
3

3.2.2. Modelo del Subsistema Motor-Polea


Este subsistema es el mismo que se desarrolló para el péndulo invertido
en la subsección 3.1.2, ecuación (3.20):

Km KA Jeq Beq Km Kb
F = u − 2 2 z̈ − + ż
Ra n rp n rp n2 rp2 Ra n2 rp2
Las ecuaciones (3.53), (3.55) y (3.20) representan el modelo matemático del
proceso grúa-puente controlado por la corriente de armadura. Tales ecua-
ciones pueden ser escritas en forma compacta como sigue:
M1 z̈ + M2 (sen θ)θ̇2 − M2 (cos θ)θ̈ − F = 0 (3.56)
− M2 g(sen θ) + M2 z̈(cos θ) − J1 θ̈ = 0 (3.57)
F = Kx KA u − J2 z̈ − Bx ż (3.58)
donde:
lv
M1 = mc + me + mv ; M2 = me le + mv
2
Jeq
J1 = Je + Jv ; J2 =
n2 rp2
Km Beq Kb Km
Kx = ; Bx = 2 2
+ 2 2
Ra nrp n rp n rp Ra

3.2.3. Representación en el Espacio de Estado


Las ecuaciones arriba obtenidas se representan en el espacio de estados
mediante la siguiente asignación de variables:
x1 = θ (3.59)
x2 = θ̇ (3.60)
x3 = z (3.61)
x4 = ż (3.62)
80 Modelado de Procesos

Escribiendo las ecuaciones en el espacio de estado:


 
  x2
ẋ1  −M2 (sin x1 )(cos x1 )x22 −Bx (cos x1 )x4 −(M1 +J2 )g(sin x1 )+Kx (cos x1 )KA u 
 ẋ2   (−M2 (cos2 x1 )+(M1 +J2 )J1 )/M2

   
 ẋ3  =  x4 
 
ẋ4 −M22 g(sin x1 )(cos x1 )−J1 M2 (sin x1 )x22 −J1 Bx x4 +J1 Kx KA u
2 2
−M2 (cos x1 )+(M1 +J2 )J1
(3.63)
y puesto que tenemos como salidas disponibles el desplazamiento angular de
la varilla y el desplazamiento del carro, tendremos entonces como ecuación
de salida la siguiente expresión:

y = Cx (3.64)

donde:

1 0 0 0
C= (3.65)
0 0 1 0

3.2.4. Obtención del Modelo Lineal


Para obtener el modelo lineal del sistema grúa-puente, empleamos la
ecuación (3.36) desarrollada en la subsección 3.1.4, como sigue:

ẋ = Ax + Bu (3.66)

donde:  
0 1 0 0
 −(M1 +J2 )M2 g −Bx M2 
 (M1 +J2 )J1 −M22
0 0 (M1 +J2 )J1 −M22 
A=


 (3.67)
 0 0 0 1 
−M22 g −J1 Bx
(M1 +J2 )J1 −M22
0 0 (M1 +J2 )J1 −M22
y  
0
 Kx M2 KA 
 (M1 +J2 )J1 −M22 
B=  (3.68)
 0 
J1 Kx KA
(M1 +J2 )J1 −M22

3.2.5. El Modelo en el Espacio de Estado Discreto


Para obtener el modelo en tiempo discreto podemos usar las expresiones
de las ecuaciones (3.46) y (3.47) ya discutidas anteriormente.
3.2 Modelo del Proceso Grúa-Puente 81

3.2.6. Resumen de Variables y Parámetros


La tabla 3.1 muestra las variables y parámetros para los procesos péndulo
invertido y grúa-puente. Los valores de los parámetros se obtuvieron de las
hojas de especificaciones y por medición.

3.2.7. Identificación de la Zona Muerta del Servomotor


Al analizar la curva velocidad vs. voltaje de entrada del servomotor (fi-
guras 3.6 y 3.7) se puede observar una zona muerta originada por la fricción
estática . Tal fricción iguala al torque necesario para comenzar a mover el
servomotor; es decir, debido a la presencia de la fricción estática, el servo-
motor permanece en reposo siempre que no reciba un nivel de voltaje que
supere un determinado umbral.

entrada vs salida
800

600

400

200
salida

−200

−400

−600

−800
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
entrada

Figura 3.6: Respuesta del servomotor sin compensar (voltaje vs. velocidad
angular).

Observar en la figura 3.7 que la zona muerta de velocidad nula se presenta


para valores de voltaje entre ± 0.1 volt. Tal zona muerta es una no linealidad
que puede introducir efectos no deseados en el control, por lo que debe ser
compensada mediante software, como sigue (ver figura 3.8):
82 Modelado de Procesos

Cuadro 3.1: Variables y parámetros valorados para los procesos péndulo


invertido y grúa-puente.

Sı́mbolo Descripción Valor/Fórmula


θ posición angular de la varilla
F fuerza aplicada al carro
θm posición angular del motor
z posición del carro
lv longitud de la varilla 0.767 m
le distancia entre P y la esfera
ze componente horizontal
zv componente horizontal
g gravedad 9.8 N
me masa de la esfera no usado
mv masa de la varilla 0.063095 kg
mc masa del carro 0.92 kg
mp masa de la polea 0.2 kg
KA ganancia del amplificador 14.9
Ra resistencia del motor 7.38 ohm
La inductancia del motor se despreció
Kb constante contraelectromotriz 31.0352×10−3 V/rad
Km constante de torque del motor 31.071×10−3 N-m/A
Jm inercia del eje primario del motor 1.9596×10−6 kg-m2
Bm fricción viscosa del eje primario 1.8342×10−3 N-m/rad/s
Jo inercia del eje secundario se despreció
Bo fricción viscosa del eje secundario se despreció
n factor de reducción de velocidad 1/19.741
rp radio de la polea 0.0648 m
Jp inercia de la polea mp rp2 /2
Jeq momento de inercia equivalente Jm + n2 (Jo + Jp )
Beq fricción viscosa equivalente Bm + n2 Bo
Je momento de inercia de la esfera me le2
Jv momento de inercia de la varilla mv lv2 /3
3.2 Modelo del Proceso Grúa-Puente 83

entrada vs salida
150

100

50
salida

−50

−100

−150
−0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4
entrada

Figura 3.7: Vista ampliada de la figura 3.6.

entrada vs salida
800

600

400

200
salida

−200

−400

−600

−800
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
entrada u

Figura 3.8: Respuesta del servomotor con zona muerta compensada.


84 Modelado de Procesos

si SE\~NAL_DE_CONTROL < 0
entonces VOLTAJE_HACIA_EL_MOTOR = SE\~NAL_DE_CONTROL - 0.1
si SE\~NAL_DE_CONTROL > 0
entonces VOLTAJE_HACIA_EL_MOTOR = SE\~NAL_DE_CONTROL + 0.1
si SE\~NAL_DE_CONTROL = 0
entonces VOLTAJE_HACIA_EL_MOTOR = SE\~NAL_DE_CONTROL

3.3. Modelo del Servomotor D.C. No Lineal


El servomotor D.C. (“Direct Current”) con carga no lineal es un proceso
de una entrada y una salida que comprende un subsistema eléctrico y un
subsistema mecánico. El subsistema eléctrico está compuesto por un gene-
rador PWM (“Pulse Width Modulation”), que opera conjuntamente con un
amplificador de potencia) y por un servomotor D.C. controlado por voltaje
de armadura. El subsistema mecánico presenta un engranaje reductor de
velocidad y una varilla metálica acoplada al eje del servomotor, a manera
de un brazo robótico de un grado de libertad. En el extremo de la varilla se
pueden acoplar cargas esféricas adicionales de masa Mo y radio Ro .
La figura 3.9 presenta la estructura del proceso no lineal a controlar. La
tabla 3.2 describe las variables y los valores de los parámetros.

I MO
T N1 RO
11
00
+ + 00
11
00
11
LO
u Kact eb Jm 00
11 m
- - 00
11
00
11
00
11 q
0000
1111
0000
TM 1111
0000ω m
1111 00
11
00
11
TL ω
R L 00
11
bm q 00
11
00
11
m 00
11 JL
00
11
00
11
N 2 = n N1 00
11
00
11 00000
11111
00
11 11111
00000
N2 00 11111
11 00000bL

Figura 3.9: Proceso: servomotor con carga no lineal.

3.3.1. El Subsistema Mecánico


La ecuación del subsistema mecánico se puede obtener aplicando la se-
gunda ley de Newton en el punto donde se acopla el eje del servomotor con
3.3 Modelo del Servomotor D.C. No Lineal 85

Cuadro 3.2: Parámetros y variables del servomotor con carga no lineal.

Sı́mbolo Descripción Valor/Fórmula


u tensión de entrada al proceso
Kact ganancia del amplificador 14.9
Va tensión de armadura Va = Kact u
R resistencia de armadura 7.38 ohm
L inductancia de armadura 4.64×10−2 H
I corriente de armadura
K constante del torque motor 31.071×10−3 N-m/A
T torque motor T = KI
TM torque de inercia motórica
TN torque: fricciones no lineales
TL torque inercial de la carga
TE torque del peso de la varilla/esfera
Jm inercia del motor 1.9062×10−6 kg-m2
JL inercia de la carga 3.5×10−7 kg-m2
bm coef. de fricción del motor 1.8338×10−6 N-m/rad/s
bL coef. de fricción de la carga 10−5 N-m/rad/s
Mo masa de la esfera 0, 0.01, 0.02, 0.045 kg
m masa de la varilla 0.06377 kg
L0 longitud de la varilla 0.776 m
R0 radio de la esfera 0.02 m
eb fuerza contra-electromotriz eb = Ewm
E constante de fuerza electromotriz 31.0352×10−3 V/rad/s
n relación de engranajes 19.741
g aceleración de la gravedad 9.81 m/s2
w velocidad angular de la carga
wm velocidad angular del eje wm = nw
qm posición angular del eje
q posición angular de la carga qm = nq
86 Modelado de Procesos

la varilla metálica (figura 3.9). El torque resultante nT que debe entregar el


servomotor para vencer todos los torques que se le oponen es:

nT = nTM + TE + TL + TN (3.69)

donde:
TM = Jm ẇm + bm wm = nJm ẇ + nbm w (3.70)
2 1
TL = (Mo L2o + Mo Ro2 + mL2o + JL )ẇ + bL w (3.71)
5 3
m
TE = gLo (Mo + )sen q (3.72)
2
Reemplazando las ecuaciones (3.70), (3.71) y (3.72) en la ecuación (3.69) se
obtiene:
nTm = M ẇ + Bw + N sen q + TN (3.73)

donde:
2 1
M = Jef f + M L2o + M Ro2 + mL2o ) (3.74)
5 3
m
N = gLo (M + ) (3.75)
2
Jef f = n2 Jm + JL (3.76)

B = n2 bm + bL (3.77)

3.3.2. El Subsistema Eléctrico


La tensión de armadura Va que permite controlar la velocidad del motor
viene expresada por:
Va = IR + LI˙ + eb (3.78)

donde eb es la tensión contraelectromotriz y es igual a:

eb = Ewm (3.79)

y la tensión de armadura Va es:

Va = uKact (3.80)
3.3 Modelo del Servomotor D.C. No Lineal 87

3.3.3. Conversión de Energı́a Eléctrica en Mecánica


La ecuación de conversión en energı́a eléctrica en mecánica es:

T = KI (3.81)

donde K es la constante del par motriz. Igualando las ecuaciones (3.78) y


(3.80) (notar que wm = nw) obtenemos:
Kact Enw R
I˙ = u− − I (3.82)
L L L
Empleando las ecuaciones (3.81) y (3.82) en (3.73) y despejando ẇ obtene-
mos:
N B 1 nKI
ẇ = − senq − w− TN + (3.83)
M M M M
Las ecuaciones (3.82) y (3.83) describen el modelo no lineal del proceso y
pueden tomar la siguiente representación:

ẋ = F (x) + G(x)u; y = H(x) (3.84)

Eligiendo como variables de estado: x1 = q (posición angular), x2 = ẋ1 =


q̇ = w (velocidad angular) y x3 = I (intensidad de corriente), podemos
obtener:

ẋ1 = x2
N B 1 nK
ẋ2 = −( )senx1 − x2 − TN + x3
M M M M
nE R Kact
ẋ3 = − x2 − x3 + u (3.85)
L L L
donde la salida es la posición x1 . Por consiguiente:
 
x2
F (x) =  −( M )senx1 − M x2 − M
N B 1
TN + nK 
M x3
− L x2 − L x3
nE R
 
0
G(x) =  0  ; H(x) = x1 (3.86)
Kact
L

Las matrices dadas en (8.38) representan el modelo matemático del proceso


considerando carga no lineal. La figura 3.10 muestra el diagrama de simu-
lación del proceso (archivo servsim.m) y la figura 3.11 muestra la respuesta
88 Modelado de Procesos

del proceso a un escalón para los casos con L = 0 y L = 0. Dichas respuestas


resultan muy similares debido a que la inductancia L es muy pequeña y para
fines prácticos puede despreciarse, con lo cual el orden del proceso no lineal
queda reducido a uno de segundo. Para simular el proceso usando servsim.m
se debe ejecutar primero el archivo de datos servpar.m.

cc
gan1 fricción de
Coulomb
Kact + n*K − 1 w 1 q
− +
R − Ms+B s
gan5
sum1subsistema sum2 subsistema Integrador gráfico
eléctrico mecánico
u n*E
gan2 N MATLAB
Function
gan3 seno

Figura 3.10: Diagrama de bloques del proceso no lineal.

1.4

1.2
Posición q (rad); entrada u (voltios)

0.8

0.6

u
0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 3.11: Respuesta del proceso no lineal a un escalón.


3.3 Modelo del Servomotor D.C. No Lineal 89

Considerando L=0, la corriente de armadura resulta:


Kact nE
I= u− w (3.87)
R R
y la ecuación (8.38) pasa a ser:
 
 x2 
F (x) = n2 KE 1
−MN
senx1 − B
M + MR x2 − M TN


0
G(x) = nKKact ; H(x) = x1 (3.88)
RM u

3.3.4. Modelo y Compensación de no Linealidades


El torque TN se origina por la fricción estática TF y por la fricción de
Coulomb TC . TF es el torque necesario a vencer para que el servomotor
comience a moverse. Cuando el servomotor ya está en movimiento, aparece
el torque de fricción de Coulomb TC oponiéndose a dicho movimiento. Tales
torques pueden modelarse como:

TF = CF sign(u); TC = CC sign(w) (3.89)

donde la función sign(.) toma el valor +1 cuando el argumento es positivo


y −1 cuando es negativo. Para el servomotor empleado se ha determinado
experimentalmente [2] que CF ≈ CC = 0,15.
Nuestro problema es entonces compensar (eliminar) el torque TN de la
ecuación (3.88). Para ello definimos:
R
u=v+ TN ; (3.90)
nKKact
Reemplazando la ecuación (3.90) en (3.88) obtenemos una ecuación com-
pensada de la forma:

N B n2 KE nKKact
ẋ2 = − senx1 − + x2 + v (3.91)
M M MR RM

Asumiendo en (3.90) que TN = TC = CC sign(w), lo cual es cierto cuando


el sistema ya está en movimiento, el término no lineal resulta:
RCC
sign(w) = 0,12sign(w) (3.92)
nKKact
90 Modelado de Procesos

La ecuación 3.92 indica que en la implementación del software del sistema


de control debemos compensar la señal de control u en ± 0.12 volt. Experi-
mentalmente, un valor de 0.2 ha generado buenos resultados.
Por otra parte, debido a que valores grandes de la señal de control u
pueden saturar al servomotor, es que se requiere un limitador de la tensión
de control u. Este limitador puede también implementarse en el software
de control. Se ha determinado experimentalmente que para no entrar en la
zona de saturación del servomotor, la señal de control compensada no debe
sobrepasar el umbral de ± 1.4 voltios.

3.3.5. Linealización y Discretización del Proceso


Asumiendo que la señal de control u está debidamente compensada de
no linealidades y despreciando la inductancia L del servomotor, entonces,
para desviaciones pequeñas alrededor del origen se cumple que senx1 ≈ x1 .
Aplicando tal aproximación en la ecuación (3.88) obtenemos una ecuación
de estado lineal de la forma ẋ = Ac x+Bc u y una ecuación de salida y = Cc x,
donde:


0 1
Ac = 2E
−MN
−( M
B
+ KnMR )


0  
Bc = KnKact ; Cc = 1 0 (3.93)
MR

A tal resultado también se puede llegar si aplicáramos la técnica del jaco-


biano. La función de transferencia Gp (s) del proceso puede determinarse
mediante la relación:
y(s)
Gp (s) = = Cc [sI − Ac ]−1 Bc (3.94)
u(s)

La función de transferencia de pulso Gp (z) se determina como sigue:




y(z) −1 Gp (s)
Gp (z) = = (1 − z )Z (3.95)
u(z) s

donde Z[.] es el operador transformada z. Dicha función de transferencia


depende del tiempo de muestreo T y posee la siguiente estructura:

y(z) b1 z + b2 b1 z −1 + b2 z −2
Gp (z) = = 2 = (3.96)
u(z) z + a1 z + a2 1 + a1 z −1 + a2 z −2
3.4 Problemas Resueltos 91

Su correspondiente ecuación de diferencias es:

y(k) = −a1 y(k − 1) − a2 y(k − 2) + b1 u(k − 1) + b2 u(k − 2) (3.97)

Dado que un mismo proceso puede tener múltiples representaciones de esta-


do, a partir de la ecuación (3.96) podemos determinar diversas representa-
ciones de estado de la forma:

x(k + 1) = Gx(k) + Hu(k) (3.98)


y(kT ) = Cx(kT ) (3.99)

donde G, H y C son las matrices de estado, de control y de salida, respectiva-


mente, con dimensiones apropiadas. La representación canónica controlable
del proceso (primera forma, ver la subsección 2.3.5), resulta:



0 1 0  
G= ; H= ; C = b2 − a2 b0 b1 − a1 b0 ; D = [0]
−a2 −a1 1
(3.100)
Tener en cuenta que para nuestro proceso b0 = 0. Si seleccionamos como
variables de estado x1 = y(k), x2 (k) = y(k + 1) − b1 u(k), obtendremos la
segunda forma canónica controlable (subsección 2.3.5):



0 1 b1  
G= ; H= ; C = 1 0 ; D = [0]
−a2 −a1 b2 − a1 b1
(3.101)
La función de transferencia de pulso del proceso también se calcula de:

y(z) b1 z −1 + b2 z −2
Gp (z) = = C(zI − G)−1 H = (3.102)
u(z) 1 + a1 z −1 + a2 z −2

3.4. Problemas Resueltos


Los procesos péndulo invertido, grúa-puente y servomotor con carga no
lineal descritos en las secciones anteriores, serán usados en las aplicaciones en
tiempo real. Los procesos que a continuación se describen serán empleados
para validar los diferentes algoritmos de control, los cuales se tratan con
detalle en los capı́tulos siguientes. Para cada proceso en estudio se pide:

Determinar si el proceso es completamente controlable y/o completa-


mente observable.
92 Modelado de Procesos

Calcular los eigenvalores del proceso, tanto en el dominio continuo


como en el dominio discreto.

Seleccionar un tiempo de muestreo y determinar el modelo del proceso


en el espacio de estado discreto. Tener en cuenta que el tiempo de
muestreo seleccionado no necesariamente será usado cuando el proceso
sea controlado digitalmente. Veremos que la elección del tiempo de
muestreo es a conveniencia del algoritmo empleado.

Graficar las respuestas del proceso continuo y del proceso discretizado


cuando las señales de entrada son del tipo escalón.

La solución a cada problema se presenta en archivos m (con extensión m),


los cuales pueden ser ejecutados en el ambiente de trabajo de MATLAB.
Las respuestas al escalón se muestran en las figuras correspondientes.

Problema 3.1

La figura 3.12 muestra el diagrama de cuerpo libre del sistema de suspen-


sión de la rueda de un bus (normalmente un bus posee cuatro de tales
sistemas), donde m1 = 2500 kg es la masa que soporta el sistema de sus-
pensión, m2 = 320 kg es la masa del sistema de suspensión, k1 = 80000
N/m es la constante del resorte de suspensión, k2 = 500000 N/m es la cons-
tante del resorte del aro más la rueda, b1 = 350 N-s/m es la constante de
amortiguamiento de la suspensión y b2 = 15020 N-s/m es la constante de
amortiguamiento del aro más la rueda. Este modelo se encuentra en el sitio
www.engin.umich.edu/group/ctm/index.html.
Un buen sistema de suspensión debe tratar de eliminar en el tiempo más
corto posible las oscilaciones producidas por protuberancias, desniveles y
huecos en la pista. Teniendo en cuenta que la distancia x2 −w (la deformación
de la rueda) es despreciable, entonces podemos usar la distancia x1 − x2
como la salida de nuestro proceso, dado que la distancia x1 − w es difı́cil
de medir. El disturbio w puede modelarse como un escalón. Dicho disturbio
puede ser provocado, por ejemplo, cuando el bus está saliendo de un desnivel
pronunciado de corta longitud. Las ecuaciones del movimiento que gobiernan
el sistema de suspensión son:

m1 x¨1 = −b1 (ẋ1 − ẋ2 ) − k1 (x1 − x2 ) + u

m2 x¨2 = b1 (ẋ1 − ẋ2 ) + k1 (x1 − x2 ) + b2 (ẇ − ẋ2 ) + k2 (w − x2 )


3.4 Problemas Resueltos 93

Masa de 1/4
x1 m1
del bus

k1 u b1

x2 Masa de la m2
suspension

k2 b2
w

Figura 3.12: Sistema de suspensión de la rueda de un bus.

Se puede demostrar que las ecuaciones de estado y de salida del proceso son:
        
ẋ1 0 1 0 0 x1 0 0
 ẍ1   a21 0 a23 − m b1  
x˙1   1   
 = 1 
  +  m1  u+  −ab21 
2 w
 ẏ1   − b2 0 a33 1  y1    0   − m2
m2
1 1
ẏ2 k2
m2 0 a43 0 y2 m1 + m2 −m k2
2

 
x1

   x˙1    u
y= 0 0 1 0  y1 
+ 0 0
w
y2
donde:
y1 = x1 − x2


k1 k1 k2 1 1
y2 = − + y1 − (w − x2 ) + + u dt
m1 m2 m2 m1 m2

b1 b2 b1 b1 b1 b2 k1
a21 = − ; a23 = + + −
m1 m2 m1 m1 m2 m2 m1

b1 b1 b2 k1 k1 k2
a33 = − + + ; a43 = − + +
m1 m2 m2 m1 m2 m2
% P3_1P3.m SOLUCION AL PROBLEMA 3.1
clear all
94 Modelado de Procesos

% PARAMETROS DEL PROCESO


m1 = 2500; k1 = 80000; b1 = 350;
m2 = 320; k2 = 500000; b2 = 15020;
a23 = (b1/m1)*(b1/m1+b1/m2+b2/m2)-k1/m1;
a33 = -(b1/m1+b1/m2+b2/m2);
a43 = -(k1/m1+k1/m2+k2/m2);
% MODELO LINEAL
A = [0 1 0 0
-b1*b2/(m1*m2) 0 a23 -b1/m1
b2/m2 0 a33 1
k2/m2 0 a43 0];
B = [0 0;1/m1 b1*b2/(m1*m2);0 -b2/m2;(1/m1+1/m2) -k2/m2];
C = [0 0 1 0]; D = [0 0];
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 4 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 4 => COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA(1) = -23.9758-35.1869i; eigA(2) = -23.9758 +35.1869i;
% eigA(3) = -0.1098 - 5.2504i; eigA(4) = -0.1098 + 5.2504i;
% CONVERSION AL ESPACIO DISCRETO
T = 0.1; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG(1) = 0.7386 + 0.2712i; eigG(2) = 0.7386 - 0.2712i;
% eigG(3) = 0.9975 + 0.0524i; eigG(4) = 0.9975 - 0.0524i;

% G =
% 0.9995 0.0100 -0.0010 0.0000
% -0.1306 0.9995 -0.1834 -0.0024
% 0.4271 0.0022 0.5513 0.0077
% 11.5437 0.0643 -14.1982 0.9221
% H =
% 0.0000 0.0005
% 0.0000 0.1306
% 0.0000 -0.4271
% 0.0000 -11.5437
% RESPUESTAS AL ESCALON
[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(221)
plot(t,Y(:,1)); grid
xlabel(’Tiempo en segundos’)
3.4 Problemas Resueltos 95

ylabel(’y(t) para u=1, w=0’)


subplot(223)
plot(t,Y(:,2)); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(t) para u=0, w=1’)
subplot(222)
plot(tt,YY(:,1)); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(k) para u=1, w=0’)
subplot(224)
plot(tt,YY(:,2)); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(k) para u=0, w=1’)
print -deps -f P3_1P3

−5 −5
x 10 x 10
2.5 2.5
y(k) para u=1, w=0
y(t) para u=1, w=0

2 2

1.5 1.5

1 1

0.5 0.5

0 0
0 50 100 150 0 50 100 150
Tiempo en segundos Tiempo en segundos

1 1
y(k) para u=0, w=1
y(t) para u=0, w=1

0.5 0.5

0 0

−0.5 −0.5

−1 −1
0 50 100 150 0 50 100 150
Tiempo en segundos Tiempo en segundos

Figura 3.13: Respuestas al escalón para el sistema de suspensión.


96 Modelado de Procesos

Problema 3.2

La dinámica de un avión puede ser descrita por varios conjuntos acoplados de


ecuaciones diferenciales no lineales. Sin embargo, bajo ciertas suposiciones,
tales ecuaciones pueden ser desacopladas y linealizadas para obtener dos
conjuntos: las ecuaciones longitudinales y las ecuaciones laterales. El control
de la inclinación θ del avión mostrado en la figura 3.14 es un problema
longitudinal.
Empuje
x

θ
Impulso α

γ
e
x’
Arrastre

δe
z
Peso
z’

Figura 3.14: Avión comercial en pleno vuelo.

Asumiendo que el avión está en su velocidad de crucero (altura y ve-


locidad constantes), entonces la resistencia de arrastre y la fuerza impulsora
se cancelan mientras que el empuje de elevación se iguala con el peso (ver
figura 3.14). Con tales consideraciones, se puede asumir que las ecuaciones
longitudinales del movimiento del avión (los datos corresponden a un avión
comercial Boeing) son:

α̇ = −0,313α + 56,7q + 0,232δe


q̇ = −0,0139α − 0,426q + 0,0203δe
θ̇ = 56,7q

donde α es el ángulo de ataque, q es la relación de inclinación, θ es el ángulo


de inclinación y δe es el ángulo del deflector de elevación. La función de
transferencia del proceso es:
θ(s) 1,151s + 0,1774
= 3
δe (s) s + 0,739ss + 0,921s
3.4 Problemas Resueltos 97

mientras que sus ecuaciones de estado y de salida son:


      
α̇ −0,313 56,7 0 α 0,232
 q̇  =  −0,0139 −0,426 0   q  +  0,0203  δe
θ̇ 0 56,7 0 θ 0
 
  α
θ= 0 0 1  q 
θ
El modelo descrito está en www.engin.umich.edu/group/ctm/index.html.
% P3_2P4.m SOLUCION AL PROBLEMA 3.2
clear all
% MODELO DEL AVION (DINAMICA LONGITUDINAL)
A = [-0.313 56.7 0
-0.0139 -0.426 0
0 56.7 0];
B = [0.232;0.0203;0];
C = [0 0 1]; D = [0];
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 3 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 3 => COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA(1) = 1; eigA(2) = -0.3695 + 0.8860i;
% eigA(3) = 0.9963 - 0.0088i;
% CONVERSION AL ESPACIO DISCRETO
T = 0.1; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG(1) = 0; eigG(2) = 0.9963 + 0.0088i;
% eigG(3) = 0.9963 - 0.0088i;

% G =
% 0.9968 0.5649 0
% -0.0001 0.9957 0
% 0.0000 0.5658 1.0000
% H =
% 0.0024
% 0.0002
% 0.0001
% RESPUESTAS AL ESCALON
[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
98 Modelado de Procesos

tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(211)
plot(t,Y); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(t) continua’)
subplot(212)
plot(tt,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(k) discreta’)
print -deps -f P3_2P4

6
y(t) continua

0
0 5 10 15 20 25 30
Tiempo en segundos

4
y(k) discreta

0
0 5 10 15 20 25
Tiempo en segundos

Figura 3.15: Respuestas al escalón para el ángulo de inclinación del avión


comercial en vuelo.

Problema 3.3

La bola mostrada en la figura 3.16 puede rodar a lo largo de la barra con un


grado de libertad. Una leva conecta la barra con un engranaje que está ac-
cionado por un servomotor. Se desea diseñar un sistema de control que pueda
mantener la bola sobre la barra. Asumir que la bola rueda libre de fricción.
Los parámetros del proceso son: masa de la bola M = 0.11 kg, radio de la
bola R = 0.015 m, distancia del extremo de la leva al centro del engrana-
je d = 0.03 m, aceleración de la gravedad g = 9.8 m/s2 , longitud de la
3.4 Problemas Resueltos 99

barra L= 1.0 m e inercia de la barra J = 9.99×10−6 kg-m2 . Las variables


del proceso son: posición de la barra r, coordenada angular de la barra α
y posición angular del engranaje θ. Este modelo se encuentra en el sitio
www.engin.umich.edu/group/ctm/index.html.

r
L BARRA
ESFERA
LEVA
α
θ
ENGRANAJE
d

Figura 3.16: Bola balanceándose sobre una barra.

La ecuación dinámica que describe el proceso es:



J
0= + M r̈M gsenα − M rα̇2
R2
Cuando α es pequeño, senα ≈ α. Luego:

J
0= + M r̈M gα − M rα̇2
R2
Por tanto, la ecuación que relaciona α con θ puede aproximarse mediante la
siguiente relación lineal:
d
α= θ
L
La función de transferencia del proceso resulta:
r(s) M gd 1
=− $J %
θ(s) L R2 + M s2

y la ecuación de estado del proceso viene a ser:





 0

ṙ 0 1 r
= +  M gd  θ
r̈ 0 0 ṙ L J +M
R2
100 Modelado de Procesos

Sin embargo, usaremos cuatro estados, pues en lugar de controlar la posición


a través de θ, lo haremos a través de α̈, lo que en esencia significa que
queremos controlar el torque de la barra. Las ecuaciones de estado y de
salida para esta situación son:
   0 1 0

0  r   
ṙ 0
 r̈   0 0  M gd  0 
 ṙ   0 
 =
 L J2 +M  + u
 α̇   R
   0 
0 0 0 1  α
α̈ 0 0 0 0 α̇ 1

 
r
   ṙ 
y= 1 0 0 0  α 

α̇
El modelo descrito está en www.engin.umich.edu/group/ctm/index.html.

% P3_3P5.m SOLUCION AL PROBLRMA 3.3


clear all
% MODELO DE LA BOLA SOBRE LA BARRA
M=0.11; R=0.015; d=0.03; g=9.8; L=1; J=9.99e-6;
A = [0 1 0 0
0 0 M*g/(L*J/R^2+L*M) 0
0 0 0 1
0 0 0 0];
B = [0;0;0;1];
C = [1 0 0 0]; D = [0];
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 4 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 4 => COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA(1) = 0; eigA(2) = 0; eigA(3) = 0; eigA(4) = 0;

% CONVERSION AL ESPACIO DISCRETO


T = 0.1; % tiempo de muestreo
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG(1) = 1; eigG(2) = 1; eigG(3) = 1; eigG(4) = 1;

% G =
% 1.0000 0.1000 0.0010 0.0000
% 0 1.0000 0.0209 0.0010
3.4 Problemas Resueltos 101

% 0 0 1.0000 0.1000
% 0 0 0 1.0000
% H =
% 0.0000
% 0.0000
% 0.0050
% 0.1000

% RESPUESTAS AL ESCALON
TT=0:0.1:3;
[Y,X] = step(A,B,C,D,1,TT);
[YY,XX] = dstep(G,H,C,D,1,31);
subplot(211)
plot(TT,Y); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(t) continua’)
subplot(212)
plot(TT,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(k) discreta’)
print -deps -f P3_3P5

0.8

0.6
y(t) continua

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3
Tiempo en segundos

0.8

0.6
y(k) discreta

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3
Tiempo en segundos

Figura 3.17: Respuestas al escalón de la posición de la bola sobre la barra.


102 Modelado de Procesos

Problema 3.4

La figura 3.18 muestra un horno de laboratorio para controlar temperaturas


con precisión. El modelo de este proceso se encuentra en la referencia [15].
Asumiendo que existe buena mezcla de aire caliente, el calor entregado al
horno se modela como:
d Vc2 Θi − Θo
c (Θi − Θo ) = Qc − Qe ; Qc = ; Qe =
dt R r
donde Θi es la temperatura interior en K o en o C, Θo es la temperatura
exterior en K o en o C, Qc es el flujo de calefacción en J/s o watt, Qe es el
flujo de pérdida en J/s o watt, c es la capacidad térmica en J/K, r es la
resistencia térmica en K/watt, R es la resistencia eléctrica en ohm y Vc es el
voltaje de calefacción. Notar que podemos usar K o o C, pues las operaciones
derivada o diferencia eliminan el valor 273 de: K = 273 + o C.
11111111111111111111111
00000000000000000000000
00000000000000000000000
11111111111111111111111
00000000000000000000000
11111111111111111111111
000
111 000
111
Calor perdido
000 10
111 000 Q o
111
000
111 000
111
Calentador electrico
+
000
111 0000
1111
0
1 000
111
000
111 0000
1111
0000
1111 Calor entregado
000
111
000
111 0000
1111 111111111
000000000 000
111
Vc
000
111 0000
1111 Qc
000
111 Temperatura
000
111
000
111 1010
0000
1111 Temperatura 000
111
000
111
exterior
Θo
11111111111111111
00000000000000000
_
000
111 0
1 interior Θi 000
111
111
000
00000000000000000000000
11111111111111111111111 111
000
111
000
11111111111111111111111
00000000000000000000000 111
000
11111111111111111111111
00000000000000000000000
Figura 3.18: Horno de laboratorio.

Si Θo se considera constante, la dinámica del horno se describe como:


dΘi 1 1 1 2
+ Θi = Θo + V
dt rc rc Rc c
y cuando Θi alcanza su estado estacionario Θ̄i :
r 2
Θ̄i = Θ̄o + V
R c
La tabla 3.3 contiene datos experimentales de la caı́da de temperatura cuan-
do se apaga el horno. La tabla 3.4 tabula el voltaje de calentamiento versus
la temperatura interior en estado estable. Para ambas tablas la temperatura
exterior es de 30 o C.
3.4 Problemas Resueltos 103

Cuadro 3.3: Datos de caı́da de temperatura.


Tiempo Temperatura (o C)
14:23:10 120.0
14:31:00 108.0
14:39:30 92.0
14:48:35 80.5
15:05:00 63.0
15:34:00 40.5

Cuadro 3.4: Temperaturas del horno en estado estable.


Voltaje Temperatura (o C)
9.8 34.1
20.0 50.5
29.5 74.0
40.0 110.0

La curva exponencial 120e−t/τ obtenida con los datos de la tabla 3.3 permite
calcular su constante de tiempo τ = rc = 3000 s. La curva cuadrática
obtenida con los datos de la tabla 3.4 permite obtener r/R = 5 × 10−2 . Por
consiguiente, la dinámica del horno resulta:

dΘi 1 1 1
=− Θi + Θ0 + V 2 = f (Θi , Θo , Vc )
dt 3000 3000 60000 c
Para efectos de linealización podemos definir las siguientes variables:

θi = Θi − Θ̄i ; θo = Θo − Θ̄o ; vc = Vc − V̄c

Entonces, la ecuación linealizada empleando el jacobiano para el punto de


operación Θ̄i = 50 o C, Θ̄e = 30 o C, V̄c = 20 volt, resulta:




dθi ∂f ∂f ∂f
= θi + θo + vc
dt ∂Θi Θ̄i ∂Θo Θ̄o ∂Vc V̄c

dθi 1 1 1
=− θi + θo + vc
dt 3000 3000 1500
104 Modelado de Procesos

% P3_4P6.m SOLUCION AL PROBLEMA 3.4


clear all
% ECUACION DE ESTADO CONTINUA:
% dTeta(t)/dt = A*Teta(t) + B*vc(t) + E*Teta_o
A = [-1/3000];
B = [1/3000]; E = [1/1500];
C = [1]; D = [0];
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 1 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 1 => COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA = A = -1/3000; % POR SER PROCESO DE PRIMER ORDEN
% CONVERSION AL ESPACIO DISCRETO
T = 10; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
[G,F,C,D] = c2dm(A,E,C,D,T,’zoh’);
% ECUACION DE ESTADO DISCRETA:
% Teta(k+1) = G*Teta(k) + H*vc(k) + F*Teta_o
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG = G = 0.9967; % POR SER PROCESO DE PRIMER ORDEN
% G = 0.9967; H = 0.0067; F = 0.0333;
% RESPUESTAS AL ESCALON
[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(211)
plot(t,Y); grid
subplot(212)
ylabel(’y(t) continua’)
plot(tt,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’y(k) discreta’)
print -deps -f P3_4P6

Problema 3.5

La figura 3.20 muestra un monorriel de dos carros. El modelo de este proceso


se encuentra en la referencia [15]. Sean M1 la masa del carro de máquinas y
B1 sus fricciones debido al aire y al rodamiento. La fuerza lineal equivalente
para mover al proceso se designa como u(t). Los dos carros poseen masas
M2 y M3 respectivamente, y están sujetos a fricciones B2 y B3 . Los carros
se acoplan uno al otro con dispositivos no rı́gidos (resortes) que poseen
3.4 Problemas Resueltos 105

1.5
y(t) continua

0.5

0
0 2000 4000 6000 8000 10000 12000 14000 16000
Tiempo en segundos

1.5
y(k) discreta

0.5

0
0 2000 4000 6000 8000 10000 12000
Tiempo en segundos

Figura 3.19: Respuesta al escalón de la temperatura interior del horno de


laboratorio.

constantes K23 y K12 , y dispositivos amortiguadores de constantes B23 y


B12 . Las coordenadas de posición se designan como x1 , x2 y x3 . Se puede
demostrar que la ecuación de estado del sistema con vi = ẋi , i = 1, 2, 3 es:

ẋ = Ax + Bu(t)

donde:
 
0 1 0 0 0 0
 − K12 +B12
− B1M K12 B12 
 M1 M1 M1 0 0 
 0 1

 0 0 1 0 0 
A =  K12 
 M2 B12
− K12M+K 23
− B2 +BM232+B12 K23 B23

 M2 2 M2 M2 
 0 0 0 0 0 1 
+B23
0 0 K23
M3
B23
M3 −K23
M3 − B3M 3

x = [x1 v1 x2 v2 x3 v 3 ]T
B = [0 1 0 0 0 0]T
106 Modelado de Procesos

11
00
00
11 x1
00
11
00
11 x3
x2

00
11
00
11
00
11
B 23 B 12
00
11
00
11
2do. CARRO 1er. CARRO MAQUINA

00
11 M3 M2 M1
00
11 0000000
1111111
K 23 1111111
0000000 K 12 11111111
00000000
0000000000000000000000000000000000000
11111111111111111111111111111111111
0000000
1111111 0000000
1111111 00000000
11111111
11 B3 B2 B1

Figura 3.20: Proceso monorriel de dos carros más un carro de máquinas.

Si ubicamos tacómetros en una rueda de cada carro, entonces la ecuación


de salida toma la forma:
   
y1 0 α 0 0 0 0
 y2  =  0 0 0 α 0 0 x
y3 0 0 0 0 0 α

yi = αi vi , i = 1, 2, 3
donde αi es la constante tacométrica. Asumir los siguientes valores para
los parámetros: M2 = M3 = 2M1 = 2600 kg, K23 = K23 = 100000 N/m,
B23 = B12 = 500 N-s/m y B2 = B3 = 2B1 = 10000 N-s/m.
% P3_5P7.m SOLUCION AL PROBLEMA 3.5
clear all
% MODELO DEL MONORRIEL
M2=2600; M3=M2; M1=1300; K23=100000; K12=K23; alfa=1;
B23=500; B12=B23; B2=10000; B3=B2; B1=5000;
A = [0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B = [0;1;0;0;0;0];
C = [0 alfa 0 0 0 0
0 0 0 alfa 0 0
0 0 0 0 0 alfa]; D = [0;0;0];
3.4 Problemas Resueltos 107

% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO


rAB = rank(ctrb(A,B)); % rAB = 6 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 5 => NO ES COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA =
% -2.2710 +11.5757i
% -2.2710 -11.5757i
% -2.0560 + 6.9947i
% -2.0560 - 6.9947i
% 0.0000
% -3.8462
% CONVERSION AL ESPACIO DISCRETO
T = 0.1; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
rGC = rank(obsv(G,C)); % rGC = 6 => COMPLETAMENTE OBSERVABLE
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG =
% 0.3200 + 0.7298i
% 0.3200 - 0.7298i
% 0.6230 + 0.5242i
% 0.6230 - 0.5242i
% 1.0000
% 0.6807
% RESPUESTAS AL ESCALON
TT=0:0.1:3;
[Y,X] = step(A,B,C,D,1,TT);
[YY,XX] = dstep(G,H,C,D,1,31);
subplot(211)
plot(TT,Y); grid
xlabel(’Tiempo en segundos’)
ylabel(’Salidas continuas’)
subplot(212)
plot(TT,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’Salidas discretas’)
print -deps -f P3_5P7

Problema 3.6

La figura 3.22(a) muestra el diagrama de bloques simplificado del proceso


ascensor, cuyo modelo se encuentra en la referencia [15]. El problema a re-
solver es posicionar el ascensor adecuadamente. El voltaje de armadura v(t)
lo suministra un amplificador de potencia con saturación (figura 3.22(b)),
108 Modelado de Procesos

0.1

continuas
0.08

0.06

Salidas 0.04

0.02

0
0 0.5 1 1.5 2 2.5 3
Tiempo en segundos

0.1
discretas

0.08

0.06

0.04
Salidas

0.02

0
0 0.5 1 1.5 2 2.5 3
Tiempo en segundos

Figura 3.21: Respuestas al escalón de las velocidades del monorriel.

el cual no debe exceder los ± 200 volt. Esto significa una velocidad x1 en
estado estable de:


0,001
x̄1 = (200) = 1 m/s
s + 0,2 s=0
Observar en la figura 3.22(d) que la velocidad y posición del elevador se
miden separadamente. Entre pisos, el amplificador de potencia se encuen-
tra en estado de saturación, generando ± 200 volt, dependiendo de si el
ascensor está subiendo o bajando. Cuando el ascensor se aproxima al piso
donde debe parar, la operación del amplificador pasa a la zona lineal. En
esta situación debe actuar un controlador para posicionar suavemente al as-
censor empleando las mediciones de velocidad y posición del ascensor. Tales
mediciones, ası́ como también la medición del voltaje de armadura en la zona
de saturación, están disponibles para cada piso. La figura 3.22(d) muestra el
sistema de control digital del ascensor. Las ecuaciones de estado y de salida
del ascensor son:
      −3 
ẋ1 −0,2 0 0 0 x1 10
 ẋ2   1 0 0 0   x2   0 
   
   
 ẋ3  =  2 0 −2 0   x3   0 
+
ẋ4 5 0 0 −5 x4 0
3.4 Problemas Resueltos 109

 
y= 0 1 0 0 x

% P3_6P8.m SOLUCION AL PROBLEMA 3.6


clear all
% MODELO DEL ASCENSOR
A = [-0.2 0 0 0
1 0 0 0
2 0 -2 0
5 0 0 -5];
B = [1e-3;0;0;0];
C = [0 1 0 0]; D = [0];
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 4 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 2 => NO ES COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA =
% -5.0000
% 0
% -2.0000
% -0.2000
% CONVERSION AL ESPACIO DISCRETO
T = 0.2; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
rGC = rank(obsv(G,C)); % rGC = 2 => NO ES COMPLETAMENTE OBSERVABLE
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG =
% 0.3679
% 1.0000
% 0.6703
% 0.9608

% G =
% 0.9608 0 0 0
% 0.1961 1.0000 0 0
% 0.3227 0 0.6703 0
% 0.6176 0 0 0.3679

% H = 1.0e-003 *
% 0.1961
% 0.0197
% 0.0347
% 0.0725
% RESPUESTAS AL ESCALON
110 Modelado de Procesos

Voltaje de Voltaje de Velocidad del Posicion del


entrada armadura ascensor ascensor
v 0.001 1
u u v s + 0.2 x1 s x
2
Amplificador Motor actuador
de potencia mas tambor
con saturacion
2
x3 s + 2
5 Sensor de velocidad
x4 s + 5
Sensor de posicion (a)

v x1
200 0.005
3000
1

u t
-200 5 10 15

(b) (c)

Posicion del
x4 ascensor
u D/A con u v Actuador
mas x
memoria sensores 2
x4
Computador Amplificador
digital
x3 Voltaje de sensor de
armadura velocidad
v
A/D

sensor de posicion x3

(d)

Figura 3.22: Proceso ascensor.


3.4 Problemas Resueltos 111

[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(211)
plot(t,Y); grid
xlabel(’Tiempo en segundos’)
ylabel(’Salidas continuas’)
subplot(212)
plot(tt,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’Salidas discretas’)
print -deps -f P3_6P8

0.15
Salidas continuas

0.1

0.05

0
0 5 10 15 20 25 30
Tiempo en segundos

0.2
Salidas discretas

0.15

0.1

0.05

0
0 5 10 15 20 25 30 35 40 45
Tiempo en segundos

Figura 3.23: Respuestas al escalón de la posición del ascensor.

Problema 3.7

En la figura 3.24(a) se desea reducir la humedad h del material a granel de la


tolva. La banda transportadora que se desplaza a una velocidad constante
de v = 1 m/s, introduce el material a un horno de secado. El sensor de
humedad detecta hr a una distancia d = 10 m del horno y proporciona la
señal de voltaje vr . El horno puede modelarse como un proceso de primer
112 Modelado de Procesos

orden. La figura 3.24(b) muestra la F.T. del proceso. El modelo del proceso
en estudio se encuentra en la referencia [10].

Tolva Controlador
Referencia
Sensor
Horno

d
v

v Deposito
(b)
d/v

u hs hr vr
1 10
e -(d/v)s
s+1 s + 0.5
Horno Tiempo muerto Sensor

Figura 3.24: Sistema reductor de humedad.

% P3_7P10.m SOLUCION AL PROBLEMA 3.7


clear all

% MODELO DEL REDUCTOR DE HUMEDAD


% (num(s)/den(s))*exp(-d/v);
d=10; v=1; Tm = d/v; % TIEMPO MUERTO
[numd,dend] = pade(Tm,3); % APROXIMACION DE ORDEN 3
% APROXIMO exp(-Tm*s) EMPLEANDO UNA F.T. DE ORDEN 3
num = conv([0 0 10],numd); den = conv(dend,[1 1.5 0.5]);
[A,B,C,D] = tf2ss(num,den);
% CONTROLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 5 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 5 => COMPLETAMENTE OBSERVABLE
% EIGENVALORES
eigA = eig(A);
% eigA:
% -1.0000; -0.3678+0.3509i; -0.3678-0.3509i; -0.5000; -0.4644
% CONVERSION AL ESPACIO DISCRETO
T = 0.1; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
% G =
% 0.7510 -0.2604 -0.1435 -0.0421 -0.0052
3.4 Problemas Resueltos 113

% 0.0872 0.9865 -0.0075 -0.0022 -0.0003


% 0.0046 0.0995 0.9997 -0.0001 0.0000
% 0.0002 0.0050 0.1000 1.0000 0.0000
% 0.0000 0.0002 0.0050 0.1000 1.0000

% H =
% 0.0872
% 0.0046
% 0.0002
% 0.0000
% 0.0000
% EIGENVALORES:
eigG = eig(G);
% eigG =
% 0.9048; 0.9633+0.0338i; 0.9633-0.0338i; 0.9512; 0.9546

% RESPUESTAS AL ESCALON
[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(211)
plot(t,Y); grid
xlabel(’Tiempo en segundos’)
ylabel(’Humedad continua’)
subplot(212)
plot(tt,YY); grid
xlabel(’Tiempo en segundos’)
ylabel(’Humedad’)
print -deps -f P3_7P10

Problema 3.8

Los parámetros valorados del proceso mostrado en la figura 3.26 son: momen-
to de inercia del rotor J = 0.01 kg-m2 /s2 , constante electromotriz Ke = Kt
= 0.01 N-m/A, resistencia R = 12 ohm, resistencia de armadura RA R,
condensador C = 0.5 µF, inductancia de armadura L = 0.5 H, constante
torsional Kω = 1.8 N-m/rad.
Las ecuaciones que gobiernan la dinámica del proceso electromecánico
mostrado en la figura 3.26 se describen a continuación. Subproceso eléctrico:

1 vC dIM
IR = (v − vC ); C = IR − IM ; L = vC − e
R dt dt
114 Modelado de Procesos

20

continua
15

10

Humedad 5

−5
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

20
Humedad discreta

15

10

−5
0 5 10 15 20 25
Tiempo en segundos

Figura 3.25: Respuestas al escalón de la humedad con tiempo muerto.

Motor:
T = Kt IM ; e = Ke ω1
Resorte torsional más la inercia J:
dT dω2
= Kω (ω1 − ω2 ); J =T
dt dt
Seleccionando como variables de estado x1 = vC , x2 = IM y x3 = ω2 , y
como salida y = x3 , la representación de estado del proceso resulta:

ẋ = Ax + Bu; y = Cx
 1 
− RC − C1 0
A= Kω
LKω +Kt Ke 0 −Ke Kω
LKω +Kt Ke

Kt
0 J 0
 1

RC  
B =  0 ; C= 0 0 1
0
El modelo del proceso en estudio se encuentra en la referencia [10].
3.4 Problemas Resueltos 115

IR R L IM
+ Kω
+
v C e
-
-
T ω2
J
ω1

Figura 3.26: Sistema electromecánico.

% P3_8P11.m SOLUCION AL PROBLEMA 3.8


clear all
% MODELO DEL SISTEMA ELECTROMECANICO
J=0.01; Kt=0.01; Ke=Kt; R=12; RA=0; C=0.5; L=0.5; Kw=1.8;
A = [-1/(R*C) -1/C 0
Kw/(L*Kw+Kt*Ke) 0 0
0 Kt/J 0];
B = [1/(R*C);0;0];
C = [0 0 1]; D = [0];
% CONTRLABILIDAD Y OBSERVABILIDAD DEL PROCESO
rAB = rank(ctrb(A,B)); % rAB = 3 => COMPLETAMENTE CONTROLABLE
rAC = rank(obsv(A,C)); % rAC = 3 => COMPLETAMENTE OBSERVABLE
eigA = eig(A); % COMPUTA EIGENVALORES
% eigA =
% 0
% -0.0833 + 1.9982i
% -0.0833 - 1.9982i
% G =
% 0.9638 -0.1970 0
% 0.1970 0.9802 0
% 0.0099 0.0993 1.0000
% H =
% 0.0164
% 0.0017
% 0.0001
% CONVERSION AL ESPACIO DISCRETO
T = 0.1; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
rGC = rank(obsv(G,C)); % rGC = 2 => NO ES COMPLETAMENTE OBSERVABLE
eigG = eig(G); % COMPUTA EIGENVALORES
% eigG =
% 1.0000
116 Modelado de Procesos

% 0.9720 + 0.1968i
% 0.9720 - 0.1968i
% G =
% 0.9638 -0.1970 0
% 0.1970 0.9802 0
% 0.0099 0.0993 1.0000
% H =
% 0.0164
% 0.0017
% 0.0001
% RESPUESTAS AL ESCALON
[Y,X,t] = step(A,B,C,D);
[YY,XX] = dstep(G,H,C,D);
tt = linspace(0,size(YY,1)*T,size(YY,1));
subplot(211)
plot(t,Y)
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje en C (continuo)’)
grid
subplot(212)
plot(tt,YY)
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje en C (discreto)’)
grid
print -deps -f P3_8P11

3.5. Problemas Propuestos


Para cada proceso en estudio se pide:

Determinar el modelo matemático que describa la dinámica del proceso


(si no lo tuviera).

Determinar si el proceso es completamente controlable y/o completa-


mente observable.

Calcular los eigenvalores del proceso, tanto en el dominio continuo


como en el dominio discreto.

Seleccionar un tiempo de muestreo y determinar el modelo del proceso


en el espacio de estado discreto. Tener en cuenta que el tiempo de
muestreo seleccionado, no necesariamente será usado cuando el proceso
3.5 Problemas Propuestos 117

Voltaje en C (continuo)
4

0
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

5
Voltaje en C (discreto)

0
0 10 20 30 40 50 60
Tiempo en segundos

Figura 3.27: Respuestas al escalón del voltaje en el condensador.

sea controlado digitalmente. Veremos que la elección del tiempo de


muestreo es a conveniencia del algoritmo empleado.
Graficar las respuestas del proceso continuo y del proceso discretizado
cuando las señales de entrada (señales de referencia o señales disturbio)
son del tipo escalón.

Problema 3.9

Las ecuaciones del modelo linealizado para controlar la posición angular del
cañón ubicado en la la torreta de un tanque mediante un actuador hidráulico
son las siguientes (ver figura 3.28):
θ̇ = ω
ω̇ = p + dτ
Km Km
ṗ = −Ωm p − q+ ω + dp
J J
q̇ = −Kv Lv q − Kv K∆p Jp + Kv u + dq ; Lv = 1
donde θ es el ángulo de la torreta, ω es la velocidad angular de la torreta, p
es la aceleración angular producida por el actuador hidráulico, q es el des-
plazamiento de la servoválvula, Km = [8.46×106 , 1.96×106 ] (el primer valor
118 Modelado de Procesos

corresponde al ángulo de desplazamiento horizontal de la torreta, mientras


que el segundo valor, al ángulo de elevación) es la ganancia del servomotor,
J = [7900, 2070 lbf-ft-s2 ] es la inercia de la torreta, Ωm = [45.9, 17.3 rad/s]
es la frecuencia natural del motor, Kv = [94.3, 94.3] es la ganancia de la
servo válvula, y K∆p = [6.33×10−6 , 3.86×10−5 ] es el coeficiente de presión
diferencial. Las cantidades dτ , dp y dq representan disturbios que también
incluyen los efectos debido a las no linealidades que no fueron tomadas en
cuenta en el modelo linealizado. Es útil saber que 1 lbf-ft-s2 = 1.355 kg-m2 .
El modelo de este proceso de encuentra en la referencia [17].

Torreta del tanque

Angulo de
θ ’
elevacion


Azimut: angulo de
posicionamiento horizontal

Figura 3.28: Vistas lateral y horizontal de la torreta de un tanque.

Problema 3.10

Una columna de destilación es un proceso complejo que requiere una gran


cantidad de variables (más de 100) para describir su comportamiento en
forma muy aproximada. Sin embargo, haciendo las simplificaciones del caso
(tales como reducción del número de variables y linealización de los puntos
de operación) se puede llegar a un modelo reducido que pueda ser empleado
para el control del proceso. Ese es el caso de una columna de extracción
3.5 Problemas Propuestos 119

para la separación del isopropanol de una mezcla con contenido de agua,


empleando glycol como un extractante (ver figura 3.29).

Extractante

(glycol)

Agua
11
00
00 T1 T1
Mezcla de 1100
11
S: flujo lateral
de vapor
agua e iso-
propanol z
1 Propanol
Glycol T
11
00 T
00 2
11
2
00
11
z2
u 1 : vapor de
calentamiento
Producto (glycol) Concentraciones Temperaturas

Figura 3.29: Columna de destilación con los perfiles de concentración y de


temperatura.

Las ecuaciones de estado y de salida que gobiernan el proceso en cuestión


son las siguientes:

x = Ax + Bu + F d; y = Cx

donde:
 
∆Q1



 ∆V1  ∆u1 ∆xF A1 ∆T1
x= 
 ∆z1  ; u= ; d= ; y=
∆S ∆FA ∆T2
∆z2
   
a11 0 0 0 b11 0
 a21 a22 0 0   0 0 
A= 0
; B= 
a32 0 0   0 b32 
0 a42 ) 0 0 0 b42 )
 
0 0

 0 0  0 0 c13 0
F =
 f31
; C=
f32  0 0 0 c24
0 f42
120 Modelado de Procesos

con a11 = −30,3, a21 = 0,12 × 10−3 , a22 = −6,02, a32 = −3,77, a42 = −2,8,
b11 = 6,15 × 105 , b32 = 3,04, b42 = 0,052, f31 = 62,2, f32 = 5,76, f42 = 5,12,
c13 = −7,3 y c24 = −25. Las variables poseen el siguiente significado (ver
figura 3.29): ∆Q1 es el flujo de calor producido por el caldero de vapor, ∆V1
es el flujo de vapor producido por el caldero de vapor, ∆u1 es el vapor de
calefacción, ∆S es el flujo de vapor lateral, ∆z1 es la posición del cambio
de interfase entre el agua y el isopropanol, ∆z2 es la posición del cambio de
interfase entre el agua y el glycol, ∆T1 y ∆T2 son los cambios de temperatura
en z1 y z2 , ∆FA es el flujo de la mezcla de agua más isopropanol, y ∆xF A1
es la composición de la mezcla de agua más isopropanol. Notar que todas
las variables son residuales; es decir, representan los cambios con respecto al
estado de equilibrio. El modelo de este proceso de encuentra en la referencia
[17].

Problema 3.11

La figura 3.30 muestra el proceso servomotor con carga no lineal descrito en


la sección 3.2. Notar ahora que el eje de salida del mecanismo de reducción
está sujeto a la carga no lineal mediante una junta flexible que puede ser
modelada como un resorte rotacional de constante Kω =0.5 N/m/s. Consi-
derar dos casos: (a) cuando la inductancia de armadura es despreciable, y
(b) cuando no lo es.
Mo
R θm Ro
+ Ν1
Lo
u Va eb
m
- Kω
Jm
L Bm θ
Ν2 BL JL

Figura 3.30: Servomotor unido a la carga no lineal mediante un acoplamiento


flexible.

Problema 3.12

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito en


la sección 3.3, en donde la carga no lineal posee ahora dos grados de libertad.
3.5 Problemas Propuestos 121

La unión de la carga con el eje del servomotor no es flexible. Asumir que


Lo = 2L1 /3. Considerar dos casos: (a) cuando la inductancia de armadura
es despreciable, y (b) cuando no lo es.

Mo Ro
L1 τ
m1

Union
R θm no
+ Ν1 flexible
Lo θ
u Va eb
m
-
Jm
L Bm θ
Ν2 BL JL

Figura 3.31: Servomotor con carga no lineal de dos grados de libertad. El


acoplamiento de la carga al eje del motor no es flexible.

Problema 3.13

La figura 3.32 muestra el proceso péndulo doble no lineal. Las ecuaciones


que describen la dinámica del proceso péndulo simple fueron deducidas en la
sección 3.1. Para deducir el modelo matemático del proceso péndulo doble
conviene emplear las ecuaciones de Lagrange de la mecánica clásica. El
acoplamiento entre los dos péndulos no es flexible. Los dos péndulos poseen
la misma longitud y la masa esférica es de 0.02 kg.

Problema 3.14

La figura 3.33 muestra el proceso doble grúa-puente no lineal. Las ecuaciones


que describen la dinámica del proceso grúa-puente fueron deducidas en la
sección 3.2. Para deducir el modelo matemático del proceso doble grúa-
puente conviene emplear las ecuaciones de Lagrange de la mecánica clásica.
El acoplamiento entre las dos secciones de la varilla no es flexible. Las dos
varillas poseen la misma longitud y la masa esférica adicional es de 0.02 kg.
122 Modelado de Procesos

+ Fuerza de
u control
- τ
Servomotor
D.C. y
θ
z F

Carro

Figura 3.32: Proceso péndulo doble no lineal.

+ Fuerza de
u control
-
Servomotor
D.C. y

z F

Carro

θ
z
Doble
y’ ’ puente
τ grua

Figura 3.33: Proceso doble grúa-puente.


Capı́tulo 4

Control Óptimo

Este capı́tulo desarrolla un procedimiento para diseñar sistemas de con-


trol óptimo estacionarios y no estacionarios, usando una ley de control óptima
cuadrática que emplea las señales del proceso medidas directamente o estimadas
mediante un observador óptimo. Las configuraciones usadas para el diseño son
el regulador óptimo proporcional y el regulador óptimo proporcional integral. La
última configuración añade un integrador al controlador con el propósito de re-
ducir el error en estado estable. El procedimiento de diseño desarrollado, puede
ser aplicado tanto a sistemas univariables como a sistemas multivariables.
Dos aplicaciones validan el procedimiento de diseño desarrollado: control
óptimo de los procesos péndulo invertido y grúa puente. La penúltima sección,
problemas resueltos, está dedicada al diseño de sistemas de control óptimo
estacionarios para diferentes procesos. La última sección propone problemas de
diseño a resolver. Todos los archivos correspondientes a los ejercicios, proble-
mas, diseños, simulaciones y software desarrollados se pueden descargar del sitio
http://fiee.uni.edu.pe/728681F.

4.1. Introducción
El control óptimo trata de determinar el “mejor” sistema de control emple-
ando una técnica óptima de diseño. Esta técnica asume la formulación de una
función matemática denominada la función de costo, también conocida como
función de rendimiento, ı́ndice de rendimiento o ı́ndice de funcionamiento,
entre otras denominaciones. El procedimiento de diseño del sistema de con-
trol óptimo trata de encontrar un extremo (un mı́nimo o un máximo, dado el
caso) de una función de costo con el propósito de determinar los parámetros
124 Control Óptimo

óptimos de una ley de control; de allı́ el término óptimo. En la mayorı́a de


los casos, sin embargo, la búsqueda de la función de costo involucra proce-
dimientos de error y corrección; esto significa que no siempre podemos estar
seguros acerca de la forma exacta que deberı́a poseer la función de costo.
Para sistemas de control discretos, la función de costo generalmente posee
la forma siguiente:

N
J= L(x(k), r(k), u(k)) (4.1)
k=0

donde k es el tiempo discreto, N es el tiempo discreto final, x(k) es el vector


de estado, r(k) es el vector de referencia (entrada al sistema de control) y
u(k) es el vector de control óptimo. Esta ley de control (denominada también
fuerza o señal de control) constituye la entrada al proceso a controlar.
Para aplicaciones prácticas, el vector de control u debe estar siempre
acotado. Por ejemplo,
|ui (k)|  Ui (4.2)

donde cada elemento Ui es una constante determinada (el subı́ndice denota


la componente i del vector u). Para el caso de control acotado con mı́nimo
gasto de energı́a, se puede formular:

u2i (k)  Mi (4.3)

en donde cada elemento Mi es una constante dada. En cualquier caso, el


vector de control u debe satisfacer ciertas restricciones para poder ser un
vector de control admisible.
En este capı́tulo se desarrolla el procedimiento de diseño de un sistema
de control óptimo cuadrático discreto, denominado ası́ porque emplea una
función de costo cuadrática de dominio discreto. El resultado del diseño
proporciona una matriz de ganancia que multiplicada por el vector de es-
tado (real o estimado) del proceso, resulta en una ley de control óptima
cuadrática. El vector de estado estimado se determina usando un observador
óptimo.
Para demostrar la validez del procedimiento de diseño, se presentan dos
aplicaciones: diseño del sistema de control óptimo cuadrático para el proceso
péndulo invertido y para el proceso grúa-puente.
4.2 Control Óptimo Cuadrático No Estacionario 125

4.2. Control Óptimo Cuadrático No Estacionario


El problema del control óptimo cuadrático discreto no estacionario con-
siste en encontrar una adecuada ley de control óptima que sea capaz de
trasladar la dinámica del proceso desde un estado inicial x(0) hacia un es-
tado final deseado x(N ). La fuerza de control óptima u(k) se determina a
partir de la minimización de una función de costo cuadrática discreta. Esta
fuerza de control aplicada al proceso a controlar, provoca que dicho proceso
responda en forma óptima (o lo más cercano al óptimo). El control óptimo
cuadrático discreto se basa en la siguiente función de costo:
N −1
1 1  T 
J = xT (N )Sx(N ) + x (k)Qx(k) + uT (k)Ru(k) (4.4)
2 2
k=0

donde x(k) es el vector de estado de dimensión n y u(k) es el vector de


control de dimensión r. Mientras que la matriz hermitiana semidefinida pos-
itiva S (de dimensión n × n) pondera la importancia del estado final x(N ),
la matriz hermitiana semidefinida positiva Q (de dimensión n × n) pondera
la importancia del vector de estado x(k), y la matriz hermitiana definida
positiva R (de dimensión r × r) pondera la importancia de la señal de con-
trol u(k). La definición de matrices se trató en la subsección 1.2.4. La ley
del control óptima a usar emplea la realimentación del vector de estado x(k)
en su formulación y posee la forma siguiente:

u(k) = −K(k)x(k) (4.5)

donde K(k) (de dimensión r×n) es la matriz de ganancia del controlador, de-
nominada también matriz de realimentación de estados. Cuando la dinámica
del sistema de control es finita, K(k) es una matriz variante en el tiempo;
pero cuando dicha dinámica alcanza su estado estacionario (es decir, cuando
N → ∞), entonces K(k) se convierte en una matriz constante K. En esta
última situación, estaremos frente al denominado control óptimo en estado
estacionario, y es el que usaremos en nuestras aplicaciones. Una condición
necesaria para poder aplicar el control por realimentación de estados es que
el proceso sea completamente controlable. Por consiguiente, será necesario
verificar dicha condición en el proceso antes de iniciar el procedimiento de
diseño.
La realimentación de estados requiere además que todos los estados sean
disponibles y medibles. Si en el sistema a controlar existieran estados que
126 Control Óptimo

no pudieran ser medidos directamente, será necesario estimarlos. Esta esti-


mación puede ser realizada empleando la técnica de observación de estados
que será tratada en la sección 4.6. El requerimiento en esta parte es que el
proceso sea completamente observable.
La solución al problema de control óptimo cuadrático puede obtenerse
empleando varios enfoques, tales como el método de minimización usando
multiplicadores de Lagrange o mediante el principio de optimalidad [3],[4].
Asumamos que el proceso puede ser modelado mediante la siguiente ecuación
de estado discreta:

x(k + 1) = Gx(k) + Hu(k); x(0) = c (4.6)

donde G es la matriz de estado de dimensión n×n, H es la matriz de control


de dimensión n × r y x(0) es una condición inicial del vector de estado.
El proceso debe ser de estado completamente controlable; es decir, que
en un tiempo finito, sus estados puedan ser transferidos desde un estado
inicial arbitrario a cualquier otro estado deseado. La condición necesaria y
suficiente para la completa controlabilidad del proceso es que la matriz de
controlabilidad M dada por la siguiente expresión (subsección 2.3.6):
 
M = H GH · · · Gn−1 H (4.7)

posea rango completo; es decir, el rango de M debe ser igual al orden n del
proceso.
La solución al problema del control óptimo cuadrático no estacionario
está dada por la siguiente matriz de ganancia del controlador:

K(k) = [R + H T P (k + 1)H]−1 H T P (k + 1)G (4.8)

donde P (k + 1) es una matriz hermitiana definida positiva de dimensión


n × n. Dicha matriz es solución de la siguiente ecuación matricial de Riccati:

P (k) = Q+GT P (k +1)G−GT P (k +1)H[R+H T P (k +1)H]−1 H T P (k +1)G


(4.9)
La matriz P (K) de la ecuación (4.9) puede determinarse recursivamente
partiendo de la siguiente condición terminal para k = N :

P (N ) = S (4.10)

hasta llegar a la condición inicial P (0) para k = 0. El procedimiento es


como sigue: reemplazando P (N ) en la ecuación (4.8), podemos luego obtener
4.3 Control Óptimo Cuadrático Estacionario 127

K(N − 1) (matriz de ganancia en el tiempo k = N − 1). Del mismo modo,


con P (N − 1) podemos obtener K(N − 2), y asi sucesivamente hasta llegar a
obtener K(0). Las matrices de ganancia K(k) (para k = N − 1, N − 2, . . . , 0)
ası́ determinadas, se pueden usar ahora para calcular la ley de control dada
por la ecuación (4.5). Por otra parte, se puede demostrar que el valor mı́nimo
de la función de costo se determina de:
1
Jmin = xT (0)P (0)x(0) (4.11)
2

4.3. Control Óptimo Cuadrático Estacionario


En la sección anterior vimos que cuando la dinámica del sistema de
control evoluciona en un tiempo N finito, la ganancia de realimentación de
estados K(k) es una matriz variante en el tiempo. Sin embargo, cuando la
dinámica del sistema de control evoluciona hasta un tiempo N infinito, la
solución del control óptimo cuadrático pasa a ser una solución de estado
estacionario. En este caso, la ganancia K(k) se convierte en una matriz
constante K. Para N infinito, el término xT (N )Sx(N ) de la ecuación (4.4)
desaparece debido a que x(∞) = 0. Por consiguiente, la función de costo
para el estado estacionario toma la forma:

1  T 
J= x (k)Qx(k) + uT (k)Ru(k) (4.12)
2
k=0

Por otra parte, en el estado estacionario la matriz P (k) resulta una matriz
constante P . De este modo la ecuación de Riccati en estado estacionario
toma la forma:

P = Q + GT P G − GT P H[R + H T P H]−1 H T P G (4.13)

mientras que la matriz de ganancia K resulta:

K = [R + H T P H]−1 H T P G (4.14)

u(k) = −Kx(k) (4.15)


y la función de costo mı́nima viene a ser:
1
Jmin = xT (0)P x(0) (4.16)
2
128 Control Óptimo

Una forma de obtener la matriz P de la ecuación matricial (4.13), es em-


pleando la ecuación de Riccati en estado no estacionario dada en la ecuación
(4.9), pero invirtiendo la dirección del tiempo:

P (k + 1) = Q + GT P (k)G − GT P (k)H[R + H T P (k)H]−1 H T P (k)G (4.17)

La ecuación (4.17) permite determinar una matriz P de magnitud conver-


gente usando cálculo recursivo como sigue. Asumiendo inicialmente para k
= 0 que P (0) = 0, podemos obtener P (1); luego usar P (1) para obtener
P (2), y asi sucesivamente, hasta llegar a un tiempo discreto k para el cual
P (k) = P (k + 1) = P (k + 2) = · · ·. Con la matriz P ası́ determinada, pode-
mos calcular ahora la ganancia K usando la ecuación (4.14), para luego
obtener la ley de control dada por la ecuación (4.15). El diagrama de blo-
ques del control óptimo de estado estacionario se representa en la figura 4.1,
en donde se asume que todos los estados se encuentran disponibles. Para
operación satisfactoria del sistema de lazo cerrado mostrada en dicha figura,
todas las raı́ces de su ecuación caracterı́stica:

det[zI − G + HK] = 0 (4.18)

deben posicionarse dentro del cı́rculo unitario. Tales raı́ces se denominan


también valores propios, raı́ces caracterı́sticas, eigenvalores o modos de fun-
cionamiento.

u (k) x (k)
H I z -1

-K

Figura 4.1: Sistema de control óptimo a lazo cerrado.

4.4. El Regulador Óptimo Proporcional


El regulador es un sistema de control realimentado, en donde la salida
controlada sigue a una señal de referencia r(k) = µ(k) constante, donde
4.4 El Regulador Óptimo Proporcional 129

µ(k) es la función escalón. Restringiremos nuestro tratamiento a sistemas


univariables. Previamente debemos recalcar que la naturaleza proporcional
del regulador en cuestión, obliga a que se aplique con cuidado a sistemas
que no poseen un comportamiento integral. Este es el punto en discusión.
La figura 4.2 muestra el esquema de un regulador para la variable de
estado x2 del vector de estado x, empleando una ley de control de reali-
mentación de estados de la forma u = −Kx.

x (k)
r(k) + u(k) y(k) = x 2 (k)
k2 x (k+1) = G x (k) + Hu(k) .. C
+ .
- -
- - k1

k3
..
.
kn

Figura 4.2: Esquema del regulador óptimo proporcional.

Para una salida arbitraria, por ejemplo x2 :

u(k) = −k1 x1 (k) − k3 x3 (k) − · · · − kn xn (k) + k2 r(k) − k2 x2 (k)


= −Kx(k) + k2 r(k) (4.19)

Reemplazando u(k) en la ecuación de estado del proceso:

x(k + 1) = Gx(k) + Hu(k) = (G − HK)x(k) + Hk2 r(k) (4.20)

Empleando la transformada Z en (4.20), la función de transferencia de pulso


con r(z) = R µ(z) resulta:
z
y(z) = C(zI − G + HK)−1 Hk2 Rµ(z); µ(z) = (4.21)
z−1

Aplicando la propiedad del valor final (subsección 2.3.2) a y(z) obtenemos:

z−1
lı́m y(k) = lı́m y(z) = C(I − G + HK)−1 Hk2 R (4.22)
k→∞ z→1 z
130 Control Óptimo

La condición para que y = R es que C(I − G + HK)−1 Hk1 = 1, que no


siempre se cumple. Por ello, es necesario afectar a la señal de referencia por
una ganancia g de modo que:

gC(I − G + HK)−1 Hk2 R = 1 (4.23)

Este procedimiento será validado con los ejemplos 4.1 y 4.2.

4.5. Selección de las Matrices de Ponderación


La función de costo para determinar la ganancia K del controlador ópti-
mo estacionario está dada en la ecuación (4.12):

1  T 
J= x (k)Qx(k) + uT (k)Ru(k)
2
k=0

donde observamos que la matriz hermitiana R pondera la señal de control


u(k) mientras que la matriz hermitiana Q pondera el vector de estado x(k).
En la subsección 1.1.2 vimos que una matriz es hermitiana cuando su conju-
gada transpuesta (o su transpuesta conjugada) resulta en la misma matriz.
Por tanto, es válido que (R∗ )T = (RT )∗ = R y (Q∗ )T = (QT )∗ = Q. Cuando
las matrices R y Q son reales, entonces ambas deben ser simétricas y se
verifica que RT = R y QT = Q. Asimismo, en la subsección 1.2.4 se dijo
que una matriz cuadrada R es definida positiva si las raı́ces de su ecuación
caracterı́stica |zI − R| = 0 son todas positivas, mientras que una matriz
cuadrada Q es semidefinida positiva si las raı́ces de su ecuación caracterı́sti-
ca |zI − Q| = 0 son positivas o nulas (sin embargo, no todas las raı́ces deben
ser nulas).
La matriz R, por conveniencia, puede tomar la forma de una matriz real
diagonal:  
r1 0 . . . 0
 .. 
 0 r2 . 
R= . 
.. 
 .. . 
0 ... rp
donde los elementos r1 , r2 ,. . . ,rp deben ser todos positivos para que R sea
una matriz simétrica definida positiva. Para sistemas con una sola señal de
entrada, R resulta un escalar de valor positivo.
4.5 Selección de las Matrices de Ponderación 131

La matriz Q puede tomar también una forma diagonal:


 
q1 0 . . . 0
 .. 
 0 q2 . 
Q=  .. ..


 . . 
0 ... qn

donde los elementos qi pueden ser positivos y algunos de ellos nulos para
que Q sea una matriz simétrica semidefinida positiva.
Cada elemento qi o cada elemento ri dará un peso correspondiente a cada
variable de estado xi o a cada señal de control ui , respectivamente. El criterio
para escoger los pesos está en relación con la importancia que le demos a
cada variable o señal en cuestión. Para el caso del observador de estados,
las matrices de ponderación Re y Qe deben ser elegidas de tal forma que
la respuesta del observador sea dos o tres veces más rápida (regla práctica)
en comparación con la respuesta del proceso. Es decir, la salida y(k) del
proceso (ver figura 4.6) debe alcanzar su estado estacionario después que la
salida ŷ(k) del observador ya la haya alcanzado. Generalmente para que esto
ocurra, los elementos de Re deben ser bastante menores que los elementos
de Qe . Debemos tener en cuenta que un mayor peso en una de las variables
ocasiona una mejor respuesta con relación a tal variable, pero disminuye el
desempeño de las demás. Es entonces necesario balancear en forma adecuada
los pesos, de manera tal que obtengamos un desempeño general del sistema,
que se acerque en lo posible al óptimo y que evidentemente, cumpla las
especificaciones de diseño.

Ejemplo 4.1

El motor D.C. es un actuador muy popular en los sistemas de control porque


su movimiento rotatorio, mediante acoples adecuados en su eje, puede con-
vertirse fácilmente en movimiento de traslación. Eso se aprecia en fajas trans-
portadoras o en brazos manipuladores. La figura 4.3 muestra el circuito de
armadura del motor acoplado a una carga. Los parámetros del motor fueron
determinados experimentalmente, resultando: momento de inercia del rotor
J = 0.01 kg-m2 /s2 , coeficiente de fricción b = 0.1 N-s/m, constante electro-
motriz K = Ke = Kt = 0.01 N-m/A, resistencia de armadura R = 1 ohm e
inductancia de armadura L = 0.5 H.
Cabe anotar que el motor de este ejemplo no es el servomotor que estamos
usando para implementar los sistemas de control de los procesos descritos en
132 Control Óptimo

R L
+ T
+
.
V e=Kθ J
- - .

I b

Figura 4.3: Proceso motor D.C.

el capı́tulo 3. La “diferencia” entre un motor y un servomotor es subjetiva.


Generalmente se asocia a los servomotores con sistemas de control donde la
potencia involucrada es pequeña. Sin embargo, existen muchas excepciones.
Suponiendo que el rotor del motor y su eje son cuerpos rı́gidos, la dinámica
que describe al proceso motor D.C. es:
J θ̈ + bθ̇ = KI
dI
L + RI = V − K θ̇
dt
donde V es la fuente de voltaje de entrada, θ es la posición angular del eje, I
es la corriente de armadura, T = Kt I es el torque motórico y e = Ke θ̇ es la
fuerza contraelectromotriz. Diseñar el controlador óptimo estacionario que
estabilice la velocidad angular del eje del motor a 1 rad/s con las especifi-
caciones siguientes: tiempo de estabilización menor que 2 s, error en estado
estable menor al 1 % y sobreimpulso de la salida menor al 5 %.
Solución: Empleando la transformada de Laplace, la función de transferen-
cia del motor cuando la salida es la posición, resulta:
θ K
=
V s[(Js + b)(Ls + R) + K 2 ]
la cual posee comportamiento integral. Cuando la salida es la velocidad, la
función de transferencia es:
θ̇ K
=
V (Js + b)(Ls + R) + K 2
en la que podemos observar que no posee comportamiento integral. Eligiendo
x1 = θ̇ y x2 = I, las ecuaciones de estado y de salida resultan:





ẋ1 − Jb K
J x1 0
= + 1 V
ẋ2 −KL −RL
x2 L
4.5 Selección de las Matrices de Ponderación 133



  x1
y = x1 = 1 0 + DV ; D = [0]
x2
El programa ejem4 1.m resuelve el problema planteado y los resultados se
muestran en la figura 4.4.

% ejem4_1.m SOLUCION DEL EJEMPLO 4.1


clear all
J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5;
A = [-b/J K/J
-K/L -R/L];
B = [0;1/L];
Cc = [1 0]; Dc = [0];
% VERIFICAR CONTROLABILIDAD Y OBSERVABILIDAD
M = [B A*B]; N = [Cc’ A’*Cc’];
% rank(M)=rank(N)=n=2 => c.c y c.o.
[yRpta,xr] = step(A,B,Cc,Dc); % RESPUESTA AL ESCALON
T = 0.05; % SELECCIONADO CON LA INFORMACION ANTERIOR
[G,H,C,D] = c2dm(A,B,Cc,Dc,T,’zoh’); % CONVERSION A DISCRETO
Q = [100 0;0 1]; R = [0.1]; % MATRICES DE PONDERACION
[K,P,E] = dlqr(G,H,Q,R); k1 = K(1); % GANANCIA OPTIMA K
g = 1/(C*inv(eye(2)-G+H*K)*H*k1); % CORRECCION DE r(k)
x = [0;0]; N = 60; % CONDICION INICIAL
for k=1:N
r=1*g;
V(k) = -K*x + k1*r;
x = G*x + H*V(k);
y(k) = x(1);
end
% GRAFICOS
r = linspace(0,T*N,size(yRpta,1));
subplot(3,1,1)
plot(r,yRpta); ylabel(’yRpta (rad/s)’); grid;
t = linspace(0,T*N,N);
subplot(3,1,2)
plot(t,y); ylabel(’y (rad/s)’); grid;
subplot(3,1,3)
plot(t,V); ylabel(’V (voltios)’); grid;
xlabel(’Tiempo (s)’)
print -deps -f ejem4_1
% CALCULO RECURSIVO DE LA MATRIZ Pr Y CALCULO DE Kr
T = 15; Pr = zeros(2,2);
for i=1:T
Pr = Q + G’*Pr*G - G’*Pr*H*inv(R+H’*Pr*H)*H’*Pr*G;
134 Control Óptimo

end
Kr = inv(R + H’*P*H)*H’*P*G;
% SE CUMPLE QUE K=Kr Y P=Pr

0.1
yRpta (rad/s)

0.05

0
0 0.5 1 1.5 2 2.5 3

1.5
y (rad/s)

0.5

0
0 0.5 1 1.5 2 2.5 3

40
V (voltios)

20

0
0 0.5 1 1.5 2 2.5 3
Tiempo (s)

Figura 4.4: Respuesta yRpta (a lazo abierto) del motor D.C. a un escalón
de 1 rad/s. La velocidad angular controlada es y; la señal de control es V .

Ejemplo 4.2

Determine el controlador óptimo cuadrático estacionario que estabilice la


posición angular del eje del motor (descrito en el ejemplo 4.1) a 1 rad, con
las especificaciones siguientes: tiempo de estabilización menor que 2 s, error
en estado estable menor al 1 % y sobreimpulso a la salida menor al 5 %.
Solución: Eligiendo x1 = θ̇, x2 = I y x3 = θ, las ecuaciones de estado y de
salida resultan:
      
ẋ1 − Jb K
J 0 x1 0
 ẋ2  =  − K − R 0   x2  +  L1  V
L L
ẋ3 1 0 0 x3 0
 
  x1
y = x3 = 0 0 1  x2  + DV ; D = [0]
x3
4.5 Selección de las Matrices de Ponderación 135

El programa ejem4 2.m resuelve el problema planteado y los resultados se


muestran en la figura 4.5.

% ejem4_2.m SOLUCION DEL EJEMPLO 4.2


clear all
J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5;
A = [-b/J K/J 0
-K/L -R/L 0
1 0 0];
B = [0;1/L;0];
Cc = [0 0 1]; Dc = [0];
% VERIFICAR CONTROLABILIDAD Y OBSERVABILIDAD
M = [B A*B A^2*B]; N = [Cc’ A’*Cc’ A’^2*Cc’];
% rank(M) = rank(N) = n = 3 => c.c y c.o.
T = 0.05; % SELECCIONADO EN EL EJEMPLO 4.1
[G,H,C,D] = c2dm(A,B,Cc,Dc,T,’zoh’); % CONVERSION A DISCRETO
Q = [0.1 0 0;0 0.1 0;0 0 300]; R = [0.1];
% MATRICES DE PONDERACION
[K,P,E] = dlqr(G,H,Q,R); k3 = K(3); % GANANCIA OPTIMA K
g = 1/(C*inv(eye(3)-G+H*K)*H*k3); % CORRECCION DE r(k)
% COMO g = 1 NO SE REQUIERE FACTOR DE CORRECCION
x = [0;0;0]; N = 60; % CONDICION INICIAL
for k=1:N
r=1;
V(k) = -K*x + k3*r;
x = G*x + H*V(k);
y(k) = x(3);
end
% GRAFICOS
t = linspace(0,T*N,N);
subplot(2,1,1)
plot(t,y); ylabel(’y (rad)’); grid;
subplot(2,1,2)
plot(t,V); ylabel(’V (voltios)’); grid;
xlabel(’Tiempo (s)’)
print -deps -f ejem4_2
% CALCULO RECURSIVO DE LA MATRIZ Pr Y CALCULO DE Kr
T = 20; Pr = zeros(3,3);
for i=1:T
Pr = Q + G’*Pr*G - G’*Pr*H*inv(R+H’*Pr*H)*H’*Pr*G;
end
Kr = inv(R + H’*P*H)*H’*P*G;
% SE CUMPLE QUE K=Kr Y P=Pr
136 Control Óptimo

1.5

y (rad)
0.5

0
0 0.5 1 1.5 2 2.5 3

60

40
V (voltios)

20

−20
0 0.5 1 1.5 2 2.5 3
Tiempo (s)

Figura 4.5: Salida controlada y (posición angular) y señal de control V para


el motor D.C.

4.6. Diseño del Observador Óptimo Cuadrático


En muchos casos prácticos, sólo unas cuantas variables del vector de
estado x(k) del proceso son susceptibles de ser medidas en forma directa.
En tales situaciones necesitamos estimar dicho vector de estado; es decir,
requerimos hallar un vector de estado estimado x̂(k). Esto puede lograrse
mediante el empleo de un observador discreto de estados. El diseño de dicho
observador implica determinar su matriz de ganancia Ke , que puede ser
calculada a partir de la minimización de una función de costo cuadrática. El
diagrama de bloques del observador de estados se representa en la figura 4.6,
donde podemos notar que el observador emplea las mediciones de la salida
y(k) y de la señal de control u(k).
De la figura 4.6 podemos formular:

x(k + 1) = Gx(k) + Hu(k) (4.24)


y(k) = Cx(k) (4.25)

mientras que la ecuación del observador toma la forma:

x̂(k + 1) = Gx̂(k) + Hu(k) + Ke [y(k) − C x̂(k)] (4.26)


4.6 Diseño del Observador Óptimo Cuadrático 137

u(k) + x (k) y(k)


H I z −1 C
+
G

^
y(k) − y(k)
Ke
+
^x (k)
− +
H I z −1 C
+ +
+
G

Figura 4.6: Diagrama de bloques del observador de estados

donde x̂(k) es el vector de estado estimado de dimensión n, ŷ(k) representa


el vector de salida estimado de dimensión m, Ke es la matriz de ganancia
de realimentación del observador con dimensión n × m y C es la matriz de
salida de dimensión m × n. Reemplazando la ecuación (4.25) en (4.26) y
restando la ecuación resultante de (4.24), podemos obtener la ecuación del
error del observador:

e(k + 1) = [G − Ke C]e(k); e(k) = x(k) − x̂(k) (4.27)

mientras que su ecuación caracterı́stica toma la forma:

det[zI − G + Ke C] = 0 (4.28)

en donde la matriz Ke debe ser escogida apropiadamente para que el error


tienda a cero con una velocidad adecuada. Cabe mencionar también que las
raı́ces de dicha ecuación caracterı́stica deben posicionarse dentro del cı́rculo
unitario para operación satisfactoria del observador.
El observador que nos ocupa requiere que el proceso sea completamente
observable; es decir, que cualquier estado inicial pueda determinarse a partir
de la observación de los vectores de salida y de control, en un número finito
de perı́odos de muestreo. Ya es conocido que el criterio para observabilidad
completa requiere construir la siguiente matriz de observabilidad:

N = [ CT GT C T · · · (GT )n−1 C T ] (4.29)


138 Control Óptimo

La condición necesaria y suficiente para que el sistema sea completamente


observable es que la matriz N posea rango n (rango completo). Es decir, el
rango de N debe ser igual al orden del proceso.
Para calcular la matriz Ke podemos proceder en la misma forma en que
lo hicimos con la matriz de ganancia K del controlador; es decir, podemos
utilizar las ecuaciones que describen al sistema de control óptimo, convenien-
temente modificadas, para que nos permitan calcular Ke . El procedimiento
es como sigue. Dado que el determinante de una matriz y el de su transpuesta
son iguales, podemos modificar la forma de la ecuación (4.28) como sigue:

det[zI − G + Ke C] = det[(zI − G + Ke C)T ] = det[zI − GT + C T KeT ] (4.30)

Comparando la ecuación caracterı́stica del controlador de estados (4.18) con


la ecuación (4.30), podemos deducir que se tienen que hacer las siguientes
modificaciones:

G → GT ; H → CT ; K → KeT (4.31)

Empleando tales modificaciones en las estructuras de la ecuación de estado


del proceso x(k+1) = Gx(k)+Hu(k), de su ecuación de salida y(k) = Cx(k)
y de su ley de control u(k) = −Kx(k), obtendremos la siguiente ecuación
de estado:
α(k + 1) = GT α(k) + C T β(k) (4.32)
con una ley de control que posee la forma siguiente:

β(k) = −KeT α(k) (4.33)

Empleando las ecuaciones (4.32) y (4.33) en la función de costo siguiente:



1  T 
J= α (k)Qe α(k) + β T (k)Re β(k) (4.34)
2
k=0

entonces la correspondiente ecuación de Riccati toma la forma:

Pe = Qe + GPe GT − GPe C T [Re + CPe C T ]−1 CPe GT (4.35)

y la matriz de ganancia Ke viene dada por:

Ke = [Re + CPe C T ]−1 CPe GT (4.36)


4.7 El Regulador Óptimo Proporcional Integral 139

Para determinar Pe a partir de la ecuación (4.35), empleamos el mismo


procedimiento que para determinar P (sección 4.3). Es decir, para calcular
Pe , utilizaremos la siguiente ecuación recursiva:
Pe (k + 1) = Qe + GPe (k)GT − GPe (k)C T [Re + CPe (k)C T ]−1 CPe (k)GT
(4.37)

Ejemplo 4.3

Diseñar un observador óptimo para el proceso motor D.C. del ejemplo 4.2
asumiendo que se requiere observar los estados x1 , x2 y x3 .
Solución: Ver programa ejem4 3.m. En la figura 4.3 se muestra la evolu-
ción de los valores de algunos elementos de Pe hasta alcanzar el estado de
equilibrio.
% ejem4_3.m OBSERVADOR OPTIMO PARA EL MOTOR D.C.
clear all
J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5;
A = [-b/J K/J 0
-K/L -R/L 0
1 0 0];
B = [0;1/L;0];
Cc = [0 0 1]; Dc = [0];
T = 0.05; % SELECCIONADO EN EL EJEMPLO 4.1
[G,H,C,D] = c2dm(A,B,Cc,Dc,T,’zoh’); % CONVERSION A DISCRETO
Pe =zeros(3,3); % condicion inicial
Qe = [1 0 0;0 1 0;0 0 1]; Re = [1]; % TODOS CON IGUAL PESO
for k=1:40
Pe = Qe + G*Pe*G’ - G*Pe*C’*inv(Re + C*Pe*C’)*C*Pe*G’;
pe11(k) = Pe(1,1); pe21(k) = Pe(2,1); pe31(k) = Pe(3,1);
end
t = linspace(0,length(pe11),length(pe11)); % EJE DE TIEMPOS
plot(t,pe11,t,pe21,’--’,t,pe31,’-.’);
xlabel(’Muestras k’);
ylabel(’Algunos elementos de Pe’); grid
print -deps -f ejem4_3
Ke = inv(Re + C*Pe*C’)*C*Pe*G’; % GANANCIA DEL OBSERVADOR

4.7. El Regulador Óptimo Proporcional Integral


Generalmente es necesario añadir acción integral, al regulador propor-
cional visto en la sección anterior, debido a que errores de estado permanente
140 Control Óptimo

1.8

1.6

1.4
Algunos elementos de Pe

1.2

0.8

0.6

0.4

0.2

0
0 5 10 15 20 25 30 35 40
Muestras k

Figura 4.7: Algunos elementos de Pe : Pe (1, 1) (curva sólida), Pe (2, 1) (curva


en trazos) y Pe (3, 1) (curva con puntos y rayas).

pueden aparecer si los parámetros del proceso o su estructura (su ecuación


de estado) no han sido estimados con suficiente exactitud. Para procesos
que no poseen propiedades integradoras, la inclusión de acción integral en el
sistema de control permite obtener un error estacionario nulo. La figura 4.8
ilustra un regulador óptimo (propuesto en [3]) para sistemas univariables,
que incluye dicha acción integral en el sistema de control: un integrador con
señal de salida v(k) y una ganancia integral KI asociada. Siendo la señal de
r(k) v(k) u (k) x (k) y (k)
KI H I z−1 C
+ + + +
− + − +
I z−1 G

Figura 4.8: El regulador proporcional integral.

referencia r(k) un escalón unitario, de la figura 4.8 podemos deducir que las
4.7 El Regulador Óptimo Proporcional Integral 141

ecuaciones de estado y de salida del proceso son:

x(k + 1) = Gx(k) + Hu(k) (4.38)


y(k) = Cx(k) (4.39)

La señal de control u(k) viene dada por:

u(k) = −Kx(k) + KI v(k) (4.40)

donde la matriz de ganancia del controlador es:


 
K = K1 K2 · · · Kn (4.41)

La ecuación para el integrador resulta:

v(k) = v(k − 1) + r(k) − y(k) (4.42)

de donde se obtiene:

v(k + 1) = v(k) + r(k + 1) − y(k + 1)


= v(k) + r(k + 1) − C[Gx(k) + Hu(k)]
= (1 − CHKI )v(k) + (−CG + CHK)x(k) + r(k + 1)(4.43)

Empleando las ecuaciones (4.38) y (4.40) obtenemos:

x(k + 1) = Gx(k) + H[−Kx(k) + KI v(k)]


= (G − HK)x(k) + HKI v(k) (4.44)

y de las ecuaciones (4.43) y (4.44) y (4.39) deducimos:







x(k + 1) G − HK HKI x(k) 0
= + r(k + 1)
v(k + 1) −CG + CHK 1 − CHKI v(k) 1

(4.45)
  x(k)
y(k) = C 0 (4.46)
v(k)
En el estado de equilibrio (para k → ∞), los valores de x(k), u(k) y v(k)
toman valores estacionarios x(∞), u(∞) y v(∞). Ası́ la ecuación (4.45) se
convierte en:





x(∞) G − HK HKI x(∞) 0
= + (4.47)
v(∞) −CG + CHK 1 − CHKI v(∞) r
142 Control Óptimo

Si definimos:
x(k) − x(∞) = xe (k) (4.48)
v(k) − v(∞) = ve (k) (4.49)
y restamos ahora la ecuación (4.47) de (4.45), y luego usando las relaciones
(4.48) y (4.49) obtendremos:




xe (k + 1) G − HK HKI xe (k)
=
ve (k + 1) −CG + CHK 1 − CHKI ve (k)





G 0 xe (k) H   xe (k)
= + −K KI (4.50)
−CG I ve (k) −CH ve (k)

La ecuación (4.50) puede ser escrita como:

ξ(k + 1) = G̃ξ(k) + H̃w(k) (4.51)

w(k) = −K̃ξ(k) (4.52)


donde:

xe (k)
ξ(k) = (4.53)
ve (k)


G 0
G̃(k) = (4.54)
−CG I


H
H̃(k) = (4.55)
−CH
 
K̃(k) = K −KI (4.56)
Observar que la inclusión de un integrador en el sistema de control aumenta
en uno el orden del sistema; es decir, si n es el orden del sistema original, el
nuevo orden del sistema con un integrador es (n + 1). En otras palabras, el
vector de estado x(k) del sistema original posee dimensión n, mientras que
el vector de estado ξ(k) del regulador proporcional integral posee dimensión
(n + 1).
Teniendo en mente las relaciones anteriores, podemos definir la siguiente
función de costo:

1  

J= ξ(k)T Q̃ξ(k) + w2 (k)R̃ (4.57)
2
k=0
4.7 El Regulador Óptimo Proporcional Integral 143

Debemos entonces calcular una matriz K̃ adecuada de forma tal que mini-
mice la función de costo dada en la ecuación (4.57). Empleando el mismo
procedimiento usado en la sección 4.3, es posible formular la ecuación de
Riccati y la ecuación de ganancia del controlador K̃ para el regulador, como
sigue:
P̃ = Q̃ + G̃T P̃ G̃ − G̃T P̃ H̃[R̃ + H̃ T P̃ H̃]−1 H̃ T P̃ G̃ (4.58)
K̃ = [R̃ + H̃ T P̃ H̃]−1 H̃ T P̃ G̃ (4.59)
La selección del tiempo de muestreo se trata en la subsección 4.9.6.

Ejemplo 4.4

Diseñar el regulador proporcional integral óptimo estacionario que sea capaz


de estabilizar la velocidad angular del eje del motor (descrito en el ejemplo
4.1) a 1 rad/s, con las especificaciones siguientes: tiempo de estabilización
menor que 2 s, error en estado estable menor al 1 % y sobreimpulso de la
salida menor al 5 %.
Solución: El programa ejem4 4.m resuelve el problema y sus resultados se
muestran en la figura 4.9.
% ejem4_4.m SOLUCION DEL EJEMPLO 4.4
clear all
J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5;
A = [-b/J K/J
-K/L -R/L]; % orden n=3
B = [0;1/L];
Cc = [1 0]; Dc = [0];
% VERIFICAR CONTROLABILIDAD Y OBSERVABILIDAD
M = [B A*B]; N = [Cc’ A’*Cc’]; % rank(M) = rank(N) = n = 2
% LUEGO EL SISTEMA ES COMPLETAMENTE CONTROLABLE Y OBSERVABLE
T = 0.05; % SELECCIONADO EN EL EJEMPLO 4.1
[G,H,C,D] = c2dm(A,B,Cc,Dc,T,’zoh’); % CONVERSION A DISCRETO
Gtilde = [G zeros(2,1)
-C*G eye(1,1)]; % DEBE SER DE ORDEN n+1=4
Htilde = [H
-C*H];
Q = [1 0 0;0 0.1 0;0 0 2]; R = [0.01]; % MATRICES DE PONDERACION
[Ktil,Ptil,E] = dlqr(Gtilde,Htilde,Q,R); % Ktil: GANANCIA OPTIMA
K = [Ktil(1) Ktil(2)]; KI = -Ktil(3);
x = [0;0]; yi=0; v=0; % CONDICIONES INICIALES
N = 60; r=1;
% RESPUESTA AL ESCALON r=1
144 Control Óptimo

for k=1:N
v = v + r - yi;
V(k) = -K*x + KI*v;
x = G*x + H*V(k);
y(k) = x(1); yi = y(k);
end
% GRAFICOS
t = linspace(0,T*N,N);
subplot(2,1,1)
plot(t,y); ylabel(’y (rad/s)’); grid;
subplot(2,1,2)
plot(t,V); ylabel(’V (voltios)’); grid;
xlabel(’Tiempo (s)’)
print -deps -f ejem4_4
% CALCULO RECURSIVO DE LA MATRIZ Ptilde Y CALCULO DE Ktilde
T = 15; Ptilde = zeros(3,3);
for i=1:T
Ptilde = Q + Gtilde’*Ptilde*Gtilde - Gtilde’*Ptilde*Htilde*...
inv(R+Htilde’*Ptilde*Htilde)*Htilde’*Ptilde*Gtilde;
end
Ktilde = inv(R + Htilde’*Ptilde*Htilde)*Htilde’*Ptilde*Gtilde;
% SE CUMPLE QUE Ktil = Ktilde Y Ptil = Ptilde

1.5

1
y (rad/s)

0.5

0
0 0.5 1 1.5 2 2.5 3

25

20
V (voltios)

15

10

5
0 0.5 1 1.5 2 2.5 3
Tiempo (s)

Figura 4.9: Salida controlada y y señal de control V para el ejemplo 4.4.


4.8 Procedimiento de Diseño e Implementación 145

4.8. Procedimiento de Diseño e Implementación


El procedimiento de diseño e implementación en tiempo real de un sis-
tema de control óptimo cuadrático comprende los pasos siguientes:

1) Formular el problema (determinar especificaciones de diseño).

2) Determinar el modelo matemático del proceso a controlar (secciones


3.1 y 3.2) y determinar si es completamente controlable y completa-
mente observable (sección 2.3.6).

3) Calcular la matriz de ganancia óptima K̃ de control (sección 4.7).

4) Calcular la matriz de ganancia óptima Ke del observador (sección 4.3).

5) Simular el sistema de control óptimo cuadrático.

6) Implementar el hardware del sistema (subsección 4.9.6).

7) Implementar el software del sistema (subsección 4.9.7).

8) Realizar pruebas de funcionamiento (obtener resultados experimen-


tales satisfactorios).

4.9. Control Óptimo Cuadrático del Péndulo In-


vertido
En esta sección nos ocuparemos del diseño del control óptimo cuadrático
del proceso péndulo invertido empleando el procedimiento de diseño descrito
en la sección 4.8.

4.9.1. Formulación del Problema


Dado el proceso péndulo invertido, conformado por una varilla montada
en un carro impulsado por un servomotor D.C. controlado por voltaje de
armadura, se desea diseñar un servocontrolador que sea capaz de mantener
el péndulo invertido en posición vertical (tanto como sea posible), y al mis-
mo tiempo, mantener el carro en una posición referencial. En el problema
planteado, el péndulo se mueve en el mismo plano que la trayectoria del
carro. El sistema de control será diseñado empleando la técnica de control
146 Control Óptimo

óptimo cuadrático y la configuración de un servosistema. La entrada al pro-


ceso (la señal de control) es el voltaje de armadura del servomotor D.C. y las
salidas del servosistema son la posición angular del péndulo y la trayectoria
horizontal del carro. Se desea un tiempo de estabilización de la posición del
carro de aproximadamente 6 segundos con el menor sobreimpulso posible.
Cabe anotar que para alcanzar las especificaciones de diseño planteadas,
se requiere seleccionar adecuadamente las matrices de ponderación, como
veremos más adelante.

4.9.2. El Modelo del Proceso a Controlar


La determinación del modelo matemático del proceso péndulo invertido
fue tratado con amplitud en la sección 3.1. Para una frecuencia de muestreo
de 200 Hz y asumiendo retención de memoria de orden cero, la ecuación
de estado discreta del proceso y su ecuación de salida se determinan como
sigue:
% PARAMETROS DEL PROCESO
mc = 0.92; me = 0; mv = 0.063095; mp = 0.2; g = 9.81;
lv = 0.767; le = 0; rp = 0.0648; n = 1/19.741;
Jm = 1.9596e-6;
Je = me*le^2; Jv = mv*lv^2/3; Jo = 0; Jp = mp*rp^2/2;
Jeq = Jm + n^2*(Jo + Jp);
Bm = 1.8342e-6; Bo =0; Beq = Bm + n^2*Bo;
Km = 31.071e-3; Kb = 31.053e-3; Ra = 7.38; KA = 14.9;
M1 = mc + me + mv; M2 = me*le + mv*lv/2;
J1 = Je + Jv; J2 = Jeq/(n^2*rp^2);
Kx = Km/(Ra*n*rp);
Bx = Beq/(n^2*rp^2) + Kb*Km/(n^2*rp^2*Ra);
d = ((M1+J2)*J1-M2^2);
a21 = (M1+J2)*M2*g/d; a24 = Bx*M2/d;
a41 = -M2^2*g/d; a44 = -J1*Bx/d;
b21 = -Kx*M2*KA/d; b41 = J1*Kx*KA/d;
% MODELOS LINEALES CONTINUO Y DISCRETO
A = [0 1 0 0
a21 0 0 a24
0 0 0 1
a41 0 0 a44];
B = [0
b21
0
b41];
Cc = [0 0 1 0]; % SALIDA: POSICION DEL CARRO
4.9 Control Óptimo Cuadrático del Péndulo Invertido 147

Ts = 1/200; % TIEMPO DE MUESTREO


[G,H] = c2d(A,B,Ts);

   
1,0002 0,0050 0 0,0002 −0,0004
 0,0995 1,0002 0 0,0963   −0,1497 
G=
 0,0000
; H= 
0,0000 1,0000 0,0049   0,0002 
−0,0019 0,0000 0 0,9508 0,0765
 
C= 0 0 1 0

4.9.3. Cálculo de la Matriz de Ganancia del Controlador


En la sección 4.7 vimos que la estructura del servosistema a emplear en
el diseño del controlador óptimo se describe mediante las ecuaciones (4.51)
y (4.52), a saber:

ξ(k + 1) = G̃ξ(k) + H̃w(k); w(k) = −K̃ξ(k)

donde:



G 0 H  
G̃(k) = ; H̃(k) = ; K̃(k) = K −KI
−CG I −CH

Adicionalmente debemos averiguar si el proceso es completamente contro-


lable formando la matriz de controlabilidad M y averiguando su rango, que
debe ser 5. El cálculo se realiza como sigue:

G1 = [G zeros(4,1)
-Cc*G 1];
H1 = [H;-Cc*H];
% MATRIZ DE CONTROLABILIDAD
M = [H1 G1*H1 G1^2*H1 G1^3*H1 G1^4*H1];
rM = rank(M); % rM = 5 => COMPLETAMENTE CONTROLABLE

   
1,0002 0,0050 0 0,0002 0 −0,0004
 0,0995 1,0002 0 0,0963 0   −0,1497 
   
G̃ = 
 0,0000 0,0000 1,0000 0,0049 0 ;
 H̃ = 
 0,0002 

 −0,0019 0,0000 0 0,9508 0   0,0765 
0,0000 0,0000 −1,0000 −0,0049 1,0000 −0,0002
148 Control Óptimo

Para determinar la matriz de ganancia K̃ del controlador de realimentación


de acuerdo a lo establecido en la sección 4.7, seleccionamos antes las matrices
de ponderación R̃ y Q̃ como sigue:
 
200 0 0 0 0
 0 0 0 0 0 
 
R̃ = [100]; Q̃ = 
 0 0 100 0 0  
 0 0 0 0 0 
0 0 0 0 0,01
En la matriz Q̃ observamos que se está dando mayor peso al ángulo del
péndulo (200). La posición del carro recibe un peso de 100 mientras que
al integrador se le asigna 0.01. Con el propósito de evitar la saturación del
amplificador, tenemos que reducir la amplitud de la señal de entrada (o de
control) a dicho amplificador, pues de otro modo se originarı́an efectos no
lineales indeseados en el sistema. Para tal propósito, R̃ toma el valor de 100,
dando ası́ mayor énfasis a la señal de control en el proceso de optimización.
Para calcular la matriz K̃ debemos resolver la ecuación de Riccati (4.58)
pero en su forma recursiva:
P̃ (k + 1) = Q̃ + G̃T P̃ (k)G̃ − G̃T P̃ (k)H̃[R̃ + H̃ T P̃ (k)H̃]−1 H̃ T P̃ (k)G̃ (4.60)
El programa siguiente (en código MATLAB) calcula el valor estacionario de
la matriz solución P̃ (k), donde P̃ (0) es una condición inicial arbitraria:
P = zeros(5,5);
for i = 1:1000
P = Q + G1’*P*G1 - G1’*P*H1*inv(R + H1’*P*H1)*H1’*P*G1
end
donde G1 ≡ G̃, H1 ≡ H̃, P ≡ P̃ , Q ≡ Q̃ y R ≡ R̃. Ası́ obtenemos:
 
1,3774 0,3112 0,9019 0,5082 −0,0035
 0,3112 0,0727 0,2107 0,1197 −0,0008 
 
P̃ = 10 × 
5
 0,9019 0,2107 0,9352 0,3735 −0,0041 

 0,5082 0,1197 0,3735 0,2000 −0,0015 
−0,0035 −0,0008 −0,0041 −0,0015 0,0000

Conocida la matriz P̃ , podemos ahora calcular la matriz K̃ empleando la


ecuación (4.59). Ası́ se obtiene::
K̃ = [R̃ + H̃ T P̃ H̃]−1 H̃ T P̃ G̃ = [K − KI ]
donde:
K = [−7,7295 − 1,7311 − 2,9357 − 2,6291]; KI = [−0,0097]
4.9 Control Óptimo Cuadrático del Péndulo Invertido 149

4.9.4. Cálculo la Matriz de Ganancia del Observador


Previo al cálculo la matriz de ganancia del observador, debemos determi-
nar si el proceso es completamente observable. Para ello formamos la matriz
de observabilidad empleando la ecuación (4.29) con n = 4, como sigue:

C = [1 0 0 0
0 0 1 0];
N = [C’ G’*C’ G’^2*C’ G’^3*C’ G’^4*C’];
rnN = rank(N); % debe ser rnN = 4

Para calcular la matriz de ganancia Ke del observador óptimo (sección 4.3),


debemos seleccionar previamente las matrices de ponderación Re y Qe :
 

1 0 0 0
1 0  0 1000 0 0 
Re = ; Qe = 
 0

0 10 0 0,9 0 
0 0 0 1000

Podemos observar que en la matriz Re se da un peso de 10 a la medición de


la posición del carro, pues es más exacta que la medición del ángulo, debido
a que el sensor usado para medir dicho ángulo posee un error de cuantización
mayor. En la matriz Qe se asigna un peso de 1000, el mayor en Qe , tanto a
la velocidad angular de la varilla como a la velocidad del carro, porque éstas
son las variables que no son posibles de medir directamente y necesitamos
que tengan una mayor influencia en el proceso de estimación. Notar también
que la posición del carro posee un peso de 0.9, algo menor comparado con
el peso de 1 atribuı́do al ángulo de la varilla, dado que el sensor de posición
del carro es más exacto que el sensor de posición de la varilla.
Para calcular la matriz de ganancia del observador Ke calculamos pre-
viamente la matriz Pe a partir de la ecuación (4.37):

Pe (k + 1) = Qe + GPe (k)GT − GPe (k)C T [Re + CPe (k)C T ]−1 CPe (k)GT

El programa siguiente (en código MATLAB) calcula el valor estacionario de


la matriz solución Pe (el valor inicial de Pe es arbitrario):

for i = 1:40
Pe = Qe + G*Pe*G’-G*Pe*C’*inv(Re+C*Pe*C’)*C*Pe*G’
end
150 Control Óptimo

donde P e = Pe , Qe = Qe . De esta manera obtenemos:


 
0,0021 0,0640 0,0003 0,0136
 0,0640 9,7336 0,0397 2,2269 
Pe = 103 × 
 0,0003

0,0397 0,0047 0,0753 
0,0136 2,2269 0,0753 6,3346

Luego, la matriz de ganancia Ke se calcula con la ecuación (4.36):

Ke = [Re + CPe C T ]−1 CPe GT

lo que resulta en:


 T
0,7802 0,0185
 20,9413 2,8240 
Ke = 
 0,0752

0,3450 
3,7683 4,7913

4.9.5. Simulación del Sistema de Control Óptimo


Con los datos determinados, podemos entrar ahora a la fase de simulación
del sistema de control óptimo cuadrático, antes de iniciar su implementación
en tiempo real. El siguiente programa disopt2.m, además de efectuar todos
los cálculos anteriores, realiza la simulación del sistema controlado emple-
ando una ley de control óptima y con observación óptima de estados. Es
interesante anotar que el modelo del proceso empleado en la simulación es
el modelo no lineal (3.31) discretizado directamente. También hemos añadi-
do sentencias para simular el efecto de saturación del amplificador. Como
señal de referencia se emplea un escalón de valor 1.5 m. Los resultados de
la simulación se pueden observar en las figuras 4.10, 4.11 y 4.12.
% disopt2.m SISTEMA DE CONTROL OPTIMO DEL PENDULO INVERTIDO
clear all
% PARAMETROS DEL PROCESO
mc = 0.92; me = 0; mv = 0.063095; mp = 0.2; g = 9.81;
lv = 0.767; le = 0; rp = 0.0648; n = 1/19.741;
Jm = 1.9596e-6;
Je = me*le^2; Jv = mv*lv^2/3; Jo = 0; Jp = mp*rp^2/2;
Jeq = Jm + n^2*(Jo + Jp);
Bm = 1.8342e-6; Bo =0; Beq = Bm + n^2*Bo;
Km = 31.071e-3; Kb = 31.053e-3; Ra = 7.38; KA = 14.9;
M1 = mc + me + mv; M2 = me*le + mv*lv/2;
J1 = Je + Jv; J2 = Jeq/(n^2*rp^2);
Kx = Km/(Ra*n*rp);
Bx = Beq/(n^2*rp^2) + Kb*Km/(n^2*rp^2*Ra);
4.9 Control Óptimo Cuadrático del Péndulo Invertido 151

d = ((M1+J2)*J1-M2^2);
a21 = (M1+J2)*M2*g/d; a24 = Bx*M2/d;
a41 = -M2^2*g/d; a44 = -J1*Bx/d;
b21 = -Kx*M2*KA/d; b41 = J1*Kx*KA/d;
% MODELOS LINEALES CONTINUO Y DISCRETO
A = [0 1 0 0
a21 0 0 a24
0 0 0 1
a41 0 0 a44];
B = [0
b21
0
b41];
Cc = [0 0 1 0]; % POSICION DEL CARRO
Ts = 1/200; % TIEMPO DE MUESTREO
[G,H] = c2d(A,B,Ts);
G1 = [G zeros(4,1)
-Cc*G 1];
H1 = [H;-Cc*H];
M = [H1 G1*H1 G1^2*H1 G1^3*H1 G1^4*H1];
rM = rank(M); % rM=5 => COMPLETAMENTE CONTROLABLE
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [200 0 0 0 0
0 0 0 0 0
0 0 100 0 0
0 0 0 0 0
0 0 0 0 0.01]; R = [100];
P = zeros(5,5);
for i=1:1000
P = Q + G1’*P*G1 -G1’*P*H1*inv(R+H1’*P*H1)*H1’*P*G1;
end
K1 = inv(R+H1’*P*H1)*H1’*P*G1;
[KK,PP] = dlqr(G1,H1,Q,R); % K1=KK, P=PP
K = [KK(1) KK(2) KK(3) KK(4)]; KI = - KK(5);
% CALCULO DE LA GANANCIA DE UN OBSERVADOR
C = [1 0 0 0
0 0 1 0]; % SE OBSERVAN POSICIONES ANGULAR Y LINEAL
Qe = [1 0 0 0
0 1000 0 0
0 0 0.9 0
0 0 0 1000]; Re = [1 0;0 10];
Pe = zeros(4,4);
for i=1:40
152 Control Óptimo

Pe = Qe + G*Pe*G’ -G*Pe*C’*inv(Re+C*Pe*C’)*C*Pe*G’;
end
KeT = inv(Re+C*Pe*C’)*C*Pe*G’; Ke=KeT’;
[KKeT,PPe] = dlqr(G’,C’,Qe,Re); KKe=KKeT’;% Pe=PPe, Ke=KKe
% SIMULACION DEL SISTEMA DE CONTROL OPTIMO
% CONDICIONES INICIALES
x1=0; x2=0; x3=0; x4=0; x5=0;
xe = [0;0;0;0]; r=1.5;
v=0; N = 4000; % TIEMPO EN SEGUNDOS: Ts*N
for k=1:N
u = -K*xe + KI*v;
if(u > 1.4), u = 1.4; % PARA NO SATURAR EL SERVOMOTOR
elseif(u < -1.4), u = -1.4;
end
xe = G*xe + u*H + Ke*([x1;x3] - C*xe);
% PROCESO NO LINEAL DISCRETIZADO DIRECTAMENTE
den = -M2^2*cos(x1)^2+(M1+J2)*J1;
x1 = x1 + Ts*x2;
x2 = x2 + ...
Ts*(-M2^2*sin(x1)*cos(x1)*x2^2+M2*Bx*cos(x1)*x4 ...
+M2*(M1+J2)*g*sin(x1)-M2*Kx*cos(x1)*KA*u)/den;
x3 = x3 + Ts*x4;
x4 = x4 + ...
Ts*(M2^2*g*sin(x1)*cos(x1)+J1*M2*sin(x1)*(x2)^2 ...
-J1*Bx*x4+J1*Kx*KA*u)/den;
v = v + r - x3;
y1(k)=x1; y2(k)=x3; U(k) =u;
end
% GRAFICOS
t = linspace(0,Ts*N,N);
figure(1)
plot(t,y2(1:N)); grid
ylabel(’Posicion del carro’)
xlabel(’Tiempo (s)’)
print -deps -f spoz
figure(2)
plot(t,y1(1:N)); grid
ylabel(’Posicion angular del pendulo’)
xlabel(’Tiempo (s)’)
print -deps -f spoa
figure(3)
plot(t,U); grid
ylabel(’Se~nal de control u’)
4.9 Control Óptimo Cuadrático del Péndulo Invertido 153

xlabel(’Tiempo (s)’)
print -deps -f spou

1.6

1.4

1.2

1
Posición del carro

0.8

0.6

0.4

0.2

−0.2
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.10: Simulación del sistema péndulo invertido: posición del carro.

4.9.6. El Hardware del Sistema de Control


La figura 4.13 muestra los componentes fı́sicos (el hardware) del sistema
de control. Tales componentes son: el proceso a controlar (péndulo inver-
tido o grúa-puente), los sensores de posición, el amplificador de potencia, la
tarjeta de adquisición de datos Lab-PC+, y una computadora personal con
microprocesador Pentium. El proceso péndulo invertido (o grúa-puente) se
muestra esquematizado en la figura 4.14 y comprende:

Un servomotor D.C. Pittman de imán permanente de aproximada-


mente 350 rpm, que posee reducción de velocidad interna y codificador
óptico incorporado, cuya operación explicaremos más adelante.

Dos poleas de radio igual a 6.48 cm, una de las cuales está unida al
eje del motor y la otra, al otro extremo de un carril.

Un carril de metal por donde se desliza el carro porta-péndulo.


154 Control Óptimo

0.15

0.1
Posición angular del péndulo

0.05

−0.05

−0.1
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.11: Simulación del sistema péndulo invertido: posición angular del
péndulo.
0.7

0.6

0.5

0.4
Señal de control u

0.3

0.2

0.1

−0.1

−0.2
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.12: Simulación del sistema péndulo invertido: señal de control.


4.9 Control Óptimo Cuadrático del Péndulo Invertido 155

COMPUTADORA
PERSONAL

TARJETA LAB-PC+

AMPLIFI- PROCESO:
SALIDAS DAC0 ’
PENDULO
CADOR
ANALOGICAS DAC1 INVERTIDO /
PWM GRUA PUENTE

PA0 16 bits
.. SENSOR EN
PA .
PA7 EL MOTOR
COMPUERTAS MUX
16 bits
DIGITALES PB0
.. SENSOR EN
PB . LA VARILLA
DE ENTRADA
PB7
Y SALIDA SALIDAS
PC0
..
PC .
PC6
PC7
Fs
CONTADOR / OUTB0
TEMPORIZADOR

Figura 4.13: Implementación del sistema de control.


156 Control Óptimo

SERVOMOTOR PENDULO

POLEA

CARRO

CARRIL

Figura 4.14: Sistema péndulo invertido.

Un carro de metal con cuatro ruedas de bronce, el cual posee una junta
móvil (para sujetar una varilla metálica por uno de sus extremos) y
un codificador óptico incorporado (ver figura 4.15). El peso total del
carro es de 920 gr. El esquema del carro se muestra en la figura 4.16.

Una varilla metálica de 70 cm de largo y de 64 gr que hace la función


de péndulo.

Codificador optico

Polea
Alimentacion

. . .

Servomotor D.C .

Reductor de
velocidad

Figura 4.15: Servomotor con codificador óptico y polea.

Los Sensores de Posición


El sistema de control posee dos sensores de posición, uno de los cuales se
encarga de medir la posición angular del motor y el otro se encarga de medir
4.9 Control Óptimo Cuadrático del Péndulo Invertido 157


Pendulo

Codificador

optico

Ruedas

Figura 4.16: Esquema del carro.

la posición angular de la varilla. Cada sensor consiste de un codificador ópti-


co rotatorio, compuesto de un disco metálico con un número determinado
de ranuras igualmente espaciadas y ubicadas en el perı́metro del disco, y un
emisor-sensor óptico que genera un haz de luz perpendicular al disco (ver
figura 5.13).

Canal A
Canal B
Fuente de luz
Transistor
’optico

Eje del servomotor

Disco con
mascara

Figura 4.17: Codificador óptico.

El proceso de sensado es el siguiente. Al girar el disco a la misma ve-


locidad del servomotor (o a la misma velocidad de la varilla), las ranuras
158 Control Óptimo

permiten el paso de luz a través del disco. Dicho haz activa el transistor
óptico del emisor-sensor, generando un pulso de corriente que se constituye
ası́ en la entrada a un contador de pulsos. El número de ranuras que posee el
sensor de la varilla es 256, mientras que el sensor del servomotor posee 512
ranuras. Hay que tomar en cuenta además que el codificador incorporado en
el motor es solidario al eje primario; es decir, para obtener el ángulo de giro
en el eje de salida, se tiene que aplicar un factor de reducción cuyo valor
numérico se da en la sección 3.2.6.
El codificador óptico da como salida un tren de pulsos con una frecuencia
proporcional a la velocidad angular del disco y otro tren de pulsos desfasado
en +90 o −90 grados respecto al primero, de acuerdo al sentido de giro
del disco. Estos dos trenes de pulsos pasan luego a un decodificador de
cuadratura LS7083 que genera las señales Clock Up o Clock Down, según
sea positivo o negativo el sentido de giro del disco (ver figura 5.14). Las
señales Clock Up y Clock Down alimentan a un contador Up/Down de 16
bits compuesto por 4 contadores 74LS193 de 4 bits conectados en cascada.
Los dos codificadores ópticos poseen la circuiterı́a descrita anteriormente,
de modo tal que para cada sensor tenemos una salida de 16 bits que se
almacena en un registro.
La selección entre una u otra salida binaria se realiza por medio de la
habilitación de un registro, o mediante una señal proveniente de la computa-
dora personal (ver figura 4.13). En conclusión, la cuenta almacenada en los
contadores es una función lineal proporcional a la posición angular del eje
del disco. Para obtener la posición angular a partir del número de pulsos
NP dados por los contadores, podemos usar la siguiente relación:

Para la varilla, posición angular de la varilla: (2π/256) × NP .

Para el motor, posición angular del eje del motor: (2π/512)×NP (antes
de la reducción).

El Amplificador de Potencia
Un amplificador de potencia basado en la modulación PWM (”Pulse
Width Modulation”) alimenta al servomotor D.C. Este amplificador está com-
puesto por un modulador PWM de baja potencia (el LM3524), una lógica
digital de disparo y un conmutador amplificador tipo H implementado con
cuatro Mosfets. También existe circuiterı́a adicional para generar la tensión
de disparo en cada conmutador Mosfet.
4.9 Control Óptimo Cuadrático del Péndulo Invertido 159

Clock UP
74HC Clock Down
4 bits
193
Puerto
digital 8 bits
PA Canal A
74HC
4 bits
193 LS7083
Canal B

74HC
4 bits
193
Puerto R L
digital 8 bits
PB 74HC
4 bits
193

Figura 4.18: Sensado de la posición.

La Tarjeta de Adquisición de Datos Lab-PC+


La tarjeta de adquisición de datos Lab-PC+ de National Instruments es
la interfaz empleada para el envı́o de la señal de control y para la adquisi-
ción de datos. La interconexión de la tarjeta de adquisición de datos con el
amplificador y los sensores se realiza en la forma siguiente:

Puerto A: recibe los 8 bits menos significativos del sensor.


Puerto B: recibe los 8 bits más significativos del sensor.
Puerto C:
• bit 1: Libre (puede ser usado para enviar datos adicionales desde
la computadora)
• bit 2: selecciona entre el sensor de la varilla o el del motor.
• bit 3: reinicia (“reset”) los contadores.
• bit 7: recibe la señal de reloj de la frecuencia de muestreo Fs
generada por OUTB0.
• bits 0,4,5 y 6: no usados.
DAC0: envı́a la señal de control.
OUTB0: envı́a la señal de reloj de muestreo.
160 Control Óptimo

Selección de la Frecuencia de Muestreo

Para el funcionamiento correcto del sistema de control óptimo discreto


se requiere la selección adecuada de la frecuencia (o perı́odo) de muestreo.
Tal selección debe tomar en consideración la respuesta deseada del sistema
de lazo cerrado y el tiempo que pueda tomar el programa para hacer todos
los cálculos necesarios por cada lazo de control (y para cada perı́odo de
muestreo). Los programas implementados tuvieron una duración promedio
por bucle de 430 µs, lo que permite procesar el sistema con frecuencias de
muestreo de hasta 2,3 KHz.
Como regla práctica, podemos escoger un perı́odo de muestreo que sea
10 veces menor que la duración de un ciclo de oscilacion senoidal amor-
tiguada de la señal de salida del sistema en lazo cerrado (para el caso de
respuesta subamortiguada). Para el caso de respuesta sobreamortiguada,
podemos escoger un perı́odo de muestreo 10 veces menor que el tiempo de
levantamiento; es decir, el tiempo transcurrido hasta que ocurra el primer
cruce entre la señal de referencia y la señal de respuesta del sistema. Si
asumimos inicialmente que las respuestas a obtener deben poseer un tiempo
de levantamiento de un segundo, aplicando esta regla práctica, tendremos
que escoger un perı́odo de muestreo menor que 0,1 segundos; es decir, una
frecuencia mayor de 10 Hz. Tomando en cuenta todas estas consideraciones
se escogió una frecuencia de muestreo de Fs = 200 Hz, o lo que es lo mismo,
un perı́odo de muestreo de 5 ms.

4.9.7. Implementación del Software de Control


La implementación del algoritmo de control se realiza en dos fases. En
la primera, se calculan fuera de lı́nea (“off-line”) la matriz de ganancia de
realimentación de estados K y la matriz de ganancia del observador Ke (em-
pleando por ejemplo, MATLAB). Tales matrices se guardan en un archivo
para que luego puedan ser usadas por el programa (escrito en código C) que
va a controlar el proceso. Todos los datos generados pueden ser almacenados
en archivos para su posterior lectura, análisis y procesamiento (por ejemplo,
para generar gráficos).

El Archivo de Interfaz

Para facilitar el uso de la tarjeta de adquisición de datos se crearon los


archivos FUNC PEN.H y FUNC PEN.CPP, los cuales utilizan la librerı́a de
4.9 Control Óptimo Cuadrático del Péndulo Invertido 161

funciones NI-DAQ [25], ası́ como también funciones de lectura y escritura


de puertos. El archivo FUNC PEN.H consta de las siguientes funciones:
ConfigurarHardware: inicializa la tarjeta Lab-PC+, configura los puer-
tos y especifica la frecuencia del clock de muestreo.
EnviarVoltaje: restringe y envı́a voltajes al DAC0 del Lab-PC+.
LeerSensor: adquiere datos de los puertos A y B de 8 bits cada uno
y coloca un 0 o un 1 en el segundo bit del puerto C, con el fin de
seleccionar la lectura del sensor de la varilla o la del sensor del motor.
NivelClock: lee el bit 7 del puerto C y recibe el clock de muestreo de
OUTB0.
ResetContadores: coloca un 1 o un 0 en el bit 3 del puerto C, con el
fin de borrar el contenido de los contadores de los sensores.

El Programa de Control
El programa de control se denomina PENDOI4.CPP. En el ambiente de
trabajo de Borland C/C++, los archivos FUNC PEN.H, FUNC PEN.CPP
y PENDOI4.CPP forman en conjunto el proyecto PENDOI4.PRJ. El pro-
grama PENDOI4.CPP comprende las partes siguientes:
1. Inicialización
a) Inicialización de la tarjeta de adquisición de datos.
b) Inicialización de variables.
c) Establecimiento de la posición cero del carro y de la varilla.
2. Bucle del algoritmo de control

a) Detección del flanco de subida del clock.


b) Medición de las salidas.
c) Observación de estados.
d) Cálculo y aplicación de la señal de control.

3. Almacenamiento de las respuestas.


El diagrama de flujo del programa se muestra en la figura 4.19. Los
programas implementados tuvieron una duración promedio por bucle de
430 µs. A continuación comentamos brevemente cada uno de los puntos
anteriores.
162 Control Óptimo

INICIO

INMICIALIZA:
- TARJETA DE ADQUISICION DE DATOS
- VARIABLES

BORRA CONTADORES

ESTABLECIMIENTO DE LA POSICION
CERO DEL CARRO Y LA VARILLA

NO
TIEMPO < TIEMPO LIMITE FIN

SI

DETECTA
FLANCO DE SUBIDA NO
DEL PULSO DE RELOJ

SI

MIDE SALIDAS
ESTIMA ESTADOS
~
CALCULA SENAL DE CONTROL
~
COMPENSA SENAL DE CONTROL
~
ENVIA SENAL DE CONTROL
ACTUALIZA VARIABLES
ARCHIVA DATOS

Figura 4.19: Diagrama de flujo del programa de control.


4.9 Control Óptimo Cuadrático del Péndulo Invertido 163

Inicialización de la Tarjeta de Adquisición de Datos


El hardware de la tarjeta Lab-PC+ se configura con la función para
inicialización ConfigurarHardware(Fs), en donde se especifica la frecuencia
de muestreo Fs que debe generar.

Inicialización de Variables
Se inicializan todas las variables a utilizar en el programa y se cargan
las matrices que previamente fueron calculadas.

Establecimiento de la Posición Cero del Carro y de la Varilla


Se pide al usuario colocar la varilla y el carro en la posición cero. En
el caso de la varilla, ésta debe colocarse en posición vertical y hacia arriba
(péndulo invertido) o hacia abajo (grúa-puente). Con esto se consigue que el
programa identifique la posición de 0 grados del péndulo y de 0 metros del
carro. Realizada esta acción, el programa pide luego colocar el péndulo o el
carro en las posiciones iniciales deseadas, para inmediatamente comenzar el
control.

Detección del Flanco de Subida del Clock


Detecta el flanco de subida del clock mediante la función NivelClock, lo
que nos indica el comienzo de un nuevo perı́odo de muestreo.

Medición de las Salidas


Para obtener la posición angular a partir del número de pulsos dados
por los contadores, podemos usar la siguiente relación:

Para la varilla, posición angular de la varilla: (2π/256) × NP .

Para el motor, posición angular del eje del motor: (2π/512)×NP (antes
de la reducción).

Para la lectura de los sensores tenemos que tomar en cuenta la saturación


de los contadores, los cuales pueden guardar un valor máximo de 65535.
En el caso de la varilla, consideraremos como positivo los valores que
resulten de un recorrido horario, y negativo los que resulten de un recorrido
antihorario. Para este caso, los contadores no llegan a saturarse, pues a
lo sumo la varilla podrı́a tener un recorrido de 360o , lo que corresponde
164 Control Óptimo

a un incremento de 256 puntos, valor bastante lejos del valor máximo del
contador. El problema a resolver aquı́ es cómo reconocer si nos encontramos
ante un recorrido positivo o negativo justo cuando el contador comienza a
decrementar (partiendo de 0). Para resolver esta situación, consideraremos
que estamos ante un valor negativo si el contenido de los contadores es
mayor que 32768 (la mitad del valor máximo que pueden contener). Por
ejemplo, si obtenemos en el contador un valor de 65534, y como éste es
mayor que 32768, entonces representa una posición negativa; su equivalente
es: −(65536−65534) = −2. Luego, para obtener la posición angular hacemos:
−2 × 2π/256 rad. La rutina que realiza esta lectura esta dada por:

/*lee angulo Varilla*/


contVa=LeerSensor(VARILLA);
contVa=(contVa>32768)?-1*(65536-contVa):contVa;
*y0=contVa*(2.*PI/256.);

en donde contVa es la variable que guarda el valor del contador e y0 guarda


la posición angular en radianes.
La lectura de la posición del carro es un caso diferente, porque a una
determinada distancia de recorrido, los contadores se saturan. Para salvar
este inconveniente lo que se hace es sumar los incrementos o restar los decre-
mentos que se obtienen entre la lectura actual y la lectura anterior de los
contadores. Pero además, previamente debemos de discernir si el valor leı́do
del contador se trata de un incremento o un decremento. La siguiente rutina
en código C toma en cuenta las consideraciones anteriores:

/*lee posicion del carro*/


contC_act=LeerSensor(MOTOR);
if(contC_act<contC_ant)
{
if((contC_ant-contC_act)>32768)
*y1=y1_ant+(65536-contC_ant+contC_act)*2.*PI/512.*Nm*rp;
else
*y1=y1_ant-(contC_ant-contC_act)*2.*PI/512.*Nm*rp;
}
else
{
if((contC_act-contC_ant)>32768)
*y1=y1_ant-(65536-contC_act+contC_ant)*2.*PI/512.*Nm*rp;
else
*y1=y1_ant+(contC_act-contC_ant)*2.*PI/512.*Nm*rp;
}
contC_ant=contC_act;
y1_ant=*y1;
4.9 Control Óptimo Cuadrático del Péndulo Invertido 165

en donde contC_act es el valor actual del contador, contC_ant es el valor


anterior del contador, y1 es la variable que guarda la posición actual del
carro en metros e y1_ant es el valor anterior de y1.

Observador de Estados de Orden Completo


La ecuación que debemos implementar para el observador de estados de
orden completo está dada por la ecuación (4.31):
x̃(k + 1) = Gx̃(k) + Hu(k) + Ke [y(k) − C x̃(k)]
o por la ecuación (luego de factorizar el vector estimado x̃(k)):
x̃(k + 1) = (G − Ke C)x̃(k) + Hu(k) + Ke y(k)
Para ahorrar cálculos innecesarios en el programa, podemos colocar el
valor de (G − Ke C) en una sola variable que pueda ser calculada fuera de
lı́nea (“off-line”), para ser luego guardada en un archivo, y antes de iniciar
la rutina de control, leerla desde el programa en C. En dicho programa
utilizaremos la siguiente notación para las variables:
Xe[ ] = x̃(k); Y ant[ ] = y(k − 1); G KeC[ ][ ] = G − Ke C
H[ ] = H; Ke[ ][ ] = Ke ; u = u(k)
La rutina en lenguaje C que implementa la ecuación del observador es:
/*calcula G_KeC*Xe */
for(i=0;i<=3;i++)
{ S=0.;
for(p=0;p<=3;p++)
S=G_KeC[i][p]*Xe[p]+S;
G_KeCX[i]=S;
}
/*calcula KeYant*/
for(i=0;i<=3;i++)
{ S=0.;
for(p=0;p<=1;p++)
S=Ke[i][p]*Yant[p]+S;
KeYant[i]=S;
}
/*calcula Xe(K+1)[i]*/
for(i=0;i<=3;i++)
Xe[i]=G_KeCX[i]+H[i]*u+KeYant[i];
Yant[0]=X0;
Yant[1]=X2;
166 Control Óptimo

Cálculo de la Señal de Control


Para el cálculo de la señal de control utilizaremos las ecuaciones (4.40)
y (4.42), a saber:

u(k) = −Kx(k) + KI v(k)


v(k) = v(k − 1) + r(k) − y(k)

En el programa en código C utilizamos la siguiente notación:

Xe[ ] = x(k); K[ ] = K; KI = KI ; Xe[2] = y(k)

V = v(k); V ant = v(k − 1); r = r(k); u = u(k)


Las ecuaciones (4.40) y (4.42) se representan en el programa en C por:
V=V_ant+r-Xe[2]; V_ant=V;
u=KI*V-K[0]*Xe[0]-K[1]*Xe[1]-K[2]*Xe[2]-K[3]*Xe[3];

y la rutina en lenguaje C para la compensación de la zona muerta en el


motor está dada por:
if(u <0) v=-DeadZone;
if(u >0) v=+DeadZone;
if(u==0) v=0.;

Para aplicar la señal de control emplearemos:


Enviarvoltaje(u+v+offset);

Almacenamiento de las Respuestas


Las respuestas hasta aquı́ obtenidas se guardan cada una en una matriz;
luego cada matriz es almacenada en un archivo para su posterior lectura,
análisis y procesamiento.

Listado de los Programas Fuente


/*FUNC_PEN.H Funciones para manejar la tarjeta de adquisicion
de datos Lab-PC+ en conjunto con la interfaz del sistema del
pendulo invertido*/
#if !defined (__FUNC_PEN_H)
#define __FUNC_PEN_H
void ConfigurarHardware (float);
/*configurar hardware y establecer la frecuencia del clock de
4.9 Control Óptimo Cuadrático del Péndulo Invertido 167

la tarjeta de interfaz*/
void EnviarVoltaje (float);
/*env\’{\i}a voltaje al DAC de la tarjeta*/
unsigned int LeerSensor(int);
/*lee sensor=0 contadores del lado izquierdo
lee sensor=1 contadores del lado derecho */
int NivelClock ();
/*devuelve el nivel del clock 0 o 1 */
void ResetContadores();
/*resetea los contadores que estan conectados a los sensores*/
#endif

/*FUNC_PEN.CPP Trabaja en conjunto con FUNC_PEN.H */


#include "func_pen.h"
#include "nidaq.h"
#include <dos.h>
#define DAC0 0x264
#define PORTA 0x270
#define PORTB 0x271
#define PORTC 0x272
void ConfigurarHardware (float frec)
{
int periodoTimer, deviceCode;
periodoTimer = (int)(2000000/frec);

USE_LAB();
/*esta funcion ayuda a mantener el tama~no de la aplicacion en DOS
ante un mayor crecimiento debido a la inclusion de porciones de
la libreria NI-DAQ que no son necesarias para el dispositivo de
adquisicion que se esta utilizando */

Init_DA_Brds(1,&deviceCode);
/*inicializa el hardware y el software de la libreria NI-DAQ
deviceNumber = 1
deviceNumberCode devuelve el tipo del dispositivo inicializado */

ICTR_Setup(1,0,3,periodoTimer,1);
/*deviceNumber = 1
ctr = 0 => clock de muestreo timer0
MODE = 3 => selecciona onda cuadrada con duty cycle de 50 %
COUNT = periodoTimer => periodo de la onda
binBcd = 1 => selecciona el contador binario de 16-bits */
168 Control Óptimo

outportb(0x273, 0x9A);
/*’’setea’’ el DIGITAL CONTROL REGISTER (273H) y configura los
ports como:
PA:INPUT
PB:INPUT
PC0 ... 3:OUTPUT
PC4 ... 7:INPUT */
}

void EnviarVoltaje (float v)


{
unsigned salidaDigital;

/*restringe el voltaje de entrada al driver */


if(v<0.) v = 0.8;
if(v>3.7) v = 3.7;

salidaDigital = (unsigned) (409.6*v+0.5);


outport(DAC0,salidaDigital);//ESCRIBE salidaDigital EN DAC0
}
unsigned int LeerSensor(int sensor)
{
unsigned char byteH,byteL;

if(sensor) outportb(PORTC,inportb(PORTC)&251);
//PC2 = 0 selecciona contador derecho
else
outportb(PORTC,inportb(PORTC)|4);
//PC2 = 1 selecciona contador izquierdo
byteL = inportb(PORTA);//Lee PORT A
byteH = inportb(PORTB);//Lee PORT B
return (256*byteH+byteL);
}

int NivelClock()
{
unsigned char bytePoll;
bytePoll = inportb (PORTC); //lee PORTC
return (bytePoll>127);//valida solo PC7 (clk de la tarjeta-OUTB0)
//(pooling)
}

void ResetContadores()
4.9 Control Óptimo Cuadrático del Péndulo Invertido 169

{
outportb(PORTC,inportb(PORTC)|8);
for(int i=0;i<10000;i++);
outportb(PORTC,inportb(PORTC)&(255-8));
}

/*PENDOI4.CPP Programa principal: pendulo invertido con estimacion


de estados de orden completo. El programa carga los datos del
archivo pendoi.dat*/
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include "func_pen.h"

#define PI M_PI
#define IZQ 0
#define DER 1
#define VARILLA IZQ
#define MOTOR DER
#define A_RADIANES 2.*PI/512.

#define Nm 1/19.741
#define rp 0.0648
#define Fs 200.
#define Ts (1./Fs)
#define tsimul 60.
#define DeadZone 0.1
#define offset 2.29 //2.36
#define SP 1.5

float G_KeC[4][4],H[4];
float K[4],KI,Ke[4][2];
float r=0.;

float Xe[4]={0,0,0,0},Xe_a[4]={0,0,0,0};
float y0,y1;
float u=0.;

void inicializaMatrices()
{
170 Control Óptimo

char ruta[]="C:\\user\\leonardo\\datos\\pendoi.dat";
int i,j;
FILE *pfichero;

pfichero=fopen(ruta,"rt");
if (pfichero == NULL) printf("No se puede abrir\n");
for(i = 0;i <= 3;i++)
{
for(j = 0;j <= 3;j++)
fscanf(pfichero,"%f",&G_KeC[i][j]);
}
for(i = 0;i <= 3;i++)
fscanf(pfichero,"%f",&H[i]);
for(i = 0;i <= 3;i++)
fscanf(pfichero,"%f",&K[i]);
fscanf(pfichero,"%f",&KI);

for(i = 0;i <= 3;i++)


{
for(j = 0;j <= 1;j++)
fscanf(pfichero,"%f",&Ke[i][j]);
}
fclose(pfichero);

Xe[0] = 0.; Xe[1] = 0.; Xe[2] = 0.; Xe[3] = 0.;

clrscr();
for(i = 0;i <= 3;i++)
{
for(j = 0;j <= 3;j++)
printf("%f ",G_KeC[i][j]);
printf("%f\n",G_KeC[i][3]);
}
for(i = 0;i <= 3;i++)
printf("%f\n",H[i]);
for(i = 0;i <= 3;i++)
printf("%f\t",K[i]);
printf("\n%f",KI);
printf("\n");
for(i = 0;i <= 3;i++)
{
for(j = 0;j <= 1;j++)
printf("%f\t",Ke[i][j]);
4.9 Control Óptimo Cuadrático del Péndulo Invertido 171

printf("\n");
}
}

void MideSalidas(float *y0,float *y1)


{
static float y1_ant = 0.;
static unsigned contC_ant = 0;
unsigned contVa,contC_act;
int contVa1;

/*lee angulo Varilla*/


contVa = LeerSensor(VARILLA);
contVa1 = (contVa>32768) ? -1*(65536-contVa):contVa;
*y0 = contVa1*(2.*PI/256.); //angulo de la varilla en radianes

/*lee posicion del carro*/


contC_act = LeerSensor(MOTOR);
if(contC_act < contC_ant)
{
if((contC_ant-contC_act) > 32768)
*y1 = y1_ant+(65536-contC_ant+contC_act)*A_RADIANES*Nm*rp;
else
*y1 = y1_ant-(contC_ant-contC_act)*A_RADIANES*Nm*rp;
}
else
{
if((contC_act-contC_ant) > 32768)
*y1 = y1_ant-(65536-contC_act+contC_ant)*A_RADIANES*Nm*rp;
else
*y1 = y1_ant+(contC_act-contC_ant)*A_RADIANES*Nm*rp;
}
contC_ant=contC_act;
y1_ant=*y1;
}

void EstimaEstados(float X0,float X2)


/*recibe X0 y X2 y encuentra Xe[]*/
{
/*X1~(k) = Xe_act[0] X1~(k-1) = Xe_ant[0]
X2~(k) = Xe_act[1] X2~(k-1) = Xe_ant[1]
X3~(k) = Xe_act[2] X3~(k-1) = Xe_ant[2]
X4~(k) = Xe_act[3] X4~(k-1) = Xe_ant[3]*/
172 Control Óptimo

static float Yant[]={0.,0.};


float G_KeCX[4], KeYant[4], S = 0.;
int i, j, p;

/*calcula G_KeC*X */
for(i = 0;i <= 3;i++)
{ S = 0.;
for(p = 0;p <= 3;p++)
S = G_KeC[i][p]*Xe[p]+S;
G_KeCX[i] = S;
}

/*calcula KeYant*/
for(i = 0;i <= 3;i++)
{ S=0.;
for(p = 0;p <= 1;p++)
S = Ke[i][p]*Yant[p]+S;
KeYant[i] = S;
}

/*calcula Xe(K+1)[i]*/
for(i = 0;i <= 3;i++)
Xe[i] = G_KeCX[i]+H[i]*u+KeYant[i];

Yant[0] = X0;
Yant[1] = X2;
}

/*compensa friccion estatica y de coulomb*/


const float Wth = .1;
const float VcFE = .2,VcFC = .15;
float CompensaFriccion(float u,float vel)
{
float volt = 0.;
if(fabs(vel) <= Wth)
{/*compensa friccion estatica*/
if(u < 0.) volt = -VcFE;
if(u > 0.) volt = VcFE;
}
else
{ /*compensa friccion de coulomb*/
if (u <0.) volt = -VcFC;
if (u >0.) volt = VcFC;
4.9 Control Óptimo Cuadrático del Péndulo Invertido 173

}
return (u+volt);
}

void main()
{
inicializaMatrices();

float vel, yant, yact;


char tecla;
unsigned char ck_ant, ck_act;
int n, k;
float t;
int c;
float V,V_ant = 0.;
float u_1 = 0., u_2 = 0., u_3 = 0., u_4 = 0., v = 0.;

n=(int) tsimul/Ts;

char tiempo[] ="c:\\user\\leonardo\\datos\\pendnio.t" ;


char theta_[] ="c:\\user\\leonardo\\datos\\pendnio.th";
char v_vara[] ="c:\\user\\leonardo\\datos\\pendnio.vv";
char z_carro[] ="c:\\user\\leonardo\\datos\\pendnio.z" ;
char v_carro[] ="c:\\user\\leonardo\\datos\\pendnio.vc";
char sal_var[] ="c:\\user\\leonardo\\datos\\pendnio.y0";
char sal_car[] ="c:\\user\\leonardo\\datos\\pendnio.y1";
char U_[] ="c:\\user\\leonardo\\datos\\pendnio.u";
float *u_, *x1_, *x2_, *x3_, *x4_;/**/float *y_0_, *y_1_;
FILE *pfichero;
assert(NULL! = (u_ =(float*)calloc(n+1,sizeof(float))));
assert(NULL! = (x1_=(float*)calloc(n+1,sizeof(float))));
assert(NULL! = (x2_=(float*)calloc(n+1,sizeof(float))));
assert(NULL! = (x3_=(float*)calloc(n+1,sizeof(float))));
assert(NULL! = (x4_=(float*)calloc(n+1,sizeof(float))));

assert(NULL! = (y_0_=(float*)calloc(n+1,sizeof(float))));
assert(NULL! = (y_1_=(float*)calloc(n+1,sizeof(float))));

if((tecla=getch()) == 27) goto FIN;


ConfigurarHardware(Fs);
EnviarVoltaje(offset);

clrscr();
174 Control Óptimo

printf("1) Ubicar el carro en el centro del carril\n4) Ubicar la va-


rilla en posicion vertical y mantenerla asi hasta presionar F1\n");
while(((tecla = getch()) != 59) && (tecla != 27)) ;
if(tecla == 27) goto FIN;

ResetContadores();

printf("\n\nColocar la varilla en la posicion inicial deseada\n


Presionar F2 para comenzar el control\n");
do
{
while(!kbhit())
{
MideSalidas(&y0,&y1);
gotoxy(5,10); printf("varilla en radianes: %f",y0);
gotoxy(5,11); printf("varilla en grados : %f",y0*180./PI);
}
}
while(((tecla = getch()) != 60)&&(tecla != 27));
if(tecla == 27) goto FIN;

t = 0.; u = 0.; r = 0.;


for(k = 0;k <= n;)
{
if(kbhit())
{
if((tecla = getch()) == 27) break;
if(tecla == 59) r = 1.5;
}

ck_ant = ck_act;
ck_act = NivelClock();

if((ck_ant == 0) && (ck_act == 1))


{

yant=y1;
MideSalidas(&y0,&y1);
yact=y1;
if(y1 > 1.74) break;
if(y1 < -0.08) break;
gotoxy(5,13);printf("Tiempo: %f", t);
gotoxy(5,15); printf("varilla en grados : %f",y0*180./PI);
4.9 Control Óptimo Cuadrático del Péndulo Invertido 175

gotoxy(5,17);printf("carro en metros : %f",y1);

EstimaEstados(y0,y1);

/*Encuentra Control*/ /*u(k+1)*/


V = V_ant+r-Xe[2]; V_ant = V;//accion integral
u = KI*V-K[0]*Xe[0]-K[1]*Xe[1]-K[2]*Xe[2]-K[3]*Xe[3];

/*saturacion*/
if(u < -1.4) u = -1.4;
if(u > 1.4) u = 1.4;

vel = (yact-yant)/Ts/rp;//Xe_act[3]/rp;
/*Compensa zona muerta*/
if(u < 0) v = -DeadZone;
if(u > 0) v = +DeadZone;
if(u == 0)v = 0.;

EnviarVoltaje(u+v+offset);

/*guarda datos en arrays*/


u_[k] = u;
x1_[k] = Xe[0]; x2_[k] = Xe[1];
x3_[k] = Xe[2]; x4_[k] = Xe[3];
y_0_[k] = y0; y_1_[k] = y1;

k++;t += Ts;
}
}
FIN:
EnviarVoltaje(offset);

/*guarda tiempo*/
pfichero = fopen(tiempo,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",tiempo);
else
{
for(k = 0;k<n+1;k++)
{
t = k*Ts;
c = fwrite(&t,sizeof(float),1,pfichero);
}
fclose(pfichero);
176 Control Óptimo

printf("\nelementos escritos en %s:%d\n",tiempo,c);


}
/*guarda angulo varilla*/
pfichero = fopen(theta_,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",theta_);
else
{
c=fwrite(x1_,sizeof(x1_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",theta_,c);
}
/*guarda velocidad angular varilla*/
pfichero = fopen(v_vara,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",v_vara);
else
{
c=fwrite(x2_,sizeof(x2_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",v_vara,c);
}
/*guarda posicion del carro*/
pfichero=fopen(z_carro,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",z_carro);
else
{
c=fwrite(x3_,sizeof(x3_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",z_carro,c);
}
/*guarda velocidad del carro*/
pfichero=fopen(v_carro,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",v_carro);
else
{
c=fwrite(x4_,sizeof(x4_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",v_carro,c);
}
/*guarda y0 angulo de la varilla*/
pfichero=fopen(sal_var,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",sal_var);
else
{
4.9 Control Óptimo Cuadrático del Péndulo Invertido 177

c=fwrite(y_0_,sizeof(y_0_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",sal_var,c);
}
/*guarda y1 posicion del carro*/
pfichero = fopen(sal_car,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",sal_car);
else
{
c=fwrite(y_1_,sizeof(y_1_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",sal_car,c);
}
/*guarda y1 posicion del carro*/
pfichero = fopen(U_,"wb");
if (pfichero == NULL) printf("\nNo se puede abrir %s\n",U_);
else
{
c=fwrite(u_,sizeof(u_),n+1,pfichero);
fclose(pfichero);
printf("\nelementos escritos en %s:%d\n",U_,c);
}

getch();
}

4.9.8. Resultados Experimentales


Los resultados experimentales se obtuvieron con una señal de referen-
cia escalón de 1.5 m para la posición del carro. Los resultados del control
óptimo cuadrático del sistema de péndulo invertido con observador de orden
completo se muestran en las figuras: 4.20, 4.21 y 4.22.
En los resultados experimentales se observa que la posición del carro, que
es la señal de realimentación del servosistema, sigue a la señal de referencia
en menos de 6 segundos y con sobreamortiguamiento mı́nimo, tal como es-
taba propuesto en las especificaciones de diseño del sistema de control. La
posición angular del péndulo logra estabilizarse alrededor de cero; es decir,
se llega a posicionar en forma vertical.
Observar en la respuesta estacionaria, tanto en la posición del carro
como en la posición angular del péndulo, la presencia de una oscilación
estacionaria (ciclo lı́mite) que podrı́a reducirse usando sensores más precisos
178 Control Óptimo

posición del carro (medición directa)


2

1.5

1
posición (m)

0.5

−0.5
0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.20: Control óptimo del péndulo invertido: posición del carro.

ángulo del péndulo (medición directa)


0.5

0.4

0.3

0.2

0.1
ángulo (rad)

−0.1

−0.2

−0.3

−0.4

−0.5
0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.21: Control óptimo del péndulo invertido: posición angular del
péndulo.
4.10 Control Óptimo Cuadrático de la Grúa-Puente 179

entrada
1.5

0.5
entrada (v)

−0.5

−1

−1.5
0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.22: Control óptimo del péndulo invertido: señal de control.

(con un tamaño de paso de detección menor).


El algoritmo de control lineal empleado requiere que las variables no sal-
gan de la zona lineal impuesta por el modelo lineal. Sin embargo, el sistema
de control diseñado responde en forma adecuada para desviaciones de la
posición de la varilla de hasta ± 20o , lo que está bastante fuera de la zona
lineal impuesta por el modelo.

4.10. Control Óptimo Cuadrático de la Grúa-Puente


En esta sección nos ocupamos del diseño del control óptimo cuadrático
del proceso grúa-puente empleando el procedimiento de diseño presentado
en la sección 4.8.

4.10.1. Formulación del Problema


Dado el sistema grúa-puente, conformado por una varilla que cuelga li-
bremente de un carro impulsado por un servomotor D.C. controlado por
su voltaje de armadura, se desea diseñar un servocontrolador que sea ca-
paz de trasladar al carro a una posición determinada, de manera tal que
180 Control Óptimo

la oscilación en la varilla sea mı́nima. El problema en consideración es de


dos dimensiones, dado que la varilla se balancea en el mismo plano que la
trayectoria del carro. El diseño del sistema de control está basado en la teorı́a
de control óptimo cuadrático. La entrada al proceso (la señal de control) es
el voltaje de armadura del servomotor D.C. y las salidas del servosistema
son la posición angular del péndulo y la trayectoria horizontal del carro. Se
desea un tiempo de estabilización de la posición del carro de aproximada-
mente 6 segundos con el menor sobreimpulso posible. Cabe anotar que para
alcanzar las especificaciones de diseño planteadas, se requiere seleccionar
adecuadamente las matrices de ponderación.

4.10.2. Simulación del Sistema Controlado


La determinación del modelo matemático del proceso grúa-puente se
trató con amplitud en la sección 3.2. Para una frecuencia de muestreo de
200 Hz y asumiendo retención de memoria de orden cero, y siguiendo el
procedimiento desarrollado en las subsecciones 4.9.2, 4.9.3, 4.9.4 y 4.9.5, el
siguiente programa disopt3.m determina el modelo lineal discreto, calcula
las matrices de ganancia del controlador óptimo y del observador óptimo, y
simula el sistema de control para la grúa puente. Cabe recalcar que la simu-
lación emplea el modelo no lineal de la planta. Los resultados se muestran a
continuación del programa y los resultados gráficos se ilustran en las figuras
4.23, 4.24 y 4.25.
% disopt3.m SISTEMA DE CONTROL OPTIMO PARA LA GRUA-PUENTE
clear all
% PARAMETROS DEL PROCESO
mc = 0.92; me = 0; mv = 0.063095; mp = 0.2; g = 9.81;
lv = 0.767; le = 0; rp = 0.0648; n = 1/19.741;
Jm = 1.9596e-6;
Je = me*le^2; Jv = mv*lv^2/3; Jo = 0; Jp = mp*rp^2/2;
Jeq = Jm + n^2*(Jo + Jp);
Bm = 1.8342e-6; Bo =0; Beq = Bm + n^2*Bo;
Km = 31.071e-3; Kb = 31.053e-3; Ra = 7.38; KA = 14.9;
M1 = mc + me + mv; M2 = me*le + mv*lv/2;
J1 = Je + Jv; J2 = Jeq/(n^2*rp^2);
Kx = Km/(Ra*n*rp);
Bx = Beq/(n^2*rp^2) + Kb*Km/(n^2*rp^2*Ra);
d = ((M1+J2)*J1-M2^2);
a21 = -(M1+J2)*M2*g/d; a24 = -Bx*M2/d;
a41 = -M2^2*g/d; a44 = -J1*Bx/d;
b21 = Kx*M2*KA/d; b41 = J1*Kx*KA/d;
% MODELOS LINEALES CONTINUO Y DISCRETO
4.10 Control Óptimo Cuadrático de la Grúa-Puente 181

A = [0 1 0 0
a21 0 0 a24
0 0 0 1
a41 0 0 a44];
B = [0
b21
0
b41];
Cc = [0 0 1 0]; % POSICION DEL CARRO
Ts = 1/200; % TIEMPO DE MUESTREO
[G,H] = c2d(A,B,Ts);
G1 = [G zeros(4,1)
-Cc*G 1];
H1 = [H;-Cc*H];
M = [H1 G1*H1 G1^2*H1 G1^3*H1 G1^4*H1];
rM = rank(M); % rM=5 => COMPLETAMENTE CONTROLABLE
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [500 0 0 0 0
0 0 0 0 0
0 0 200 0 0
0 0 0 0 0
0 0 0 0 0.1]; R = [1];
P = zeros(5,5);
for i=1:1000
P = Q + G1’*P*G1 -G1’*P*H1*inv(R+H1’*P*H1)*H1’*P*G1;
end
K1 = inv(R+H1’*P*H1)*H1’*P*G1;
[KK,PP] = dlqr(G1,H1,Q,R); % K1=KK, P=PP
K = [KK(1) KK(2) KK(3) KK(4)]; KI = - KK(5);
% CALCULO DE LA GANANCIA DEL OBSERVADOR
C = [1 0 0 0
0 0 1 0]; % SE OBSERVAN POSICIONES ANGULAR Y LINEAL
Qe = [1000 0 0 0
0 1500 0 0
0 0 100 0
0 0 0 1500]; Re = [1 0;0 1];
Pe = zeros(4,4);
for i=1:200
Pe = Qe + G*Pe*G’ -G*Pe*C’*inv(Re+C*Pe*C’)*C*Pe*G’;
end
KeT = inv(Re+C*Pe*C’)*C*Pe*G’; Ke=KeT’;
[KKeT,PPe] = dlqr(G’,C’,Qe,Re); KKe=KKeT’; % Pe=PPe, Ke=KKe
% CONDICIONES INICIALES PARA LA SIMULACION
182 Control Óptimo

x1=0; x2=0; x3=0; x4=0; x5=0;


xe = [0;0;0;0]; r=1.5;
v=0; N = 4000; % tiempo en segundos: Ts*N
for k=1:N
u = -K*xe + KI*v;
u = -K*xe + KI*v;
if(u > 1.4), u = 1.4; % para no saturar el amplific.
elseif(u < -1.4), u = -1.4;
end
xe = G*xe + u*H + Ke*([x1;x3] - C*xe);
% PROCESO NO LINEAL DISCRETIZADO DIRECTAMENTE
den = -M2^2*cos(x1)^2+(M1+J2)*J1;
x1 = x1 + Ts*x2;
x2 = x2 + ...
Ts*(-M2^2*sin(x1)*cos(x1)*x2^2 -M2*Bx*cos(x1)*x4 ...
-M2*(M1+J2)*g*sin(x1)+M2*Kx*cos(x1)*KA*u)/den;
x3 = x3 + Ts*x4;
x4 = x4 + ...
Ts*(-M2^2*g*sin(x1)*cos(x1)-J1*M2*sin(x1)*(x2)^2 ...
-J1*Bx*x4 + J1*Kx*KA*u)/den;
v = v + r - x3;
y1(k)=x1; y2(k)=x3; U(k) =u;
end
% GRAFICOS
t = linspace(0,Ts*N,N);
figure(1)
plot(t,y2(1:N)); grid
ylabel(’Posicion del carro’)
xlabel(’Tiempo (s)’)
print -deps -f sgoz
figure(2)
plot(t,y1(1:N)); grid
ylabel(’Posicion angular de la grua-puente’)
xlabel(’Tiempo (s)’)
print -deps -f sgoa
figure(3)
plot(t,U); grid
ylabel(’Se~nal de control u’)
xlabel(’Tiempo (s)’)
print -deps -f sgou
4.10 Control Óptimo Cuadrático de la Grúa-Puente 183

   
0,9998 0,0050 0 −0,0002 0,0004
 −0,0972 0,9998 0 −0,0941   0,1462 
G=
 0,0000
; H= 
0,0000 1,0000 0,0049   0,0002 
−0,0019 0,0000 0 0,9508 0,0765

 
C= 0 0 1 0
   
1,0002 0,0050 0 0,0002 0 −0,0004
 0,0995 1,0002 0 0,0963 0   −0,1497 
   
G̃ = 
 0,0000 0,0000 1,0000 0,0049 0 ;
 H̃ = 
 0,0002 

 −0,0019 0,0000 0 0,9508 0   0,0765 
0,0000 0,0000 −1,0000 −0,0049 1,0000 −0,0002
 
1,9636 0,2257 −3,3116 −0,4202 0,0300
 0,2257 0,1481 −0,7068 −0,2891 0,0030 
 
P̃ = 10 × 

4
−3,3116 −0,7068 8,5186 1,4030 −0,0745 

 −0,4202 −0,2891 1,4030 0,5668 −0,0061 
0,0300 0,0030 −0,0745 −0,0061 0,0013
 
K̃ = K −KI
 
K= 8,2596 −4,3465 37,9206 10,3665]; KI = 0,2907
 
1,0102 −0,0055
 2,1836 −1,1280 
Ke = 
 −0,0005

0,9936 
−0,0982 0,6519

4.27 y 4.28.

4.10.3. El Hardware y el Software del Sistema de Control


La implementación del hardware, ası́ como el diseño del software del
sistema de control, fueron tratadas en las subsecciones 4.9.6 y 4.9.7, respec-
tivamente. Cabe anotar que el hardware del sistema y la estructura del soft-
ware es común, tanto para el péndulo invertido como para la grúa-puente.
Basta cambiar de signo en algunas sentencias del archivo PENDOI4.CPP
(descrito en la subsección 4.9.7) para crear el software de control del proceso
grúa-puente.
184 Control Óptimo

1.8

1.6

1.4

1.2
Posición del carro

0.8

0.6

0.4

0.2

0
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.23: Simulación del sistema grúa-puente: posición del carro.


0.5

0.4

0.3
Posición angular de la grúa puente

0.2

0.1

−0.1

−0.2

−0.3

−0.4
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.24: Simulación del sistema grúa-puente: posición angular de la va-


rilla.
4.10 Control Óptimo Cuadrático de la Grúa-Puente 185

1.4

1.2

Señal de control u 1

0.8

0.6

0.4

0.2

−0.2
0 2 4 6 8 10 12 14 16 18 20
Tiempo (s)

Figura 4.25: Simulación del sistema grúa-puente: señal de control.

posición del carro (medición directa)


2

1.5

1
posición (m)

0.5

−0.5
0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.26: Control óptimo de la grúa-puente: posición del carro.


186 Control Óptimo

ángulo de la varilla (medición directa)

0.6

0.4

0.2
ángulo (rad)

−0.2

−0.4

−0.6

0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.27: Control óptimo de la grúa-puente: posición angular del péndulo.

entrada
1.5

0.5
entrada (v)

−0.5

−1

−1.5
0 2 4 6 8 10 12 14 16 18 20
tiempo (s)

Figura 4.28: Control óptimo de la grúa-puente: señal de control.


4.11 Problemas Resueltos 187

4.10.4. Resultados experimentales


Los resultados experimentales que se muestran a continuación se obtu-
vieron con una señal de referencia escalón de 1.5 m para la posición del
carro. Los resultados del control óptimo cuadrático del sistema grúa-puente
con observador de orden completo se muestran en las figuras: 4.26,
Como en el caso del péndulo invertido, en los resultados experimentales
se observa que la posición del carro, que es la señal de realimentación del
servosistema, sigue a la señal de referencia en menos de 6 s y con sobreamor-
tiguamiento moderado, tal como estaba propuesto en las especificaciones de
diseño del sistema de control. La posición angular del péndulo logra esta-
bilizarse alrededor de cero; es decir, se llega a posicionar en forma vertical
hacia abajo.
Igualmente, el algoritmo de control lineal empleado requiere que las va-
riables no salgan de la zona lineal impuesta por el modelo lineal. Sin em-
bargo, se comprobó que el sistema de control diseñado responde en forma
adecuada para una desviación de la posición de la varilla de ± 20 grados,
que es bastante fuera de la zona lineal impuesta por el modelo.

4.11. Problemas Resueltos


En la sección problemas resueltos de los capı́tulos 4 al 8, la solución a los
problemas se encuentra, según el caso, en uno o más archivos con extensión
m escritos en código MATLAB.

Problema 4.1

El problema 3.1 presenta las ecuaciones que gobiernan la dinámica del sis-
tema de suspensión de un bus (ver figura 3.12). Diseñar un sistema de control
óptimo cuadrático estacionario para lograr el objetivo de control siguiente:
la salida del proceso y = x2 − x1 (referencia nula) no debe presentar so-
breimpulsos mayores que el 5 %, y luego de alrededor de 20 segundos, las
oscilaciones originadas por un disturbio escalón de 10 cm (provocada por
imperfecciones en la pista), prácticamente deben desaparecer. La selección
del tiempo de muestreo es a conveniencia del diseño.
% p3opt2.m SOLUCION DEL PROBLEMA 4.1
clear all
% PARAMETROS DEL PROCESO
m1 = 2500; k1 = 80000; b1 = 350;
m2 = 320; k2 = 500000; b2 = 15020;
188 Control Óptimo

a23 = (b1/m1)*(b1/m1+b1/m2+b2/m2)-k1/m1;
a33 = -(b1/m1+b1/m2+b2/m2);
a43 = -(k1/m1+k1/m2+k2/m2);
% MODELO LINEAL: dx/dt = A*x + B*u + E*d; y = C*x + D*u
A = [0 1 0 0
-b1*b2/(m1*m2) 0 a23 -b1/m1
b2/m2 0 a33 1
k2/m2 0 a43 0];
B = [0;1/m1;0;(1/m1+1/m2)];
E = [0;b1*b2/(m1*m2);-b2/m2;-k2/m2];
C = [0 0 1 0]; D = [0];
% CONVERSION AL ESPACIO DE ESTADO DISCRETO
T=0.8; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’);
[G,F,C,D] = c2dm(A,E,C,D,T,’zoh’);
% Contro Optimo del sistema
Q = [1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1];
R = [1];
% ECUACION DE RICCATI
P = diag(0,3); % MATRIZ DE CEROS DE ORDEN 4
for i = 1:40
P = Q + G’*P*G - G’*P*H*inv(R+H’*P*H)*H’*P*G;
end
% CALCULO DE LA MATRIZ DE GANANCIA K
K = inv(R+H’*P*H)*H’*P*G;
% SIMULACION DEL SISTEMA CONTROLADO
N = 200; x=[0;0;0;0]; w=0.01;
for k=1:N
U=-K*x;
x = G*x + H*U + F*w;
y(k)=x(3); u(k)=U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N)), grid
ylabel(’Posicion y (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
4.11 Problemas Resueltos 189

xlabel(’Tiempo en segundos’)
ylabel(’Control u (N)’)
print -deps -f p3opt2

−3
x 10
5
Posición y (m)

−5

−10
0 20 40 60 80 100 120 140 160
Tiempo en segundos
−4
x 10
1

0.8
Control u (N)

0.6

0.4

0.2

0
0 20 40 60 80 100 120 140 160
Tiempo en segundos

Figura 4.29: Salida controlada y = x1 − x2 y fuerza de control u correspon-


dientes al problema 4.1.

Problema 4.2

El problema 3.2 presenta las ecuaciones que gobiernan la dinámica longitudi-


nal de un avión comercial volando a velocidad de crucero (altura y velocidad
constantes). El control del ángulo de inclinación θ del avión (ver figura 3.14)
es un problema longitudinal a resolver. El objetivo de control es diseñar un
autopiloto que manipulando el ángulo δe del deflector de elevación, controle
el ángulo de inclinación del avión.
Se pide diseñar un sistema de control óptimo cuadrático estacionario que
genere una fuerza de control, de modo que la salida del proceso (el ángulo
de inclinación θ) presente un sobreimpulso menor al 10 % y un tiempo de
190 Control Óptimo

estabilización menor que 3 s, con error en estado estable nulo. La selección


del tiempo de muestreo es a conveniencia del diseño.
% p4opt2 SOLUCION DEL PROBLEMA 4.2
clear all

% ECUACION DE ESTADO DEL PROCESO


A=[-0.313 56.7 0;-0.0139 -0.426 0;0 56.7 0];
B=[0.232;0.0203;0];
C=[0 0 1]; D=[0];
% PROCESO DISCRETO
T=0.1; % TIEMPO DE MUESTREO
[num1, den1]=ss2tf(A,B,C,D);
[G,H]=c2d(A,B,T);
[Bz,Az]=ss2tf(G,H,C,D);

% CONTROL OPTIMO ESTACIONARIO CON ACCION INTEGRAL


G1 = [G zeros(3,1);-C*G 1];
H1 = [H;-C*H];

% INGRESO DE PESOS
Q = [1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1 ];
R = [1];
% EQUACION DE RICCATI
P = diag(0,3);
for i = 1:40
P = Q + G1’*P*G1 - G1’*P*H1*inv(R+H1’*P*H1)*H1’*P*G1;
end

% CALCULO DE LA GANACIA K DEL CONTROLADOR


KK = inv(R+H1’*P*H1)*H1’*P*G1;
K = [KK(1) KK(2) KK(3)];
KI = -KK(4);

% SIMULACION
N = 100; x=[0;0;0]; v=0; Y=0;
for k=1:N
r(k)=0.1; Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
x = G*x + H*U;
4.11 Problemas Resueltos 191

Y = C*x;
y(k) = Y; u(k) = U;
end

% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N)), grid
ylabel(’Inclinacion (rad)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Angulo del deflector (rad)’)
print -deps -f p4opt2

0.15
Inclinación (rad)

0.1

0.05

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

0.2
Angulo del deflector (rad)

0.15

0.1

0.05

−0.05
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 4.30: Ángulo de inclinación θ controlada y ángulo del deflector (señal


de control) correspondientes al problema 4.2.
192 Control Óptimo

Problema 4.3

En el problema 3.3 se describe el proceso de la bola rodando a lo largo


de una barra, con un grado de libertad, tal como se muestra en la figura
3.16. Una leva conecta la barra con un engranaje que está accionado por
un servomotor. Se desea diseñar un sistema de control óptimo que pueda
posicionar la bola en menos de 5 s a 0.5 m de un extremo de la barra que
mide 1 m de longitud. Las oscilaciones de la bola deben estar restringidas
sobre la barra y el voltaje de control no debe sobrepasar los ± 40 volt. La
selección del tiempo de muestreo es a conveniencia del diseño.
% p5opt2.m SOLUCION DEL PROBLEMA 4.3
close all
% DETERMINACION DE LA ECUACION DE ESTADO
M=0.11; R=0.015; g=9.8; L=1; J=9.99*1e-6; d=0.03;
A=[0 1 0 0
0 0 (M*g*d)/(L*(J/R^2 + M)) 0
0 0 0 1
0 0 0 0];
B=[0;0;0;1];
C=[1 0 0 0]; D=[0];
% PROCESO DISCRETO
T=0.1; % Tiempo de muestreo
[num1, den1]=ss2tf(A,B,C,D);
[G,H]=c2d(A,B,T);
% DETERMINAR SI EL PROCESO TIENE INTEGRADORES,
% ES DECIR, SI TIENE EIGENVALORES EN z=0:
% eigG = eig(G); % NO TIENE EIGENVALORES EN z=0;
% ADICIONANDO ACCION INTEGRAL
G1 = [G zeros(4,1);-C*G 1];
H1 = [H;-C*H];
% ANALIZAMOS SI LA PLANTA ES CONTROLABLE
M=[H1 G1*H1 G1^2*H1 G1^3*H1 G1^4*H1];
rM=rank(M); % rM=4 SISTEMA ES CONTROLABLE
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1e5];
R = [10];%100
% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr
[KK,P]=dlqr(G1,H1,Q,R);
K = [KK(1) KK(2) KK(3) KK(4)];
4.11 Problemas Resueltos 193

KI = -KK(5);
% SIMULACION
N = 100; x=[0;0;0;0]; v=0; Y=0;
for k=1:N
r(k)=0.5; Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
x = G*x + H*U;
Y = C*x;
y(k) = Y; u(k) = U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N)), grid
ylabel(’Posicion (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control’)
print -deps -f p5opt2

Problema 4.4

La figura 3.20 muestra un monorriel de dos carros descrito en el problema


3.5. El problema a resolver es el control de velocidad del carro de máquinas
mediante un sistema de control óptimo cuadrático. Para garantizar a los
pasajeros un viaje confortable, los cambios de velocidad deben realizarse
con un tiempo de estabilización menor que 10 segundos y con mı́nimo so-
breimpulso. El error en estado estable debe ser nulo. Simule una señal de re-
ferencia que cambie la velocidad de 30 a 10 m/s y demuestre que se cumplen
las especificaciones de diseño. La selección del tiempo de muestreo es a con-
veniencia del diseño.
% p7opt2 SOLUCION DEL PROBLEMA 4.4
close all
% PARAMETROS DEL PROCESO:
M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;
B12=500; B23=500; B1=5000; B2=10000; B3=10000;
% MODELO DEL PROCESO
A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
194 Control Óptimo

0.6

Posición (m)
0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

40
Voltaje de control

20

−20

−40
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 4.31: Posición de la bola y el voltaje de control para el problema 4.3.

0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B=[0 1 0 0 0 0]’;
alfa = 1; % CONSTANTE TACOMETRICA
C=[ 0 alfa 0 0 0 0
0 0 0 alfa 0 0
0 0 0 0 0 alfa];
D=[0;0;0];
[numc,denc]=ss2tf(A,B,C,D);
% MODELO LINEAL DISCRETO
T = 0.2; % perı́odo de muestreo
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
% ADICIONANDO ACCION INTEGRAL
G1 = [G zeros(6,1);-C(1,:)*G 1];
H1 = [H;-C(1,:)*H];
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
4.11 Problemas Resueltos 195

0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 100];
R = [10];
% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr
[KK,P]=dlqr(G1,H1,Q,R);
% SEPARAMOS LA ACCION INTEGRAL
K = [KK(1) KK(2) KK(3) KK(4) KK(5) KK(6)];
KI = -KK(7);
% SIMULACION
N = 500; x=[0;0;0;0;0;0]; v=0; Y=0;
for k=1:N
r(k)=20 + 10*sign(sin(0.02*k)); Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
x = G*x + H*U;
Y = C(1,:)*x;
y(k) = Y; u(k) = U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N),t,r(1:N)), grid
ylabel(’Velocidad (m/s)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Fuerza de control (N)’)
print -deps -f p7opt2

Problema 4.5

La figura 3.22 muestra el proceso ascensor tratado en el problema 3.6. El


problema a resolver es posicionar suavemente el ascensor en un piso deter-
minado, lo que significa sobreimpulso nulo (para que no se pase de piso) y
tiempo de estabilización menor que 10 s. Para no saturar al actuador (el
amplificador de potencia), la señal de control debe estar dentro del rango de
± 200 volt. Diseñar un sistema de control óptimo cuadrático estacionario de
posición que cumpla las especificaciones pedidas. La selección del tiempo de
muestreo es a conveniencia del diseño.
196 Control Óptimo

30

25

Velocidad (m/s)
20

15

10

5
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

600
Fuerza de control (N)

400

200

0
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 4.32: Velocidad del carro de máquinas y la fuerza de control para el


problema 4.4.

% p8opt2.m SOLUCION DEL PROBLEMA 4.5


clear all
% MODELO CONTINUO DE LA PLANTA
A=[-0.2 0 0 0
1 0 0 0
2 0 -2 0
5 0 0 -5];
B=[10e-3; 0; 0; 0]; C=[0 1 0 0 ]; D=[0];
% MODELO LINEAL DISCRETO
T = 0.2; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
G1 = [G zeros(4,1);-C*G 1];
H1 = [H;-C*H];
% INGRESO DE PESOS
Q = [1 0 0 0 0
0 100 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 3];
R = [0.01];
% ECUACION DE RICCATI
4.11 Problemas Resueltos 197

P = diag(0,4);
for i = 1:40
P = Q + G1’*P*G1 - G1’*P*H1*inv(R+H1’*P*H1)*H1’*P*G1;
end
% CALCULO DE LA MATRIZ DE GANANCIA KK
KK = inv(R+H1’*P*H1)*H1’*P*G1;
% SEPARAMOS LA ACCION INTEGRAL
K = [KK(1) KK(2) KK(3) KK(4)];
KI = -KK(5);
% KK = dlqr(G1,H1,Q,R);
% CALCULO DE LA MATRIZ DE OBSERVABILIDAD
No = [C’ G’*C’ (G’)^2*C’ (G’)^3*C’];
rankNo = rank(No); % sistema no es observable
% SIMULACION
N = 200; x=[0;0;0;0]; v=0; Y=0;
for k=1:N
r(k)=3*sign(sin(0.02*k)); Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
if(U > 200)
U = 200;
elseif(U < -200)
U = -200;
end
x = G*x + H*U;
Y = C*x;
y(k) = Y; u(k) = U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N),t,r(1:N)), grid
ylabel(’Posicion (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control’)
print -deps -f p8opt2

Problema 4.6
La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sección
horizontal A=9 m2 de cada tanque es constante. El objetivo de control
198 Control Óptimo

Posición (m)
0

−2

−4
0 5 10 15 20 25 30 35 40
Tiempo en segundos

100
Voltaje de control

−100

−200
0 5 10 15 20 25 30 35 40
Tiempo en segundos

Figura 4.33: Posición del ascensor y la fuerza de control correspondientes al


problema 4.5.

es controlar la altura H2 empleando el flujo Qo . La deducción del modelo


linealizado del proceso se derivó en el ejemplo 2.1. Diseñar un controlador
óptimo cuadrático estacionario con las especificaciones siguientes: tiempo de
estabilización menor que 20 s, sobreimpulso menor al 5 % y error nulo en
estado estable. El flujo de entrada (la señal de control) no debe sobrepasar
los 3 m3 /s. La selección del tiempo de muestreo es a conveniencia del diseño.
% p9opt2.m SOLUCION DEL PROBLEMA 4.6
clear all
% DEERMINACION DE LAS MATRICES DE LA ECUACION DE ESTADO
gam=0.4; rho=1.23; g=9.81; A=9; Qo=3;
H1eq = Qo^2/(gam^2*rho*g);
a11 = -((gam*((rho*g)^1/2))/(2*A*((H1eq)^1/2)));
A=[a11 0
-a11 a11];
B=[1; 0];
C=[0 1]; D=[0];
% DISCRETIZACION DEL SISTEMA
T = 0.2;
[G,H]=c2d(A,B,T);
% VERIFICANDO SI LA PLANTA TIENE ACCION INTEGRAL
% eigG=eig(G); % NO TIENE POLOS EN z=0;
4.11 Problemas Resueltos 199

% ADICIONANDO ACCION INTEGRAL


G1 = [G zeros(2,1);-C*G 1]; H1 = [H;-C*H];
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [1 0 0
0 1 0
0 0 0.02];
R = [2];
% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr
[KK,P]=dlqr(G1,H1,Q,R);
% SEPARAMOS LA ACCION INTEGRAL
K = [KK(1) KK(2)];
KI = -KK(3);
% SIMULACION
N = 200; x=[0;0]; v=0; Y=0;
for k=1:N
r(k)=3; Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
if(U > 5)
U = 5;
elseif(U < 0)
U = 0;
end
x = G*x + H*U;
Y = C(1,:)*x;
y(k) = Y; u(k) = U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N),t,r(1:N)), grid
ylabel(’Nivel (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Flujo de control (m^3/s)’)
print -deps -f p9opt2

Problema 4.7

El proceso electromecánico mostrado en la figura 3.26 se describe en el pro-


blema 3.8. Diseñar un sistema de control óptimo cuadrático estacionario
200 Control Óptimo

Nivel (m)
2

0
0 5 10 15 20 25 30 35 40
Tiempo en segundos

1.5
Flujo de control (m^3/s)

0.5

0
0 5 10 15 20 25 30 35 40
Tiempo en segundos

Figura 4.34: Nivel controlado H2 y el flujo de control para el problema 4.6.

para controlar la velocidad angular del eje del motor mediante el voltaje de
entrada que puede variar entre ± 100 volt.
% p11opt2.m SOLUCION DEL PROBLEMA 4.7
clear all
% PARAMETROS GENERALES
nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN = 7; % ORDEN DEL VECTOR ESTIMADO DE PARAMETROS
% PARAMETROS DEL SISTEMA:
J = 0.01; % MOMENTO DE INERCIA DEL MOTOR (kgm2/s2)
Ke =0.01; Kt = 0.01; % CONSTANTE ELECTROMOTRIZ (Nm/A)
R = 12; % RESISTENCIA (Ohmios)
C = 0.5; % CONDENSADOR (uF)
L = 0.5; % INDUCTANCIA DE LA ARMADURA (H)
Kw = 1.8; % CONSTANTE TORSIONAL (Nm/rad)
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-1/(R*C) -1/C 0;...
Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke);0 Kt/J 0];
Bc = [1/(R*C);0;0];
Cc = [0 0 1]; Dc = [0];
T = 0.05; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
4.11 Problemas Resueltos 201

[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
b1 = num(2); b2 = num(3); b3=num(4);

% VERIFICANDO SI LA PLANTA TIENE ACCION INTEGRAL


% raices = eig(G); % NO TIENE POLOS z=0;

% ADICIONANDO ACCION INTEGRAL


G1 = [G zeros(3,1);-C*G 1];
H1 = [H;-C*H];
% CALCULO DE LA GANANCIA DEL CONTROLADOR
Q = [1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 0.1];
R = [0.1];

% CONTROL OPTIMO DEL SISTEMA


% OBTENEMOS LA GANANCIA DEL CONTROLADOR APLICANDO dlqr
[KK,P]=dlqr(G1,H1,Q,R);
% SEPARAMOS LA ACCION INTEGRAL
K = [KK(1) KK(2) KK(3)];
KI = -KK(4);

% SIMULACION
N = 600; x=[0;0;0]; v=0; Y=0;
for k=1:N
r(k)=5*sign(sin(0.008*k)); Ref=r(k);
v = v + Ref - Y;
U = - K*x + KI*v;
% if(U > 24)
% U = 24;
% elseif(U < -24)
% U = -24;
% end
x = G*x + H*U;
Y = C(1,:)*x;
y(k) = Y; u(k) = U;
end
% GRAFICOS
t=linspace(0,N*T,N);
subplot(2,1,1)
plot(t,y(1:N),t,r(1:N)), grid
202 Control Óptimo

ylabel(’Velocidad (rad/s)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(t,u(1:N)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control’)
print -deps -f p11opt2

10
Velocidad (rad/s)

−5

−10
0 5 10 15 20 25 30
Tiempo en segundos

40

20
Voltaje de control

−20

−40

−60
0 5 10 15 20 25 30
Tiempo en segundos

Figura 4.35: Velocidad angular controlada y el voltaje de control para el


problema 4.7.

4.12. Problemas Propuestos


Problema 4.8

Demostrar que el valor mı́nimo de la función de costo descrita en la ecuación


4.11):

N −1
1 T 1  T 
J = x (N )Sx(N ) + x (k)Qx(k) + uT (k)Ru(k)
2 2
k=0
4.12 Problemas Propuestos 203

está dada por la expresión:


1
Jmin = xT (0)P (0)x(0)
2
donde los argumentos nulos representan el tiempo discreto nulo inicial.

Problema 4.9

Las ecuaciones del modelo linealizado para controlar la posición del cañón
montado en la torreta de un tanque (ver figura 3.28) empleando un actuador
hidráulico se detallan en el problema 3.9.
(a) Diseñar un sistema de control óptimo estacionario para controlar el
ángulo de elevación θ con las especificaciones siguientes: tiempo de
estabilización menor de 2 s, sobreimpulso y error en estado estacionario
nulos. Los disturbios tipo escalón pueden actuar simultáneamente o
no y pueden ser positivos o negativos. Para cada caso, el sistema de
control óptimo debe ser capaz de minimizar sus efectos. La selección
del tiempo de muestreo es a conveniencia del diseño.
(b) Lo mismo que (a), pero en este caso para controlar el ángulo azimutal.

Problema 4.10

El proceso columna de destilación se describe en el problema 3.10 y se


muestra en la figura 3.29. Diseñar un sistema de control óptimo multiva-
riable estacionario para controlar las temperaturas residuales ∆T1 = c13 ∆z1
y ∆T2 = c24 ∆z2 con las especificaciones siguientes: error en estado esta-
cionario nulo, sobreimpulso menor al 5 % y tiempo de estabilización menor
que 0.1 horas. Considerar disturbios unitarios actuando sobre el proceso
multivariable. La selección del tiempo de muestreo es a conveniencia del
diseño.

Problema 4.11

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito


en la sección 3.3, en donde la carga no lineal posee ahora dos grados de
libertad con Lo = 2L1 /3 y Mo =0.02 kg. La unión de la carga con el eje
del servomotor no es flexible. Las ecuaciones que describen la dinámica del
sistema son materia del problema 3.12. Diseñar un sistema de control óptimo
estacionario para controlar simultáneamente las posiciones θ y τ con mı́nimo
tiempo de estabilización y mı́nimo sobreimpulso.
204 Control Óptimo

Problema 4.12

La figura 3.32 muestra el proceso péndulo doble no lineal, el cual es una ex-
tensión del péndulo simple descrito en la sección 3.1. El acoplamiento entre
los dos péndulos de igual longitud no es flexible. Las ecuaciones que describen
la dinámica del sistema son materia del problema propuesto 3.13. Diseñar un
sistema de control óptimo no estacionario para controlar simultáneamente
las posiciones θ y τ con mı́nimo tiempo de estabilización y mı́nimo sobreim-
pulso, de modo tal que el péndulo doble permanezca en posición vertical.

Problema 4.13

La figura 3.33 muestra el proceso doble grúa-puente no lineal, el cual es una


extensión del proceso grúa-puente escrito en la sección 3.2. El acoplamiento
entre las dos secciones iguales de la varilla no es flexible. Las ecuaciones que
describen la dinámica del sistema son materia del problema propuesto 3.14.
Considerar que la carga esférica es de 0.02 kg. Diseñar un sistema de control
óptimo estacionario para controlar simultáneamente las posiciones θ y τ con
mı́nimo tiempo de estabilización y mı́nimo sobreimpulso, de modo tal que la
grúa-puente doble permanezca en posición vertical cuando el carro realiza
un recorrido predeterminado..

Problema 4.14

En la sección anterior se diseñaron sistemas de control óptimo estacionario


para varios procesos. Ahora abordaremos el diseño de sistemas de control
óptimo no estacionarios.
Diseñar un sistema de control óptimo no estacionario; es decir, determi-
nar la ley de control u(k) que minimice la siguiente función de costo:
N −1
1 1 T
J = [xT (N )Sx + [x (k)Qx + uT (N )Ru]
2 2
k=0

para una condición inicial x(0) = c arbitraria y para un valor de N para


el cual la o las salidas controladas cumplan las especificaciones de diseño.
Seleccionar apropiadamente el tiempo de muestreo y las matrices de pon-
deración. Graficar la o las salidas controladas y las correspondientes señales
de control. Calcular también el valor mı́nimo de la función de costo. Realizar
los cálculos requeridos anteriormente para cada uno de los procesos tratados
en los problemas 4.1, 4.2, 4.3, 4.4, 4.5, 4.6 y 4.7.
Capı́tulo 5

Control Adaptivo

En este capı́tulo se desarrolla un procedimiento para diseñar un sistema de


control adaptivo con autosintonización, con la capacidad de controlar procesos
no lineales univariables (de una entrada y una salida) operando en la presencia
de cargas no lineales. Tales procesos pueden ser representados por ecuaciones
diferenciales no lineales, donde precisamente los términos no lineales complican
los aspectos analı́ticos de modelado del proceso y de diseño del controlador.
Sin embargo, basado en el correspondiente modelo lineal del proceso, podemos
estructurar un sistema de control adaptivo con autosintonización combinan-
do algoritmos lineales de control con procedimiento para estimar en linea los
parámetros y los estados del proceso.
En la antepenúltima sección de este capı́tulo se presenta una aplicación
para demostrar la validez del procedimiento de diseño: control de posición de
un servomotor D.C. expuesto a cargas no lineales. La penúltima sección, pro-
blemas resueltos, está dedicada al diseño de sistemas de control adaptivo con
autosintonización para diferentes procesos. La última sección propone proble-
mas de diseño. Todos los archivos correspondientes a los ejercicios, problemas,
diseños, simulaciones y software desarrollados se pueden descargar del sitio:
http:/fiee.uni.edu.pe/728681F.

5.1. Introducción
Los sistemas de control adaptivo ajustan su comportamiento a las cam-
biantes propiedades del proceso controlado y de las señales que interactúan
sobre dicho proceso. Por el contrario, los sistemas de control fijos se ca-
racterizan por la presencia de una ley de control invariable con el tiempo.
206 Control Adaptivo

La investigación sobre controladores adaptivos se ha centrado en dos gru-


pos principales: controladores adaptivos con un modelo referencial y contro-
ladores con autosintonización. En este capı́tulo se emplea la configuración
de un sistema de control adaptivo con autosintonización mostrado en la fi-
gura 5.1. Tal sistema combina en su diseño un método de estimación de
parámetros (el de los mı́nimos cuadrados recursivo mejorado), una técnica
de estimación de estados (el filtro de Kalman), una representación lineal
del modelo del proceso, y una ley de control (el controlador proporcional-
integral óptimo cuadrático con realimentación de estados). El objetivo del
control es determinar una fuerza de control capaz de minimizar la diferencia
entre la salida del proceso y la señal de referencia.

^x ^
ESTIMADOR θ ESTIMADOR DE
DE ESTADOS PARAMETROS

U ESTIMACION MODELO
DE U LINEAL

+
Y CONTROLADOR CON + PROCESO Y
+ AUTOSINTONIZACION u U NO LINEAL
-
DISTURBIOS

Figura 5.1: Configuración del sistema de control con autosintonización.

El sistema de control con autosintonización mostrado en la figura 5.1


opera como sigue: luego de cada tiempo de muestreo, el vector estimado
de parámetros θ̂ se actualiza empleando los datos proporcionados por la
entrada U del proceso y por la salida Y del mismo. Luego, los elementos
de θ̂ se usan para recuperar el modelo lineal del proceso, lo cual permite
estimar el vector de estado del modelo del proceso x̂ (empleando un filtro
de Kalman) y el valor de equilibrio Ū de la ley de control actual U . Tales
resultados se usan luego para computar la ley de control residual u y para
actualizar la ley de control actual U a partir de la relación U = Ū + u.
Este capı́tulo está organizado como sigue. La sección 5.2 trata con el
problema de modelar procesos no lineales usando modelos lineales. Proce-
dimientos para estimar en lı́nea (“on-line”) los parámetros y estados del
5.2 Modelando Procesos No Lineales 207

modelo del proceso se desarrollan en la sección 5.3, mientras que el algo-


ritmo del controlador con autosintonización se deriva en la sección 5.4. La
sección 5.5 presenta el procedimiento para diseñar un sistema de control con
autosintonización. Una aplicación se proporciona en la sección 5.6: control
de posición de un servomotor sujeto a cargas no lineales.

5.2. Modelando Procesos No Lineales


Consideremos el siguiente proceso dinámico continuo:

Ẋ = f (X, U (t), v(X, t), t) (5.1)

donde X (de orden n) y U (t) (de orden uno) son el vector de estado y la ley de
control, respectivamente. La función no lineal f (.) puede también contener
disturbios v(.) en los estados. De la ecuación (5.1), es posible obtener el
modelo lineal siguiente:

Ẋ(t) = [A + ∆A]X(t) + [B + ∆B]U (t) + v(X, t)

Y (t) = [C + ∆C]X + w(X, t) (5.2)


donde A es la matriz de estado de dimensión n × n, B es la matriz de control
de dimensión n × 1, C es la matriz de salida de dimensión 1 × n, y ∆A, ∆B
y ∆C son las correspondientes incertidumbres acotadas con dimensiones
apropiadas. Además, v(X, t) es un vector no lineal de disturbios de orden
n actuando sobre los estados, w(X, t) es un disturbio no lineal de orden
uno actuando en la salida, e Y (t) es la salida del proceso de orden uno.
El proceso nominal no perturbado (o proceso con certidumbre) se obtiene
fijando en cero todas las incertidumbres y todos los disturbios en la ecuación
(5.1). Muestreando dicho modelo nominal, podemos obtener la siguiente
representación:

X(k + 1) = GX(k) + HU (k); Y (k) = CX(k) (5.3)

donde k es el tiempo discreto y las matrices G y H poseen las mismas


dimensiones que las matrices A y B, respectivamente. La correspondiente
ecuación polinomial residual toma la forma:

A(z −1 )y(z) = B(z −1 )u(z) (5.4)


208 Control Adaptivo

donde z es el operador de desplazamiento, con:

A(z −1 ) = 1 + a1 z −1 + . . . + an z −n
B(z −1 ) = b1 z −1 + . . . + bn z −n (5.5)

Empleando ahora las relaciones residuales: y = Y −Ȳ , x = X−X̄ y u = U −Ū


en las ecuaciones (5.3) y (5.4) obtenemos:

x(k + 1) = Gx(k) + Hu(k); y(k) = Cx(k) (5.6)

A(z −1 )Y (k) = B(z −1 )U (k) + C (5.7)


donde la constante C se determina de:

C = (1 + a1 + . . . + an )Ȳ − (b1 + . . . + bn )Ū (5.8)

5.3. Procedimientos de Estimación


Esta sección presenta los procedimientos para estimar (o identificar) en
lı́nea los parámetros y los estados del modelo del proceso.

5.3.1. El Método de los Mı́nimos Cuadrados Recursivo


Para estimar los parámetros del modelo del proceso usaremos las señales
actuales U (k) e Y (k) en lugar de sus desviaciones u(k) e y(k). Para ello, la
descripción en el espacio de estado dada por la ecuación (5.7) tiene que ser
reordenada para tomar la forma siguiente:

Y (k) = ψ T (k)θ̂(k) (5.9)

donde el vector de información (o de medición) ψ contiene los valores pre-


sentes y pasados de la entrada U y de la salida Y como sigue:

ψ T (k) = [Y (k − 1) . . . Y (k − n) U (k − 1) . . . U (k − n) 1] (5.10)

y el vector θ̂ contiene los parámetros a ser estimados, a saber:

ˆT
θ̂(k) = [−â1 (k) . . . − ân (k) b̂1 (k) . . . b̂n (k) C] (5.11)

Notar que en la ecuación (5.9), el orden del vector de información y el orden


del vector de parámetros es 2n+1; es decir, dichos vectores han incrementado
5.3 Procedimientos de Estimación 209

su orden en uno. La ecuación (5.7) con z = 1 (propiedad del valor final)


representa la condición de estado estable, es decir:
A(1)Ȳ = B(1)Ū + C (5.12)
El algoritmo básico de los mı́nimos cuadrados recursivo puede implementarse
en la forma siguiente:
1) Obtener el vector de parámetros inicial θ̂(0) usando los valores de los
parámetros del modelo del proceso (ecuación (5.5)).
2) Obtener el valor inicial del parámetro C(0) empleando la ecuación
(5.8), considerando Ū = 0 e Ȳ igual a la señal de referencia.
3) La matriz de covarianza inicial P puede tener la forma P = αI, donde
I es la matriz identidad y α  1.
4) Tomar nuevas mediciones de Y (k) y de U (K) en el proceso, para ob-
tener una nueva ecuación de la forma dada en (5.9).
5) Computar el error de estimación (ver ecuaciones (5.10) y (5.11)):
e(k) = Y (k) − ψ T (k)θ̂(k)

6) Sabiendo que P (k) = [ψ T (k)ψ(k)]−1 , computar: i(k) = P (k)ψ(k).


7) Computar:
j(k) = ψ T (k)i(k); γ(k) = i(k)/[λ + j(k)]
θ̂(k + 1) = θ̂(k) + γ(k)e(k); P (k + 1) = [I − γ(k)ψ T (k)]P (k)/λ
8) Actualizar: P (k + 1) = P (k) y θ̂(k + 1) = θ̂(k)
Ejemplo 5.1
Estimar los parámetros del proceso servomotor D.C. con carga no lineal
descrito en la sección 3.3, empleando el método de los mı́nimos cuadrados
recursivo. Emplee el modelo lineal de segundo orden del proceso y como
señal excitadora use un escalón de magnitud 0.4. Grafique la respuesta del
proceso.
Solución: El programa ejem5 1.m estima los parámetros para el proceso
pedido. La figura 5.2 grafica la respuesta Y del proceso a un escalón U = 0.4.
Las figuras 5.3 y 5.4 muestran los parámetros estimados. Podemos observar
que cada parámetro estimado converge a un valor que es aproximadamente
el valor del correspondiente parámetro del modelo discreto.
210 Control Adaptivo

% ejem5_1.m ESTIMACION DE PARAMETROS EMPLEANDO EL METODO


% DE LOS MINIMOS CUADRADOS RECURSIVO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.0352e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.0; % 0.01, 0.02, 0.045;
K = 31.071e-3; n = 19.741; L = 4.64e-3;

B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL CONTINUO DEL PROCESO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/R)/M]; % (c: CONTINUO)
Bc = [0;n*K*Kact/(R*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% CONDICIONES INICIALES Y OTROS PARAMETROS
alfa=1000; Pi = alfa*eye(5); % MATRIZ P INICIAL
theta_p = [-a1 -a2 b1 b2]’; % PARAMETROS DEL PROCESO
thetai = [0 0 0 0 0]’; % PARAMETROS INICIALES
lambda = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; U(1) = 0; U(2) = 0;
% PROCEDIMIENTO DE IDENTIFICACION
Mm = 1000;
for r = 1:Mm
k = r + 2;
U(k) = 0.4;
psi_p = [Y(k-1) Y(k-2) U(k-1) U(k-2)]’;
Y(k) = psi_p’*theta_p; % MODELO LINEAL DEL PROCESO
psi = [psi_p;1]; % VECTOR DE DATOS
e = Y(k)-psi’*thetai; % ERROR DE ESTIMACION
i = Pi*psi;
j = psi’*i;
gamma = i/(lambda + j);
5.3 Procedimientos de Estimación 211

theta = thetai+gamma*e; % VECTOR DE PARAMETROS


ae1(r) = -theta(1); % PARAMETRO a1 ESTIMADO
ae2(r) = -theta(2); % PARAMETRO a2 ESTIMADO
be1(r) = theta(3); % PARAMETRO b1 ESTIMADO
be2(r) = theta(4); % PARAMETRO b2 ESTIMADO
P = (eye(5) - gamma*psi’)*Pi/lambda;
% ACTUALIZACION
thetai = theta;
Pi = P;
end
% GRAFICOS
q=0:Mm-1;
figure(1)
subplot(2,1,1)
plot(q,U(1:Mm)); grid
ylabel(’SE~NAL EXCITATRIZ U’)
xlabel(’MUESTRAS DISCRETAS k = 0.01 s’)
subplot(2,1,2)
plot(q,Y(1:Mm)); grid
ylabel(’RESPUESTA Y DEL PROCESO’)
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)’)
print -deps -f ejem5_1a
figure(2)
plot(q,ae1,q,ae2,’-.’); grid
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s) ’)
ylabel(’PARAMETROS ESTIMADOS’)
print -deps -f ejem5_1b
figure(3)
plot(q,be1,q,be2,’-.’); grid
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)’)
ylabel(’PARAMETROS ESTIMADOS’)
print -deps -f ejem5_1c

5.3.2. Mı́nimos Cuadrados Recursivo Mejorado


El algoritmo básico de los mı́nimos cuadrados recursivo se encuentra bas-
tante difundido. Sin embargo, dicho algoritmo puede presentar problemas
potenciales de carácter numérico que podrı́an afectar el diseño final del con-
trolador con autosintonización. Por tal motivo, en este capı́tulo se emplea
el método de los mı́nimos cuadrados recursivo mejorado propuesto en [5], el
cual puede implementarse en la forma siguiente:
212 Control Adaptivo

0.4

SEÑAL EXCITATRIZ U
0.3

0.2

0.1

0
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS DISCRETAS k = 0.01 s
RESPUESTA Y DEL PROCESO

2.5

1.5

0.5

0
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.2: Respuesta del modelo lineal del proceso a un escalón de magnitud
U = 0.4.

0.5
PARAMETROS ESTIMADOS

−0.5

−1

−1.5

−2
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.3: Parámetros estimados â1 (k) (curva sólida) y â2 (k).
5.3 Procedimientos de Estimación 213

0.045

0.04

PARAMETROS ESTIMADOS 0.035

0.03

0.025

0.02

0.015

0.01

0.005

0
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.4: Parámetros estimados b̂1 (k) (curva sólida) y b̂2 (k).

1) Obtener el vector de parámetros inicial θ̂(0) usando los valores de los


parámetros del modelo del proceso dadas en la ecuación (5.4).

2) Obtener el valor inicial del parámetro C(0) empleando la ecuación


(5.8), considerando Ū = 0 e Y igual a la señal de referencia.

3) La matriz de covarianza inicial P puede tener la forma P = αI, donde


I es la matriz identidad y α  1.

4) Tomar nuevas mediciones de Y (k) y de U (K) en el proceso, para ob-


tener una nueva ecuación de la forma dada en (5.9).

5) Computar: ρ(k) = max(1, ψ(k)); ψn = ψ/ρ(k)

6) Determinar la matriz N (k) aplicando factorización Cholesky en:

N (k)N (k)T = P (k)

7) Determinar la matriz diagonal de escalamiento S(k) con elementos sjj .


Tal matriz minimiza el número condicional del producto S(k)N (k)
siempre que sjj = 1/njj , donde cada njj se obtiene tomando el valor
absoluto de la suma de los elementos de la fila j de N (k).
214 Control Adaptivo

8) Computar:
PS (k) = S(k)P (k)S(k)
ψnS = [S(k)]−1 ψn
T
r(k) = 1 + ψnS (k)PS (k − 1)ψnS (k)
 & 
1 4P (k − 1)ψ (k)2
S nS
λ(k) = 1 − r(k) − r2 (k) −
2 tr PS (k − 1)

en (k) = Y (k)/ρ(k) − ψnT (k) θ̂(k − 1)


T
j(k) = [ψnS (k + 1)PS (k)ψnS (k + 1) + λ(k)]
θ̂(k + 1) = θ̂(k) + S −1 (k)PS (k)ψnS (k)en (k + 1)/j(k)
HnS (k + 1) = PS (k)ψnS (k + 1) × [ψnS
T
(k + 1)PS (k)ψnS (k + 1) + λ(k)]−1
PS (k + 1) = [I − HnS (k + 1)ψnS
T
(k + 1)]PS (k)/λ(k)


max eig(PS )
tt = abs
min eig(PS )

9) Implementar el criterio para parar la estimación y para encontrar la


nueva matriz de escalamiento Nnew como sigue: sabiendo que tt es
el número condicionante de PS , si tt ≤ τ (cota inferior), parar la
estimación; en otro caso, si tt ≥ κ (cota superior), determinar Nnew (k)
T ), calcular los elementos n
(a partir de la relación PS = Nnew Nnew newjj
(valor absoluto de la suma de los elementos de las filas de Nnew (k)),
determinar la matriz diagonal Snew con elementos snewjj = 1/nnewjj , y
calcular la matriz PnewS = Snew PS Snew . Finalmente, actualizar: P =
PnewS .

Ejemplo 5.2

Estimar los parámetros del proceso servomotor D.C. con carga no lineal
descrito en la sección 3.3, empleando el método de los mı́nimos cuadrados
recursivo mejorado. Emplee el modelo no lineal de segundo orden del pro-
ceso y como señal excitadora use un escalón de magnitud 0.4. Grafique la
respuesta del proceso.
Solución: El programa ejem5 2.m estima los parámetros para el proceso
pedido. La figura 5.5 grafica la respuesta Y del proceso a un escalón U
= 0.4. Las figuras 5.6 y 5.7 muestran los parámetros estimados. Podemos
observar que cada parámetro estimado converge a un valor constante.
5.3 Procedimientos de Estimación 215

% ejem5_2.m ESTIMACION DE PARAMETROS EMPLEANDO EL METODO


% DE LOS MINIMOS CUADRADOS RECURSIVO MEJORADO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Lo = 0.776;
K = 31.071e-3; n = 19.741; L = 4.64e-2;
Mo = 0.0; % peso variable: 0 gr, 10 gr, 20 gr y 45 gr

B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL CONTINUO DEL PROCESO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/R)/M]; % (c: CONTINUO)
Bc = [0;n*K*Kact/(R*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% CONDICIONES INICIALES (ARBITRARIAS) Y OTROS PARAMETROS
alfa=1000; N = 5; Pi = alfa*eye(N); % MATRIZ P INICIAL
theta_p = [-a1 -a2 b1 b2]’; % PARAMETROS DEL PROCESO
thetai = [-a1/3 -a2/2 3*b1 2*b2 0]’; % PARAMETROS INICIALES
lambda = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; U(1) = 0; U(2) = 0;
x1 = 0; x2 = 0;
% PROCEDIMIENTO DE IDENTIFICACION
Mm = 1000;
for r = 1:Mm
k = r + 2;
U(k) = 0.4;
% MODELO NO LINEAL DE SEGUNDO ORDEN DISCRETIZADO DIRECTAMENTE
TN = cc*sign(x2);
x1=x1+T*x2;
x2=x2+T*(-(N/M)*sin(x1) - (B/M + n^2*K*E/(M*R))*x2 - TN/M ...
+ (n*K*Kact/(R*M))*U(k) );
Y(k) = x1;
216 Control Adaptivo

% PROCEDIMIENTO DE IDENTIFICACION
psi_p = [Y(k-1) Y(k-2) U(k-1) U(k-2)]’;
psi = [Y(k-1) Y(k-2) U(k-1) U(k-2) 1]’;
nor = max(1,norm(psi));
psin = psi/nor;
Q = chol(Pi’);
S = inv(diag(Q*ones(N,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
LF = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(k)/nor - thetai’*psin;
div = psins’*Ps*psins + LF;
theta = thetai + e*inv(S)*Ps*psins/div;
ae1(r) = -theta(1); % PARAMETRO a1 ESTIMADO
ae2(r) = -theta(2); % PARAMETRO a2 ESTIMADO
be1(r) = theta(3); % PARAMETRO b1 ESTIMADO
be2(r) = theta(4); % PARAMETRO b2 ESTIMADO
Hns = Ps*psins/div;
Ps = Ps/LF - Hns*psins’*Ps/LF;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
thetai = theta; Pi = Ps;
elseif tt >= cmax,
Qnew = chol(Ps’);
Snew = inv(diag(Qnew*ones(N,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thetai = theta;
end
end
% GRAFICOS
q=0:Mm-1;
figure(1)
subplot(2,1,1)
plot(q,U(1:Mm))
ylabel(’SE~
NAL EXCITATRIZ U’)
grid
subplot(2,1,2)
plot(q,Y(1:Mm))
ylabel(’RESPUESTA Y DEL PROCESO’)
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)’)
grid
5.3 Procedimientos de Estimación 217

print -deps -f ejem5_2a


figure(2)
plot(q,ae1,q,ae2)
text(250,0.55,’a2’);
text(250,-0.7,’a1’);
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)’)
ylabel(’PARAMETROS ESTIMADOS’)
grid
print -deps -f ejem5_2b
figure(3)
plot(q,be1,q,be2)
text(250,2.5e-3,’b1’);
text(250,-3e-3,’b2’);
xlabel(’MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)’)
ylabel(’PARAMETROS ESTIMADOS’)
grid
print -deps -f ejem5_2c

0.4
SEÑAL EXCITATRIZ U

0.3

0.2

0.1

0
0 100 200 300 400 500 600 700 800 900 1000
RESPUESTA Y DEL PROCESO

0.15

0.1

0.05

0
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.5: Respuesta del proceso no lineal a un escalón de valor U = 0.4.


218 Control Adaptivo

0.6
a2

0.4

ESTIMADOS
0.2

0
PARAMETROS

−0.2

−0.4

−0.6

a1

−0.8
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.6: parámetros estimados â1 (k) y â2 (k).

−3
x 10
14

12

10
ESTIMADOS

4
PARAMETROS

b1
2

−2
b2
−4

−6
0 100 200 300 400 500 600 700 800 900 1000
MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)

Figura 5.7: parámetros estimados b̂1 (k) y b̂2 (k).


5.4 La Ley de Control 219

5.3.3. Estimación de Estados


De la ecuación (5.6) podemos obtener el siguiente modelo nominal per-
turbado del proceso:

x(k + 1) = Gx(k) + Hu(k) + v(k)


y(k) = Cx(k) + w(k) (5.13)

El procedimiento de estimación descrito en la subsección anterior nos pro-


porciona el vector de parámetros estimado del proceso θ̂(k). Usando los
elementos de dicho vector de parámetros, podemos reconstruir las matrices
estimadas Ĝ(k), Ĥ(k) y Ĉ(k). El vector de estado estimado x̂(k) puede ser
obtenido empleando un filtro de Kalman [6], con ecuación de observación:

x̂(k) = x̄(k) + Ko (k)[y(k) − Ĉ(k)x̄(k)] (5.14)

y ecuación de actualización de estados:

x̄(k + 1) = Ĝ(k)x̂(k) + Ĥ(k)u(k) (5.15)

En la ecuación (5.14), la matriz de ganancia Ko (k) se calcula de:

Ko (k) = Po (k)Ĉ T (k)[Ĉ(k)Po (k)Ĉ T (k) + Ro ]−1 (5.16)

donde Po (k) es la matriz definida positiva, solución única de la siguiente


ecuación matricial discreta asociada de Riccati:

Po (k + 1) = Qo + Ĝ( T )(k)Po (k)Ĝ(k) − ĜT (k)Ko (k)Ĉ(k)Po (k)Ĝ(k) (5.17)

donde Qo y Ro son matrices de covarianza definidas positivas correspondien-


te a los disturbios v y w, respectivamente.

5.4. La Ley de Control


Es bastante conocido [6] que el controlador proporcional óptimo cuadrático
es una matriz de ganancia Kx que nos permite formular la siguiente ley de
control u = −Kx x(k). Dicha matriz es el resultado de la minimización de la
función de costo:

I= [xT (k)Qx(k) + u2 (k)R] (5.18)
k=0
220 Control Adaptivo

sujeto a la ecuación de restricción:


x(k + 1) = Gx(k) + Hu(k)
donde la matriz Q = QT es semidefinida positiva y la matriz R es definida
positiva. En la subsección 4.5 se detalla cómo seleccionar estas matrices. La
ganancia Kx se obtiene de:
Kx = (R + H T SH)−1 H T SG (5.19)
donde S es la única matriz definida-positiva solución de la siguiente ecuación
matricial discreta asociada de Riccati:
0 = S − GT SG + GT SHKx (5.20)
Para mejorar el rendimiento del controlador proporcional, es posible adi-
cionar acción integral a dicho controlador. Definiendo la variable z(k) como
la integral (sumatoria) del error [Ȳ (k) − Y (k)]:

k−1
k−1
k
z(k) = [Ȳ (i) − Y (i)] = [−y(i)]; z(k + 1) = [−y(i)]
i=0 i=0 i=0

entonces:
z(k + 1) = z(k) − y(k) = z(k) − Cx(k) (5.21)
de modo que la representación en el espacio de estado del sistema aumentado
toma la forma siguiente:
xa (k + 1) = Ga xa (k) + H a u(k) (5.22)
a a
y(k) = C x (k) (5.23)
donde el superı́ndice a significa aumentado. El vector xa y las matrices Aa ,
B a y C a poseen la forma:



a x(k) a G 0
x (k) = ; G (k) =
z(k) −C I


H
Ha = ; C a = [C 0] (5.24)
0
Por consiguiente, el problema es determinar la matriz de ganancia K a como
resultado de la minimización de la siguiente función de costo:


a
I = [xa )T (k)Qa xa (k) + u2 (k)R] (5.25)
k=0
5.5 Procedimiento de Diseño 221

donde la matriz Qa = [Qa ]T es semidefinida positiva. La ganancia K a se


obtiene de:
K a = {R + [H a ]T P a H a }−1 [H a ]T P a Ga (5.26)
En la ecuación (5.26), P a es la única matriz definida-positiva solución de la
siguiente ecuación matricial discreta asociada de Riccati:
P a = Qa + [Ga ]T P a Ga − [Ga ]T P a H a K a (5.27)
Por consiguiente, la ley de control del controlador óptimo cuadrático pro-
porcional integral viene a ser:
u(k) = −K a xa (k) (5.28)
y los parámetros de ponderación de rendimiento son R y Qa .

5.5. Procedimiento de Diseño


El procedimiento para diseñar el sistema de control con autosintonización
ilustrado en la figura 5.1 es como sigue:
1) Formular el problema (definir especificaciones de diseño).
2) Usando toda la información disponible acerca del proceso no lineal,
determinar sus modelos lineal y no lineal (sección 5.2).
3) Implementar el método de los mı́nimos cuadrados recursivo mejorado
(subsección 5.3.2) para estimar los parámetros del modelo del proceso.
4) Implementar el procedimiento desarrollado en la subsección 5.3.3 para
estimar los estados del modelo del proceso.
5) Implementar la ley de control residual u(k) (sección 5.4) dada por la
ecuación (5.28), computar Ū (k) usando la ecuación (5.8), y actualizar
la ley de control actual empleando la relación U (k) = u(k) + Ū (k).
6) Simular el sistema de control adaptivo variando las matrices de pon-
deración R, Qa , Ro y Qo , hasta obtener un rendimiento satisfactorio
del sistema.
7) Implementar el hardware.
8) Implementar el software de control.
9) Realizar pruebas de funcionamiento (resultados experimentales).
222 Control Adaptivo

5.6. Control Adaptivo de un Servomotor No Li-


neal
5.6.1. Formulación del Problema
El servomotor D.C. con carga no lineal (discutido ampliamente en la
sección 3.3) es un proceso de una entrada y una salida que puede ser contro-
lado por el voltaje de armadura. La carga no lineal es una varilla metálica
acoplada al eje del servomotor, a manera de un brazo robótico de un grado
de libertad. En el extremo de la varilla se pueden acoplar cargas adicionales.
El objetivo del control es diseñar e implementar un sistema de control adap-
tivo con autosintonización, de modo tal que la varilla se posicione en una
referencia predeterminada con mı́nimo sobreimpulso en su respuesta, a pe-
sar de la presencia de la carga no lineal y de las no linealidades inherentes
del proceso como son las fricciones estática y de Coulomb, y saturación en
el amplificador del servomotor.

5.6.2. El Modelo del Proceso


La figura 3.9 presenta la estructura del proceso no lineal a controlar. La
tabla 3.2 describe las variables y los valores de los parámetros. Vimos en el
ejemplo 5.1 que el proceso no lineal puede ser descrito mediante un modelo
lineal en el espacio de estado de la forma:

ẋ = Ac x + Bc u; y = Cc x

donde:



0 1 0  
Ac = 2E Bc = KnKact ; Cc = 1 0
−MN
−( M
B
+ Kn
MR ) MR
(5.29)
La función de transferencia de pulso Gp (z), para un tiempo de muestreo de
0.01 s (o lo que es lo mismo, una frecuencia de muestreo de Fs = 100 Hz),
tiene la forma:
y(z) b1 z + b2 b1 z −1 + b2 z −2
Gp (z) = = 2 = (5.30)
u(z) z + a1 z + a2 1 + a1 z −1 + a2 z −2

y su correspondiente ecuación de diferencias es:

y(k) = −a1 y(k − 1) − a2 y(k − 2) + b1 u(k − 1) + b2 u(k − 2) (5.31)


5.6 Control Adaptivo de un Servomotor No Lineal 223

donde a1 = -1.9608, a2 = 0.9626, b1 = 0.044 y b2 = 0.045. Vimos que par-


tiendo de la ecuación (5.30), un mismo proceso puede adoptar múltiples
representaciones de estado de la forma:
x(k + 1) = Gx(k) + Hu(k); y(kT ) = Cx(kT )
donde G, H y C son las matrices de estado, de control y de salida respectiva-
mente, con dimensiones apropiadas. La representación canónica controlable
del proceso (primera forma, ecuación (3.100) con b0 = 0) tiene la forma:



0 1 0
G = ; H=
−a2 −a1 1
 
C = b2 − a2 b0 b1 − a1 b0 ; D = [0] (5.32)

5.6.3. Estimación de Parámetros


Para estimar (o identificar) los parámetros del modelo del proceso, em-
pleamos el método de los mı́nimos cuadrados recursivo mejorado desarrolla-
do en la subsección 5.3.2. Como primer paso calculamos el vector inicial de
parámetros (ecuación (5.5):
 T
θ(0) = −a1 −a2 b1 b2 C(0)
donde el valor inicial de C(0) (ecuación (5.8) con Ū = 0 e Ȳ igual a la señal
de referencia) es:
C = (1 + a1 + a2 )Ȳ
En el tercer paso fijamos la matriz de covarianza inicial P de orden 5:
 
α 0 0 0 0
 0 α 0 0 0 
 
P =  0 0 α 0 0  ; α = 1000 (5.33)
 0 0 0 α 0 
0 0 0 0 α
Como cuarto paso obtenemos nuevas mediciones de Y (k) y de U (K) (ver
ecuación (5.9)) y formulamos:
Y (k) = ψ T (k)θ̂(k)
ψ T (k) = [Y (k − 1) Y (k − 2) U (k − 1) U (k − 2) 1]
ˆ
θ̂(k) = [−â1 (k) − â2 (k) b̂1 (k) b̂2 (k) C(k)]T

Con los datos determinados hasta aquı́, ahora podemos implementar los
otros pasos (ver ejemplo 5.2) con Cmin = 15 y Cmax = 100.
224 Control Adaptivo

5.6.4. Estimación de Estados


El procedimiento para la estimación de estados se describe en la subsec-
ción 5.3.3. El procedimiento de estimación (subsección anterior) nos propor-
ciona el vector de parámetros estimado del proceso, a saber:
ˆ
θ̂(k) = [−â1 (k) − â2 (k) b̂1 (k) b̂2 (k) C(k)]T

Usando los elementos de dicho vector de parámetros, podemos reconstruir las


matrices estimadas Ĝ(k), Ĥ(k) y Ĉ(k) correspondientes a la representación
canónica controlable (ecuación (5.32)):



0 1 0
Ĝ(k) = ; Ĥ(k) =
−â2 (k) −â1 (k) 1
 
Ĉ(k) = b̂2 (k) b̂1 (k) ; D̂(k) = [0]
Las ecuaciones del filtro de Kalman para estimar el vector de estado x̂ son
(ver ecuaciones (5.14), (5.15) y (5.16)):

x̂(k) = x̄(k) + Ko (k)[y(k) − Ĉ(k)x̄(k)] (5.34)

x̄(k + 1) = Ĝ(k)x̂(k) + Ĥ(k)u(k) (5.35)


Ko (k) = Po (k)C T (k)[Ĉ(k)Po (k)Ĉ T (k) + Re ]−1 (5.36)
Para cada muestra discreta, el programa de simulación disadap.m (sección
5.6.7) calcula las matrices Po (k) y Ko (k) empleando las matrices de cova-
rianza de los disturbios v y w, a saber, Qo = 0.01 y Ro = 0.04.

5.6.5. La Ley de Control


Para determinar el controlador proporcional- integral óptimo cuadrático
con realimentación de estados (sección 5.4), la representación en el espacio
de estado aumentado toma la forma siguiente (ecuación (5.23)):

xa (k + 1) = Ga (k)xa (k) + H a (k)u(k); y(k) = C a (k)xa (k)

donde:



a x(k) a G 0
x (k) = ;
G (k) =
z(k) −C I


a H
H = ; C a = [C 0]
0
5.6 Control Adaptivo de un Servomotor No Lineal 225

La matriz de control K a se obtiene de:

K a (k) = {R + [H a (k)]T P a (k)H a (k)}−1 [H a (k)]T P a (k)(k)Ga (k)

El programa disadap.m calcula las matrices K a (k), Ga (k) y H a (k) para cada
tiempo de muestreo. En el software de control implementado, la matriz P a (k)
se obtiene luego de iterar la ecuación de Riccati 20 veces en cada perı́odo de
muestro. Los valores de R y Qa para la simulación son:
 
0,05 0 0
R = 0,45; Qa =  0 0,01 0 ; (5.37)
0 0 0,01

5.6.6. La Ley de Control Residual


Para el sistema de control a lazo cerrado podemos tomar la señal Ȳ (k)
igual a la referencia para todo k. Ası́, podemos calcular la ley de control
residual empleando la relación u(k) = U (k) − Ū (k) (sección 5.4), donde
Ū (k) se halla en lı́nea a partir de la ecuación (5.8), como sigue:

Ū (k) = [b̂1 (k) + b̂2 (k)]−1 [1 + â1 (k) + â2 (k)]Ȳ (k) − C(k)
ˆ

Finalmente, actualizamos la ley de control actual: U (k) = u(k) + Ū (k).

5.6.7. Simulación del Sistema de Control Adaptivo


El siguiente programa disadap.m resume todos los pasos descritos anteri-
ormente para simular el sistema de control adaptivo. Es importante recalcar
que los algoritmos de control lineal están siendo aplicados al modelo no
lineal del proceso, con el fin de darle mayor realismo al proceso de simu-
lación. La simulación incluye la estrategia para no saturar el amplificador,
pero no incluye la compensación de la no linealidad provocada por la fricción
de Coulomb debido a que no es necesario (conforme a los resultados de la
simulación). El programa disadap.m es autoexplicativo.
% disadap.m SIMULACION DEL SISTEMA DE CONTROL DE POSICION
% ADAPTIVO CON AUTOSINTONIZACION
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; Ra = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.02; % 0.00, 0.01, 0.045;
226 Control Adaptivo

K = 31.071e-3; n = 19.741; L = 4.64e-3;


Lo = 0.776;
B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL DEL PROCESO CONTINUO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/Ra)/M]; % (c: CONTINUO)
Bc = [0;n*K*Kact/(Ra*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
a11 = 0; a12 =1; a21 = -a2; a22 = -a1;
b11 = b1; b21 =b2-a1*b1; c11 =1; c12 = 0;
Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21];
Ccc =[c11 c12]; Dcc = [0];
% REPRESENTACION POLINOMIAL
% A(z^(-1)) = 1 + a1*z^(-1) + a2*z^(-1);
% B(z^(-1)) = b1*z^(-1) + b2*z^(-1);
% A(z^(-1))*Y(k) = B(z^(-1))*U(k) + Ce; % CASO AUMENTADO
% en el estado estacionario: z = 1:
% (1 + a1 + a2)*Yo = (b1 + b2)*Uo + Ce
% CONDICIONES INICIALES
Y(1) = 0; Y(2) = 0; Y(3) = 0; % SALIDA ACTUAL
y(1) = 0; y(2) = 0; % SALIDA RESIDUAL
U(1) = 0; U(2) = 0; U(3) = 0; % SE~NAL DE CONTROL ACTUAL
u(1) = 0; u(2) = 0; % SE~NAL DE CONTROL RESIDUAL
xmenos = zeros(2,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
X1 = 0; X2 = 0; % ESTADOS ACTUALES
% CONDICIONES INICIALES DE LOS PARAMETROS
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA
frec = 0.007; % FRECUENCIA DE LA SE~NAL DE REFERENCIA
Ce = (1 + a1 + a2)*Ref; % VALOR INICIAL DE Ce
thi = [-a1 -a2 b1 b2 Ce]’; % VECTOR INICIAL DE PARAMETROS
alfa=1000; Pi = alfa*eye(5); % MATRIZ DE COVARIANZA INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
cmax = 100; cmin = 10; % UMBRALES DE ESTIMACION
5.6 Control Adaptivo de un Servomotor No Lineal 227

% PARAMETROS DE OPTIMIZACION
Qo = 0.01; Ro = 0.04; % PARA EL FILTRO DE KALMAN
R = 0.45; Qa = [0.05 0 0;0 0.1 0;0 0 1]; % PARA LA GANANCIA Ka
% ******** LAZO DEL SISTEMA DE CONTROL ADAPTIVO *********
Mm = 2000;
for r = 1:Mm
t = r + 2;
% SE~NAL DE REFERENCIA
Yo(t)= Ref*sign(sin(frec*(t-2)));
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t-1) Y(t-2) U(t-1) U(t-2) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*Nn’ = Pi’
S = inv(diag(Nn*ones(5,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t)/rho - thi’*psin;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(5,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2);
be1 = th(3); be2 = th(4); Ce = th(5);
ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -a1;
GE = [ae11 ae12;ae21 ae22];
be11 = 0; be21 = 1; HE = [be11;be21];
ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0];
% SALIDA RESIDUAL (DESVIACION)
y(t) = Y(t) - Yo(t);
228 Control Adaptivo

% CALCULO DE LA GANANCIA Ko DEL ESTIMADOR DE KALMAN


Ko = dlqe(GE,HE,CE,Qo,Ro);
xmas = xmenos + Ko*(y(t) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR OPTIMO
Ga = [GE zeros(2,1);-CE 1];
Ha = [HE;0];
Ca = [CE 0];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t);
% CALCULO DE Uin (VALOR D.C. DE U(t))
AE = 1 + ae1 + ae2; BE = be1 + be2;
Uin = inv(BE)*(AE*Yo(t) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t) = u(t) + Uin;
% LIMITANDO LA SE~NAL U(t) PARA EVITAR SATURACION
if(U(t) > 1.4)
U(t) = 1.4;
elseif(U(t) <-1.4)
U(t) = -1.4;
end
% MODELO NO LINEAL DE SEGUNDO ORDEN (DISCRETIZCION DIRECTA)
TN = cc*sign(X2);
X1 = X1 + T*X2;
X2 = X2 + T*(-(N/M)*sin(X1) - (B/M + n^2*K*E/(M*R))*X2 ...
- TN/M + (n*K*Kact/(R*M))*U(t) );
Y(t+1) = X1;
end
% ***************** FIN DEL LAZO DE CONTROL **************
% GRAFICOS
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,Yo(1:Mm),ejex,Y(1:Mm)); grid
ylabel(’Posicion Y (rad)’)
subplot(2,1,2)
plot(ejex,U(1:Mm)); grid
ylabel(’Se~nal de control U (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps simsca % CREA simsca.eps
5.6 Control Adaptivo de un Servomotor No Lineal 229

Posición Y (rad)
1

−1

−2
0 2 4 6 8 10 12 14 16 18 20

2
Señal de control U (voltios)

−1

−2
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 5.8: Resultado de la simulación del sistema de control adaptivo para


controlar la posición angular del servomotor D.C. sujeto a cargas no lineales.

5.6.8. Implementación del Hardware


El sistema de control de posición consta de un servomotor D.C. con me-
canismo de reducción, una varilla acoplada al eje del servomotor (la carga no
lineal) perpendicular al eje de giro del servomotor, una etapa de potencia (el
amplificador PWM) y un sensor de posición conformado por un codificador
óptico (acoplado al eje del motor), un decodificador de cuadratura y un con-
tador de 16 bits. El hardware también incluye una PC Pentium y una tarjeta
de adquisición de datos Lab-PC+. A la carga no lineal (la varilla metálica)
se le pueden acoplar cargas adicionales. El esquema de implementación se
ilustra en la figura 5.9 mientras que el proceso (el servomotor con carga no
lineal) se ilustra en la figura 5.10.

El Actuador

El actuador está conformado por el servomotor D.C. (de campo magnético


permanente y escobillas conmutadas), un generador PWM y una etapa de
potencia. Debido a que el motor no responde inmediatamente a una tensión
de entrada; es decir, le toma un pequeño tiempo para llegar a la máxima
230 Control Adaptivo

COMPUTADORA
PERSONAL

TARJETA LAB-PC+ ETAPA DE POTENCIA

SALIDAS DAC0 Generador Amplificador


PWM de potencia
ANALOGICAS DAC1

Sensor (encoder)
PA0
..
PA .
PA7
COMPUERTAS MUX
DIGITALES PB0
..
PB . 16 bits SERVO-
DE ENTRADA MOTOR
PB7
Y SALIDA Decodificador DC
PC1 de cuadratura
.. y contador
PC . UP / DOWN
PC7 Varilla
PC0
Fs
CONTADOR / OUTB0 Carga
Adicional
TEMPORIZADOR

Figura 5.9: Esquema de implementación del sistema de control de posición.


5.6 Control Adaptivo de un Servomotor No Lineal 231

Codificador optico

Reductor de
velocidad
Alimentacion

11
00
. . . 00
11
00
11
00
11
00
11
00
11
Servomotor DC 00
11

Eje de salida
Varilla
Adaptador de carga

11
00
00
11
Carga 00
11
00
11
adicional

Figura 5.10: Proceso servomotor D.C. con carga no lineal y codificador óptico
incorporado.

velocidad, es necesario usar un sistema que nos permita variar la velocidad


del servomotor (entre un mı́nimo y un máximo) ası́ como también el sentido
de su rotación. Dicho sistema comprende un generador PWM LM3524 y
un circuito de potencia (ver figura 5.11). Tal sistema nos permite variar la
velocidad de acuerdo al ancho de pulso de la señal PWM. El circuito PWM
LM3524 genera señales moduladas por ancho de pulso de 15.4 KHz, las
cuales son luego amplificadas por el circuito de potencia, generándose una
tensión de alimentación cuyos lı́mites son ± 25 volt. El circuito de potencia
está conformado por un sistema de disparo y dos pares de conmutadores A
y B, tal como se muestra en la figura 5.12.
El sistema de disparo permite la conmutación de cada par conmutador
(A o B), de forma tal que no se produzcan cortocircuitos durante la con-
mutación. Cuando el sistema de disparo cierra el conmutador A y abre el B,
el sentido de la corriente sigue la lı́nea punteada, induciendo de esta forma
una tensión +Vcc en el servomotor. Ahora, si el sistema de disparo abre el
232 Control Adaptivo

Ca Ra Amplificador Rc
de potencia

Viene de la Salida A
PWM Al servo-
salida A0 Salida B motor DC
de la LAB-PC+
Generador
PWM

Cp Rp

Figura 5.11: Etapa de potencia.

Vcc

A1 B1
~ SISTEMA
SENAL PWM SERVO-
DE MOTOR

DISPARO DC
B2
A2
Par conmutador A = A1 + A2
Par conmutador B = B1 + B2

Figura 5.12: Esquema general del sistema de disparo y de conmutación.

conmutador A y cierra el B, el sentido de la corriente sigue la lı́nea segmen-


tada, induciendo ası́ una tensión -Vcc en el servomotor. Esto significa que el
motor recibe en sus bornes una tensión de onda cuadrada, cuyo valor varı́a
entre ± Vcc, con un consumo de corriente que depende de los conmutadores
conformados por transistores MOSFET.
5.6 Control Adaptivo de un Servomotor No Lineal 233

El Sensor de Posición
El sensor de posición esta conformado por un codificador óptico ro-
tatorio (interno al motor), un decodificador de cuadratura y un contador
UP/DOWN. El codificador óptico rotatorio consiste en:

Una fuente de luz que puede ser un LED infrarrojo o láser.

Un disco opaco ranurado acoplado al eje del motor, que se mueve entre
una fuente de luz permanente habilitada y un detector. A medida que
gira el rotor, el paso de luz hacia el detector es habilitado o inhabilitado
por un patrón de áreas oscuras y transparentes impreso en el disco,
produciendo una señal digital que puede ser fácilmente interpretada
por el controlador de movimiento del sistema.

Un sensor de luz; usualmente es un fototransistor o un fotodiodo.

Un conformador de pulsos que convierte la señal sinusoidal proveniente


de la salida del fotodetector en señal de onda cuadrada.

El esquema básico del codificador óptico se muestra en la figura 5.13. El

Canal A
Canal B
Fuente de luz
Transistor
’optico

Eje del servomotor

Disco con
mascara

Figura 5.13: Estructura de un codificador óptico rotatorio.

codificador usado en esta implementación, como en la mayorı́a de los casos,


incluye dos pistas de marcas o ranuras en cuadratura (canales A y B), ca-
da una asociada a una fuente de luz y un fotodedector independientes. Los
canales A y B producen dos ondas cuadradas desfasadas 900 entre sı́ que se
utilizan para determinar la dirección del movimiento. Por ejemplo, si el canal
B adelanta al canal A, el eje está girando en sentido antihorario, y viceversa.
234 Control Adaptivo

Si no se utiliza detección de cuadratura, la vibración puede causar el envı́o


de pulsos erráticos al contador, incluso si la máquina está detenida. El cod-
ificador usado tiene una resolución de 512 ppr (pulsos por revolución). El
decodificador de cuadratura es el CI LS7083 que activa la cuenta ascendente
o descendente del contador UP/DOWN de 16 bits, dependiendo del sentido
de giro del motor, captado por el desfasaje entre los trenes de pulsos de los
canales A y B. El contador UP/DOWN está conformado 4 CI 74HC193; dos
de ellos entregan un grupo de 8 bits de datos (bus A) a la tarjeta LAB-PC+;
de manera análoga otro grupo igual de bits conforman el bus B (ver figura
5.14).

Clock UP
74HC Clock Down
4 bits
193
Puerto
digital 8 bits
PA Canal A
74HC
4 bits
193 LS7083
Canal B

74HC
4 bits
193
Puerto R L
digital 8 bits
PB 74HC
4 bits
193

Figura 5.14: Decodificador de cuadratura y contador UP/DOWN.

La Interfaz Lab-PC+
La interfaz entre el microcomputador, la planta, el actuador y el sensor
es la tarjeta de adquisición de datos Lab-PC+. Los terminales usados para
el control son:

1. Una salida analógica (DAC0). La señal de control se envı́a usando el


terminal DAC0 al CI LM3524 (generador PWM) con una resolución
de 12 bits para generar la señal analógica.
5.6 Control Adaptivo de un Servomotor No Lineal 235

2. Dos puertos digitales de entrada (PA y PB) de 8 bits. Tales puertos


reciben los datos provenientes del contador UP/DOWN.

3. El terminal OUTB0, que se utiliza como salida de una señal de reloj


para el funcionamiento del sistema de control.

4. El terminal PC0 (bit 0 del puerto C), que se utiliza como entrada de
la señal de reloj Fs proveniente de OUTB0.
La señal de reloj OUTB0 se genera a partir de una base de tiempos de 2
MHz que activa la salida del contador/temporizador 8253. Los puertos de
entrada/salida provienen de la PPI (Interfaz Paralela Programable) 8255.

5.6.9. Implementación del Software de Control


Consideraciones Generales
El software de control debe implementar las ecuaciones del sistema en
tiempo real, incluyendo la solución de las ecuaciones de Riccati para calcu-
lar las ganancias del controlador y del observador. Ya que la simulación del
sistema no incluye estos tipos de cálculo, es necesario explicar sucintamente
las ecuaciones involucradas en el sistema de control adaptivo a ser imple-
mentado en tiempo real. El modelo lineal continuo del proceso se obtiene de
la ecuación (5.29):
nKact K nKact K
M θ̈ + (B + )θ̇ + N θ = θ
R R
θ̈ + 3,626 + θ̇ + 17,4604θ = 89,09θ
La ecuación de diferencias del proceso es (ver ecuación (5.31)):

θk + a1 θk−1 + a2 θk−2 = b1 vk−1 + b2 vk−2

donde θ(k) = y(k) y v(k) = u(k) (v es la señal de control que requiere


compensación). La ecuación canónica controlable a emplear en el algoritmo
de control se da en la ecuación (5.32):

xk = GXk−1 + Huk−1 ; yk = CXk

con x = Xk y u(k) = uk .
La ley de control es: uk = −K a Xka con (ver ecuación (5.26)):

K a = (R + (H a )T P a H a )−1 (H a )T P a Ga
236 Control Adaptivo

donde la matriz P a (k) = Pka se obtiene de (ver ecuación (5.27)):


a
Pk+1 = Q + (Ga )T Pka Ga + (Ga )T Pka H a (R + (H a )T Pka H a )−1 (H a )T Pka G
Para un perı́odo de muestreo, empezando con Pka igual a la matriz nula,
iteramos 20 veces la ecuación anterior, lo que da como resultado una nueva
matriz Pka . En el siguiente perı́odo de muestreo, la matvı́ariz resultante Pka
se usa como matriz inicial para resolver nuevamente la ecuación de Riccati,
resultando luego de 20 iteraciones en una matriz Pk+1a . Se ha observado que

P a alcanza un valor estacionario luego de 4 o 5 perı́odos de muestreo (lo


cual es equivalente a 80 o 100 iteraciones). Esta forma de cálculo ahorra
tiempo de computación. Los parámetros de optimización empleados para
el controlador óptimo son R = 0.05 y Qa = 0,1 I3 , donde I3 es la matriz
identidad de orden 3.
La matriz de ganancia Ko del filtro de Kalman se puede obtener apli-
cando dualidad al problema de control. Es decir, haciendo los reemplazos
siguientes:
G a → GT , Ha → CT , Qa → Qo , R → Ro , P a → Po
en las fórmulas de K a y Pk+1a del controlador óptimo. De esta forma re-
solvemos la ecuación de Riccati para Po (como en el caso del controlador)
para luego poder calcular Ko . Los parámetros de optimización usados para
el observador óptimo (filtro de Kalman) son: Qo =0.01 y Ro =0.04, mientras
que para el algoritmo de estimación son: P = 1000I5 (matriz de covarianza
inicial, ecuación (5.33)), Cmin = 15, y Cmax = 100.
Computacionalmente, el software de control requiere de muchos cálculos.
Por ejemplo, para el proceso de estimación de parámetros se deben realizar
dos descomposiciones de Cholesky para matrices de orden 5 empleando el
método de Jacobi (ver referencia [16], página 365), se deben calcular todos
los valores propios y ordenarlos en una matriz simétrica. Felizmente no es
necesario efectuar inversión de matrices porque el proceso controlado es
univariable y la operaciones con matrices generalmente fueron entre matrices
simétricas.
Además de la compensación de la no linealidad producida por la fricción
de Coulomb (añadiendo ± 0.2 voltios a la señal de control, dependiendo si
la velocidad angular es positiva o negativa), se considera también el efecto
de saturación del servomotor cuando la señal de control sobrepasa los 2.3 ±
1.4 voltios, donde los 2.3 voltios corresponden al valor que hay que agregar
(valor “offset”) para que la velocidad inicial sea cero. Este valor offset es
propio del servomotor empleado.
5.6 Control Adaptivo de un Servomotor No Lineal 237

Los Programas Fuente


Los programas necesarios para la implementación en tiempo real del sis-
tema de control adaptivo diseñado se estructuran en tres archivos de código
fuente, los cuales son:

1. Archivo R1LLIB.H, que es un archivo de declaraciones de funciones


definidas en el archivo R1LLIB.CPP. Estas funciones permiten facilitar
el manejo de la tarjeta de adquisición de datos Lab-PC+.

2. Archivo R1LLIB.CPP, que también es un archivo de definiciones de


funciones declaradas en R1LLIB.H para facilitar el manejo de la tarjeta
de adquisicion de datos Lab-PC+. Este archivo emplea la librerı́a de
funciones NI-DAQ [25] y llama a la función ConfigurarHardware para,
precisamente, configurar el hardware empleado.

3. Archivo CON122.CPP: Constituye el software de control.

Ensamblaje del Software de Control


El software de control emplea en su ejecución la siguiente secuencia:

1. Inicializa_Sistema();
2. Mide_Variables(&y,&r,&vel,t);
3. Estima_Parametros(Th,y,u);
4. Encuentra_Control(r,&u);
5. u=Aplica_Control(u,vel);

La compilación de archivos para hacerlos ejecutables se realiza en Bor-


land C/CPP mediante un proyecto que involucre todos los archivos, en nues-
tro caso, los archivos R1LLIB.H, R1LLIB.CPP y CON122.CPP.
Una precaución a considerar es la de especificar que la compilación se
ejecute con el modelo de memoria “Large”. Otra precaución es asegurarse
que al inicio y al final de la ejecución de los programas, el servomotor debe
estar parado, lo que se logra enviando la señal offset de 2.3 voltios.

Los Programas Fuente Comentados


/*R1LLIB.H
*Archivo de declaracion de funciones definidas en R1LLIB.CPP
*Estas funciones permiten facilitar el manejo de la tarjeta
*de adquisicion de datos Lab-PC+: Digital Input (16 bits),
238 Control Adaptivo

*Analog Output, Timer Generator, Polling. Usa funciones de


*lecto/escritura de registros (inportb, outport).
*/
#if !defined (__R1LLIB_H_PRY)
#define __R1LLIB_H_PRY
//Configurando la tarjeta Lab-PC+ (Digital Input, Polling,
//Analog Output, Timer)
void ConfigurarHardware(unsigned,unsigned,unsigned,unsigned,int);
//Salida de Voltage por R1LAOPort
void EnviarVoltage(float);
//Leer Posicion (16 bits leidos por R1LLSBPort y R1LMSBPort)
unsigned int LeerPosicion();
//Leer Nivel del clock (polling). Devuelve 0 o 1
int NivelClock ();

/*R1LLIB.CPP
*Archivo de declaracion de funciones definidas en R1LLIB.H
*Estas funciones permiten facilitar el manejo de la tarjeta
*de adquisicion de datos Lab-PC+: Digital Input (16 bits),
*Analog Output, Timer Generator, Polling. Usa funciones de
*lecto/escritura de registros (inportb, outport).
*/
#include "r1llib.h"
#include "nidaq.h"
#include <dos.h>
static unsigned R1LLSBPort; // direccion del LSB (bit menos
//significativo) del puerto digital de entrada PA0-7
static unsigned R1LMSBPort; // direccion del MSB (bit mas
//significativo del puerto digital de entrada PB0-7
static unsigned R1LPollPort; // direccion del puerto digital
//de polling PC0-7. Esto es, la entrada al timer de la se~nal
//de muestreo en forma de una sucesion de pulsos en el bit
//indicado en la descripcion del bus (PC0)
static unsigned R1LAOPort; // direccion de la salida
//anal’ogica (DAC0)
static int R1LFS ; // frecuencia de muestreo (Hertz)
/* Inicializando la tarjeta de adquisicion de datos */
void ConfigurarHardware (unsigned pollPort, unsigned lPort,
unsigned hPort, unsigned salPort, int frec)
{
int cuentaTimer, deviceCode;
cuentaTimer = (int)(2000000/frec);
R1LPollPort = pollPort;
5.6 Control Adaptivo de un Servomotor No Lineal 239

R1LLSBPort = lPort;
R1LMSBPort = hPort;
R1LAOPort = salPort;
R1LFS = frec;
USE_LAB();
Init_DA_Brds(1,&deviceCode);
ICTR_Setup(1,0,3,cuentaTimer,1); // clock de muestreo = timer0
DIG_Prt_Config(1,(int)(pollPort - 0x270),0,0);
DIG_Prt_Config(1,(int)(lPort-0x270),0,0);
DIG_Prt_Config(1,(int)(hPort-0x270),0,0);
}
/*Enviando al puerto de salida el voltaje especificado */
void EnviarVoltage (float u)
{
unsigned salidaDigital;
salidaDigital = (unsigned) (409.5*u-0.5);
outport(R1LAOPort,salidaDigital);
}
/*Detectando el numero de posiciones registrados en los
contadores */
unsigned int LeerPosicion()
{
unsigned char oct1,oct2;
oct1 = inportb(R1LLSBPort);
oct2 = inportb(R1LMSBPort);
return (255*oct2+oct1);
}
/*Detectando verdadero o falso en forma alternativa, de
acuerdo a la frecuencia indicada en ConfigurarHardware */
int NivelClock ()
{
unsigned char bytePoll;
bytePoll = inportb (R1LPollPort);
return (bytePoll&1);
}

/*************** CON122.CPP Software de Control **************/


#include "r1llib.h"
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <alloc.h>
#include <conio.h>
240 Control Adaptivo

const float ESCALA= 2.*M_PI/(512.*19.7);


/*ESCALA contiene la escala rad/pulsos */
const float LOW_r = 1.*M_PI/2.; /* valor LOW de la referencia */
const float HIGH_r= 1.*M_PI/3.; /* valor HIGH de la referencia */
/*Declaracion de las funciones GORDAS */
void Inicializa_Sistema();
void Mide_Variables(float *yk, float *r, float *vel, float t);
void Estima_Parametros(float *Theta, float Yk, float Uk);
void Encuentra_Control(float r, float *u);
float Aplica_Control(float u, float ykp);
/*Declaracion de las miles de variables globales existentes */
float a1, a2, b1, b2, U0, Cc;
/*coeficientes de la ecuacion de diferencias; valor medio del
control y valor medio de la salida */
float Td; /* per’iodo de muestreo */
float t, tsimul; /* tiempo de simulacion actual y total */
float Fs; /* frecuencia de muestreo */
int p0, pk; /* posicion en pulsos, anterior y actual */
/*IDENTIFICACI’ON */
float Thk[5], Th[5];
/*vectores de estimacion de parametros, auxiliar y definitivo */
float ym1, ym2, um1, um2, ek, div, rt; /* ’ultimos dos valores
de la posicion y del control, el error actual, el valor
auxiliar div y el par’ametro r(k) */
float Pk[5][5],Nk[5][5],Sk[5],Psk[5][5],Psn[5][5],Psaux[5][5];
/*matriz P, su descomposicion usando Cholesky, N y matrices
S(k), Ps(k), Psn(k) y una matriz auxiliar */
float Phi[5], Phin[5], Phins[5], Ro;
/*vectores Psi(k), Psin(k), PsinS(k) y parametro rho */
float Cmax, Cmin, Co, LF;
/*valores Cmax, Cmin, P, lambda(k) y numero condicion de C */
float calculaC(); /* max(eig(Psk))/min(eig(Psk)) */
/*Control Optimo y Observador Optimo */
float y, x[2], z, TOL, rr, u;
/*valores de la salida, del estado, del integrador; tolerancia
*para Riccati; actualizaci\’on de los estados y de la se~nal de
*control; todos los valores son relativos */
float Q[3][3], R, Ge[3][3], He[3], Ce[3], K[3];
*/matrices Q, R, G^a, H^a, C^a y K del controlador ’optimo */
float Qb[2][2], Rb, G[2][2], H[2], C[2], Kb[2];
/*matrices Qb, Rb, G, H, C y Kb del algoritmo del observador
optimo */
float P[3][3], Pb[2][2], Maux1[3][3], Maux2[3][3], Maux3[3][3];
5.6 Control Adaptivo de un Servomotor No Lineal 241

/*Matrices de Riccati del controlador y del observador, y


auxiliares de calculo */
float Vaux1[3], Vaux2[3], Vaux3[3], Vaux4[3], Raux1;
/*vectores auxil. para calcular matriz soluci\’on de Riccati */
/*Aplicacion del Control */
float VcFC, VcFE, Wth, Ofst;
/*valores de tension equivalente a la friccion de Coulomb y a
la friccion est\’atica; valor del umbral de velocidad angular y
valor del offset, en la aplicacion de la se~nal de control */
***** FUNCIONES ****
********************************************************/
float Aplica_Control(float u, float ykp)
{
float v;
if(fabs(ykp)<=Wth)
{
if(u<0.) v = -VcFE;
if(u>0.) v = VcFE;
}
else
{
if(u<0.) v = -VcFC;
if(u>0.) v = VcFC;
}
if(u+v<-1.5) u= -1.5;
else if(u+v>1.4) u= 1.4;
EnviarVoltage(u+v+Ofst);
return u;
}
/*Inicializando parametros y variables globales (P, Pb, G,
Gb, H, Hb, a1, a2, b1, b2, ...). Usa InicializaHardware */
void Inicializa_Sistema()
{
/*Con Varilla
a1=-1.9614; a2= .9631;
b1= .0044; b2= .0043;
Sin Varilla */
a1=-1.6246; a2= .6246;
b1= .0479; b2= .0410;
/*ATENCION: LOS VALORES DE a1, a2, b1, b2 DEPENDEN DE LA Fs */
VcFE= .2; VcFC= .15;
Wth = .1; Ofst= 2.3;
Fs= 100.0; U0 = 0.;
242 Control Adaptivo

Td= 1./Fs; Cc = 0.;


t = 0.; tsimul= 100.;
G[0][0] = 0.; G[0][1]= 1.; H[0] = 0.; C[0] = b2;
G[1][0] =-a2; G[1][1]=-a1; H[1] = 1.; C[1] = b1;
Ge[0][0]= 0.;Ge[0][1]= 1.; Ge[0][2]=0.; He[0]= 0.; Ce[0]= b2;
Ge[1][0]=-a2;Ge[1][1]=-a1; Ge[1][2]=0.; He[1]= 1.; Ce[1]= b1;
Ge[2][0]=-b2;Ge[2][1]=-b1; Ge[2][2]=1.; He[2]= 0.; Ce[2]= 0.;
P[0][0]= 0.;P[0][1]= 0.;P[0][2]= 0.;
P[1][0]= 0.;P[1][1]= 0.;P[1][2]= 0.;
P[2][0]= 0.;P[2][1]= 0.;P[2][2]= 0.;
Q[0][0]= .1;Q[0][1]= 0.;Q[0][2]= 0.;
Q[1][0]= 0.;Q[1][1]= .1;Q[1][2]= 0.;
Q[2][0]= 0.;Q[2][1]= 0.;Q[2][2]= .1;
R =.05;
Pb[0][0]=0.;Pb[0][1]=0.;Qb[0][0]=.01;Qb[0][1]=0.;
Pb[1][0]=0.;Pb[1][1]=0.;Qb[1][0]=0.;Qb[1][1]=.01;
Rb =.04;
y=0.; x[0]=0.; x[1]= 0.; z=0.; y=0.; u=0.; TOL= 1.e-3;
Cmax= 100.;
Cmin= 15.;
ym1 = ym2 = um1 = um2 = 0.;
Thk[0] = Th[0] = -a1; Pk[0][0] = 1000.;
Thk[1] = Th[1] = -a2; Pk[1][1] = 1000.;
Thk[2] = Th[2] = b1; Pk[2][2] = 1000.;
Thk[3] = Th[3] = b2; Pk[3][3] = 1000.;
Thk[4] = Th[4] = Cc; Pk[4][4] = 1000.;
Pk[0][1] = Pk[0][2] = Pk[0][3] = Pk[0][4] = 0.;
Pk[1][0] = Pk[1][2] = Pk[1][3] = Pk[1][4] = 0.;
Pk[2][0] = Pk[2][1] = Pk[2][3] = Pk[2][4] = 0.;
Pk[3][0] = Pk[3][1] = Pk[3][2] = Pk[3][4] = 0.;
Pk[4][0] = Pk[4][1] = Pk[4][2] = Pk[4][3] = 0.;
ConfigurarHardware(0x272, 0x270, 0x271, 0x264, Fs);
EnviarVoltage(Ofst);
p0 = LeerPosicion();
}
/*Midiendo posicion, velocidad y referencia. Estimando
estado actual empleando observador optimo cuadratico */
void Mide_Variables(float *yk, float *r, float *vel, float t)
{
int i, j, k, n=2, niter;
double delta;
/*En primer lugar, la consigna: r= r(t)*/
if(t<20. || (40.<=t && t<60.) || (80.<=t && t<100.)) *r= LOW_r;
5.6 Control Adaptivo de un Servomotor No Lineal 243

else *r= HIGH_r;


/*Ahora leo la posici\’on */
pk= LeerPosicion();
*yk = ym1 + ((float)(abs(pk-p0)>8000?0:pk-p0))*ESCALA;
p0= pk;
/*Y la salida */
y= *yk - *r;
/*Y la velocidad angular */
*vel= (5.*(*yk-ym1)+ *vel)/(1.+5.*Td);
/*Y vamos con el Observador: Primero, Riccati */
delta= TOL+1.;
niter= 0;
while(delta>TOL && 20>niter++)
{
/*P(k).Ct y C.P(k) */
for(i=0; i<n; i++)
for(Vaux1[i]=Vaux2[i]=0.,j=0; j<n; j++){
Vaux1[i] += Pb[i][j]*C[j];
Vaux2[i] += C[j]*Pb[j][i];
}
/*Raux1= Rb + C.P(k).Ct */
for(Raux1= Rb, i=0; i<n; i++)
Raux1 += C[i]*Vaux1[i];
/*G.P(k).Ct y C.P(k).Gt */
for(i=0; i<n; i++){
Vaux3[i]= Vaux4[i]= 0.;
for(j=0; j<n; j++){
Vaux3[i] += G[i][j]*Vaux1[j];
Vaux4[i] += Vaux2[j]*G[i][j];
}
}
/*3er. Termino */
for(i=0; i<n; i++)
for(j=0; j<n; j++)
Maux1[i][j]= Vaux3[i]*Vaux4[j]/Raux1;
/*G.P(k) */
for(i=0; i<n; i++)
for(j=0; j<n; j++){
Maux2[i][j]= 0.;
for(k=0; k<n; k++)
Maux2[i][j] += G[i][k]*Pb[k][j];
}
/*2o. Termino> G.P(k).Gt */
244 Control Adaptivo

for(i=0; i<n; i++)


for(j=0; j<n; j++){
Maux3[i][j]= 0.;
for(k=0; k<n; k++)
Maux3[i][j] += Maux2[i][k]*G[j][k];
}
/*Y Total */
delta= 0.;
for(i=0; i<n; i++)
for(j=0; j<n; j++){
Raux1= Qb[i][j]+Maux3[i][j]-Maux1[i][j];
if(fabs(Pb[i][j]-Raux1)>delta) delta= fabs(Pb[i][j]-Raux1);
Pb[i][j]= Raux1;
}
}/* Fin de encontrar la de Riccati */
/*Encontramos ahora la de Observacion */
/*C.P */
for(Vaux1[i=0]=0.; i<n; Vaux1[++i]= 0.)
for(j=0; j<n; j++)
Vaux1[i] += C[j]*Pb[j][i];
/*R+C.P.Ct */
for(Raux1= Rb, i=0; i<n; i++)
Raux1 += Vaux1[i]*C[i];
/*Y Final, encontramos K= C.P.Gt/(Rb+C.P.Ct) */
for(Kb[i=0]=0.; i<n; Kb[++i]=0.){
for(j=0; j<n; j++)
Kb[i] += Vaux1[j]*G[i][j];
Kb[i] /= Raux1;
}
/*Y ahora actualizamos los estados */
rr= y - C[0]*x[0] - C[1]*x[1];
x[0]= x[0] + Kb[0]*rr;
x[1]= x[1] + Kb[1]*rr;
z = z - y /*C[0]*x[0] - C[1]*x[1]*/;
}
/*Dado el estimado de la salida, la salida y la referencia
*actuales, y partiendo de los parametros estimados hasta
*entonces, la siguiente funcion estima cuales son los
*parametros actuales del sistema. Utiliza calculaC */
void Estima_Parametros(float *Theta, float Yk, float Uk)
{
int i, j, k;
float val, val1;
5.6 Control Adaptivo de un Servomotor No Lineal 245

Phi[0]= ym1; Phi[1]= ym2; Phi[2]= um1; Phi[3]= um2; Phi[4]= 1.;
for(Ro=i=0; i<5; i++) Ro += Phi[i]*Phi[i];
if(Ro>1.) Ro= sqrt(Ro);
else Ro= 1.;
for(i=0; i<5; i++)
{
Phin[i]= Phi[i]/Ro;
for(j=0; j<5; j++)
Nk[i][j]= Pk[i][j];
}
/*Ahora hacemos Cholesky */
for(j=0; j<5; j++)
{
for(i=0, val=0.; i<j; i++) val += Nk[j][i]*Nk[j][i];
Nk[j][j]= sqrt(Nk[j][j]-val);
for(i=j+1; i<5; i++)
{
for(k=0, val=0.; k<j; k++) val += Nk[i][k]*Nk[j][k];
Nk[i][j]= (Nk[i][j]-val)/Nk[j][j];
} }
/*Y ahora encontramos la Sk*/
Sk[0]= 1./ Nk[0][0];
Sk[1]= 1./(Nk[1][0]+Nk[1][1]);
Sk[2]= 1./(Nk[2][0]+Nk[2][1]+Nk[2][2]);
Sk[3]= 1./(Nk[3][0]+Nk[3][1]+Nk[3][2]+Nk[3][3]);
Sk[4]= 1./(Nk[4][0]+Nk[4][1]+Nk[4][2]+Nk[4][3]+Nk[4][4]);
/*Y ahora la Psk y la Phins*/
for(i=0; i<5; i++)
{
Phins[i]= Phin[i]/Sk[i];
for(j=0; j<5; j++)
Psk[i][j]= Sk[i]*Pk[i][j]*Sk[j];
}
/*Y ahora la ’Rt’ y la ’LF’ y el ’ek’ y el ’div’*/
for(i=0, rt= 1., val1= LF= ek= 0.; i<5; i++)
{
for(j=0, val=0.; j<5; j++)
val += Psk[i][j]*Phins[j];
rt += val*Phins[i]; /* OJO QUE EN LA SIMULACION PONE "+=" */
val1+= Psk[i][i];
LF += val*val;
ek += Thk[i]*Phin[i];
}
246 Control Adaptivo

LF = 1-.5*(rt-sqrt(rt*rt-4.*LF/val1));
ek = Yk/Ro - ek;
div= LF + rt - 1.;
/*Ahora Th y Theta y algo de Psk */
for(i=0; i<5; i++)
{
for(j=0, val= 0.; j<5; j++)
{
val += Psk[i][j]*Phins[j];
Psn[i][j]= Psk[i][j]; /* Esto es de Psk */
}
Theta[i] = Th[i] = Thk[i] + val*ek/Sk[i]/div/* en la simul*/;
}
/*Y la ’Psk’ (tambi’en se puede hacer O(n2) en vez de O(n3)) */
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
for(k=0, val= val1= 0.; k<5; k++)
{
val += Psn[i][k]*Phins[k];
val1+= Phins[k]*Psn[k][j];
}
Psaux[i][j]= Psk[i][j]= Psk[i][j]/LF - val*val1/div/LF;
} }
/*Ahora calculamos la C */
Co= calculaC();
/*Y renovamos las variables */
if( Co<= Cmin )
for(i=0; i<5; i++)
{
Thk[i]= Th[i];
for(j=0; j<5; j++)
Pk[i][j]= Psk[i][j];
}
else if(Co>= Cmax)
{
for(i=0; i<5; i++)
for(j=0; j<5; j++)
Nk[i][j]= Psk[i][j];
/*Ahora hacemos el Cholesky */
for(j=0; j<5; j++)
{
5.6 Control Adaptivo de un Servomotor No Lineal 247

for(i=0, val=0.; i<j; i++) val += Nk[j][i]*Nk[j][i];


Nk[j][j]= sqrt(Nk[j][j]-val);
for(i=j+1; i<5; i++)
{
for(k=0, val=0.; k<j; k++) val += Nk[i][k]*Nk[j][k];
Nk[i][j]= (Nk[i][j]-val)/Nk[j][j];
}
}
/*Y ahora encontramos la Sk*/
Sk[0]= 1./ Nk[0][0];
Sk[1]= 1./(Nk[1][0]+Nk[1][1]);
Sk[2]= 1./(Nk[2][0]+Nk[2][1]+Nk[2][2]);
Sk[3]= 1./(Nk[3][0]+Nk[3][1]+Nk[3][2]+Nk[3][3]);
Sk[4]= 1./(Nk[4][0]+Nk[4][1]+Nk[4][2]+Nk[4][3]+Nk[4][4]);
/*Y ahora la Psn y la Pk y la Thk*/
for(i=0; i<5; i++)
{
Thk[i]= Th[i];
for(j=0; j<5; j++)
Pk[i][j]= Psn[i][j]= Sk[i]*Psk[i][j]*Sk[j];
}
}
/* */
ym2= ym1; ym1= Yk; um2= um1; um1= Uk;
a1= -Theta[0]; a2= -Theta[1]; b1= Theta[2]; b2= Theta[3];
Cc= Theta[4];

G[0][0] = 0.; G[0][1]= 1.; H[0] = 0.; C[0] = b2;


G[1][0] =-a2; G[1][1]=-a1; H[1] = 1.; C[1] = b1;
Ge[0][0]= 0.;Ge[0][1]= 1.; Ge[0][2]=0.; He[0]= 0.; Ce[0]= b2;
Ge[1][0]=-a2;Ge[1][1]=-a1; Ge[1][2]=0.; He[1]= 1.; Ce[1]= b1;
Ge[2][0]=-b2;Ge[2][1]=-b1; Ge[2][2]=1.; He[2]= 0.; Ce[2]= 0.;
}
/*Calculando el numero condicion de la matriz de covarianza
de la estimacion. Esto es: abs(max(eig(Psk))/min(eig(Psk))) */
float calculaC()
{
#define ROTATE(A, i, j, k, l)
{g=A[i][j];h=A[k][l];A[i][j]=g-s*(h+g*tau); A[k][l]= h+s*(g-h*tau);}
double D[5];
int n=5, nrot, j, iq, ip, i, k;
double tresh, theta, tau, t, sm, s, h, g, c, b[5], z[5], val;
int end=0;
248 Control Adaptivo

/*Este es el Algoritmo de Jacobi


Inicializamos V a la Identidad, y b y D a la diagonal de A */
for(i=0; i<n; i++)
{
b[i]= D[i]= Psaux[i][i];
z[i]= 0.;
}
nrot= 0;
for(i=0; i<50 && !end; i++)
{
/*para ver si ya hemos acabado */
sm= 0.;
for(ip=0; ip<n-1; ip++)
for(iq= ip+1; iq<n; iq++)
sm += fabs(Psaux[ip][iq]);
if(sm== 0.)
{
end= 1;
continue;
}
/*en los primeros tres pasos*/
if(i<4) tresh= .2*sm/(n*n);
else tresh= 0.;
/*e iteraciones duras, ahora */
for(ip=0; ip<n-1; ip++)
{
for(iq= ip+1; iq<n; iq++)
{
g= 100.*fabs(Psaux[ip][iq]);
/*Pasados cuatro items, saltar la rotacion si es peque~na */
if(i>4 && (fabs(D[ip]) +g == fabs(D[ip]))
&& (fabs(D[iq]) +g == fabs(D[iq])))
Psaux[ip][iq]= 0.;
else if(fabs(Psaux[ip][iq])>tresh)
{
h= D[iq]-D[ip];
if(fabs(h)+g==fabs(h))
t= Psaux[ip][iq]/h;
else
{
theta= .5*h/Psaux[ip][iq];
t= 1./(fabs(theta)+sqrt(1.+theta*theta));
5.6 Control Adaptivo de un Servomotor No Lineal 249

if(theta<0.) t= -t;
}
c= 1./sqrt(1+t*t); s= t*c;
tau= s/(1.+c); h= t*Psaux[ip][iq];
z[ip] -= h; z[iq] += h;
D[ip] -= h; D[iq] += h;
Psaux[ip][iq] = 0.;

for(j= 0 ; j<ip; j++)


ROTATE(Psaux, j, ip, j, iq);
for(j= ip+1; j<iq; j++)
ROTATE(Psaux, ip, j, j, iq);
for(j= iq+1; j<n ; j++)
ROTATE(Psaux, ip, j, iq, j);
nrot++;
} } }
for(ip=0; ip<n; ip++)
{
b[ip] += z[ip];
D[ip] = b[ip];
z[ip] = 0.;
} }
if(!end)
{
puts("Demasiadas iteraciones en Jacobi\n");
return 1.;
}
/*Vamos a ordenar los VEPS y los VAPS */
for(i= 0; i<n; i++)
{
val= D[k=i];
for(j=i+1; j<n; j++)
if(D[j]>= val) val= D[k=j];
if( k!=i )
{
D[k]= D[i];
D[i]= val;
} }
return fabs(D[0]/D[4]);
}
/*La siguiente funci\’on emplea el error del sistema y la nueva
estimacion de los parametros */
void Encuentra_Control(float r, float *U)
250 Control Adaptivo

{
int i, j, k, n=3, niter;
double delta;

delta= TOL+1.;
niter= 0;
while(delta>TOL && 20>niter++)
{
/*P(k).H y H’P(k) */
for(i=0; i<n; i++)
for(Vaux1[i]=Vaux2[i]=0.,j=0; j<n; j++){
Vaux1[i] += P[i][j]*He[j];
Vaux2[i] += He[j]*P[j][i];
}
/*Raux1= R + H’P(k).H */
for(Raux1= R, i=0; i<n; i++)
Raux1 += He[i]*Vaux1[i];
/*G’P(k).H y H’P(k).G */
for(i=0; i<n; i++){
Vaux3[i]= Vaux4[i]= 0.;
for(j=0; j<n; j++){
Vaux3[i] += Ge[j][i]*Vaux1[j];
Vaux4[i] += Vaux2[j]*Ge[j][i];
}
/*3er. Termino */
for(i=0; i<n; i++)
for(j=0; j<n; j++)
Maux1[i][j]= Vaux3[i]*Vaux4[j]/Raux1;
/*G’P(k) */
for(i=0; i<n; i++)
for(j=0; j<n; j++){
Maux2[i][j]= 0.;
for(k=0; k<n; k++)
Maux2[i][j] += Ge[k][i]*P[k][j];
}
/*2o. Termino> G’P(k).G */
for(i=0; i<n; i++)
for(j=0; j<n; j++){
Maux3[i][j]= 0.;
for(k=0; k<n; k++)
Maux3[i][j] += Maux2[i][k]*Ge[k][j];
}
/*Y Total */
5.6 Control Adaptivo de un Servomotor No Lineal 251

delta= 0.;
for(i=0; i<n; i++)
for(j=0; j<n; j++){
Raux1= Q[i][j]+Maux3[i][j]-Maux1[i][j];
if(fabs(P[i][j]-Raux1)>delta) delta= fabs(P[i][j]-Raux1);
P[i][j]= Raux1; }
}/* Fin de encontrar la de Riccati */
/*Encontramos ahora la de control */
/*H’P */
for(Vaux1[i=0]=0.; i<n; Vaux1[++i]= 0.)
for(j=0; j<n; j++)
Vaux1[i] += He[j]*P[j][i];
/*R+H’P.H */
for(Raux1= R, i=0; i<n; i++)
Raux1 += Vaux1[i]*He[i];
/*Y Final, encontramos K= H’P.G/(R+H’P.H) */
for(K[i=0]=0.; i<n; K[++i]=0.){
for(j=0; j<n; j++)
K[i] += Vaux1[j]*Ge[j][i];
K[i] /= Raux1;
}
/*encontrando el control y el nuevo estado del Observador*/
u= -(K[0]*x[0] + K[1]*x[1] + K[2]*z);
Raux1= G[0][0]*x[0] + G[0][1]*x[1] + H[0]*u;
x[1] = G[1][0]*x[0] + G[1][1]*x[1] + H[1]*u;
x[0] = Raux1;
/*ahora encontramos el valor ABSOLUTO */
*U = u + ((1.+a1+a2)*r-Cc)/(b1+b2);
}
/*Funci\’on principal del programa */
void main()
{
int ant=0, act=0, k, n;
FILE *out;
float *yv, *uv, *rv, vel, y, u, r;
Inicializa_Sistema();
clrscr();
assert(tsimul<120);
t= tsimul/Td;
n= (int)t;
assert(NULL!=(uv= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(yv= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(rv= (float *)calloc(n/5,sizeof(float))));
252 Control Adaptivo

t= u= vel= y= 0.;
for(k=0; k<n;)
{
act=NivelClock();
if ((ant==0)&&(act==1))
{
Mide_Variables(&y, &r, &vel, t);
Estima_Parametros(Th, y, u);
Encuentra_Control(r, &u);
u= Aplica_Control(u, vel);
if(!(k%5))
{
yv[k/5]= y; rv[k/5]= r; uv[k/5]= u;
}
k++;
t += Td; gotoxy(5,5); printf("%f",t);
if(kbhit()) if(getch()==27) break;
}
ant=act;
}
EnviarVoltage(Ofst);
out=fopen("c2.out","wt");
for (int i=0; i<n/5; i++)
fprintf(out,"%10f %10f %10f %10f %10f\n",
i*5*Td, rv[i], yv[i], uv[i], rv[i]-yv[i]);
fclose(out);
}

5.6.10. Resultados Experimentales


Los resultados experimentales mostrados en las figuras 5.15 y 5.16 de-
muestran la validez del procedimiento de diseño sugerido. Dichos resultados
se obtuvieron para una señal de referencia escalón cambiante de π/3 a π/2.
Dos casos extremos fueron tomados en consideración: el control con ausen-
cia de carga (figura 5.15) y el control con carga no lineal (figura 5.16). En
ambos casos, el controlador adaptivo es capaz de controlar la posición del
eje del servomotor a pesar de la presencia simultánea de la carga no lineal
y de las no linealidades inherentes (las fricciones estática y de Coulomb, y
la saturación del servomotor).
Los experimentos se realizaron con los siguientes parámetros de opti-
mización. Para el estimador de estado se seleccionó Qo = 0,01 y Ro = 0,04
(ecuaciones (5.16) y (5.17)) y para la ley de control óptima se eligió R = 0,05
5.7 Problemas Resueltos 253

y Qa = 0,1I3 (ecuación (5.27)), donde I3 es la matriz identidad de dimen-


sión tres. El tiempo de muestreo, suficientemente grande como para poder
efectuar todo el cómputo requerido por muestra, fue de Ts =0.01 s.

2
Posición (radianes)

1.5

0.5

0
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

1.5
Señal de control (voltios)

0.5

−0.5

−1
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 5.15: Control adaptivo de la posición del servomotor. Primer caso:


servomotor no acciona carga alguna.

5.7. Problemas Resueltos


En la sección problemas resueltos de los capı́tulos 4 al 8, la solución a los
problemas se encuentra, según el caso, en uno o más archivos con extensión
m escritos en código MATLAB. En cada problema, la selección del tiempo
de muestreo es a conveniencia del diseño.

Problema 5.1

El problema 3.1 presenta las ecuaciones que gobiernan la dinámica del sis-
tema de suspensión de un bus (ver figura 3.12). Diseñar un sistema de control
adaptivo con autosintonización para lograr el objetivo de control siguien-
te: la salida del proceso y = x2 − x1 (referencia nula) no debe presentar
sobreimpulsos mayores que el 5 %, y luego de 20 segundos, las oscilaciones
254 Control Adaptivo

2.5

Posición (radianes)
2

1.5

0.5

0
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

1.5
Señal de control (voltios)

0.5

−0.5

−1
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 5.16: Control adaptivo de la posición del servomotor. Segundo caso:


servomotor acciona la carga no lineal.

originadas por un disturbio escalón de 10 cm (provocadas por imperfecciones


en la pista), prácticamente deben desaparecer.
Solución: Ver programa p3adap1.m. Este es un problema de rechazo a los
disturbios. Es interesante anotar que el carácter adaptivo del sistema de
control diseñado, permite que las especificaciones de rechazo del disturbio
se mantengan a pesar de que varı́e la masa del bus. Supongamos que la masa
del bus sin pasajeros es m1 = 2500 kg y lleno cambia a 3500 kg. Ejecute el
programa p3adap1.m con este nuevo dato y verá que el objetivo de control
prácticamente se sigue cumpliendo.
% p3adap1.m SOLUCION DEL PROBLEMA 5.1
clear all
% PARAMETROS DEL PROCESO
m1 = 2500; k1 = 80000; b1 = 350;
m2 = 320; k2 = 500000; b2 = 15020;
a23 = (b1/m1)*(b1/m1+b1/m2+b2/m2)-k1/m1;
a33 = -(b1/m1+b1/m2+b2/m2);
a43 = -(k1/m1+k1/m2+k2/m2);
% MODELO LINEAL
A = [0 1 0 0
-b1*b2/(m1*m2) 0 a23 -b1/m1
5.7 Problemas Resueltos 255

b2/m2 0 a33 1
k2/m2 0 a43 0];
B = [0 0;1/m1 b1*b2/(m1*m2);0 -b2/m2;(1/m1+1/m2) -k2/m2];
C = [0 0 1 0]; D = [0 0];
% CONVERSION AL ESPACIO DISCRETO
T=0.5; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,’zoh’); % ESPACIO DE ESTADO
% FT CUANDO ACTUA LA SE~NAL CONTROL u Y EL DISTURBIO w ES NULO
[num,den]=ss2tf(G,H,C,D,1);
a1 = den(2); a2 = den(3); a3 = den(4); a4 = den(5);
b1 = num(2); b2 = num(3); b3 = num(4); b4 = num(5);
% F.T. cuando act’ua disturbio w y control u es nulo
[numd,dend]=ss2tf(G,H,C,D,2); % dend = den
j1=numd(2); j2=numd(3); j3=numd(4); j4=numd(5);
% F.T. del proceso: y = (num/den)*u + (numd/den)*w
% PARAMETROS PARA OPTIMIZAR LA GANANCIA F DEL FILTRO DE KALMAN
Xi = 1; Sigma = 1;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1;
Qa = 1*[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA
nn = 4; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN=13; % NUMERO DE PARAMETROS A ESTIMAR
Ce = (1 + a1 + a2+ a3+a4)*Ref;
thi =[-a1 -a2 -a3 -a4 b1 b2 b3 b4 j1 j2 j3 j4 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; Y(3) = 0; Y(4)=0; Y(5) =0; % SALIDA
U(1)= 0; U(2) = 0; U(3) = 0; U(4)=0; U(5)=0; % CONTROL
w(1)= 0; w(2) = 0; w(3) = 0; w(4)=0; w(5)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
MM = 200;
% LAZO DEL SISTEMA DE CONTROL ADAPTIVO ********************
for t=1:MM;
t1=t+1;
% SE~NAL DEL DISTURBIO
w(t1+4) = 0.01;%*sign(sin(0.03*t1));
% SE~NAL DE REFERENCIA
W(t1+4) = 0;
% MODELO LINEAL DEL PROCESO CON DISTURBIO
Y(t1+4)=[Y(t1+3) Y(t1+2) Y(t1+1) Y(t1) ...
256 Control Adaptivo

U(t1+3) U(t1+2) U(t1+1) U(t1) ...


w(t1+3) w(t1+2) w(t1+1) w(t1)]*...
[-a1 -a2 -a3 -a4 b1 b2 b3 b4 j1 j2 j3 j4]’;
y(t1+4) = Y(t1+4) - W(t1+4); % salida residual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi=[Y(t1+3) Y(t1+2) Y(t1+1) Y(t1) U(t1+3) ...
U(t1+2) U(t1+1) U(t1) ...
w(t1+3) w(t1+2) w(t1+1) w(t1) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’);
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 -(rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t1+4)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION DE ESTADO
ae1=-th(1); ae2=-th(2); ae3=-th(3); ae4=-th(4);
be1=th(5); be2=th(6); be3=th(7); be4=th(8);
je1=th(9); je2=th(10); je3=th(11); je4=th(12);
Ce=th(13);
nume = [0 be1 be2 be3 be4];
dene = [1 ae1 ae2 ae3 ae4];
[GE,HE,CE,DE] = tf2ss(nume,dene);
numde = [1 je1 je2 je3 je4];
[GE,FE,CE,DE] = tf2ss(numde,dene);

% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN


5.7 Problemas Resueltos 257

F = dlqe(GE,FE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t1+4) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL

% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR


Ga = [GE zeros(nn,r);-CE eye(r,r)]; % ec (22) y ec. (23)
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t1+4) = - Ka*[xmas;z];% -Kw*w(t1+4);
% ACTUALIZACION DE ESTADOS
xmenos = GE*xmas + HE*u(t1+4);
AE = 1 + ae1 + ae2 + ae3 + ae4; BE = be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*W(t1+4) - Ce);
% CALCULO DE LA SE~NAL ACTUAL DE CONTROL U
U(t1+4) = u(t1+4) + Uin;
end % ********** FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,W(6:MM+5),ejex,Y(6:MM+5)); grid
ylabel(’Salida y = x1-x2 (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2), grid
plot(ejex,U(6:MM+5)); grid
xlabel(’Tiempo en segundos’)
ylabel(’Fuerza de control (N)’)
print -deps -f p3adap1

Problema 5.2

El problema 3.2 describe las ecuaciones que gobiernan la dinámica longitudi-


nal de un avión comercial volando a velocidad de crucero (altura y velocidad
constantes). El control del ángulo de inclinación θ del avión (ver figura 3.14)
es un problema longitudinal a resolver. El objetivo de control entonces es
diseñar un autopiloto que manipulando el ángulo δe del deflector de ele-
vación, controle el ángulo de inclinación del avión.
Se pide diseñar un sistema de control adaptivo que genere una fuerza
de control, de modo que la salida del proceso (el ángulo de inclinación θ)
presente un sobreimpulso menor al 10 % y un tiempo de estabilización menor
que 10 s, con un error en estado estable nulo. Por ejemplo, si la entrada de
258 Control Adaptivo

0.01
Salida y = x1−x2 (m)
0.005

−0.005

−0.01
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

−20
Fuerza de control (N)

−40

−60

−80
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 5.17: Salida y = x1 − x2 y la fuerza de control diseñada, correspon-


dientes al problema 5.1.

referencia es ± 0.2 rad, entonces el ángulo de inclinación no debe exceder el


valor de ± 0.22 rad, y luego de 10 segundos, permanecer en ± 0.2 rad.

% p4adap1.m SOLUCION DEL PROBLEMA 5.2


clear all

% PARAMETROS DEL PROCESO


nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN = 7; % ORDEN DEL VECTOR ESTIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Sigma = 10; Xi = 1;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke; r+nn=4
R = 400; Qa = [0 0 0 0;0 0 0 0;0 0 0.001 0;0 0 0 0.001];

% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO


Ac = [-0.313 56.7 0;-0.0139 -0.426 0;0 56.7 0];
Bc = [0.232;0.0203;0];
5.7 Problemas Resueltos 259

Cc = [0 0 1]; Dc = [0];
T = 0.1; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
b1 = num(2); b2 = num(3); b3=num(4);

% CONDICIONES INICIALES
Ref = 0.2; % MAGNITUD DE LA SE~NAL DE REFERENCIA
Ce = (1 + a1 + a2 + a3)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 b1 b2 b3 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0; Y(2)=0; Y(3)=0; y(1)=0; y(2)=0; y(3)=0; % SALIDA
U(1)=0; U(2)=0; U(3)=0; u(1)=0; u(2)=0; u(3)=0; % CONTROL
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL

% LAZO DEL SISTEMA DE CONTROL *****************************


MM = 2000;
for t = 1:MM
% SE~NAL DE REFERENCIA
v1(t+3)=0.2*sign(sin(0.005*t));
% proceso
Y(t+3) = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 b1 b2 b3]’;
y(t+3) = Y(t+3) - v1(t+3); % SALIDA RESIDUAL (DESVIACION)
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+3)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
260 Control Adaptivo

tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2); ae3 = -th(3);
be1 = th(4); be2 = th(5); be3 = th(6); Ce = th(7);
nume = [0 be1 be2 be3];
dene = [1 ae1 ae2 ae3];
[GE,HE,CE,DE] = tf2ss(nume,dene);
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+3) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+3) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+3); %
% CALCULO DEL VALOR DE EQUILIBRIO U
AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3;
Uin = inv(BE)*(AE*v1(t+3) - Ce);
% CALCULO DE LA SE~NAL ACTUAL DE CONTROL U(K)
U(t+3) = u(t+3) + Uin;
end % *********************************

% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,v1(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel(’Inclinacion (rad)’)
subplot(2,1,2)
plot(ejex,U(3:MM+2)), grid
5.7 Problemas Resueltos 261

xlabel(’Tiempo en seg’)
ylabel(’Angulo del deflector (rad)’)
print -deps -f p4adap1

0.4
Inclinación (rad)

0.2

−0.2

−0.4
0 20 40 60 80 100 120 140 160 180 200

1
Angulo del deflector (rad)

0.5

−0.5

−1
0 20 40 60 80 100 120 140 160 180 200
Tiempo en seg

Figura 5.18: Ángulo de inclinación θ y señal de control (ángulo del deflector)


correspondientes al problema 5.2.

Problema 5.3

La figura 3.20 muestra un monorriel de dos carros descrito en el problema


3.5. El problema a resolver es el control de velocidad del carro de máquinas
mediante un sistema de control adaptivo con autosintonización. Para garan-
tizar a los pasajeros un viaje confortable, los cambios de velocidad deben
realizarse con un tiempo de estabilización menor que 15 s y con mı́nimo so-
breimpulso. El error en estado estable debe ser nulo. Simule una señal de re-
ferencia que cambie la velocidad de 30 a 20 m/s y demuestre que se cumplen
las especificaciones de diseño. Luego enfrente el problema de seguimiento.
Mostrar que la velocidad de la máquina puede seguir una trayectoria pre-
determinada de velocidades. El programa p7adap1b.m trata el caso de refe-
rencia arbitraria. Revise tal programa si desea ver detalles al respecto.
262 Control Adaptivo

% p7adap1a.m SOLUCION DEL PROBLEMA 5.3


clear all
% PARAMETROS GENERALES
nn = 6; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS
NN = 13; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 2; Sigma = 1;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 1*eye(r+nn,r+nn);
% PARAMETROS DEL PROCESO
M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;
B12=500; B23=500; B1=5000; B2=10000; B3=10000;
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B=[0 1 0 0 0 0]’;
alfa = 1; % CONSTANTE TACOMETRICA
C=[ 0 alfa 0 0 0 0
0 0 0 alfa 0 0
0 0 0 0 0 alfa];
D=[0;0;0];
[numc,denc]=ss2tf(A,B,C,D);
% MODELO LINEAL DISCRETO
T = 0.5; % periodo de muestreo0.2
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
a4=den(5); a5=den(6); a6=den(7);
b1 = num(2); b2 = num(3); b3=num(4);
b4=num(5); b5=num(6); b6=num(7);
% CONDICIONES INICIALES
Ref = 30; % MAGNITUD DE LA SE~NAL DE REFERENCIA
Ce = (1+a1+a2+a3+a4+a5+a6)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0; Y(2)=0; Y(3)=0; Y(4)=0; Y(5)=0; Y(6)=0;
y(1)=0; y(2)=0; y(3)=0; y(4)=0; y(5)=0; y(6)=0; % salida
5.7 Problemas Resueltos 263

U(1)=0; U(2)=0; U(3)=0; U(4)=0; U(5)=0; U(6)=0;


u(1)=0; u(2)=0; u(3)=0; u(4)=0; u(5)=0; u(6)= 0; % control
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL *******************
MM = 600;
for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+6)= 25 + 5*sign(sin(0.02*t));
% MODELO LINEAL DEL PROCESO
Y(t+6) = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6]’;
y(t+6) = Y(t+6) - Yo(t+6); % salida residual (desviación)
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+6)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1=-th(1); ae2=-th(2); ae3=-th(3);
ae4=-th(4); ae5=-th(5); ae6=-th(6);
264 Control Adaptivo

be1=th(7); be2=th(8); be3=th(9);


be4=th(10); be5=th(11); be6=th(12); Ce=th(13);
ae11=0; ae12=1; ae13=0; ae14=0; ae15=0; ae16=0;
ae21=0; ae22=0; ae23=1; ae24=0; ae25=0; ae26=0;
ae31=0; ae32=0; ae33=0; ae34=1; ae35=0; ae36=0;
ae41=0; ae42=0; ae43=0; ae44=0; ae45=1; ae46=0;
ae51=0; ae52=0; ae53=0; ae54=0; ae55=0; ae56=1;
ae61=-ae6; ae62=-ae5; ae63=-ae4;
ae64=-ae3; ae65=-ae2; ae66=-ae1;

GE = [ae11 ae12 ae13 ae14 ae15 ae16


ae21 ae22 ae23 ae24 ae25 ae26
ae31 ae32 ae33 ae34 ae35 ae36
ae41 ae42 ae43 ae44 ae45 ae46
ae51 ae52 ae53 ae54 ae55 ae56
ae61 ae62 ae63 ae64 ae65 ae66];

be11=0; be21=0; be31=0; be41=0; be51=0; be61=1;


HE=[be11;be21;be31;be41;be51;be61];
ce11 =be6; ce12=be5; ce13=be4;
ce14=be3; ce15=be2; ce16=be1;
CE = [ce11 ce12 ce13 ce14 ce15 ce16]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+6) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+6) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+6); % ec. (15)
AE = 1 + ae1 + ae2 + ae3 + ae4 + ae5 + ae6;
BE = be1 + be2 + be3 + be4 + be5 + be6;
Uin = inv(BE)*(AE*Yo(t+6) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(k)
U(t+6) = u(t+6) + Uin;
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
5.7 Problemas Resueltos 265

subplot(2,1,1)
plot(ejex,Yo(7:MM+6),ejex,Y(7:MM+6)), grid
ylabel(’Y1: Velocidad (m/s)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,U(7:MM+6)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control u’)
print -deps -f p7adap1a

40
Y1: Velocidad (m/s)

30

20

10

0
0 50 100 150 200 250 300
Tiempo en segundos

30
Voltaje de control u

20

10

−10
0 50 100 150 200 250 300
Tiempo en segundos

Figura 5.19: Velocidad del carro de máquinas y la fuerza de control para el


problema 5.3.

Problema 5.4

La figura 3.22 muestra el proceso ascensor tratado en el problema 3.6. El


problema a resolver es posicionar suavemente el ascensor en un piso deter-
minado, lo que significa sobreimpulso nulo (para que no se pase de piso) y
tiempo de estabilización menor que 10 s. Para no saturar al actuador (el
amplificador de potencia), la señal de control debe estar dentro del rango
de ± 200 voltios. Diseñar un sistema de control de posición adaptivo con
autosintonización que cumpla las especificaciones pedidas.
% p8adap1.m SOLUCION DEL PROBLEMA 5.4
266 Control Adaptivo

40

Y1: Velocidad (m/s)


30

20

10

0
0 50 100 150 200 250 300
Tiempo en segundos

30
Voltaje de control u

20

10

−10
0 50 100 150 200 250 300
Tiempo en segundos

Figura 5.20: Velocidad del carro de máquinas y la fuerza de control para el


problema 5.3. La referencia es arbitraria.

clear all
% PARAMETROS GENERALES
nn = 4; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS
NN = 9; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 0.001; Sigma = 400;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 1*eye(r+nn,r+nn);
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];
Bc = [0.001;0;0;0];
Cc = [0 1 0 0]; Dc = [0];
T = 0.8; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4); a4=den(5);
b1 = num(2); b2 = num(3); b3=num(4); b4=num(5);
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
5.7 Problemas Resueltos 267

Ce = (1 + a1 + a2 + a3 + a4)*Ref; % Uo = 0 (arbitrario)
thi = [-a1 -a2 -a3 -a4 b1 b2 b3 b4 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0;Y(2)=0;Y(3)=0;Y(4)=0; y(1)=0;y(2)=0;y(3)=0;y(4)=0;
U(1)=0;U(2)=0;U(3)=0;U(4)=0; u(1)=0;u(2)=0;u(3)=0;u(4)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INCIO DEL LAZO DE CONTROL **********************************
MM = 1000;
for t = 1:MM
% SE~NAL DE REFERENCIA
g(t+4)=6 + 4*sign(sin(0.01*t));
% MODELO LINEAL DEL PROCESO
Y(t+4)=[Y(t+3) Y(t+2) Y(t+1) Y(t) ...
U(t+3) U(t+2) U(t+1) U(t)]*[-a1 -a2 -a3 -a4 b1 b2 b3 b4]’;
y(t+4) = Y(t+4) - g(t+4); % salida residual (desviacion)
% ESTIMACION DE PARAMETROS (METODO MCRM)%
psi = [Y(t+3) Y(t+2) Y(t+1) Y(t) ...
U(t+3) U(t+2) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+4)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
268 Control Adaptivo

% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE


ae1 =-th(1); ae2 =-th(2); ae3=-th(3); ae4 =-th(4);
be1 = th(5); be2 = th(6); be3= th(7); be4 = th(8); Ce=th(9);
ae11 = 0; ae12 = 1; ae13 = 0; ae14 = 0;
ae21 = 0; ae22 = 0; ae23 = 1; ae24 = 0;
ae31 = 0; ae32 = 0; ae33 = 0; ae34 = 1;
ae41 =-ae4; ae42 = -ae3; ae43 = -ae2; ae44 = -ae1;
GE = [ae11 ae12 ae13 ae14;ae21 ae22 ae23 ae24;...
ae31 ae32 ae33 ae34;ae41 ae42 ae43 ae44];
be11=0; be21=0; be31=0; be41=1; HE=[be11;be21;be31;be41];
ce11=be4; ce12=be3; ce13=be2; ce14=be1;
CE=[ce11 ce12 ce13 ce14]; DE=[0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+4) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+4) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+4);
AE= 1 + ae1 + ae2 + ae3 + ae4; BE= be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*g(t+4) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+4) = u(t+4) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+4) > 200)
U(t+4) = 200;
elseif(U(t+4) <-200)
U(t+4) = -200;
else
U(t+4) = U(t+4);
end
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,g(4:MM+3),ejex,Y(4:MM+3)), grid
ylabel(’Posicion’)
5.7 Problemas Resueltos 269

xlabel(’Tiempo en segundos’)
subplot(2,1,2), grid
plot(ejex,U(3:MM+2)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control’)
print -deps -f p8adap1

10

8
Posición (m)

0
0 100 200 300 400 500 600 700 800
Tiempo en segundos

200
Voltaje de control

100

−100

−200
0 100 200 300 400 500 600 700 800
Tiempo en segundos

Figura 5.21: Posición del ascensor y la fuerza de control (problema 5.4).

Problema 5.5

La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sección


horizontal A=9 m2 de cada tanque es constante. El objetivo de control
es controlar la altura H2 empleando el flujo Qo . La deducción del modelo
linealizado del proceso se describe en el ejemplo 2.1. Diseñar un controlador
adaptivo con autosintonización que cumpla los siguientes requerimientos:
tiempo de estabilización menor que 15 s, sobreimpulso menor al 5 % y error
en estado estable nulo. Estas condiciones de diseño deben mantenerse cuando
se cambie la referencia (por ejemplo de 3 a 1 m). Además, el flujo de entrada
(la señal de control) no debe sobrepasar los 3 m3 /s.
% p9adap1.m SOLUCION DEL PROBLEMA 5.5
clear all
% PARAMETROS GENERALES
270 Control Adaptivo

nn = 2; r=1; % nn: ORDEN DEL PROCES; r: NUMERO DE SALIDAS


NN = 5; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15 % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 100; Sigma = 0.01;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 0.1*eye(r+nn,r+nn);
% PARAMETROS DEL PROCESO NO LINEAL
gamma=0.4; gg=9.81; rho=1.23; A=9; Qo=3;
H=Qo^2/(gamma^2*rho*gg);
Z=(gamma*sqrt(rho*gg))/(2*A*sqrt(H));
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-Z 0;Z -Z];
Bc = [1;0];
Cc = [1 0]; Dc = [0];
T = 0.8; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
a11 = 0; a12 =1; a21 = -a2; a22 = -a1;
b11 = 0; b21 = 1; c11 =b2; c12 = b1;
Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21];
Ccc =[c11 c12]; Dcc = [0];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 b1 b2 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; y(1) = 0; y(2) = 0; % salida
U(1 )= 0; U(2) = 0; u(1) = 0; u(2) = 0; % control
H1(1) =0; H1(2)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 200;
for t = 1:MM
% SE~NAL DE REFERENCIA
g(t+2)=2-1*sign(sin(0.08*t));
% MODELO LINEAL DEL PROCESO
5.7 Problemas Resueltos 271

y(t+2) = [y(t+1) y(t) u(t+1) u(t)]*[-a1 -a2 b1 b2]’;


Y(t+2) = y(t+2) + g(t+2); % salida actual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+1) Y(t) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb=1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+2)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1=-th(1); ae2=-th(2); be1=th(3); be2=th(4); Ce=th(NN);
ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -ae1;
GE = [ae11 ae12;ae21 ae22];
be11 = 0; be21 = 1; HE = [be11;be21];
ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+2) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
272 Control Adaptivo

u(t+2) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+2);
% CALCULO DE Uo (VALOR D.C. DE U)
% AE(z^(-1)) = 1 + ae1*z^(-1) + ae2*z^(-1);
% BE(z^(-1)) = be1*z^(-1) + be2*z^(-1);
% AE(z^(-1))*Y(k) = BE(z^(-1))*U(k) + Ce; Ce = th(N), N=5
% En estado estacionario: z=1, Y(k) = Yo(k) (Referencia)
% entonces: U(z=1) = inv(B(z=1)*[A(z=1)*Ref - ce]
AE = 1 + ae1 + ae2; BE = be1 + be2;
Uin = inv(BE)*(AE*g(t+2) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+2) = u(t+2) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+2) > 3)
U(t+2) = 3;
elseif(U(t+2) <-3)
U(t+2) = -3;
end
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,g(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel(’Nivel en metros’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,U(3:MM+2)), grid
xlabel(’Tiempo en segundos’)
ylabel(’Flujo de control (m/s)’)
print -deps -f p9adap1

Problema 5.6

El proceso electromecánico mostrado en la figura 3.26 se describe en el pro-


blema 3.8. Diseñar un sistema de control adaptivo con autosintonización
para controlar la velocidad angular del eje del motor mediante el voltaje
de entrada que puede variar entre ± 100 voltios. La señal de referencia es
arbitraria (problema de seguimiento).
% p11adap1.m SOLUCION DEL PROBLEMA 5.6
clear all
% PARAMETROS GENERALES
5.7 Problemas Resueltos 273

Nivel en metros
2.5

1.5

1
0 20 40 60 80 100 120 140 160
Tiempo en segundos

4
Flujo de control (m/s)

−2

−4
0 20 40 60 80 100 120 140 160
Tiempo en segundos

Figura 5.22: Nivel controlado H2 y el flujo de control para el problema 5.5.

nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS


NN = 7; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% PARAMETROS DEL PROCESO:
J = 0.01; % MOMENTO DE INERCIA DEL MOTORM (kgm2/s2)
Ke =0.01; Kt = 0.01; % CONSTANTE ELECTROMOTRIZ (Nm/A)
R = 12; % RESISTENCIA (Ohmios)
C = 0.5; % CONDENSADOR (uF)
L = 0.5; % INDUCTANCIA DE LA ARMADURA (H)
Kw = 1.8; % CONSTANTE TORSIONAL (Nm/rad)
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-1/(R*C) -1/C 0;...
Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke);0 Kt/J 0];
Bc = [1/(R*C);0;0];
Cc = [0 0 1]; Dc = [0];
T = 0.2; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO DEL PROCESO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
b1 = num(2); b2 = num(3); b3=num(4);
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 0.001; Sigma = 10;
274 Control Adaptivo

% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke


R = 0.1*eye(r,r); Qa = 0.001*eye(r+nn,r+nn);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
a11 =0; a12 =1; a13 =0; a21 =0; a22 =0 ;
a23 =1; a31 = -a3; a32 = -a2; a33 =-a3;
b11 = 0; b21 = 0; b31 = 1;
c11 =b3; c12 = b2; c13 = b1;
Gcc = [a11 a12 a13;a21 a22 a23;a31 a32 a33];
Hcc = [b11;b21;b31];
Ccc =[c11 c12 c13]; Dcc = [0];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2 + a3)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 b1 b2 b3 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; Y(3) = 0; y(1)=0; y(2)=0; y(3)=0;
U(1 )= 0; U(2) = 0; U(3) = 0; u(1)=0; u(2)=0; u(3)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 400;
for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+3)= 0.4 + 3*(sin(0.02*t))+0.01*t;
% MODELO LINEAL DEL PROCESO
Y(t+3) = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 b1 b2 b3]’;
y(t+3) = Y(t+3) - Yo(t+3); % SALIDA RESIDUAL (DESVIACION)
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+3)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
5.7 Problemas Resueltos 275

Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2); ae3 = -th(3);
be1 = th(4); be2 = th(5); be3 = th(6); Ce = th(7);
ae11 = 0; ae12 =1; ae13 = 0; ae21 = 0; ae22 = 0;
ae23 = 1; ae31 =-ae3; ae32 = -ae2; ae33 = -ae1;
GE = [ae11 ae12 ae13;ae21 ae22 ae23;ae31 ae32 ae33];
be11 = 0; be21 = 0; be31 = 1; HE = [be11;be21;be31];
ce11 =be3; ce12 = be2; ce13 = be1;
CE = [ce11 ce12 ce13]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+3) - CE*xmenos);
z = z -CE*xmas;
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+3) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+3);
AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3;
Uin = inv(BE)*(AE*Yo(t+3) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+3) = u(t+3) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+3) > 100)
U(t+3) = 100;
elseif(U(t+3) <-100)
U(t+3) = -100;
end
276 Control Adaptivo

end % FIN DEL LAZO DE CONTROL **********************


% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,Yo(3:MM+2),ejex,Y(3:MM+2)); grid
ylabel(’Velocidad (rad/s)’)
subplot(2,1,2)
plot(ejex,U(3:MM+2)); grid
xlabel(’Tiempo en seg’)
ylabel(’Voltaje de control’)
print -deps -f p11adap1

8
Velocidad (rad/s)

−2
0 10 20 30 40 50 60 70 80

40
Voltaje de control

20

−20

−40
0 10 20 30 40 50 60 70 80
Tiempo en seg

Figura 5.23: Velocidad angular controlada y el voltaje de control para el


problema 5.6.

Problema 5.7
En el problema 3.3 se describe el proceso de la bola rodando a lo largo de
una barra con un grado de libertad, tal como se muestra en la figura 3.16.
Una leva conecta la barra con un engranaje accionado por un servomotor.
Se desea diseñar un sistema de control adaptivo que pueda posicionar la
bola a 0.5 m de un extremo de la barra de 1 m de longitud. Evidentemente,
la oscilación de la bola debe estar restringida sobre la barra. El voltaje de
control no debe sobrepasar los ± 40 voltios.
5.7 Problemas Resueltos 277

% p5adap1.m SOLUCION DEL PROBLEMA 5.7


clear all
% PARAMETROS GENERALES
nn = 4; r=1; % nn: ORDEN DEL PROCES; r: NUMERO DE SALIDAS
NN = 9; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 1; Sigma = 0.001;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1;
Qa = 1*[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;...
0 0 0 1 0;0 0 0 0 1];
% PARAMETROS DEL PROCESO
M=0.11; % masa de la bola(kg)
R=0.015; % radio de la bola(m)
d=0.03; % distancia de la leva al engranaje(m)
g=9.8 ; % aceleracion de la gravedad (m/s2)
L=1.0; % longitud de la barra(m)
J=9.99e-6; % inercia de la barra(kgm2)T=0.7,Sigma=0.001
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [0 1 0 0;0 0 M*g*d/(L*(J/R^2+M)) 0;0 0 0 1;0 0 0 0];
Bc = [0;0;0;1];
Cc = [1 0 0 0]; Dc = [0];
T = 0.7; % PERIODO DE MUESTREO T=0.12
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4); a4=den(5);
b1 = num(2); b2 = num(3); b3=num(4); b4=num(5);
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2 + a3 +a4)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 -a4 b1 b2 b3 b4 Ce]’;
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0; Y(2)=0; Y(3)=0; Y(4)=0;
y(1)=0; y(2)=0; y(3)=0; y(4)=0;
U(1)=0; U(2)=0; U(3)=0; U(4)=0;
u(1)=0; u(2)=0; u(3)=0; u(4)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 300;
278 Control Adaptivo

for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+4)= 0.5;%sign(sin(0.005*t));
% MODELO LINEAL DEL PROCESO
Y(t+4) = [Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+3) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 -a4 b1 b2 b3 b4]’;
y(t+4) = Y(t+4) - Yo(t+4); % salida residual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+3) U(t+2) U(t+1) U(t) 1]’;
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi’); % Nn’*Nn = Pi => Nn*N’ = Pi’
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins’*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+4)/rho - psin’*thi;
j = psins’*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins’*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps’); % Nnew*Nnew’ = Ps’
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2); ae3 = -th(3); ae4 = -th(4);
be1 = th(5); be2 = th(6); be3 = th(7); be4 = th(8); Ce = th(9);
dene = [1 ae1 ae2 ae3 ae4];
nume = [0 be1 be2 be3 be4];
[GE,HE,CE,DE] = tf2ss(nume,dene);
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+4) - CE*xmenos); % OBSERVACION
5.8 Problemas Propuestos 279

z = z -CE*xmas; % ACCION INTEGRAL


% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+4) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+4); % ec. (15)
AE = 1 + ae1 + ae2 + ae3 + ae4; BE = be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*Yo(t+4) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+4) = u(t+4) + Uin;
end
end % FIN DEL LAZO DE CONTROL *************************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,Yo(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel(’Posicion (m)’)
subplot(2,1,2)
plot(ejex,U(3:MM+2)), grid
xlabel(’Tiempo en seg’)
ylabel(’Voltaje de control’)
print -deps -f p5adap1

5.8. Problemas Propuestos


Problema 5.8

En el proceso de la figura 3.24(a) se desea reducir la humedad h del material


a granel de la tolva (ver problema 3.7). La banda transportadora, que se
desplaza a una velocidad constante de v= 1 m/s, introduce el material a un
horno de secado. El sensor de humedad detecta hr a una distancia d = 10 m
del horno y proporciona la señal de voltaje vr . El horno puede ser modelado
como un proceso de primer orden. La figura 3.24(b) muestra la F.T del
proceso. Diseñar un sistema de control adaptivo con autosintonización con el
propósito de estabilizar la humedad del material en la banda transportadora,
a pesar de que el tiempo muerto T = v/d varı́a entre 9 y 11 s. Para propósitos
280 Control Adaptivo

0.8

Posición (m)
0.6

0.4

0.2

0
0 50 100 150 200 250

10

5
Voltaje de control

−5

−10

−15
0 50 100 150 200 250
Tiempo en seg

Figura 5.24: Posición de la bola y el voltaje de control para el problema 5.7.

del modelado del proceso, el tiempo muerto puede ser descrito mediante la
aproximación de Padé de tercer orden (ver ejemplo ??):
num(s) 1 − Tt s/2 + (Tt s)2 /10 − (Tt s)3 /120
e−T s ≈ =
den(s) 1 + Tt s/2 + (Tt s)2 /10 + (Tt s)3 /120
Especificaciones de diseño: tiempo de estabilización menor que 40 s, error
en estado estacionario nulo y porcentaje de sobreimpulso menor al 5 %.

Problema 5.9

Las ecuaciones del modelo linealizado para controlar la posición del cañón
montado en la torreta de un tanque (figura 3.28), empleando un actuador
hidráulico se detallan en el problema 3.9.
(a) Diseñar un sistema de control adaptivo con autosintonización para
controlar el ángulo de elevación θ con las especificaciones siguientes:
tiempo de estabilización menor que 5 s, mı́nimo sobreimpulso en la res-
puesta y error de estado estacionario nulo. Los disturbios tipo escalón
pueden actuar simultáneamente o no, y pueden ser positivos o nega-
tivos. Para cada caso, el sistema de control diseñado debe ser capaz
de minimizar sus efectos.
5.8 Problemas Propuestos 281

(b) Lo mismo que (a), pero en este caso para controlar el ángulo azimutal.

Problema 5.10

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito en


la sección 3.3, en donde la carga no lineal posee ahora dos grados de libertad
con Lo = 2L1 /3 y Mo =0.02 kg. La unión de la carga con el eje del servo-
motor no es flexible. Las ecuaciones que describen la dinámica del sistema
son materia del problema 3.12. Diseñar un sistema de control adaptivo con
autosintonización para controlar simultáneamente las posiciones θ y τ con
mı́nimo tiempo de estabilización y mı́nimo sobreimpulso en la respuesta.

Problema 5.11

La figura 3.32 muestra el proceso péndulo doble no lineal que es una exten-
sión del péndulo simple descrito en la sección 3.1. El acoplamiento entre los
dos péndulos de igual longitud no es flexible. Las ecuaciones que describen la
dinámica del sistema son materia del problema propuesto 3.13. Considerar
que la carga esférica es de 0.02 kg. Diseñar un sistema de control adaptivo
con autosintonización para controlar simultáneamente las posiciones θ y τ
con mı́nimo tiempo de estabilización y mı́nimo sobreimpulso en la salida, de
modo tal que el péndulo doble permanezca en posición vertical.

Problema 5.12

La figura 3.33 muestra el proceso doble grúa puente no lineal que es una ex-
tensión del proceso grúa-puente descrito en la sección 3.2. El acoplamiento
entre las dos secciones iguales de la varilla no es flexible. Para poder deter-
minar un modelo no lineal dinámico para este proceso, conviene emplear las
ecuaciones de Lagrange de la mecánica clásica (ver problema 3.14). Conside-
rar que la carga esférica es de 0.02 kg. Diseñar un sistema de control adaptivo
con autosintonización para controlar simultáneamente las posiciones θ y τ
con mı́nimo tiempo de estabilización y mı́nimo sobreimpulso, de modo tal
que la doble grúa-puente permanezca en posición vertical cuando el carro
realiza un recorrido predeterminado.

Problema 5.13

La figura 1.1 muestra un carro de masa m = 1000 kg desplazándose con una


velocidad v gracias a la acción de la fuerza u producida por su motor. Si se
282 Control Adaptivo

desprecia la inercia de las ruedas y se asume que la fuerza de fricción bv,


donde b= 50 N-s/m es el coeficiente de fricción, es lo único que se opone
al movimiento del carro, entonces la dinámica del proceso puede modelarse
como (ver ejemplo 1.16):

dv
mv̇(t) + bv(t) = u(t); v̇ =
dt
Diseñar un sistema de control adaptivo con autosintonización para contro-
lar la velocidad del móvil con mı́nimo tiempo de estabilización y mı́nimo
sobreimpulso en la salida. La señal de referencia puede ser arbitraria (pro-
blema de seguimiento).

Problema 5.14

El motor D.C. es un actuador muy popular en los sistemas de control, ya


que su movimiento rotatorio, mediante acoples adecuados en su eje, puede
convertirse fácilmente en movimiento de traslación como por ejemplo, en
fajas transportadoras y en brazos manipuladores. La figura 4.3 muestra el
circuito de armadura del motor y el diagrama de cuerpo libre de su rotor.
Las ecuaciones que gobiernan el comportamiento dinámico del motor fueron
derivadas en el ejemplo 4.1. Diseñar dos sistemas de control adaptivo con
autosintonización. El primero para estabilizar la velocidad angular del eje del
motor con las especificaciones siguientes: tiempo de estabilización menor que
4 s, error en estado estable menor al 1 % y sobreimpulso en la salida menor
al 5 %. El segundo sistema de control adaptivo a diseñar debe estabilizar la
posición del eje del motor con las mismas especificaciones de diseño.
Capı́tulo 6

Control Predictivo

En este capı́tulo se desarrolla un procedimiento para diseñar un sistema


de control predictivo basado en modelos. El algoritmo de control predictivo
empleado es el denominado control matricial dinámico, el cual puede ser también
del tipo escalar. Para validar el procedimiento de diseño propuesto, se presenta
una aplicación: control predictivo de la posición angular de un servomotor sujeto
a cargas no lineales variables.
La penúltima sección, problemas resueltos, trata el diseño de sistemas de
control predictivo para diferentes procesos empleando leyes de control escalar
y matricial. Todos los archivos correspondientes a los ejercicios, problemas,
diseños, simulaciones y software desarrollados se pueden descargar del sitio:
http://fiee.uni.edu.pe/728681F.

6.1. Control Predictivo Basado en Modelos


El Control Predictivo Basado en Modelos [7], [8] es una metodologı́a de
control que usa el modelo del proceso para calcular y optimizar las predic-
ciones de las acciones de control y de la salida controlada. Esta metodologı́a
se ha desarrollado alrededor de ciertos principios, dos de los cuales son:

Empleo de un modelo del proceso para pronosticar su salida a controlar


en instantes de tiempo futuro.

Cálculo de una acción de control óptima basada en la minimización


de funciones de costo, posiblemente incluyendo restricciones en las
variables del proceso.
284 Control Predictivo

Los diferentes miembros de la familia del Control Predictivo Basado


en Modelos difieren principalmente en el modelo usado para representar
el proceso con sus perturbaciones, y en las funciones de costo a ser mini-
mizadas (con o sin restricciones). En lo que sigue del capı́tulo, se desarrollan
los principios del Control Predictivo Basado en Modelos para su aplicación
en sistemas univariables. De la gama de algoritmos de control predictivo
existentes, nos ocupamos en particular del denominado Control Matricial
Dinámico (“Dynamic Matrix Control”). Para validar el procedimiento de
diseño propuesto, se presenta y discute una aplicación: control predictivo de
la posición angular de un servomotor sujeto a cargas no lineales variables.
Es importante resaltar que el control predictivo es de naturaleza abierta
y cuenta con muchas contribuciones, tanto en lo académico como también en
el mundo industrial. Muchas aplicaciones del control predictivo son usadas
hoy en todos los campos de la actividad industrial. El buen rendimiento de
tales aplicaciones es muy apreciada; por ello, actualmente existe un creciente
interés en esta metodologı́a, si bien el trabajo pionero se inició alrededor de
hace dos décadas.

6.2. Principios del Control Predictivo Basado en


Modelos
El control predictivo pronostica la salida de la planta en un escenario
de tiempo de duración N2 (el horizonte de tiempo N2 ). Tal predicción de-
pende de las salidas y entradas pasadas, pero también del escenario del
control futuro. La obtención del modelo que refleje lo más fielmente posible
la evolución dinámica de la planta, es la llave del éxito en las aplicaciones.
La notación usada para derivar los principios del control predictivo es la
siguiente:

t, representa el tiempo discreto (t = 0, 1, 2, . . . ).

u(t), denota la entrada al proceso y constituye la variable manipulada


o señal de control.

y(t), es la salida del proceso y constituye la la variable controlada.

w(t), representa la trayectoria deseada (“set point”).

r(t), denota la trayectoria de referencia.


6.2 Principios del Control Predictivo Basado en Modelos 285

u(t + k/t), denota los valores futuros de la entrada en el tiempo t + k


postulados en el tiempo t, o simplemente, dado t.

y(t + k/t), denota los valores futuros de la salida basado en las medi-
ciones disponibles en el tiempo t:

{y(t), y(t − 1), . . . , u(t − 1), u(t − 2), . . .}

y en los valores futuros de la entrada postulados en el tiempo t:

{u(t/t), u(t + 1/t), . . .}

Con relación a la figura 6.1, el principio del control predictivo se carac-


teriza por la siguiente estrategia:

Politica de control pasada Politica de control futura


1

2
Trayectoria de
referencia
Trayectoria
deseada 1

2
Tiempo
Salida pasada Muerto
del proceso

Pasado 1 2 Futuro N2
Momento presente t

Figura 6.1: Estrategia del control predictivo.

En cada tiempo t, la salida del proceso y(t + k) se pronostica so-


bre un horizonte k = 1 . . . N2 . Los valores pronosticados se denotan
como y(t + k/t) y a N2 se le denomina el horizonte de predicción.
La predicción se realiza mediante el modelo del proceso, el cual se
asume que está disponible. El pronóstico en cuestión depende de las
entradas y salidas pasadas, pero también del escenario del control fu-
turo u(t + k/t), k = 0, . . . , N2 − 1; es decir, de las acciones de control
que se intentan aplicar a partir del tiempo t.
286 Control Predictivo

Una trayectoria de referencia r(t + k/t), k = 1, . . . , N2 , que se inicia


en r(t/t) = y(t) y se define sobre el horizonte de predicción. Esta
trayectoria describe la forma de guiar la salida del proceso desde su
valor actual y(t) hasta la trayectoria deseada w(t).

El vector de control u(t + k/t), k = 0, . . . , N2 − 1, se calcula para


minimizar una función de costo especı́fica que depende del error del
control predictivo r(t + k/t) − y(t + k/t), k = 1, . . . , N2 .

Al proceso real sólo se le aplica el primer elemento del vector de control


óptimo calculado u(t + k/t), k = 0, . . . , N2 − 1, mientras que se dejan
de lado los demás elementos de dicho vector. En el próximo instante de
muestreo, todas las secuencias temporales se desplazan para dar cabida
a las nuevas mediciones de la salida y(t+1) y a las del vector de control
u(t + k + 1/t + 1), cuyo primer elemento es generalmente diferente al
primer elemento del vector u(t + k/t), previamente calculado. Este
principio se denomina estrategia del “horizonte retroactivo”.

La estrategia del control predictivo comprende: el proceso de predic-


ción a través de un modelo del proceso, la especificación de una trayectoria
de referencia, la estructuración de la futura ley de control, la definición de
la función de costo (y sus restricciones) y el cálculo del escenario de con-
trol óptimo. Tal estrategia puede ser visualizada en el diagrama de bloques
mostrado en la figura 6.2.

Entradas y
salidas Salidas + Trayectoria de
pasadas predecidas referencia
MODELO -
Entradas
futuras
OPTIMIZADOR

Funcion
’ de costo restricciones

Figura 6.2: Estrategia del Control Predictivo Basado en Modelos


6.3 El Modelo del Proceso 287

6.3. El Modelo del Proceso


El proceso de una entrada y una salida, probablemente no lineal, puede
modelarse como:
y(t) = x(t) + n(t) (6.1)
tal como se ilustra en la figura 6.3, donde y(t) es la salida medible del
proceso, u(t) es la entrada al proceso (la señal de control), x(t) es la salida
del modelo y n(t) es el disturbio en el proceso.
n
u x y
MODELO

Figura 6.3: Modelo del proceso bajo perturbaciones.

El Disturbio n(t)
La señal de disturbio n(t) incluye todos los efectos no deseados en la sali-
da y(t). Esta señal representa el efecto conjunto de todos los disturbios sobre
el proceso, otras entradas no medibles, ruido de medición, errores de mode-
lado, incertidumbres, etc. El disturbio n(t), que es de carácter estocástico,
puede ser modelado mediante un filtro coloreado de la forma:

n(t) C(z −1 )
= (6.2)
e(t) D(z −1 )

donde z −1 es el operador de desplazamiento, e(t) es un ruido blanco no


correlacionado con media cero, y los polinomios son de la forma:

C(z −1 ) = 1 + c1 z −1 + · · · + cnc z −nc (6.3)


−1 −1 −nd
D(z ) = 1 + d1 z + · · · + dnd z (6.4)

El filtro de disturbio debe diseñarse: para eliminar disturbios en el estado


estable (cuando z = 1), como filtro selectivo (para eliminar una determinada
frecuencia) y para incrementar la robustez del sistema en la presencia de
errores de medición. Estructuras tı́picas de los polinomios del filtro pueden
ser:
C(z −1 ) = 1 + cz −1 ; D(z −1 ) = (1 + dz −1 )(1 − z −1 )
288 Control Predictivo

La Salida x(t) del Modelo


La señal x(t) representa el efecto del proceso en la salida y(t) debido a la
entrada u(t). De nuevo, x(t) no es una señal medible. En general, la relación
entre u(t) y x(t) puede representarse mediante un modelo dinámico genérico
de la forma:

x(t) = f (x(t − 1), x(t − 2), . . . , u(t − 1), u(t − 2), . . .) (6.5)

donde f (.) es una función que puede estructurarse de diversas formas. Es


decir, f (.) puede ser una ecuación de diferencias, una red neuronal o una
caja negra con parámetros a ser estimados.

El Modelo CARIMA
El modelo CARIMA, del inglés “Controlled Autoregressive Integrated
Moving Average”, es un modelo lineal básico y bastante extendido en su
aplicación y es precisamente el que emplearemos. El modelo CARIMA del
proceso puede ser representado por:

C(z −1 )
A(z −1 )y(t) = B(z −1 )u(t) + e(t) (6.6)
D(z −1 )

donde:
A(z −1 ) = 1 + a1 z −1 + ... + ana z −na (6.7)
B(z −1 ) = b1 z −1 + ... + bnb z −nb (6.8)
El origen del término CARIMA se debe a que la ecuación de diferencias
del modelo del proceso presenta tres componentes, a saber, la componente
salida autoregresiva:

y(k) = − a1 y(k − 1) − a2 y(k − 2) − ... − ana y(k − na )

el componente promedio temporal de control:

+ b0 u(k − 1) + b1 u(k − 2) + ... + bnb u(k − nb − 1)

y el componente promedio temporal integrado del error e(t):

e(k) + c1 e(k − 1) + c2 e(k − 2) + ... + cnc e(k − nc )


+
1 − z −1
6.3 El Modelo del Proceso 289

Por ejemplo, para un proceso de segundo orden sin presencia de perturba-


ciones; es decir, con C(z −1 ) = 0, la representación CARIMA toma la forma:
B(z −1 ) b1 z −1 + b2 z −2
y(t) = x(t) = u(t) = u(t) (6.9)
A(z −1 ) 1 + a1 z −1 + a2 z −2
la cual conduce a la ecuación de diferencias:

y(t) = −a1 y(t − 1) − a2 y(t − 2) + b1 u(t − 1) + b2 u(t − 2) (6.10)

El modelo lineal CARIMA más generalizado es de la forma:


B(z −1 ) C(z −1 )
A(z −1 )y(t) = u(t) + e(t) (6.11)
F (z −1 ) D(z −1 )
Notar en (6.11) que la salida y(t) del modelo también cumple que (ver
ecuación (6.1):
y(t) = x(t) + n(t)
donde: uy = B
AF y n
e = C
AD . La representación predictiva de la última expre-
sión es:
y(t + k/t) = x(t + k/t) + n(t + k/t) (6.12)

Ejemplo 6.1
El modelo lineal de orden 2 del servomotor D.C. sujeto a cargas no lineales
descrito en la sección 3.3 es:

q̇ = w

N B n2 KE nKact K
ẇ = − q − + w+ u
M M MR RM
Asumiendo que el ruido de medición n(t) en la posición del eje del servomotor
(la salida del proceso) es coloreado:
1
n(t) = e(t)
1 − z −1
determine su modelo CARIMA.
Solución: La función de transferencia de pulso del proceso posee la forma:
q(z) b1 z + b2 b1 z −1 + b2 z −2 B(z −1 )
= 2 = =
u(z) z + a1 z + a2 1 + a1 z −1 + a2 z −2 A(z −1 )
290 Control Predictivo

y añadiendo el ruido de medición obtenemos:

B(z −1 ) B(z −1 ) 1
q(z) = −1
u(z) + n(t) = −1
u(z) + e(t)
A(z ) A(z ) 1 − z −1

donde e(t) es ruido blanco gaussiano con media nula. La ecuación de dife-
rencias del proceso ruidoso viene a ser:

q(t) = (1 − a1 )q(t − 1) + (a1 − a2 )q(t − 2) + a2 q(t − 3)+

b1 u(t − 1) + (b2 − b1 )u(t − 2) − b2 u(t − 3) + e(t) + a1 e(t − 1) + a2 e(t − 2)


En el siguiente ejemplo analizaremos la señal n(t) resultante.

6.4. El Modelo del Predictor


El predictor y(t + k/t) de la señal de salida y el predictor n(t + k/t) de
la señal de perturbación pueden ser modelados empleando representaciones
serie y serie/paralelo como se detalla a continuación.

6.4.1. Predicción de y(t + k/t)


Para predecir y(t+k/t) existen dos posibles esquemas de implementación,
los cuales se muestran en la figura 6.4 para un modelo de segundo orden.

x(t+k-1/t) y(t+k-1/t)
x(t+k-2/t) y(t+k-2/t) MODELO
MODELO x(t+k/t) SERIE / x(t+k/t)
u(t+k-1/t) PARALELO u(t+k-1/t) PARALELO
u(t+k-2/t) u(t+k-2/t)

Figura 6.4: Representación de los modelos paralelo y serie/paralelo.

El Modelo Paralelo
El modelo paralelo, llamado algunas veces modelo independiente, puede
ser usado para procesos estables y es el que se implementa por defecto. En
6.4 El Modelo del Predictor 291

este modelo la salida y(t) se realimenta a sı́ misma. Su expresión es:


B(z −1 ) 1
y(t) = −1
u(t) + e(t) = x(t) + n(t) (6.13)
A(z ) 1 − z −1
la cual se obtiene de la ecuación (6.6)) con C(z −1 ) = 1, AD(z −1 ) = (1−z −1 ),
−1 )
n(t) = 1−z1 −1 e(t), y x(t) = B(z
A(z −1 )
u(t). Por consiguiente, para cualquier t:

x(t) = (1 − A(z −1 ))x(t) + B(z −1 )u(t)


= −a1 x(t − 1) − · · · − ana x(t − na )
+b1 u(t − 1) + · · · + bnb u(t − nb ) (6.14)
siendo su expresión genérica predictiva:
x(t + k/t) = −a1 x(t + k − 1/t) − · · · − ana y(t + k − na /t)
+b1 u(t + k − 1/t) + · · · + bnb u(t + k − nb /t) (6.15)

El Modelo Serie/Paralelo
El modelo serie/paralelo puede ser empleado para procesos estables o
C(z −1 )
inestables. En este caso, el modelo del disturbio n(t) = D(z −1 ) e(t) se es-

coge diferente al del modelo paralelo. El modelo serie/paralelo se obtiene


reescribiendo el modelo paralelo como sigue:
A(z −1 )
A(z −1 )y(t) = B(z −1 )u(t) + e(t) (6.16)
1 − z −1
que es la ecuación (6.6) cuando C(z −1 ) = A(z −1 ) y D(z −1 ) = 1 − z −1 . La
salida y(t) toma entonces la forma:
A(z −1 )
y(t) = (1 − A(z −1 ))y(t) + B(z −1 )u(t) + e(t) = y(t) + n(t) (6.17)
1 − z −1
donde y(t) se obtiene de la relación:
y(t) = (1 − A(z −1 ))y(t) + B(z −1 )u(t)
y(t) = −a1 y(t − 1) − · · · − ana y(t − na )
+b1 u(t − 1) + · · · + bnb u(t − nb ) (6.18)
Por consiguiente, la expresión predictiva del modelo serie/paralelo es:
y(t + k/t) = −a1 y(t + k − 1/t) − · · · − ana y(t + k − na /t)
+b1 u(t + k − 1/t) + · · · + bnb u(t + k − nb /t) (6.19)
292 Control Predictivo

La diferencia del modelo serie/paralelo con respecto al modelo paralelo puede


deducirse de la figura 6.5.
u y u y
PROCESO PROCESO

+
+
- MODELO -
x MODELO y
SERIE / x
u PARALELO x u PARALELO

Figura 6.5: Implementación de los modelos paralelo y serie/paralelo.

6.4.2. Predicción de n(t + k/t)


Para cualquier tiempo t, se puede calcular x(t) usando los datos disponibles
del modelo:
[x(t − 1) . . . x(t − na ) u(t − 1) . . . u(t − nb )]
Luego, usando las mediciones y(t) (por ende y(t + k/t)), podemos calcular
la perturbación n(t) mediante la relación:
n(t) = x(t) − y(t) (6.20)
Como ya se tienen disponibles los valores previos n(t − 1), n(t − 2), . . ., ello
nos permite computar:
D(z −1 )
e(t) = n(t)
C(z −1 )
e(t) = −c1 e(t−1)−c2 e(t−2)−· · ·+n(t)+d1 n(t−1)+d2 n(t−2)+· · · (6.21)
donde e(t) es un ruido blanco no correlacionado con media nula. Esto sig-
nifica que la mejor predicción de e(t) es:
e(t + k/t) = 0, k = 1, . . . , N2 (6.22)
Por extensión, la mejor predicción del disturbio se obtiene de:
C(z −1 )
n(t + k/t) = e(t + k/t), k = 1, . . . , N2
D(z −1 )
= −d1 n(t + k − 1/t) − d2 n(t + k − 2/t) + e(t + k/t) · · ·
+c1 e(t + k − 1/t) + c2 e(t + k − 2/t) + · · · (6.23)
6.4 El Modelo del Predictor 293

El cálculo recursivo toma en cuenta que para cualquier k, e(t + k/t) = 0.


Por consiguiente, para:

k = 1, n(t + 1/t) = −d1 n(t/t) − d2 n(t − 1/t) − · · ·


k = 2, n(t + 2/t) = −d1 n(t + 1/t) − d2 n(t/t) − · · ·
..
.
k = N2 , n(t + N2 /t) = −d1 n(t + N2 − 1/t) − d2 n(t + N2 − 2/t) − · · ·

Ejemplo 6.2
Comparar las respuestas a una sinusoide del proceso servomotor D.C. no
lineal del ejemplo 6.1, cuando la salida y no es ruidosa y cuando lo es. El
tiempo de muestreo es T = 0.01 s. Considerar ruido blanco gaussiano.
Solución: Empleando el resultado del ejemplo 6.1, la solución a este proble-
ma se detalla en el programa ejem6 2.m. Los resultados se muestran en las
figuras 6.6, 6.7 y 6.8. Observar en la última figura que el ruido e(t) empleado
posee media cero y una función de distribución gaussiana.
% ejem6_2.m SOLUCION EJEMPLO 6.2
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
JL = 3.5e-7; bL = 1e-5; Ro = 0.01; Lo = 0.776;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.045; % 0, 0.01, 0.02
K = 31.071e-3; n = 19.741; L = 4.64e-2;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO NO LINEAL DEL PROCESO CONTINUO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/R)/M];
Bc = [0;n*K*Kact/(R*M)]; Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); b1 = num(2); b2 = num(3);
% CONDICIONES INICIALES NULAS
q(1)=0; q(2)=0; q(3)=0; u(1)=0; u(2)=0; u(3)=0;
294 Control Predictivo

y(1)=0; y(2)=0; y(3)=0; e(1)=0; e(2)=0; e(3)=0;


% RESPUESTAS DEL PROCESO
MM = 1000;
for t=3:MM+2
u(t) = sin(0.006*t); % SINUSOIDE DE ENTRADA
q(t+1) = -a1*q(t) -a2*q(t-1) + b1*u(t) + b2*u(t-1);
e(t+1) = 0.1*randn; % GENERA RUIDO BLANCO GAUSSIANO
% DE MEDIA NULA Y VARIANZA 0.1
y(t+1) = (1-a1)*y(t) + (a1-a2)*y(t-1) + a2*y(t-2) ...
+ b1*u(t) + (b2-b1)*u(t-1) - b2*u(t-2) ...
+ e(t+1) + a1*e(t) + a2*e(t-1);
end
% GRAFICOS
ejex = linspace(0,MM*T,MM);
figure(1)
subplot(2,1,1)
plot(ejex,q(3:MM+2)); grid
ylabel(’Posicion en rad’); xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(3:MM+2)); grid
ylabel(’Entrada (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps ejem6_2a
figure(2)
subplot(2,1,1)
plot(ejex,y(3:MM+2)); grid
ylabel(’Posicion ruidosa (rad)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(3:MM+2)); grid
ylabel(’Entrada (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps ejem6_2b
figure(3)
subplot(2,1,1)
plot(ejex,e(3:MM+2)); grid
ylabel(’Ruido gaussiano e(t) (rad)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
hist(e)
ylabel(’Distribucion de e(t)’)
xlabel(’<------ e(t) ------>’)
print -f -deps ejem6_2c
6.4 El Modelo del Predictor 295

Posición en rad
2

−2

−4
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

1
Entrada (voltios)

0.5

−0.5

−1
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 6.6: Respuesta no ruidosa del proceso a una sinusoide.

4
Posición ruidosa (rad)

−2

−4

−6
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

1
Entrada (voltios)

0.5

−0.5

−1
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 6.7: Respuesta ruidosa del proceso a una sinusoide.


296 Control Predictivo

0.4

Ruido gausiano e(t) (rad)


0.2

−0.2

−0.4
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

300
Distribución de e(t)

200

100

0
−0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4
<−−−−−− e(t) −−−−−−>

Figura 6.8: Ruido blanco e(t) con media cero y distribución gaussiana.

6.5. El Controlador Predictivo


6.5.1. Objetivo del Controlador
El objetivo del controlador predictivo es determinar el vector de control
u(t + k/t), k = 0, . . . , N2 − 1, que minimice la siguiente función de costo:


N2 u −1
N
J= [r(t + k/t) − y(t + k/t)]2 + λ [∆u(t + k/t)]2 (6.24)
k=N1 k=0

donde :
∆u(t + k/t) = u(t + k/t) − u(t + k − 1/t) (6.25)
con ∆u(t + k/t) = 0 para k ≥ Nu . La trayectoria de referencia está repre-
sentada por la ecuación:

r(t + k/t) = αr(t + k − 1/t) + (1 − α)w(t + k/t) (6.26)

evaluada para k = 1, . . . , N2 , con r(t/t) = y(t).


Los parámetros de diseño son:

N1 : horizonte de predicción mı́nimo.


6.5 El Controlador Predictivo 297

N2 : horizonte de predicción máximo; por defecto podemos considerar


N2 = N1 + 1, . . . , N1 + 10.

Nu : horizonte de control; por defecto considerar Nu = 1.

N1 , . . . , N2 : horizonte de coincidencia; por defecto considerar N1 (tiem-


po muerto).

λ: parámetro de ponderación; por defecto considerar cero.

α: parámetro de filtraje; por defecto considerar cero.

Si la trayectoria deseada w(t) se programa previamente, entonces los valores


futuros w(t + k) se pueden emplear para determinar w(t + k/t). Es decir,
w(t + k/t) = w(t + k) para k = 1, . . . , N2 . Si no deseamos una estrategia
de control predictivo en avance, el valor actual w(t) se puede usar como un
valor de predicción w(t + k/t) = w(t) para k = 1, . . . , N2 .
Es importante observar además que:

1. La trayectoria de referencia dada en (6.26) constituye un filtro de


primer orden para w(t). Este filtro se puede representar mediante la
siguiente función de transferencia:
r(z) 1−α z(1 − α)
= −1
= (6.27)
w(z) 1 − αz z−α

2. El filtro para w(t) se puede implementar fuera del lazo de control, no


afectando de esta manera a la estabilidad del sistema, pero sı́ con-
tribuyendo al rechazo del ruido.

La figura 6.9 ilustra el objetivo del control predictivo basado en modelos.

6.5.2. Respuesta Libre y Respuesta Forzada


Conceptualmente, la respuesta futura y(t + k/t) puede ser considerada
como el resultado acumulativo de dos efectos:

y(t + k/t) = ylibre (t + k/t) + yf orz (t + k/t) (6.28)

donde el subı́ndice forz indica forzada. La respuesta libre ylibre (t + k/t)


aparece como consecuencia de los factores siguientes:

El efecto debido a las señales de control pasadas u(t − 1), u(t − 2), . . .
298 Control Predictivo

u 1
0
0
1
N u =4
1
0
0
1 00
11
00 11
11
0
1
01
1 00
00
11 00
11
00
11 00
11
00
1100
11
00
11 00
11
00
11 00
11
00
11
0
1
0
1 0
0
1 00
11
00
11
0
1
0
1
0
1
0
1
01
1 y(t+k/t)
0
0
1
u(t+k/t)
o o o o
o o o o
o o o o o o o o o o o o o o o o
o o o o o
o o o
r=w y
N 1=2 N 2 =8
PASADO Tiempo actual t FUTURO

Figura 6.9: Objetivo del control predictivo basado en modelos.

El efecto debido a un escenario de control futuro. Por defecto se tiene


u(t/t) = u(t − 1), u(t + 1/t) = u(t − 1), u(t + 2/t) = u(t − 1), . . .; esto
es, ∆u(t/t) = ∆u(t + 1/t) = . . . = ∆u(t + Nu − 1/t) = 0

El efecto debido a las perturbaciones futuras del ruido n(t + k/t).

La componente forzada yf orz (t + k/t) aparece debido al resultado de


dos efectos. El primero, causado por la acción del control futuro; es decir,
causado por las señales ∆u(t/t), ∆u(t+1/t), . . . , ∆u(t+Nu −1/t). El segun-
do efecto se debe a las respuestas del proceso a una secuencia de entradas
escalón, como sigue:

Un escalón con amplitud ∆u(t/t) aplicado al proceso en el tiempo


t, resulta en una contribución gk ∆u(t/t) en la salida del proceso en
el tiempo t + k. Es decir, k tiempos de muestreo más tarde (figura
6.10(a)).

Un escalón con amplitud ∆u(t + 1/t) aplicado al proceso en el tiempo


t + 1, resulta en una contribución gk ∆u(t + 1/t) para la salida del
proceso en el tiempo t + k − 1. Es decir, k − 1 tiempos de muestreo
más tarde (figura 6.10(b)).

etc.
6.5 El Controlador Predictivo 299


∆u(t/t) Entrada escalon

g ∆u(t/t)
k

Respuesta

al escalon

k Muestras Tiempo
t t+k
(a)

∆u(t+1/t) Entrada escalon

g ∆u(t+1/t)
k

Respuesta

al escalon

(k-1) Muestras Tiempo

t t+k
(b)

Figura 6.10: El efecto de las entradas tipo escalón en la salida forzada.

Por consiguiente, el efecto acumulativo de todos los escalones es:

yf orz (t+k/t) = gk ∆u(t/t)+gk−1 ∆u(t+1/t)+· · ·+gk−Nu +1 ∆u(t+Nu −1/t)


(6.29)
donde los parámetros g1 , . . . , gN2 son los coeficientes de la respuesta del
sistema al escalón unitario. Es decir, la respuesta de la salida del sistema a
los cambios tipo escalón unitario en la entrada.
Para un sistema lineal, la respuesta al escalón unitario no depende del
punto de operación. Este punto es fijo y puede ser calculado fuera de lı́nea
(“off-line”) usando el modelo del sistema.
Para un sistema no lineal, como en el caso de una red neuronal, la res-
puesta al escalón unitario es diferente para cada punto de operación. Esta
respuesta tiene que ser calculada en cada tiempo de muestreo (“on-line”),
aplicando en cada instante de muestreo un cambio escalón (ficticio) a la
entrada actual del proceso y calculando su efecto en la salida respectiva.
300 Control Predictivo

De la ecuación (6.29) se puede obtener la siguiente expresión para la


componente forzada:
Yf orz = GU (6.30)
donde:
 T
Yf orz = yf orz (t + N1 /t) yf orz (t + N1 + 1/t) · · · yf orz (t + N2 /t)
 
gN1 gN1 −1 . . . ...
 gN1 +1 gN1 ... ... 
G=  ...


... ... ...
gN2 gN2 −1 . . . gN2 −Nu +1
 T
U = ∆u(t/t) ∆u(t + 1/t) · · · ∆u(t + Nu − 1/t)
y empleando la ecuación (6.28), podemos escribir:
Y = Ȳ + GU (6.31)
donde:
Y = [y(t + N1 /t) . . . y(t + N2 /t)]T ; U = [∆u(t/t) . . . ∆u(t + Nu − 1/t)]T
Ȳ = [ylibre (t+N1 /t) . . . ylibre (t+N2 /t)]T ; R = [r(t+N1 /t) . . . r(t+N2 /t)]T

Ejemplo 6.3
Determinar la respuesta libre y los coeficientes gk de la respuesta al escalón
para el proceso servomotor D.C. descrito en el ejemplo 6.1.
Solución: La ecuación de diferencias del proceso es:
y(k) = −a1 y(k − 1) − a2 y(k − 2) + b1 u(k − 1) + b2 u(k − 2)
Cuando la entrada es u(k) = 1 para todo k ≥ 0, entonces y(k) = g(k) para
todo k ≥ 0. Luego, los coeficientes g(k) se determinan de:
g(k) = −a1 g(k − 1) − a2 g(k − 2) + b1 u(k − 1) + b2 u(k − 2)
Ası́ podemos obtener que g(0) = 0, g(1) = b1 , g(2) = −a1 b1 + b1 + b2 , y:
g(k) = −a1 g(k − 1) − a2 g(k − 2) + b1 + b2 ; k≥3
La condición para respuesta libre es que:
u(t/t) = u(t + 1/t) = · · · = u(t + N2 /t) = u(t − 1)
Aplicando tal condición en la ecuación de diferencias del proceso, determi-
namos la respuesta libre ylibre como sigue:
ylibre (t + 1) = −a1 ylibre (t) − a2 ylibre (t − 1) + (b1 + b2 )u(t − 1)
6.5 El Controlador Predictivo 301

6.5.3. La Ley de Control


Con la notación anterior, la función de costo (ecuación (6.24)) resulta:

(R−Y)T (R−Y)+λUT U = [(R−Ȳ)−GU]T [(R−Ȳ)−GU]+λUT U (6.32)

la cual es una forma cuadrática en U, cuya minimización por diferenciación


resulta en la siguiente solución óptima:

U∗ = (GT G + λI)−1 GT (R − Y) (6.33)

Es importante indicar que:


Solamente el primer elemento ∆u(t/t) de U∗ es necesario para com-
putar la entrada de control actual u(t) = u(t − 1) + ∆u(t/t). El mismo
procedimiento se repite para la nueva medición y(t + 1) en el próximo
instante de tiempo t + 1. Este procedimiento se denomina el principio
del “horizonte retroactivo”.

La matriz [GT G + λI] a ser invertida tiene dimensión Nu × Nu . Para el


caso por defecto, es decir, para Nu = 1, se obtiene una ley de control
escalar (con muy buenos resultados en muchos casos prácticos) de la
forma:
N2
gk [r(t + k/t) − ylibre (t + k/t)]
∆u(t) = k=N1 N2 (6.34)
2
k=N1 gk + λ

Otra aproximación para la estructuración del escenario de control con-


siste en el empleo de funciones base de la forma:

u(t + k/t) = µi Bi (6.35)
i

La optimización de la señal de control u(t + k/t) es ahora con respecto


a los parámetros µi .
El control predictivo muestra diferentes propiedades dependiendo de la
selección de N1 , N2 y Nu . Por ejemplo:
Si N1 = n, N2 = 2n − 1, Nu = n y λ = 0, la salida entonces alcanza la
referencia después de n muestras y se mantiene en este estado, propor-
cionando una vigorosa acción de control. Este caso es muy apropiada
para aplicaciones que requieran alto rendimiento, como en la robótica.
302 Control Predictivo

Si escogemos N1 = Nu = 1, N2 = ∞ y λ = 0, obtendremos una


respuesta transitoria de la variable controlada, caracterizada por un
tiempo de subida rápido y un tiempo de estabilización lento. Este
hecho es relevante en el control de procesos industriales.

La Ley de Control con Restricciones


El problema de control presentado en la subsección anterior fue formu-
lado bajo condiciones de control sin restricciones; es decir, considerando que
todas las señales poseen rango ilimitado. Sin embargo, esto no es realista. En
la práctica, todos los procesos están sujetos a restricciones. Por ejemplo, en
el caso de un servosistema no lineal, si la señal de control u(t) es demasiado
grande, entonces el amplificador del voltaje de armadura se puede saturar
produciéndose su deterioro.
En presencia de restricciones no es posible la solución analı́tica del pro-
blema de minimización, debiendo recurrirse a dos posibles soluciones. La
primera solución es tratar a todas las variables como si no tuvieran restric-
ciones. Posteriormente, conforme a rangos previamente especificados (las
restricciones), proceder mediante software, con el corte o la limitación de
las magnitudes de las variables con restricciones. La otra solución requiere
el empleo de técnicas numéricas, tales como la programación cuadrática.
Nosotros no trataremos esta alternativa.

Ejemplo 6.4
Determinar la matriz dinámica de control para el proceso del ejemplo 6.1
empleando los datos siguientes: N1 = 7, N2 = 12, Nu = 6.
% ejem6_4.m SOLUCION DEL EJEMPLO 6.4
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; RR = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.045; % tambi’en 0,.01,.02
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO NO LINEAL DEL PROCESO CONTINUO DE TERCER ORDEN
6.6 Procedimiento de Diseño 303

% Acc = [0 1 0;-N/M -B/M n*K/M;0 -n*E/L -RR/L];


% Bcc = [0;0;Kact/L];
% Ccc = [1 0 0]; Dcc = [0];
% MODELO LINEAL CONTINUO DE SEGUNDO ORDEN DEL PROCESO
Ac = [0 1;-N/M -(B + n^2*K*E/RR)/M];
Bc = [0;n*K*Kact/(RR*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % periodo de muestreo
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
N1 = 6; N2 =12; Nu =7; % HORIZONTE DE CONTROL
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
for k=3:12
g(k) = -a1*g(k-1) -a2*g(k-2) + b1 + b2;
end
% LUEGO, LA MATRIZ G TIENE LA FORMA:
G = [g(N1) g(N1-1) g(N1-2) g(N1-3) g(N1-4) g(N1-5) 0
g(N1+1) g(N1) g(N1-1) g(N1-2) g(N1-3) g(N1-4) g(N1-5)
g(N1+2) g(N1+1) g(N1) g(N1-1) g(N1-2) g(N1-3) g(N1-4)
g(N1+3) g(N1+2) g(N1+1) g(N1) g(N1-1) g(N1-2) g(N1-3)
g(N1+4) g(N1+3) g(N1+2) g(N1+1) g(N1) g(N1-1) g(N1-2)
g(N1+5) g(N1+4) g(N1+3) g(N1+2) g(N1+1) g(N1) g(N1-1)
g(N2) g(N2-1) g(N2-2) g(N2-3) g(N2-4) g(N2-5) g(N2-Nu+1)];

6.6. Procedimiento de Diseño


El procedimiento para diseñar un sistema de control predictivo basado
en modelos, empleando la matriz dinámica de control es:
1) Formular el problema (definir las especificaciones de diseño).
2) Determinar el modelo CARIMA del proceso (subsección 6.3).
3) Calcular la respuesta libre del proceso (subsección 6.5.2).
4) Calcular la respuesta del proceso al escalón (subsección 6.5.2).
5) Determinar la ley de control (subsección 6.5.3).
6) Simular el sistema de control predictivo, incluyendo las restricciones.
304 Control Predictivo

7) Implementar el hardware.
8) Implementar el software de control.
9) Realizar pruebas de funcionamiento (resultados experimentales).

6.7. Control de Posición de un Servomotor


6.7.1. Formulación del Problema
El servomotor D.C. con carga no lineal (discutido ampliamente en la
sección 3.3) es un proceso de una entrada y una salida que puede ser contro-
lado por el voltaje de armadura. La carga no lineal es una varilla metálica
acoplada al eje del servomotor, a manera de un brazo robótico de un grado
de libertad. En el extremo de la varilla se pueden acoplar cargas adicionales.
El objetivo de control es diseñar e implementar un sistema de control pre-
dictivo basado en modelos, empleando una ley de control escalar dinámica,
de modo tal que la varilla se posicione en una referencia predeterminada. El
sobreimpulso de la respuesta debe ser mı́nimo, no obstante la presencia de
la carga no lineal y de las no linealidades del proceso como son las fricciones
estática y de Coulomb, y la saturación en el amplificador del servomotor.

Modelo del Proceso


La figura 3.9 presenta la estructura del proceso no lineal a controlar. La
tabla 3.2 describe las variables y los valores de sus parámetros. Asumiendo
que la señal de control u está compensada por las no linealidades y des-
preciando la inductancia L del servomotor, el proceso no lineal puede ser
descrito mediante el siguiente modelo lineal (subsección 3.3.5):
ẋ = Ac x + Bc u; y = Cc x



0 1 0  
Ac = 2E ; Bc = KnKact ; Cc = 1 0
−MN
−( M
B
+ KnMR ) MR
2 1 m
M = Jef f + M L2o + M Ro2 + mL2o ); N = gLo (M + )
5 3 2
2 2
Jef f = n Jm + JL ; B = n bm + bL
La función de transferencia Gp (s) del proceso puede determinarse de:
y(s)
Gp (s) = = Cc [sI − Ac ]−1 Bc
u(s)
6.7 Control de Posición de un Servomotor 305

mientras que la función de transferencia de pulso Gp (z) se determina de:




y(z) −1 Gp (s)
Gp (z) = = (1 − z )Z
u(z) s

donde Z[.] es la operación transformada Z. Dicha función de transferencia


depende del tiempo de muestreo T y posee la estructura siguiente:

y(z) b1 z + b2 b1 z −1 + b2 z −2 B(z −1 )
Gp (z) = = 2 = =
u(z) z + a1 z + a2 1 + a1 z −1 + a2 z −2 A(z −1 )

que constituye el modelo CARIMA del proceso, con

A(z −1 ) = 1 + a1 z −1 + a2 z −2 ; B(z −1 ) = b1 z −1 + b2 z −2

Su correspondiente ecuación de diferencias es:

y(k) = −a1 y(k − 1) − a2 y(k − 2) + b1 u(k − 1) + b2 u(k − 2)

Con Mo = 0 (varilla sin carga adicional), los parámetros poseen los valores
siguientes: a1 =-1.9614 , a2 =0.9614 , b1 =0.0044 y b2 =0.0043 .

6.7.2. Respuesta Libre del Proceso


La expresión para determinar la respuesta libre del proceso en cuestión se
determinó en el ejemplo 6.3. El siguiente programa determina recursivamente
la trayectoria deseada W (t), la trayectoria de referencia r(t) y la respuesta
libre ylibre . Por simplicidad, emplearemos la notación: yf = ylibre .

% CONDICIONES Y PARAMETROS INICIALES


yf(1)=0; yf(2)=0; yf(3)=0; % yf: RESPUESTA LIBRE
r(1) =0; r(2) =0; r(3)=0; % r : REFERENCIA
alf = 0.01; frec = 0.0063; GW = 1;
MM = 1000; n1=1; n2=20;
% REFERENCIA, SALIDA LIBRE Y RESPUESTAS AL ESCALON
for t = 3:MM+2
for k = n1:n2
W(t+k) = GW*sign(sin(frec*(t))); % TRAYECTORIA DESEADA
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k) = - a1*yf(t+k-1)-a2*yf(t+k-2)+(b1 + b2)*u(t-1);
end
end
306 Control Predictivo

6.7.3. Respuesta del Proceso al Escalón


La expresión para determinar los coeficientes de la respuesta al escalón
del proceso en cuestión, se determinó en el ejemplo 6.3. En código MATLAB
el cálculo se efectúa como sigue:
N1 = 6; N2 = 12; % HORIZONTE DE CONTROL
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
for k=3:N2
g(k) = -a1*g(k-1) -a2*g(k-2) + b1 + b2;
end

6.7.4. La Ley de Control


La ley de control a emplear es del tipo escalar (Nu = 1) con N1 = 1 y
N2 = 12. La forma de la ley de control es:
N2
k=N1 g(k)[r(t + k/t) − ylibre (t + k/t)]
∆u = N2 2
k=N1 g (k) + λ

6.7.5. Simulación del Sistema de Control Predictivo


Primera Simulación
El programa dispred1.m simula el sistema de control predictivo emple-
ando la ley de control descrita en la subsección 6.7.4 y un modelo lineal de
segundo orden del proceso. La carga no lineal a posicionar es máxima. Se
está empleando restricción en la fuerza de control para evitar la saturación
del amplificador de potencia. El resultado de esta simulación se muestra en
la figura 6.11.
% dispred1.m PRIMERA SIMULACION DEL SISTEMA DE CONTROL PREDICTIVO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; RR = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.045; % tambi’en 0,.01,.020
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
6.7 Control de Posición de un Servomotor 307

N = g*Lo*(Mo+m/2);
% MODELO LINEAL CONTINUO DEL PROCESO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/RR)/M];
Bc = [0;n*K*Kact/(RR*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% HORIZONTES
N1 = 1; N2 =12; Nu =1; % LEY DE CONTROL ESCALAR
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
for k=3:N2
g(k) = -a1*g(k-1) -a2*g(k-2) + b1 + b2;
end
% CONDICIONES INICIALES
yf(1)=0; yf(2)=0; yf(3)=0; r(1)=0; r(2)=0; r(3) =0;
u(1) =0; u(2) =0; u(3) =0; w(1)=0; w(2)=0; w(3) =0;
q(1) =0; q(2) =0; q(3) =0;
alf = 0.01; lambda = 0.; frec = 0.0063; GW = 1;
MM = 2000;
% LAZO DE CONTROL
for t = 2:MM+2
for k = 1:N2
W(t+k) = GW*sign(sin(frec*(t)));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k) = -a1*yf(t+k-1)-a2*yf(t+k-2)+(b1 + b2)*u(t-1);
end % yf: RESPUESTA LIBRE
% LEY DE CONTROL
du(t) = (g(1)*(r(t+1)-yf(t+1))+g(2)*(r(t+2)-yf(t+2)) + ...
g(3)*(r(t+3)-yf(t+3))+g(4)*(r(t+4)-yf(t+4)) + ...
g(5)*(r(t+5)-yf(t+5))+g(6)*(r(t+6)-yf(t+6)) + ...
g(7)*(r(t+7)-yf(t+7))+g(8)*(r(t+8)-yf(t+8)) + ...
g(9)*(r(t+9)-yf(t+9))+ g(10)*(r(t+10)-yf(t+10)) + ...
g(11)*(r(t+11)-yf(t+11))+ g(12)*(r(t+12)-yf(t+12)))/...
(g(1)^2 + g(2)^2 + g(3)^2+ g(4)^2 + g(5)^2 + ...
g(6)^2 + g(7)^2 + g(8)^2+ g(9)^2 + g(10)^2 + ...
g(11)^2 + g(12)^2 + lambda);
u(t) = u(t-1) + du(t); % LEY DE CONTROL ACTUAL
% LIMITANDO LA FUERZA DE CONTROL
308 Control Predictivo

fu = 1.4;
if(u(t) > 0 & u(t) > fu)
u(t) = fu;
elseif(u(t) < 0 & u(t) < -fu)
u(t) = -fu;
end
% PROCESO LINEAL
q(t+1) = -a1*q(t) -a2*q(t-1) + b1*u(t) + b2*u(t-1);
end
% GRAFICOS
ejex = (3:MM); ejex = ejex*T;
subplot(2,1,1)
plot(ejex,W(3:MM),ejex,q(3:MM)); grid
ylabel(’Posicion q(t) (rad)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(3:MM)); grid
ylabel(’Control u(t) (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps dispred1

2
Posición q(t) (rad)

−1

−2
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

2
Control u(t) (voltios)

−1

−2
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 6.11: Primera simulación del sistema de control predictivo. La carga


no lineal es máxima.
6.7 Control de Posición de un Servomotor 309

Segunda Simulación
El programa dispred3.m también simula el sistema de control predictivo
empleando la ley de control descrita en la subsección 6.7.4 y un modelo
no lineal de segundo orden del proceso. La carga no lineal a posicionar es
máxima. En esta simulación se emplea restricción en la fuerza de control
diseñada para no saturar el amplificador de potencia. También se emplea
compensación para minimizar el efecto de la fuerza de fricción de Coulomb
en la señal de control y restricción del tipo y(t) = r(t) (la salida iguala a
la referencia). El resultado de esta simulación se muestra en la figura 6.12.
Notar que la fuerza de control generada no sobrepasa el rango de ± 1,4 volts,
por lo que su implementación no va a saturar al amplificador de potencia a
emplear. Esta es la configuración que se va a implementar.

% dispred3.m
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; RR = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.045; % tambi’en 0,.01,.020
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO NO LINEAL CONTINUO DEL PROCESO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/RR)/M];
Bc = [0;n*K*Kact/(RR*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% HORIZONTES
N1 = 1; N2 =12; Nu =1; % LEY DE CONTROL ESCALAR
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
for k=3:N2
g(k) = -a1*g(k-1) -a2*g(k-2) + b1 + b2;
end
310 Control Predictivo

% CONDICIONES INICIALES
yf(1)=0; yf(2)=0; yf(3)=0; r(1)=0; r(2)=0; r(3) =0;
u(1) =0; u(2) =0; u(3) =0; w(1)=0; w(2)=0; w(3) =0;
q(1) =0; q(2) =0; q(3) =0;
alf = 0.01; lambda = 0.; frec = 0.0063; GW = 1;
MM = 2000;
% BUCLE DE CONTROL *********************************
for t = 2:MM+2
% REFERENCIAS, SALIDA LIBRE Y RESPUESTAS AL ESCALON
for k = 1:N2
W(t+k) = GW*sign(sin(frec*(t)));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k) =-a1*yf(t+k-1)-a2*yf(t+k-2)+(b1 + b2)*u(t-1);
end % yf: RESPUESTA LIBRE
% RESTRICCION A LA SALIDA
q(t) = r(t);
% LEY DE CONTROL
du(t) = (g(1)*(r(t+1)-yf(t+1))+g(2)*(r(t+2)-yf(t+2)) + ...
g(3)*(r(t+3)-yf(t+3))+g(4)*(r(t+4)-yf(t+4)) + ...
g(5)*(r(t+5)-yf(t+5))+g(6)*(r(t+6)-yf(t+6)) + ...
g(7)*(r(t+7)-yf(t+7))+g(8)*(r(t+8)-yf(t+8)) + ...
g(9)*(r(t+9)-yf(t+9))+g(10)*(r(t+10)-yf(t+10)) + ...
g(11)*(r(t+11)-yf(t+11))+g(12)*(r(t+12)-yf(t+12)))/...
(g(1)^2 + g(2)^2 + g(3)^2+g(4)^2 + g(5)^2 + ...
g(6)^2 + g(7)^2 + g(8)^2+g(9)^2 + g(10)^2 + ...
g(11)^2 + g(12)^2 + lambda);
u(t) = u(t-1) + du(t); % ley de control actual
% COMPENSANDO LA FRICCION DE COULOMB
TN = cc*sign(w(t)); % TORQUE DE FRICCION DE COULOMB
if(w(t) > 0)
u(t) = u(t) + (RR/(n*K*Kact))*TN;
elseif(w(t) < 0)
u(t) = u(t) - (RR/(n*K*Kact))*TN;
end
% LIMITANDO LA FUERZA DE CONTROL
fu = 1.4;
if(u(t) > 0 & u(t) > fu)
u(t) = fu;
elseif(u(t) < 0 & u(t) < -fu)
u(t) = -fu;
end
% MODELO NO LINEAL DISCRETIZADO DEL PROCESO DE SEGUNDO ORDEN
q(t+1) = q(t) + T*w(t);
6.7 Control de Posición de un Servomotor 311

w(t+1) = w(t) + T*( - (N/M)*sin(q(t)) ...


- (B/M + n^2*K*E/(M*RR))*w(t) ...
- (1/M)*TN + (n*K*Kact/(M*RR))*u(t) );
end
% GRAFICOS
ejex = (3:MM); ejex = ejex*T;
subplot(2,1,1)
plot(ejex,W(3:MM),ejex,q(3:MM)); grid
ylabel(’Posicion q(t) (rad)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(3:MM)); grid
ylabel(’Control u(t) (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps dispred3

1
Posición q(t) (rad)

0.5

−0.5

−1
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

2
Control u(t) (voltios)

−1

−2
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 6.12: Segunda simulación del sistema de control predictivo. La carga


no lineal es máxima.

6.7.6. Implementación del Hardware


El hardware empleado en la implementación en tiempo real del sistema
de control predictivo es similar al empleado para la implementación en tiem-
312 Control Predictivo

po real de los sistemas de control adaptivo, robusto y no lineal. Dicho hard-


ware se describe en detalle en la subsección 5.6.8.

6.7.7. El Software de Control


El software usado para la implementación del algoritmo de control de
posición emplea el lenguaje C y se ejecuta en una PC Pentium. Los pro-
gramas necesarios para el control se estructuran en tres archivos escritos en
C: R1LLIB.H, R1LLIB.CPP y PREDI4.CPP. El archivo PREDI4.CPP es el
que contiene el algoritmo de control.
La realización de archivos ejecutables a partir de los programas fuente, se
elabora en el ambiente de trabajo del Borland C/C++ mediante la creación
de un proyecto denominado PREDI4.PRJ, en el cual intervienen los archivos
mencionados en el párrafo anterior.

Diagrama de Flujo del Software de Control


El diagrama de flujo del software de control se muestra en la figura 6.13.
Notar que tal diagrama comprende los pasos siguientes, para:

1. Inicializar la tarjeta de adquisición de datos Lab−P C+ y las variables


utilizadas en el programa.
2. Detectar el flanco de subida del pulso de reloj (clock) y leer el primer
dato de la posición (posición inicial) para iniciar el algoritmo de con-
trol.
3. Comprobar que la variable k sea menor que el número de puntos n. La
variable n junto con la frecuencia de muestreo determinan el tiempo
de duración del experimento.
4. Detectar el flanco de subida del pulso de reloj para iniciar un perı́odo
de adquisición de datos y de control. Leer la posición y y aplicar las
restricciones; luego estimar la velocidad a partir de la posición.
5. Calcular la señal de control u, compensar las fricciones estática y de
Coulomb (señal v), aplicar restricciones a la señal de control, y luego
enviar la señal u = u + v+offset por el DAC0 de la tarjeta Lab-PC+
al generador PWM. El valor del offset es 2.3 volt.
6. Actualizar las variables y repetir el lazo de control hasta que k = n.
6.7 Control de Posición de un Servomotor 313

INICIO

INICIALIZACION DE VARIABLES
INICIALIZACION DE LA TARJETA LabPC+

DETECTAR FLANCO
DE SUBIDA

LEER POSICION INICIAL P0

NO
k MENOR QUE n FIN

SI

DETECTAR FLANCO
DE SUBIDA NO
SI

LEER POSICION Pk
CALCULAR POSICION Y VELOCIDAD
APLICAR RESTRICCIONES EN Pk

~ DE CONTROL
GENERAR SENAL
GENERAR SALIDA COMPENSADA
~
RESTRINGIR LA SENAL DE CONTROL
~
ENVIAR LA SENAL COMPENSADA
ACTUALIZAR VARIABLES

Figura 6.13: Diagrama de flujo del algoritmo de control.


314 Control Predictivo

El Programa Principal
El programa principal (programa PREDI4.CPP) realiza lo siguiente:

1. Declaración de los archivos de cabecera: r1llib.h (librerı́a de funciones),


stdio.h (E/S estándar), math.h (manejo de funciones matemáticas),
asserth.h (declaración de macros de depuración), alloc.h (asignación
dinámica de memoria) y conio.h (funciones de consola y puertos E/S)

2. Declaración de las constantes globales.

3. Definición de las funciones propias del programa: Inicializa Sistema,


M ide V ariables y Aplica Control

4. Declaración de las variables globales.

5. Definición de la función principal main.

Las Funciones Propias del Software de Control


A continuación se describen las funciones propias del software de control.

Inicializa Sistema: permite la inicialización de los parámetros y va-


riables globales. Luego, inicializa la tarjeta de adquisición de datos
Lab-PC+ por medio de la función Conf igurarHardware. Enseguida
envı́a la tensión de offset al puerto de salida analógica por medio de la
función EnviarV oltage (sic), para asegurar la posición inicial de re-
poso del motor (posición vertical) y finalmente, lee la posición inicial
p0 del motor.

M ide V ariables: especifica la señal de referencia considerada. Luego


mide la posición actual del motor (posición de la varilla) y la velocidad
(en función de la posición), actualiza los estados de las variables y, w,
r y e, y aplica restricciones a la salida.

Aplica Control: compensa las fricciones estática y de Coulomb y aplica


restricciones a la señal de entrada u. Luego, envı́a un voltaje equiva-
lente a la suma de la señal de control u (con restricción), más la señal
de compensación v, más la señal del offset (2.3 volt).

La función principal main posee una estructura adecuada para:


6.7 Control de Posición de un Servomotor 315

La declaración y definición de variables locales.

El llamado a la función Inicializa Sistema.

El llamado a la macro de depuración.

La asignación de memoria dinámica que permita almacenar los datos


para las variables: u, w, y y r en el proceso de ejecución del proyecto.

Ejecutar el lazo de control del programa desde k = 0 hasta k = n,


donde n es un entero que indica el máximo número de muestras usado
en la ejecución del proyecto. Dentro del lazo de control se define la
ejecución de la función M ide V ariables en cada flanco de subida del
pulso de reloj. Luego se genera la señal de control u y se envı́a a la
salida del DAC0 la tensión ordenada por la función Aplica Control.
Los valores para y, w, u y r se guardan en memoria. Posteriormente
se incrementan k y t, se visualizan en pantalla los valores instantáneos
de t, y, w, u y e, y se actualiza el pulso de reloj siempre que k ≤ n.

Al finalizar el tiempo de ejecución, enviar un voltaje de offset necesario


para detener el motor en su posición de reposo.

La obtención de gráficos basados en datos almacenados durante el


tiempo de ejecución, abriendo el archivo de salida PREDI4.OUT.

Los Programas Fuente


La trayectoria deseada w considerada en este programa, consiste en cinco
niveles de 20 segundos de duración por nivel. Esos niveles, en orden de
ejecución, son: 30o (π/6), 45o (π/4), 60o (π/3), 37,5o (5π/24) y 30o (π/6).
/* PREDI4.CPP *********** programa principal *********/
#include "r1llib.h"
#include <stdio.h>
#include <math.h>
#include<assert.h>
#include <alloc.h>
#include <conio.h>
const float ESCALA = 2.*M_PI/(512.*19.7);
const float niv1 = 1.*M_PI/6.;
const float niv2 = 5.*M_PI/24.;
const float niv3 = 1.*M_PI/4.;
const float niv4 = 1.*M_PI/3.;
316 Control Predictivo

/* Declaracion de las funciones propias del programa */


void Inicializa_Sistema();
void Mide_Variables(float *yk, float *w, float *r, float *vel,
float t);
float Aplica_Control(float u, float ykp);

/* Declaracion de las variables globales */


float a1, a2, b1, b2, g0, landa, alfa, N;
float y, yant, r, w, rant, es;
float T, t, tsimul;
float Fs;
int p0, pk;
float VcFC, VcFE, Wth, Ofst;
float eant, eantant, e;
float uant, uantant;

/********************** FUNCIONES ***************/


float Aplica_Control(float u, float ykp)
{
float v;
if(fabs(ykp)<=Wth)
{
if(u<0.) v = -VcFE;
if(u>0.) v = VcFE;
}
else
{
if(u<0.) v = -VcFC;
if(u>0.) v = VcFC;
}
if(u + v < -1.5) u = -1.5;
else if(u + v > 1.4) u = 1.4;
EnviarVoltage(u+v+Ofst);
return u;
}

void Inicializa_Sistema()
{
/* Con Varilla*/
a1 = -1.9614; a2 = .9631;
b1 = .0044; b2 = .0043;
/* Sin Varilla */
6.7 Control de Posición de un Servomotor 317

//a1 = -1.6246; a2 = .6246;


//b1 = .0479; b2 = .0410;
/* ATENCION: LOS VALORES DE a1, a2, b1, b2 DEPENDEN DE LA Fs */
VcFE = .2; VcFC = .15;
Wth = .1; Ofst = 2.3;
Fs = 100.; T = 1./Fs;
tsimul= 100.;
/* PARAMETROS DEL SISTEMA DE CONTROL PREDICTIVO*/
q0 = 114.9425;
landa = 0.942; alfa = 0.01;
/* INICIALIZACION DE LAS VARIABLES */
yant = 0.; y = 0.;
eant = 0.; eantant = 0.;
rant = 0.; e = 0.;
uant = 0.; uantant = 0.;
ConfigurarHardware(0x272, 0x270, 0x271, 0x264, Fs);
EnviarVoltage(Ofst);
p0 = LeerPosicion();
}
void Mide_Variables
(float *y, float *w, float *r, float *vel, float t)
{
/* Definiendo el setpoint: w= w(t)*/
if((0. <= t && t < 20.) || (80. <= t && t <= 100.)) *w = niv1;
else if(20. <= t && t < 40.) *w = niv3;
else if(40. <= t && t < 60.) *w = niv4;
else if(60. <= t && t < 80.)
*w=niv2;
/* definiendo la referencia: r=r(t) */
*r = alfa*rant + (1-alfa)*(*w);
/* Ahora leo la posici\’on */
pk = LeerPosicion();
*y = yant + ((float)(abs(pk-p0) > 8000 ? 0:pk-p0))*ESCALA;
p0 = pk;
/* Actualizamos los estados */
yant =* y; rant =* r; eantant = eant; eant = e;
/* Restricciones en la salida */
if(*y < 0.0) *y = 0.0;
else if(*y > 1.0*(*r)) *y = 1.0*(*r);
/* Y el error */
e = *r - *y;
/* El error de seguimiento */
es = *w - *y;
318 Control Predictivo

/* Y la velocidad angular */
*vel = (5.*(*y - yant) + *vel)/(1. + 5.*T);
}
void main()
{
int ant = 0, act = 0, k, n;
FILE *out;
float *yb, *ub, *wb, *rb, vel, y, u, w, r;
float yant;
Inicializa_Sistema();
clrscr();
assert(tsimul < 120);
N = tsimul/T;
n = (int)N;
t = vel = 0.;
assert(NULL!=(ub= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(yb= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(wb= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(rb= (float *)calloc(n/5,sizeof(float))));
for(k = 0; k < n;)
{
act = NivelClock();
if ((ant == 0)&&(act == 1))
{
Mide_Variables(&y, &w, &r, &vel, t);
/* Se~nal de Control */
//u = q0*(b1*uant + b2*uantant + e + a1*eant + a2*eantant);
u=(landa+q0*b1*(1-landa))*uant+q0*(1-landa)
*(b2*uantant + e + a1*eant + a2*eantant);
uantant = uant; uant=u;
u = Aplica_Control(u, vel);
if(!(k%5))
{
yb[k/5] = y*180./M_PI; wb[k/5] = w*180./M_PI;
rb[k/5] = r*180./M_PI; ub[k/5] = u;
}
k++;
t+=T;
gotoxy(15,5); printf("*****************************************");
gotoxy(18,7); printf("Control Predictivo de un Servomotor D.C.");
gotoxy(15,9); printf("*****************************************");
gotoxy(21,11);printf("tiempo: t=%+5.3f",t);
gotoxy(21,13);printf("setpoint: w=%+5.3f",w*180./M_PI);
6.7 Control de Posición de un Servomotor 319

gotoxy(21,15);printf("se~nal de refer.: r=%+5.3f",r*180./M_PI);


gotoxy(21,17);printf("se~nal de control: u=%+5.3f",u);
gotoxy(21,19);printf("posicion angular: y=%+5.3f",y*180./M_PI);
gotoxy(21,21);printf("error de posicion: e=%+5.3f",e*180./M_PI);
gotoxy(21,23);printf("error seguimiento: es=%+5.3f",es*180./M_PI);
gotoxy(15,25);printf("*****************************************");
if(kbhit()) if(getch() == 27) break;
}
ant = act;
}
EnviarVoltage(Ofst);
out=fopen("predi4.out","wt");
for (int i = 0; i<n/5; i++)
fprintf(out,"%10f %10f %10f %10f %10f %10f\n",
i*5*T, wb[i], rb[i], yb[i], ub[i], wb[i]-yb[i]);
delete wb, rb, yb, ub;
fclose(out);
}

/* R1LLIB.H ****************************************************
* Archivo de declaraciones de funciones definidas en R1LLIB.CPP
* Estas funciones permiten facilitar el manejo de la tarjeta de
* Adquisicion Lab-PC+: Digital input (16 bits), Analog Output,
* Timer generator, Polling. Tambien usa funciones de lecto/
* escritura de registros (inportb, outport).
*/

#if !defined (__R1LLIB_H_PRY)


#define __R1LLIB_H_PRY

// Configuracion de Lab-PC+ (digital in, polling, analog out, timer)


void ConfigurarHardware (unsigned, unsigned, unsigned, unsigned,int);

// Salida de Voltage por R1LAOPort


void EnviarVoltage(float);

// Leer Posicion (16 bits leidos por R1LLSBPort y R1LMSBPort)


unsigned int LeerPosicion();

// Leer Nivel del clock (polling). Devuelve 0 o 1


int NivelClock ();
#endif
320 Control Predictivo

/* R1LLIB.CPP **************************************************
* Archivo de definiciones de funciones declaradas en R1LLIB.H
* Estas funciones permiten facilitar el manejo de la tarjeta de
* Adquisicion Lab-PC+: Digital input (16 bits), Analog Output,
* Timer generator, Polling. Tambien emplea funciones de
* lecto/escritura de registros (inportb, outport).
*/

#include "r1llib.h"
#include "nidaq.h" // Libreria de Programas
#include <dos.h>
//
static unsigned R1LLSBPort; // direccion puerto dig. de entrada
static unsigned R1LMSBPort; // direccion puerto dig. de control
static unsigned R1LPollPort; // direccion puerto dig. de polling
static unsigned R1LAOPort; // direccion de la salida analogica
static int R1LFS; // frecuencia de muestreo en Hertz
//
void ConfigurarHardware (unsigned pollPort, unsigned lPort,
unsigned hPort, unsigned salPort, int frec)
{
int cuentaTimer, deviceCode;
cuentaTimer = (int)(2000000/frec);
R1LPollPort = pollPort;
R1LLSBPort = lPort;
R1LMSBPort = hPort;
R1LAOPort = salPort;
R1LFS = frec;
USE_LAB();
Init_DA_Brds(1,&deviceCode);
ICTR_Setup(1,0,3,cuentaTimer,1); // clock de muestreo = timer0
DIG_Prt_Config(1,(int)(pollPort - 0x270),0,0);
DIG_Prt_Config(1,(int)(lPort-0x270),0,0);
DIG_Prt_Config(1,(int)(hPort-0x270),0,0);
}

void EnviarVoltage (float u)


{
unsigned salidaDigital;
salidaDigital = (unsigned) (409.5*u-0.5);
outport(R1LAOPort,salidaDigital);
6.7 Control de Posición de un Servomotor 321

unsigned int LeerPosicion()


{
unsigned char oct1,oct2;
oct1 = inportb(R1LLSBPort);
oct2 = inportb(R1LMSBPort);
return (255*oct2+oct1);
}

int NivelClock ()
{
unsigned char bytePoll;
bytePoll = inportb (R1LPollPort);
return (bytePoll&1);
}

6.7.8. Resultados Experimentales


En esta subsección se presentan los resultados experimentales del sistema
de control para posicionar el ángulo de salida del servomotor D.C., sujeto
a cargas no lineales, empleando restricciones tanto en la fuerza de control
como en la salida. Para los casos presentados, la trayectoria deseada es una
curva discontinua escalonada. Las respuestas controladas (en lı́neas de trazo)
se muestran en las figuras 6.14, 6.15, 6.16 y 6.17
De acuerdo a la sección 3.3, la inercia total de la carga no lineal es:
1 2 2
JT = JL + mL2o + Mo L2o + Mo Ro2 = J + Mo Ro2
3 5 5
donde J es la inercia total originada por la varilla (sin carga adicional). Los
otros parámetros se detallan en la tabla 3.2. Podemos notar que variando
la carga adicional (la esfera de radio Ro y masa Mo ), variamos también la
carga total. Esto es lo que haremos en las experiencias. Para todos los casos,
se ha considerado un factor de filtraje α = 0,01.
La figura 6.14 muestra el caso sin carga adicional; es decir, con una carga
inercial total JT = J. La figura 6.15 corresponde a la respuesta controlada
cuando se incrementa la inercia de la carga no lineal en 42 % (es decir,
cuando JT = 1,42J), mientras que las figuras 6.16 y 6.17 muestran las curvas
de respuesta controlada para los casos cuando JT = 1,84J y JT = 2,98J,
respectivamente. En todos los casos se cumplen las especificaciones de diseño
(ver la subsección 6.7.1).
322 Control Predictivo

Rpta. a escalones variantes para una carga J


70

60
− −:y

− :w
50
Posición (grados)

40

30

20

10

0
0 10 20 30 40 50 60 70 80 90 100
t(seg)

Figura 6.14: Salida controlada y (curva en trazos) para una carga inercial
de JT = J kg-m2 .

Rpta. a escalones variantes para 1.42J


70

60
− −:y

− :w
50
Posición (grados)

40

30

20

10

0
0 10 20 30 40 50 60 70 80 90 100
t(seg)

Figura 6.15: Salida controlada y (curva en trazos) para una carga inercial
de JT = 1,42J kg-m2 .
6.7 Control de Posición de un Servomotor 323

Rpta. a escalones variantes para 1.84J


70

60
− −:y

− :w
50
Posición (grados)

40

30

20

10

0
0 10 20 30 40 50 60 70 80 90 100
t(seg)

Figura 6.16: Salida controlada y (curva en trazos) para una carga inercial
de JT = 1,84J kg-m2 .

Rpta. a escalones variantes para 2.98J


70

60
− −:y

− :w
50
u(t):voltios

40

30

20

10

0
0 10 20 30 40 50 60 70 80 90 100
t(seg)

Figura 6.17: Salida controlada y (curva en trazos) para una carga inercial
de JT = 2,98J kg-m2 .
324 Control Predictivo

6.8. Problemas Resueltos


En la sección problemas resueltos de los capı́tulos 4 al 8, la solución a los
problemas se encuentra, según el caso, en uno o más archivos con extensión
m escritos en código MATLAB. La selección del tiempo de muestreo para
cada problema es a conveniencia del diseño.

Problema 6.1

El problema 3.2 presenta las ecuaciones que gobiernan la dinámica longitudi-


nal de un avión comercial volando a velocidad de crucero (altura y velocidad
constantes). El control del ángulo de inclinación θ del avión (ver figura 3.14)
es un problema longitudinal a resolver. El objetivo de control es entonces
diseñar un autopiloto que manipulando el ángulo δe del deflector de ele-
vación, controle el ángulo de inclinación del avión. Diseñar un sistema de
control predictivo que genere una fuerza de control escalar, de modo que
la salida del proceso (el ángulo de inclinación θ) presente un sobreimpulso
menor al 5 %, un tiempo de estabilización menor que 10 s y error en estado
estable nulo. Asumir 1 rad de entrada de referencia.
Solución: Ver el programa p4pred1.m.
% p4pred1.m SOLUCION DEL PROBLEMA 6.1: CONTROL DE LA INCLINACION
% DE UN AVION USANDO CONTROL PREDICTIVO CON CONTROL ESCALAR
clear all
% FUNCION DE TRANSFERENCIA DE LA PLANTA EN TIEMPO CONTINUO
numc=[0 1.151 0.1774];
denc=[1 0.739 0.921 0];
A=[-0.313 56.7 0; -0.0139 -0.426 0; 0 56.7 0];
B=[0.232; 0.0203; 0]; C=[0 0 1]; D=[0];
% FUNCION DE TRANSFERENCIA DE LA PLANTA EN TIEMPO DISCRETO
tm=1.25; % TIEMPO DE MUESTREO
[numd,dend]=c2dm(numc,denc,tm,’zoh’);
[G,H]=c2d(A,B,tm);
a1=dend(2); a2=dend(3); a3=dend(4);
b1=numd(2); b2=numd(3); b3=numd(4);
% HORIZONTES DE CONTROL
N1 =1; N2 =10; Nu =1;
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
g(3) = - a1*g(2) - a2*g(1) + b1 +b2+b3;
for k=4:N2
g(k) = -a1*g(k-1) -a2*g(k-2) -a3*g(k-2) + b1 + b2 + b3;
6.8 Problemas Resueltos 325

end
% CONDICIONES INICIALES
for k=1:4
yf(k)=0; y(k)=0; r(k)=0; u(k)=0;
end
alf = 0.1; lambda=0; MM = 500;
% LAZO DE CONTROL
for t=4:MM+3;
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k) = sign(sin(0.02*t));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k)= -a1*yf(t+k-1)-a2*yf(t+k-2)-a3*yf(t+k-3)+(b1+b2+b3)*u(t-1);
end
% LEY DE CONTROL
du(t) = (g(1)*(r(t+1) - yf(t+1)) + g(6)*(r(t+6) - yf(t+6)) + ...
g(2)*(r(t+2) - yf(t+2)) + g(7)*(r(t+7) - yf(t+7)) + ...
g(3)*(r(t+3) - yf(t+3)) + g(8)*(r(t+8) - yf(t+8)) + ...
g(4)*(r(t+4) - yf(t+4)) + g(9)*(r(t+9) - yf(t+9)) + ...
g(5)*(r(t+5) - yf(t+5)) + g(10)*(r(t+10) - yf(t+10)) )/...
(g(1)^2 + g(2)^2 + g(3)^2 + g(4)^2 + g(5)^2 + g(6)^2 + ...
g(7)^2 + g(8)^2 + g(9)^2 + g(10)^2 + lambda);
u(t) = u(t-1) + du(t);
% MODELO DEL PROCESO EN SU FORMA CARIMA
y(t+1)=-a1*y(t)-a2*y(t-1)-a3*y(t-2) ...
+b1*u(t)+b2*u(t-1)+b3*u(t-2);
end % FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex=linspace(0,MM*tm,MM-3);
subplot(2,1,1)
plot(ejex,W(4:MM),ejex,y(4:MM)); grid
ylabel(’y: Inclinacion (rad) ’)
subplot(2,1,2)
plot(ejex,u(4:MM)); grid
xlabel(’TIEMPO : SEG’)
ylabel(’u: Angulo del deflector (rad)’)
print -deps -f p4pred1

Problema 6.2

Para el proceso del problema 6.2, diseñar un sistema de control predictivo


que genere una matriz dinámica de control, de modo tal que el ángulo de
inclinación del avión siga una trayectoria arbitraria, pero predeterminada.
326 Control Predictivo

y: Inclinación (rad) 1

−1

−2
0 100 200 300 400 500 600 700

2
u: Angulo del deflector (rad)

−1

−2
0 100 200 300 400 500 600 700
TIEMPO : SEG

Figura 6.18: Ángulo de inclinación θ y señal de control (ángulo del deflector)


correspondientes al problema 6.1.

Solución: Ver el programa p4pred2.m.

% p4pred2.m SOLUCION DEL PROBLEMA 6.2: CONTROL DE LA INCLINACION


% DE UN AVION USANDO CONTROL PREDICTIVO CON CONTROL MATRICIAL
clear all
% FUNCION DE TRANSFERENCIA CONTINUA DE LA PLANTA
numc=[0 1.151 0.1774];
denc=[1 0.739 0.921 0];
A=[-0.313 56.7 0; -0.0139 -0.426 0; 0 56.7 0];
B=[0.232; 0.0203; 0]; C=[0 0 1]; D=[0];
% FUNCION DE TRANSFERENCIA DISCRETA DE LA PLANTA
tm=2.2; % TIEMPO DE MUESTREO
[numd,dend]=c2dm(numc,denc,tm,’zoh’);
[G,H]=c2d(A,B,tm);
a1=dend(2); a2=dend(3); a3=dend(4);
b1=numd(2); b2=numd(3); b3=numd(4);
% HORIZONTES DE CONTROL
N1 =1; N2 =10; Nu =5;
6.8 Problemas Resueltos 327

% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
g(3) = - a1*g(2) - a2*g(1) + b1 +b2+b3;
for k=4:N2
g(k) = -a1*g(k-1) -a2*g(k-2) -a3*g(k-2) + b1 + b2 + b3;
end
% MATRIZ GANANCIA DE RESPUESTA AL ESCALON
GG=[g(1) 0 0 0 0
g(2) g(1) 0 0 0
g(3) g(2) g(1) 0 0
g(4) g(3) g(2) g(1) 0
g(5) g(4) g(3) g(2) g(1)
g(6) g(5) g(4) g(3) g(2)
g(7) g(6) g(5) g(4) g(3)
g(8) g(7) g(6) g(5) g(4)
g(9) g(8) g(7) g(6) g(5)
g(10) g(9) g(8) g(7) g(6)];
% CONDICIONES INICIALES
for k=1:4
yf(k)=0; y(k)=0; r(k)=0; u(k)=0;
end
alf = 0.1; lambda = 0.98; MM = 500; du(1)=0;
I=eye(5,5); % MATRIZ IDENTIDAD
% LAZO DE CONTROL
for t =4:MM+3
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k)= sin(0.05*t)+0.005*t;
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k)= -a1*yf(t+k-1)-a2*yf(t+k-2)-a3*yf(t+k-3)+(b1+b2+b3)*u(t-1);
end
% MATRIZ R DE SE~NALES r
R=[r(t+1) r(t+2) r(t+3) r(t+4) r(t+5) r(t+6)...
r(t+7) r(t+8) r(t+9) r(t+10)]’;
% MATRIZ DE RESPUESTA LIBRE YF
YF=[yf(t+1) yf(t+2) yf(t+3) yf(t+4) yf(t+5) yf(t+6)...
yf(t+7) yf(t+8) yf(t+9) yf(t+10)]’;
% LEY DE CONTROL
U=inv(GG’*GG+lambda*I)*GG’*(R-YF);
du=U(1);
u(t) = u(t-1) + du;
% PROCESO
y(t+1)=-a1*y(t)-a2*y(t-1)-a3*y(t-2) ...
328 Control Predictivo

+b1*u(t)+b2*u(t-1)+b3*u(t-2);
end % FIN DEL BUCLE DE CONTROL
% GRAFICOS
ejex=(4:MM); ejex=ejex*tm;
subplot(2,1,1)
plot(ejex,W(4:MM),ejex,y(4:MM)), grid
ylabel(’y: Inclinacion (rad) ’)
subplot(2,1,2)
plot(ejex,u(4:MM)), grid
xlabel(’TIEMPO : SEG’)
ylabel(’u: Angulo del deflector (rad)’)
print -deps -f p4pred2

3
y: Inclinación (rad)

−1
0 200 400 600 800 1000 1200

0.3
u: Angulo del deflector (rad)

0.2

0.1

−0.1

−0.2
0 200 400 600 800 1000 1200
TIEMPO : SEG

Figura 6.19: Ángulo de inclinación θ y señal de control (ángulo del deflector)


correspondientes al problema 6.2.

Problema 6.3

La figura 3.20 muestra el proceso monorriel de dos carros descrito en el


problema 3.5. El problema a resolver es el control de velocidad del carro de
6.8 Problemas Resueltos 329

máquinas mediante un sistema de control predictivo con fuerza de control


escalar. Para garantizar a los pasajeros un viaje confortable, los cambios de
velocidad deben realizarse con un tiempo de estabilización menor que 10 s y
con mı́nimo sobreimpulso. El error en estado estable debe ser nulo. Simule
una señal de referencia que cambie la velocidad de 30 a 20 m/s y demuestre
que se cumplen las especificaciones de diseño. Luego enfrente el problema
de seguimiento. Mostrar que la velocidad de la máquina puede seguir una
determinada trayectoria predeterminada de velocidades.
Solución: Ver el programa p7pred1a.m. El programa p7pred1b.m trata el
caso de referencia arbitraria. Revise ese programa si desea ver detalles al
respecto.

% p7pred1a.m SOLUCION DEL PROBLEMA 6_3: CONTROL DE VELOCIDAD


% DEL MONORRIEL DE DOS CARROS USANDO CONTROL PREDICTIVO
% CON FUERZA DE CONTROL ESCALAR Y REFERENCIA ESCALON.

% PARA REFERENCIA ARBITRARIA VER PROGRAMA p7pred1b.m


clear all

% DATOS DEL PROCESO


M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;
B12=500; B23=500; B1=5000; B2=10000; B3=10000;
% MODELO DEL PROCESO
A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B=[0 1 0 0 0 0]’;
alfa = 1; % CONSTANTE TACOMETRICA
C=[ 0 alfa 0 0 0 0
0 0 0 alfa 0 0
0 0 0 0 0 alfa];
D=[0;0;0];
[numc,denc]=ss2tf(A,B,C,D);
% MODELO DEL PROCESO EN TIEMPO DISCRETO
tm=0.3; % TIEMPO DE MUESTREO
[G,H]=c2d(A,B,tm);
[numd,dend]=ss2tf(G,H,C,D,1);
a1=dend(2); a2=dend(3); a3=dend(4); a4=dend(5);
a5=dend(6); a6=dend(7);
330 Control Predictivo

b1=numd(2); b2=numd(3); b3=numd(4); b4=numd(5);


b5=numd(6); b6=numd(7);

% HORIZONTES
N1 =1; N2 =10; Nu =1;
% RESPUESTA AL ESCALON
g(1)=b1; g(2)=-a1*b1+b1+b2;
g(3)=-a1*g(2)-a2*g(1)+b1+b2+b3;
g(4)=-a1*g(3)-a2*g(2)-a3*g(1)+b1+b2+b3+b4;
g(5)=-a1*g(4)-a2*g(3)-a3*g(2)-a4*g(1)+b1+b2+b3+b4+b5;
g(6)=-a1*g(5)-a2*g(4)-a3*g(3)-a4*g(2)-a5*g(1)+b1+b2+b3+b4+b5+b6;
for k=7:N2
g(k)=-a1*g(k-1)-a2*g(k-2)-a3*g(k-1)-a4*g(k-1)-a5*g(k-2)...
-a6*g(k-1) + b1 + b2 + b3 + b4 + b5 + b6;
end
% CONDICIONES INICIALES
for k=1:7
yf(k)=0; y(k)=0; r(k)=0; u(k)=0;
end
alf =0.1; lambda = 0; MM=500;

% LAZO DE CONTROL
for t=7:MM+6;
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k)= 25 + 5*sign(sin(0.01*t));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k) = -a1*yf(t+k-1)-a2*yf(t+k-2)-a3*yf(t+k-3)...
-a4*yf(t+k-4)-a5*yf(t+k-5)-a6*yf(t+k-6)+(b1+b2+b3+b4+b5+b6)*u(t-1);
end
% LEY DE CONTROL
du(t)=(g(1)*(r(t+1)-yf(t+1))+g(6)*(r(t+6)-yf(t+6))+...
g(2)*(r(t+2)-yf(t+2))+g(7)*(r(t+7)-yf(t+7))+ ...
g(3)*(r(t+3)-yf(t+3))+g(8)*(r(t+8)-yf(t+8))+ ...
g(4)*(r(t+4)-yf(t+4))+g(9)*(r(t+9)-yf(t+9))+ ...
g(5)*(r(t+5)-yf(t+5))+g(10)*(r(t+10)-yf(t+10)))/...
(g(1)^2 + g(2)^2 + g(3)^2 + g(4)^2 + g(5)^2 + g(6)^2 + ...
g(7)^2 + g(8)^2 + g(9)^2 + g(10)^2 + lambda);
u(t) = u(t-1) + du(t);
% PROCESO
y(t+1)= -a1*y(t) -a2*y(t-1) -a3*y(t-2) -a4*y(t-3)...
-a5*y(t-4) -a6*y(t-5)...
+b1*u(t) +b2*u(t-1) +b3*u(t-2) +b4*u(t-3)...
6.8 Problemas Resueltos 331

+b5*u(t-4)+b6*u(t-5);
end
% GRAFICOS
ejex=linspace(0,MM*tm,MM-6);
subplot(2,1,1)
plot(ejex,W(7:MM),ejex,y(7:MM)); grid
ylabel(’Y1: Velocidad (m/s)’)
subplot(2,1,2)
plot(ejex,u(7:MM)); grid
xlabel(’Tiempo (segundos)’)
ylabel(’Control u (volt)’)
print -deps -f p7pred1a

40
Y1: Velocidad (m/s)

30

20

10

0
0 50 100 150

150
Control u (volt)

100

50

−50
0 50 100 150
Tiempo (segundos)

Figura 6.20: Velocidad del carro de máquinas y la fuerza de control para el


problema 6.3.

Problema 6.4

Resuelva nuevamente el problema 6.3, pero esta vez usando un sistema de


control predictivo con fuerza de control matricial.
Solución: El programa p7pred2a.m resuelve el problema planteado y su
resultado se muestra en la figura 6.22. El programa p7pred2b.m trata el
caso de referencia arbitraria y su resultado se ilustra en la figura 6.23.
332 Control Predictivo

20

Velocidad (m/s)
15

10

0
0 50 100 150 200 250 300

60
Control u (volt)

40

20

−20
0 50 100 150 200 250 300
Tiempo (Segundos)

Figura 6.21: Velocidad del carro de máquinas y la fuerza de control para el


problema 6.3. La referencia es arbitraria.

Problema 6.5
La figura 3.22 muestra el proceso ascensor que fue tratado en el problema
3.6. El problema a resolver es posicionar suavemente el ascensor en un piso
determinado, lo que significa sobreimpulso nulo (para que no se pase de piso)
y tiempo de estabilización menor que 10 s. Para no saturar al actuador (un
amplificador de potencia), la señal de control debe estar dentro del rango
de ± 200 volt. Diseñar un sistema de control de posición predictivo con
fuerza de control escalar que cumpla las especificaciones pedidas. Con el
objeto de cumplir tales especificaciones, también se puede usar restricción
a la salida; es decir, para cada tiempo de muestreo, hacer que la posición
controlada iguale la señal de referencia. Es interesante anotar, que dicha
restricción origina en la simulación una respuesta que sigue perfectamente
a la referencia. Lógicamente, los resultados de la implementación en tiempo
real con tal restricción, no son tan perfectos como lo son en la simulación,
tal como sucede en el caso del control predictivo del servomotor con carga
no lineal (subsección 6.7.8).
% p8pred1.m SOLUCION DEL PROBLEMA 6_5: CONTROL DE POSICION
% DE UN ASCENSOR USANDO CONTROL PREDICTIVO CON FUERZA
% DE CONTROL ESCALAR Y CON RESTRICCION EN LA SALIDA
clear all
6.8 Problemas Resueltos 333

40

Y1: Velocidad (m/s)


30

20

10

0
0 50 100 150

100

50
u: control

−50
0 50 100 150
Tiempo (segundos)

Figura 6.22: Velocidad del carro de máquinas y la fuerza de control para el


problema 6.4.

% ECUACION DE ESTADO
A=[-0.2 0 0 0
1 0 0 0
2 0 -2 0
5 0 0 -5];
B=[0.001;0;0;0]; C=[0 1 0 0]; D=[0];
% PROCESO EN TIEMPO DISCRETO
tm=1;
[G,H]=c2d(A,B,tm);
[numd,dend]=ss2tf(G,H,C,D);
a1=dend(2); a2=dend(3); a3=dend(4); a4=dend(5);
b1=numd(2); b2=numd(3); b3=numd(4); b4=numd(5);
% HORIZONTES DE CONTROL
N1 =1; N2 =10; Nu =1;
% RESPUESTA AL ESCALON
g(1) = b1; g(2) = -a1*b1 + b1 + b2;
g(3) = - a1*g(2) - a2*g(1) + b1 +b2+b3;
g(4) = - a1*g(3) - a2*g(2)-a3*g(1) + b1+b2+b3+b4;
for k=5:N2
g(k) = -a1*g(k-1)-a2*g(k-2)-a3*g(k-3)-a4*g(k-4)+b1+b2+b3+b4;
end
334 Control Predictivo

20

Velocidad v1 (m/s)
15

10

0
0 100 200 300 400 500 600 700 800 900 1000

15
u: Fuerza de control

10

−5
0 100 200 300 400 500 600 700 800 900 1000
Tiempo (Segundos)

Figura 6.23: Velocidad del carro de máquinas y la fuerza de control para el


problema 6.4. La referencia es arbitraria.

% CONDICIONES INICIALES
for k=1:5
yf(k)=0; y(k)=0; r(k)=0; u(k)=0;
end
alf =0.1; lambda = 0.00;
MM=300;
% LAZO DE CONTROL
for t =5:MM+4;
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k)=-3*sign(sin(0.02*t));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k)= -a1*yf(t+k-1)-a2*yf(t+k-2)-a3*yf(t+k-3)-a4*yf(t+k-4)...
+ (b1 + b2 + b3 + b4)*u(t-1);
end
% RESTRICCION A LA SALIDA
y(t) = W(t);
% LEY DE CONTROL
du(t)=(g(1)*(r(t+1)-yf(t+1))+g(6)*(r(t+6)-yf(t+6))+ ...
g(2)*(r(t+2) - yf(t+2)) + g(7)*(r(t+7) - yf(t+7)) + ...
g(3)*(r(t+3) - yf(t+3)) + g(8)*(r(t+8) - yf(t+8)) + ...
6.8 Problemas Resueltos 335

g(4)*(r(t+4) - yf(t+4)) + g(9)*(r(t+9) - yf(t+9)) + ...


g(5)*(r(t+5) - yf(t+5)) +g(10)*(r(t+10)- yf(t+10)))/...
(g(1)^2 + g(2)^2 + g(3)^2 + g(4)^2 + g(5)^2 + g(6)^2 + ...
g(7)^2 + g(8)^2 + g(9)^2 + g(10)^2 + lambda);
u(t) = u(t-1) + du(t);
% EVITANDO LA SATURACION DEL AMPLIFICADOR
if(u(t) > 200)
u(t) = 200;
elseif(u(t) < -200)
u(t) = 200;
end
% PROCESO
y(t+1)=-a1*y(t)-a2*y(t-1)-a3*y(t-2)-a4*y(t-3)...
+b1*u(t)+b2*u(t-1)+b3*u(t-2)+b4*u(t-3);
end % FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex=linspace(0,MM*tm,MM-4);
subplot(2,1,1)
plot(ejex,W(5:MM),ejex,y(5:MM)); grid
ylabel(’POSICION (m)’)
xlabel(’TIEMPO EN SEGUNDOS’)
subplot(2,1,2)
plot(ejex,u(5:MM)); grid
xlabel(’TIEMPO EN SEGUNDOS’)
ylabel(’VOLTAJE DE CONTROL’)
print -deps -f p8pred1

Problema 6.6

Resuelva nuevamente el problema 6.5, pero esta vez usando un sistema de


control predictivo con fuerza de control matricial.
Solución: El programa p8pred2a.m resuelve el problema planteado y su
resultado se muestra en la figura 6.25.

Problema 6.7

La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sec-


ción horizontal A=9 m2 de cada tanque es constante. El objetivo de control
es controlar la altura H2 empleando el flujo Qo . La deducción del modelo
linealizado del proceso se derivó en el ejemplo 2.1. Diseñar un controlador
predictivo del tipo escalar con los requerimientos siguientes: tiempo de es-
tabilización menor que 15 s, sobreimpulso menor al 10 % y error en estado
336 Control Predictivo

POSICION (m)
2

−2

−4
0 50 100 150 200 250 300
TIEMPO EN SEGUNDOS

200
VOLTAJE DE CONTROL

100

−100

−200
0 50 100 150 200 250 300
TIEMPO EN SEGUNDOS

Figura 6.24: Posición del ascensor y la fuerza de control (problema 6.5).


4
POSICION (m)

−2

−4
0 100 200 300 400 500 600

200
VOLTAJE DE CONTROL

100

−100
0 100 200 300 400 500 600
TIEMPO EN SEGUNDOS

Figura 6.25: Posición del ascensor y la fuerza de control correspondientes al


problema 6.6.
6.8 Problemas Resueltos 337

estable nulo. Estas condiciones de diseño deben mantenerse cuando se cam-


bie la referencia (por ejemplo de 3 a 2 m). Además, el flujo de entrada (la
señal de control) no debe sobrepasar los 3 m3 /s.
% p9pred1.m SOLUCION DEL PROBLEMA 6.7 CONTROL DE NIVEL
% USANDO CONTROL PREDICTIVO CON CONTROL du ESCALAR
clear all
% PARAMETROS DEL SISTEMA
A = 9; gamma = 0.4; rho = 1.23; g = 9.81; Q = 3;
H =Q^2/(gamma^2*rho*g);
Z=(gamma*sqrt(rho*g))/(2*A*sqrt(H));
% ESPACIO DE ESTADO DE LA PLANTA EN TIEMPO CONTINUO
Ac = [-Z 0;Z -Z]; Bc=[1 ; 0];
Cc=[0 1]; Dc=[0];
T = 0.9; % TIEMPO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[numd,dend]=ss2tf(G,H,C,D);
a1 = dend(2); a2 = dend(3);
b1 = numd(2); b2 = numd(3);
% RESPUESTA AL ESCALON
g1 = b1;
g2 = -a1* b1 + b1 + b2;
g3 = -a1*g2-a2*g1+b1+b2; g4 = -a1*g3-a2*g2+b1+b2;
g5 = -a1*g4-a2*g3+b1+b2; g6 = -a1*g5-a2*g4+b1+b2;
g7 = -a1*g6-a2*g5+b1+b2; g8 = -a1*g7-a2*g6+b1+b2;
g9 = -a1*g8-a2*g7+b1+b2; g10 = -a1*g9-a2*g8+b1+b2;
% HORIZONTES DE CONTROL
N1 = 1; N2 =10; Nu =1; % control escalar
% CONDICIONES INICIALES
for k=1:3
yf(k)=0; y(k)=0; r(k)=0; u(k)=0;
end
alf = 0.1; lambda = 0; MM = 500;
% LAZO DE CONTROL
for t =3:MM+2
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k) = 1.5 + 0.5*sign(sin(0.02*t));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k) = -a1*yf(t+k-1) - a2*yf(t+k-2) + (b1 + b2)*u(t-1);
end
% LEY DE CONTROL
du(t)=(g1*(r(t+1)-yf(t+1))+g6*(r(t+6)-yf(t+6))+ ...
338 Control Predictivo

g2*(r(t+2) -yf(t+2)) + g7*(r(t+7) - yf(t+7)) + ...


g3*(r(t+3) -yf(t+3)) + g8*(r(t+8) - yf(t+8)) + ...
g4*(r(t+4) -yf(t+4)) + g9*(r(t+9) - yf(t+9)) + ...
g5*(r(t+5) -yf(t+5)) + g10*(r(t+10)-yf(t+10)))/...
(g1^2 +g2^2 + g3^2 + g4^2 + g5^2 + g6^2 + ...
g7^2 + g8^2 + g9^2 + g10^2 + lambda);
u(t) = u(t-1) + du(t);
% PROCESO LINEALIZADO (ECUACION RESIDUAL)
y(t+1)=-a1*y(t)-a2*y(t-1)+b1*du(t)+b2*du(t-1);
% SALIDA ACTUAL (NIVEL H2)
Y(t+1) = y(t+1)+W(t+1);
% LIMITANDO EL FLUJO DE CONTROL
fu = 3.0;
if(u(t) > 0 & u(t) > fu)
u(t) = fu;
elseif(u(t) < 0 & u(t) < -fu)
u(t) = -fu;
end
end % FIN DEL LAZO DE CONTROL **************
% GRAFICOS
ejex = linspace(0,MM*T,MM-2);
subplot(2,1,1)
plot(ejex,W(3:MM),ejex,Y(3:MM)); grid
ylabel(’NIvel H2 (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(3:MM)); grid
ylabel(’Flujo de control (m^3/s)’)
xlabel(’Tiempo en segundos’)
print -deps -f p9pred1

Problema 6.8

Resuelva nuevamente el problema 6.7, pero esta vez usando un sistema de


control predictivo con fuerza de control matricial.

Solución: El programa p9pred2.m resuelve el problema planteado y su re-


sultado se muestra en la figura 6.27.

Problema 6.9
El proceso electromecánico mostrado en la figura 3.26 se describe en el pro-
blema 3.8. Se pide diseñar un sistema de control predictivo con fuerza de
6.8 Problemas Resueltos 339

2.5

NIvel H2 (m)
1.5

0.5

0
0 50 100 150 200 250 300 350 400 450
Tiempo en segundos

3
Flujo de control (m^3/s)

−1

−2
0 50 100 150 200 250 300 350 400 450
Tiempo en segundos

Figura 6.26: Nivel controlado H2 y el flujo de control para el problema 6.7.

2.5

2
NIvel H2 (m)

1.5

0.5

0
0 50 100 150 200 250 300 350 400 450
Tiempo en segundos

2
Flujo de control (m^3/s)

−1
0 50 100 150 200 250 300 350 400 450
Tiempo en segundos

Figura 6.27: Nivel controlado H2 y el flujo de control para el problema 6.8.


340 Control Predictivo

control escalar, para controlar la velocidad angular del eje del motor me-
diante el voltaje de entrada que puede variar entre ± 100 volt. El tiempo de
estabilización de la señal controlada (la velocidad) debe ser menor que 6 s
y dicha respuesta debe presentar un sobrepico máximo de 5 %, con error en
estado estable nulo.
% p11pred1.m SOLUCION DEL PROBLEMA 6_9
% CONTROL DE VELOCIDAD DEL SISTEMA ELECTROMECANICO
% USANDO CONTROL PREDICTIVO CON CONTROL du ESCALAR
clear all
% PARAMETROS DEL SISTEMA
J = 0.01; Ke = 0.01; Kt = 0.01;
R = 12; C = 0.5; L = 0.5; Kw = 1.8;
% MODELO DEL PROCESO EN TIEMPO CONTINUO
Ac = [-1/(R*C) -1/C 0
Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke)
0 Kt/J 0];
Bc = [1/(R*C);0;0];
Cc = [0 0 1]; Dc = [0];
T = 0.1; % TIEMPO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[numd,dend]=ss2tf(G,H,C,D);
a1 = dend(2); a2 = dend(3); a3=dend(4);
b1 = numd(2); b2 = numd(3); b3=numd(4);
% RESPUESTA AL ESCALON
g1 = b1; g2 =-a1*b1+b1+b2;
g3=-a1*g2-a2*g1+b1+b2+b3;
g4 =-a1*g3- a2*g2-a3*g1+b1+b2+b3;
g5=-a1*g4-a2*g3-a3*g2+b1+b2+b3;
g6 =-a1*g5-a2*g4-a3*g3+b1+b2+b3;
g7=-a1*g6-a2*g5-a3*g4+b1+b2+b3;
g8 =-a1*g7-a2*g6-a3*g5+b1+b2+b3;
g9=-a1*g8-a2*g7-a3*g6+b1+b2+b3;
g10=-a1*g9-a2*g8-a3*g7+b1+b2+b3;
% HORIZONTES DE CONTROL
N1 = 1; N2 = 10; Nu = 1;
% CONDICIONES INICIALES
for k = 1:4
yf(k) = 0; y(k) = 0; r(k) = 0; u(k) = 0;
end
du(1) = 0;
alf = 0.85; lambda = 0;
% LAZO DE CONTROL
6.8 Problemas Resueltos 341

MM=1000;
for t =4:MM+3
% TRAYECTORIA DESEADA, REFERENCIA r Y RESPUESTA LIBRE yf
for k=1:N2
W(t+k)= 4*sign(sin(0.01*t));
r(t+k) = alf*r(t+k-1) + (1-alf)*W(t+k);
yf(t+k)= -a1*yf(t+k-1)-a2*yf(t+k-2)-a3*yf(t+k-3)+(b1+b2+b3)*u(t-1);
end
% LEY DE CONTROL
du(t) = ( g1*(r(t+1) - yf(t+1)) + g6*(r(t+6) - yf(t+6)) + ...
g2*(r(t+2) - yf(t+2)) + g7*(r(t+7) - yf(t+7)) + ...
g3*(r(t+3) - yf(t+3)) + g8*(r(t+8) - yf(t+8)) + ...
g4*(r(t+4) - yf(t+4)) + g9*(r(t+9) - yf(t+9)) + ...
g5*(r(t+5) - yf(t+5)) + g10*(r(t+10) - yf(t+10)) )/...
(g1^2 + g2^2 + g3^2 + g4^2 + g5^2 + g6^2 + ...
g7^2 + g8^2 + g9^2 + g10^2 + lambda);
u(t) = u(t-1) + du(t);
if(u(t) > 100)
u(t)=100;
elseif(u(t) < -100)
u(t) = - 100;
end
% PROCESO
y(t+1) = -a1*y(t)-a2*y(t-1)-a3*y(t-2)+b1*u(t)+b2*u(t-1)+b3*u(t-2);
end % FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex=linspace(0,MM*T,MM-3);
subplot(2,1,1)
plot(ejex,W(4:MM),ejex,y(4:MM)); grid
ylabel(’Velocidad (rad/s)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(4:MM)); grid
xlabel(’Tiempo en segundos’)
ylabel(’Voltaje de control’)
print -deps -f p11pred1

Problema 6.10

Resuelva nuevamente el problema 6.9, pero esta vez usando un sistema de


control predictivo con fuerza de control matricial. La trayectoria deseada
debe ser una curva arbitraria (problema de seguimiento).
342 Control Predictivo

Velocidad (rad/s)
0

−5
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

100
Voltaje de control

50

−50

−100
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 6.28: Velocidad angular controlada y el voltaje de control para el


problema 6.9.

Solución: El programa p11pred2.m resuelve el problema planteado y su


resultado se muestra en la figura 6.29.

6.9. Problemas Propuestos


Problema 6.11

En el proceso de la figura 3.24(a) (ver problema 3.7) se desea reducir la


humedad h del material a granel de la tolva. La banda transportadora, que
se desplaza a una velocidad v = 1 m/s constante, introduce el material a un
horno de secado. El sensor de humedad detecta hr a una distancia d = 10 m
del horno y proporciona la señal de voltaje vr . El horno puede modelarse
como un proceso de primer orden. La figura 3.24(b) muestra la F.T del pro-
ceso. Diseñar dos sistemas de control predictivo basado en modelos, uno con
fuerza de control escalar y otro con fuerza de control matricial (la selección
de los valores de los horizontes es a conveniencia del problema planteado).
El objetivo de control es estabilizar la humedad del material en la banda
transportadora. Con fines de modelado del proceso, el tiempo muerto puede
ser descrito empleando la aproximación de Padé de tercer orden (ver ejemplo
6.9 Problemas Propuestos 343

15

Velocidad (rad/s)
10

−5
0 20 40 60 80 100 120 140 160 180 200
Tiempo en segundos

2
Voltaje de control

−1

−2
0 20 40 60 80 100 120 140 160 180 200
Tiempo en segundos

Figura 6.29: Velocidad angular controlada y el voltaje de control para el


problema 6.10.

2.12):
num(s) 1 − Tt s/2 + (Tt s)2 /10 − (Tt s)3 /120
e−T s ≈ =
den(s) 1 + Tt s/2 + (Tt s)2 /10 + (Tt s)3 /120
Las especificaciones de diseño para ambos sistemas de control son: tiempo de
estabilización menor que 40 s, error en estado estacionario nulo y porcentaje
de sobreimpulso menor al 5 %. La selección del tiempo de muestreo y de los
horizontes de control es a conveniencia del diseño.

Problema 6.12

Las ecuaciones del modelo linealizado para controlar la posición del cañón
montado en la torreta de un tanque (ver figura 3.28) empleando un actuador
hidráulico se detallan en el problema 3.9.

(a) Diseñar un sistema de control predictivo basado en modelos para con-


trolar el ángulo de elevación θ con las especificaciones siguientes: tiem-
po de estabilización menor que 5 s, mı́nimo sobreimpulso y error en
estado estacionario nulo, empleando fuerza de control escalar. Los dis-
turbios tipo escalón pueden actuar simultáneamente y pueden ser pos-
344 Control Predictivo

itivos o negativos. El sistema de control diseñado debe ser capaz de


minimizar sus efectos.

(b) Lo mismo que (a) pero empleando fuerza de control matricial. La se-
lección de los horizontes de control es a conveniencia del problema
planteado.

(c) Lo mismo que (a), pero en este caso para controlar el ángulo azimutal.

(d) Lo mismo que (c), pero empleando fuerza de control matricial. En


todos los casos la selección del tiempo de muestreo y los horizontes de
control es a conveniencia del diseño.

Problema 6.13

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito


en la sección 3.3, en donde la carga no lineal posee ahora dos grados de
libertad con Lo = 2L1 /3 y Mo =0.02 kg. La unión de la carga con el eje
del servomotor no es flexible. Las ecuaciones que describen la dinámica del
sistema son materia del problema 3.12.
(a) Diseñar un sistema de control predictivo basado en modelos para con-
trolar simultáneamente las posiciones θ y τ con mı́nimo tiempo de
estabilización y mı́nimo sobreimpulso, empleando una fuerza de con-
trol escalar.

(b) Lo mismo que (a) pero empleando una fuerza de control matricial. La
selección de los horizontes de control y del tiempo de muestreo es a
conveniencia del problema planteado.

Problema 6.14

La figura 3.32 muestra el proceso péndulo doble no lineal, el cual es una


extensión del péndulo simple descrito en la sección 3.1. El acoplamiento
entre los dos péndulos de igual longitud no es flexible. Las ecuaciones que
describen la dinámica del sistema son materia del problema propuesto 3.13.
(a) Diseñar un sistema de control predictivo basado en modelos para con-
trolar simultáneamente las posiciones θ y τ con mı́nimo tiempo de
estabilización y mı́nimo sobreimpulso, empleando para ello una fuerza
de control escalar, de modo tal que el péndulo doble permanezca en
posición vertical. Considerar que la carga esférica es de 0.02 kg.
6.9 Problemas Propuestos 345

(b) Lo mismo que (a) pero empleando una fuerza de control matricial.
La selección de los horizontes de control y del tiempo de muestreo es
a conveniencia del problema planteado.

Problema 6.15

La figura 3.33 muestra el proceso doble grúa puente no lineal, el cual es una
extensión del proceso grúa puente escrito en la sección 3.2. El acoplamiento
entre las dos secciones iguales de la varilla no es flexible. Las ecuaciones que
describen la dinámica del sistema son materia del problema propuesto 3.14.
Considerar que la carga esférica es de 0.02 kg.
(a) Diseñar un sistema de control predictivo basado en modelos para con-
trolar simultáneamente las posiciones θ y τ con mı́nimo tiempo de
estabilización y mı́nimo sobreimpulso empleando para ello una fuerza
de control escalar, de modo tal que la grúa-puente doble permanezca
en posición vertical.
(b) Lo mismo que (a) pero empleando para ello una fuerza de control
matricial. La selección de los horizontes de control y del tiempo de
muestreo es a conveniencia del problema planteado.

Problema 6.16

La figura 1.1 muestra un carro de masa m = 1000 kg desplazándose con una


velocidad v gracias a la acción de la fuerza u producida por su motor. Si se
desprecia la inercia de las ruedas y se asume que la fuerza de fricción bv,
donde b= 50 N-s/m es el coeficiente de fricción, es lo único que se opone
al movimiento del carro, entonces la dinámica del proceso puede modelarse
como (ver ejemplo 1.16):
dv
mv̇(t) + bv(t) = u(t); v̇ =
dt
(a) Diseñar un sistema de control predictivo basado en modelos para con-
trolar la velocidad del móvil con mı́nimo tiempo de estabilización y
mı́nimo sobreimpulso. La señal de referencia puede ser arbitraria (pro-
blema de seguimiento) y la fuerza de control a diseñar es escalar.
(b) Lo mismo que (a), pero empleando fuerza de control matricial. La
selección los valores de los horizontes y el tiempo de muestreo son a
conveniencia del problema planteado.
346 Control Predictivo

Problema 6.17

El motor D.C. es un actuador muy popular en los sistemas de control porque


su movimiento rotatorio, mediante acoples adecuados en su eje, puede con-
vertirse fácilmente en movimiento de traslación. Eso se aprecia en fajas trans-
portadoras o en brazos manipuladores. La figura 4.3 muestra el circuito de
armadura del motor y el diagrama de cuerpo libre de su rotor. Las ecuaciones
que gobiernan el comportamiento dinámico del motor fueron derivadas en
el ejemplo 4.1.

(a) Diseñar dos sistemas de control predictivo basado en modelos. El


primero, para estabilizar la velocidad angular del eje del motor con
las especificaciones siguientes: tiempo de estabilización menor que 4 s,
error en estado estable menor al 1 % y sobreimpulso a la salida menor
al 5 %, y el segundo para estabilizar la posición del eje del motor con
las mismas especificaciones de diseño.

(b) Repetir (a) pero en este caso empleando una fuerza de control matri-
cial. La selección de los horizontes de control y del tiempo de muestreo
es a conveniencia del problema planteado.
Capı́tulo 7

Control Robusto

En este capı́tulo se desarrollan dos procedimientos para diseñar sistemas de


control robusto. El primero emplea la estructura de un sistema de control con
modelo interno y se aplica a procesos univariables que presentan comportamien-
to estable. El segundo procedimiento usa la estructura clásica de un sistema de
control realimentado, pero su controlador se diseña mediante el principio de
control con modelo interno y se aplica a procesos univariables inestables.
El sistema de control robusto debe ser capaz de minimizar asintóticamente
el error entre la salida y una trayectoria de referencia, no obstante la presencia
de disturbios y de incertidumbres en el modelado. Para tal efecto, el sistema
de control debe satisfacer los requerimientos de estabilidad y rendimiento ro-
bustos. En la antepenúltima sección de este capı́tulo se presenta la aplicación:
control de la posición de un servomotor D.C. sujeto a cargas no lineales. La
penúltima sección, problemas resueltos, está dedicada al diseño de sistemas de
control robusto para diferentes procesos. Todos los archivos correspondientes
a los ejercicios, problemas, diseños, simulaciones y software desarrollados se
pueden descargar del sitio: http://fiee.uni.edu.pe/728681F.

7.1. Estructura del Control con Modelo Interno


La figura 7.1 muestra el diagrama de bloques de un sistema de control dis-
creto convencional, donde el bloque c es el controlador, el bloque hr0 (s) es la
retención (o memoria) de orden cero, el bloque p(s) es el proceso a controlar,
el bloque γ(s) es un filtro pasa bajo, y r∗ , u, d, y e yγ son las señales de
referencia, de control (la variable manipulada), de disturbio, de salida del
proceso (la variable controlada), y de salida filtrada, respectivamente. La
348 Control Robusto

d

r u ? y
- m - c(z) - hr0 (s) - p(s) - m -

− 6
yγ∗ @ yγ
@ γ(s) 
T

Figura 7.1: Sistema de control discreto convencional.

notación empleada responde a los fundamentos tratados en el capı́tulo 2.


Por ejemplo, si la señal continua yγ (t) pasa por un muestreador con perı́odo
de muestreo T , entonces a la salida del muestreador se obtiene una secuencia
de impulsos yγ∗ que satisface la relación:


yγ∗ (t) = yγ (kT )δ(t − kT ) (7.1)
k=0

La transformada de Laplace de yγ (t) es entonces:




L[yγ∗ (t)] = yγ∗ (esT ) = yγ (kT )e−skT (7.2)
k=0

Si alternativamente representamos la señal yγ (t) por su serie de Fourier:



1
yγ∗ (t) = yγ (kT )eikωs t (7.3)
T
k=−∞

donde ωs = 2π/T es la frecuencia de muestreo, entonces:



1
L[yγ∗ (t)] = yγ∗ (esT ) = yγ (s + ikωs ) (7.4)
T
k=−∞

Notar que hemos usado la relación básica z = esT . También es útil recordar
que la transformada Z de yγ (t) se puede expresar como:

Z[yγ (kT )] = yγ (z) (7.5)


7.1 Estructura del Control con Modelo Interno 349

Una función racional y periódica posee la propiedad de que sus valores para
frecuencias mayores que π/T se pueden determinar a partir de aquellos va-
lores correspondiente al intervalo 0 ≤ w ≤ π/T . Además, si yγ (z) es
periódica, también es hermitiana; es decir:

yγ (eiωT )H = yγ (e−iωT ) = yγ (ei(ωs −ω)T )H ; π/T < w < 2π/T (7.6)

Considere ahora el diagrama de bloques mostrado en la figura 7.2 corres-


pondiente a la estructura de un sistema CMI (Control con Modelo Interno),
la que comparada con la estructura convencional, presenta grandes ventajas
que vamos a discutir más adelante. Las relaciones entre el controlador clásico
c(z) y el controlador q(z) (el controlador CMI) se obtienen de la figura 7.2B
o de su forma alternativa la figura 7.2C. Estas relaciones son:
q
c = (7.7)
1 − p̃ q
c
q = (7.8)
1 + p̃ c

donde p es el bloque proceso y p̃ es el bloque modelo del proceso. Observar


en la figura 7.2B que el controlador c tiene como entradas la referencia r∗ y
la señal medible y, y como salida la señal de control u.
La figura 7.3 muestra la estructura discreta CMI, en donde el sistema
de control incluye q(z), p̃(s) y γ(s). Observar en dicha figura que el camino
paralelo que forma el modelo del proceso es para sustraer el efecto de la
variable manipulada u de la salida del proceso y. Si asumimos que el modelo
es una representación perfecta del proceso, entonces la señal realimentada
es igual a la influencia de los disturbios y no es afectada por la acción de
la variable manipulada. En esta situación, el sistema se comporta como
uno de lazo abierto y los problemas usuales de estabilidad asociados con la
realimentación desaparecen.
Sin demostración se presenta el concepto de estabilidad interna para el
sistema CMI de la figura 7.3A.

Estabilidad Interna: Asumiendo que el modelo es perfecto, es decir que


p(s) = p̃(s), entonces el sistema CMI de la figura 7.3A es internamente es-
table sı́ y sólo si la planta p(s) y el controlador q(z) son estables.

El controlador CMI juega el rol de un controlador anticipativo y puede


ser diseñado como tal, pero con la capacidad adicional de poder cancelar
350 Control Robusto

d
r u ? y
- m - q - p - m -

− 6
?
- p̃ - m

A
c
d
r ?
- m - m - q - p - m -

− 6 6

p̃ 

B
q
d
r u ? y
- m - m - c - p - m -

6 − 6
?
p̃  - p̃ - m

Figura 7.2: Representaciones alternativas del Control con Modelo Interno.


7.1 Estructura del Control con Modelo Interno 351

la influencia de los disturbios no medibles, debido a que en la estructura


CMI, la señal de realimentación lleva consigo la influencia de los disturbios.
Cuando la señal realimentada de la estructura CMI se compara con la señal
de referencia, se genera una señal de error que el sistema de control debe
minimizar.
Si el modelo no imita perfectamente la dinámica del proceso, entonces
la señal de realimentación se ve influida, tanto por los disturbios no medi-
bles, como por el efecto de dicho error de modelado, lo que provoca una
realimentación real de dichos efectos que podrı́an conducir al sistema a pro-
bables problemas de estabilidad. Este hecho es el que fuerza al diseñador a
desintonizar el controlador anticipativo ideal con el fin de lograr “robustez”.
No interesando la técnica que se emplee, los controladores siempre se
diseñan basados en la información del comportamiento dinámico del pro-
ceso y de los disturbios que actúan sobre el mismo. La exactitud de dicha
información varı́a, pero no llega a ser perfecta. Por ello es deseable que el
controlador sea insensible a esta clase de errores de modelación (incertidum-
bres en el modelo); es decir, que el controlador sea “robusto”.
Del capı́tulo 2 sabemos que el bloque de retención (o de memoria) de
orden cero tiene la forma:

1 − e−sT 1 − z −1
hr0 (s) = = ; z = esT (7.9)
s s

Por otra parte, el bloque γ(s) representa un filtro que sirve para cortar las
componentes de alta frecuencia de las señales continuas antes del muestreo,
cuando sea necesario. Su función de transferencia debe ser estable; es decir,
las raı́ces de su ecuación caracterı́stica deben poseer parte real negativa. Las
relaciones siguientes son válidas para la estructura CMI:

r(z) = Z[r(s)] (7.10)


d(z) = Z[d(s)] (7.11)
dγ (z) = Z[γ(s)d(s)] (7.12)
y(z) = Z[y(s)] (7.13)
e(z) = Z[y(s) − r(s)] (7.14)
yγ (z) = Z[γ(s)y(s)] (7.15)
p˜γ (z) = Z[hr0 (s)p̃(s)γ(s)] (7.16)
pγ (z) = Z[hr0 (s)p(s)γ(s)] (7.17)
352 Control Robusto

d
r∗ u ? y
- m - q(z) - hr0 (s) - p(s) - m -
6
− ?
γ(s)

- p̃γ (z) - m @
@
− T

A
d
r∗ u ? y
- m - q(z) - hr0 (s) - p(s) - m -
6

?
- p̃(s) - m

@ 
@ γ(s)
T
B
d
r u ?
- m - q(z) - p(s) - m -
6 yγ

ỹγ ?
- p̃(s) - m

Figura 7.3: Estructura CMI. A: Estructura muestreada. B: Estructura equi-


valente a A pero no implementable. C: Estructura discreta.
7.2 Formulación del Problema CMI 353

p̃(z) = Z[hr0 (s)p̃(s)] (7.18)


p(z) = Z[hr0 (s)p(s)] (7.19)

Notar que la estructura de la figura 7.3B presenta una configuración equiva-


lente a la estructura mostrada en la 7.3A. La figura 7.3C ilustra el sistema
CMI completamente discreto.

7.2. Formulación del Problema CMI


Para diseñar el controlador discreto q(z) debemos tener disponibles el
modelo del proceso (que puede ser continuo o discreto), los rangos de incer-
tidumbre del modelo, los tipos de entradas y los objetivos de rendimiento.

7.2.1. El Modelo del Proceso


Los métodos de identificación más populares generan modelos de fun-
ciones de transferencia de pulso. Tales funciones son suficientes para diseñar
el sistema de control, pero no permiten el análisis del comportamiento del
sistema entre puntos de muestreo, lo que puede ser significativamente peor
que el comportamiento en los mismos puntos. Como las incertidumbres del
modelo se describen en forma natural en el tiempo continuo, resulta entonces
conveniente tener el modelo continuo del proceso que puede asumirse lineal e
invariante con el tiempo y con presencia de tiempos muertos. Es importante
en esta parte mencionar la caracterı́stica causal de los sistemas.

Sistema Causal y Estrictamente Causal: Un sistema g(z) es propio o


causal si limz→∞ g(z) es finito. Un sistema propio es estrictamente propio
si limz→∞ g(z) = 0, y es semipropio si limz→∞ g(z) > 0. Todos los sistemas
que no son propios se denominan impropios o no causales.

7.2.2. Descripción de Incertidumbres del Modelo


Hagamos que p(s) = p(jω) pertenezca a una familia de procesos II
definida por:
II = {p : |p(jω) − p̃(jω)| ≤ ¯a (ω)} (7.20)

en donde ¯a (ω) es la incertidumbre aditiva del proceso; es decir, que la


incertidumbre o error de modelación del proceso actual p(jω) se ubique en
354 Control Robusto

una región circular acotada de radio conocido ¯a (ω), o de modo equivalente:

p(jω) = p̃(jω) + a (jω) (7.21)


|a (jω)| ≤ ¯a (ω), ∀ p  II (7.22)

La cota de la incertidumbre multiplicativa m (ω) del proceso se define como:

¯m (ω) = ¯a (ω)/|p̃(jω)| (7.23)

De las figuras 7.3A o 7.3B podemos obtener con p = p̃:

y(s)−r(s) = e(s) = hr0 (s)p̃(s)q(esT )r∗ (esT )−r(s); r(s) = hr0 (s)r∗ (esT )
(7.24)
y luego:
y(s) −e(s)
= p̃(s)q(esT )  η̃r (s) = 1 − ˜r (s); ˜r (s) = (7.25)
hr0 (s)r∗ (esT ) r(s)
donde η̃r es la función de sensitividad y ˜r es la función de sensitividad
complementaria.

Ejemplo 7.1

Determinar las expresiones de p(s) y p̃(s) para el proceso servomotor D.C.


con carga no lineal variable descrito en la sección 3.3 e ilustrado en la fi-
gura 3.9. La única incertidumbre del proceso a tener en cuenta es la carga
adicional conectada a un extremo de la varilla (una esfera de radio Ro y
masa Mo ), la cual puede variar entre 0 y 0.045 kg. En base a la respuesta
al escalón, ya sea del proceso o de su modelo nominal, seleccione un tiempo
de muestreo adecuado y determine la función de transferencia de pulso p̃(z)
del modelo nominal del proceso.
Solución: El programa ejem7 1.m determina p(s) y p̃(s) para el proceso en
estudio. El resultado es el siguiente:
Kp 30,4696
p(s) = = 2
s2 + ap s + bp s + 1,2707s + 14,4007

Kn 91,4375
p̃(s) = = 2
s2 + an s + bn s + 3,8133s + 17,9220
Observando las respuestas al escalón en la figura 7.4, podemos concluir que
un tiempo de muestreo de T = 0.05 s es suficiente para poder capturar la
7.2 Formulación del Problema CMI 355

curva de transición producida por la respuesta del proceso al escalón. La


función de transferencia de pulso del modelo nominal del proceso resulta:
b1 z + b2 0,1070z + 0,1004
p̃(z) = = 2
z 2 + a1 z + a2 z − 1,7858z + 0,8264
% ejem7_1.m CALCULO DE p(s) Y DE SUS MODELOS NOMINALES pn(s) Y pn(z)
clear all
% PARAMETROS DEL PROCESO NO LINEAL
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.0352e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; % Mo = 0,0.01,0.02,0.045;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm +bL; Jeff = n^2*Jm +JL;
% PROCESO p(s) (EL SUBINDICE p SIGNIFICA PROCESO)
Mo = 0.045;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
Ap = [0 1;-N/M -(B + n^2*K*E/R)/M];
Bp = [0;n*K*Kact/(R*M)];
Cp = [1 0]; Dp = [0];
[nump,denp]=ss2tf(Ap,Bp,Cp,Dp);
% nump(s)/denp(s) = p(s) = Kp/(s^2 + ap*s + bp)
Kp = nump(3); ap = denp(2); bp = denp(3);
% MODELO NOMINAL pn(s) (EL SUBINDICE n SIGNIFICA NOMINAL)
Mo=0.0;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
An = [0 1;-N/M -(B + n^2*K*E/R)/M];
Bn = [0;n*K*Kact/(R*M)];
Cn = [1 0]; Dn = [0];
[numn,denn] = ss2tf(An,Bn,Cn,Dn);
% numn(s)/denn(s) = pn(s) = Kn/(s^2 + an*s + bn)
Kn = numn(3); an = denn(2); bn = denn(3);
% [Kp ap bp] = [30.4696 1.2707 14.4007]
% [Kn an bn] = [91.4375 3.8133 17.9220]
% MODELO NOMINAL DISCRETO pnz(z)
T = 0.05;
[numd,dend] = c2dm(numn,denn,T,’zoh’);
% numd(s)/dend(s) = pnz(z) = (b1*z + b2)/(z^2 + a1*z + a2)
a1 = dend(2); a2 = dend(3);
b1 = numd(2); b2 = numd(3);
356 Control Robusto

% [a1 b1 a2 b2] = [-1.7858 0.1070 0.8264 0.1004]


% GRAFICOS
subplot(2,1,1)
step(nump,denp)
xlabel(’Tiempo en segundos’)
ylabel(’Respuesta del proceso’)
grid
subplot(2,1,2)
step(numn,denn)
ylabel(’Respuesta del modelo’)
xlabel(’Tiempo en segundos’)
grid
print -f -deps ejem7_1

4
Respuesta del proceso

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

8
Respuesta del modelo

0
0 0.5 1 1.5 2 2.5 3
Tiempo en segundos

Figura 7.4: Respuestas a la señal escalón del proceso y de su modelo nominal.

7.3. Control Robusto para Procesos Estables


El procedimiento de diseño que se describe a continuación es el mismo
desarrollado en [9] y se puede aplicar a procesos estables de una entrada y
una salida. El sistema de control robusto ilustrado en la figura 7.3 debe ser
internamente estable. Esto se logra si la planta p(s) y el controlador q(z)
son estables, asumiendo que el modelo del proceso es perfecto (p̃(s) = p(s)).
7.3 Control Robusto para Procesos Estables 357

El procedimiento de diseño consta de dos pasos. En el primero, deno-


minado rendimiento nominal, se selecciona un controlador q̃(z) que permita
obtener respuestas satisfactorias del sistema a entradas de interés, sin tener
en consideración restricciones e incertidumbres en el modelo. En el segun-
do paso, denominado estabilidad y rendimiento robustos, se selecciona un
controlador de la forma q(z) = q̃(z)f (z), donde f (z) es un filtro pasa bajo
introducido para lograr estabilidad y rendimiento robustos.

7.3.1. Rendimiento Nominal


Sistemas del Tipo m
La propiedad asintótica de la respuesta a lazo cerrado del sistema de con-
trol robusto puede ser establecida mediante el concepto de tipo del sistema.
Un sistema del tipo m, donde m es un entero no negativo, es aquel cuya
salida sigue perfectamente las entradas r(s) y d(s) (ver figura 7.3) cuan-
do t → ∞, siempre que tal sistema posea todos sus polos en el semiplano
izquierdo del plano-s, excepto m o menos polos en s = 0. Si el sistema a
lazo cerrado es estable, las condiciones necesarias y suficientes para que el
sistema sea del tipo m, con m > 0, son:
dn
lı́m (1 − p̃(z)q(z)) = 0, 0≤n<m (7.26)
z→1 dz n

dn
lı́m (1 − γ(s)) = 0, 0≤n<m (7.27)
s→0 dsn

Diseño del Prefiltro γ(s)


El objetivo principal del prefiltro γ(s) es cortar las componentes de alta
frecuencia para evitar la superposición de frecuencias. Los ya conocidos fil-
tros de Butterworth y Bessel satisfacen la ecuación (7.27) para m = 1. Para
m > 1 se puede emplear una simple modificación. Escribamos:

γ(s) = γ1 (s)γm (s) (7.28)

con:
cm−1 sm−1 + · · · + c1 s + 1
γm (s) = (7.29)
(τ s + 1)m−1
en donde γ1 (s) es un prefiltro apropiado para m=1. Entonces, para un τ
especı́fico, podemos usar (7.27) para calcular los coeficientes c1 , . . . , cm−1 .
358 Control Robusto

Cualitativamente γm (s) adiciona algunas propiedades en ω = 0, sin afectar


significativamente el comportamiento de γ1 (s) en las frecuencias altas. Para
ello se recomienda usar un τ grande. Un filtro de segundo orden con m = 2
(entrada rampa) posee la forma:

ω02
γ1 (s) =
s2 + 2ω0 ζs + ω02

La solución de la ecuación (7.27) determina que c1 = τ +2ζ/ω0 . Para un valor


de τ suficientemente grande, el prefiltro γm (s) no afecta significativamente
el comportamiento de γ(s) en las altas frecuencias.

Controlador Óptimo de Norma Cuadrática H2∗ : q̃H (z)


El controlador óptimo de norma cuadrática q̃H (z) se diseña resolviendo
el siguiente problema de minimización de norma cuadrática H2∗ :

mı́n  e(z) 2 = mı́n  (1 − p̃(z)q̃H (z))v(z) 2 (7.30)


q̃H (z) q̃H (z)

sujeto a la restricción que q̃H (z) sea estable y causal. La minimización de la


norma anterior resulta en el siguiente controlador:

q̃H (z) = z(pM (z)vM (z))−1 {z −1 p−1


A (z)vM (z)}∗ (7.31)

donde el operador {.}∗ denota que luego de una expansión en fracciones


parciales del operando, sólo serán retenidos los términos que sean estricta-
mente propios y estables; es decir, aquellos términos que posean polos que
se ubiquen dentro del cı́rculo unitario (incluso en z = 1). Notar también que
el proceso estable p̃(z) ha sido factorizado en una parte pasa todo p̃A (z) y
otra parte de mı́nima fase p̃M (z), como sigue:

p̃(z) = p̃A (z)p̃M (z) (7.32)

donde:
(1 − (ζjH )−1 )(z − ζj )
p̃A (z) = z −N Πhj=1 (7.33)
(1 − ζj )(z − (ζjH )−1 )
y ζj , j = 1, . . . , h son los ceros de p̃(z) que están fuera del cı́rculo unitario.
El entero positivo N se selecciona de modo tal que p̃M (z) sea semipropio; es
decir, que el numerador y el denominador de p̃M (z) posean el mismo grado,
lo que es equivalente a decir que z N p̃(z) sea semipropio.
7.3 Control Robusto para Procesos Estables 359

La entrada v(z) también se factoriza en forma similar:

v(z) = vA (z)vM (z) (7.34)

con:
H )−1 )(z − ζ )
(1 − (ζvj vj
vA (z) = z −Nv Πhj=1
v
H )−1 )
(7.35)
(1 − ζvj )(z − (ζvj
donde ζvj , j = 1, . . . , hv son los ceros de v(z) que están fuera del cı́rculo
unitario y el entero positivo Nv se selecciona de modo tal que z Nv v(z) sea
semipropio. Notar que q̃H (z) debe ser estable y causal. Sin embargo, debido
a su carácter discreto, este controlador puede presentar problemas de com-
portamiento en las intermuestras (entre puntos de muestreo) causadas por
los polos de q̃H (z) cercanos al punto (−1, 0). Por consiguiente, es necesario
realizar una modificación del controlador q̃H (z).
La tabla 7.1 muestra la expresión del controlador q̃H (z) para algunas
entradas tı́picas.

Cuadro 7.1: Controlador q̃H (z) para algunas entradas tı́picas.

v(s) v(z) Controlador q̃H (z)

1
s
z
z−1 (p̃M (z))−1

1
τ s+1
z/τ
z−e−T /τ
(p̃M (z))−1 (p̃A (e−T /τ ))−1

1 z(1−eT /τ ) (1−p̃−1
A (e
−T /τ )e−T /τ )z+(p̃−1 (e−T /τ )−1)e−T /τ

s(τ s+1) (z−1)(z−e−T /τ )


(p̃M (z))−1 A
(1−e−T /τ )z

1
s2
Tz
(z−1)2
(p̃M (z))−1 (N +Ω+1)z−N
z
−Ω

−1 −N )|
donde: Ω d
dz (p̃A (z)z z=1

h (ζjH )−1 −ζj


= j=1 (1−ζj )(1−(ζ H )−1 )
j
360 Control Robusto

Ejemplo 7.2

Determinar el controlador óptimo cuadrático q̃H (z) para el proceso p(z) del
ejemplo 7.1, asumiendo que la entrada v(s) es un escalón.
Solución: Del ejemplo 7.1 conocemos p̃(z) para T = 0.05 s:

b1 z + b2
p̃(z) =
z 2 + a1 z + a2

Además, se debe cumplir que p̃(z) = p̃A (z)p̃M (z), de modo tal que z N p̃(z)
sea semipropio y por consiguiente, N = 1. El cero −b2 /b1 = -0.9874 de p̃(z)
se ubica dentro del cı́rculo unitario; entonces ζj = 0 y:

p̃(z) z(b1 z + b2 )
p̃A (z) = z −1 ; p̃M (z) = = 2
p̃A (z) z + a1 z + a2
z
Empleando ahora la tabla 7.1 para v(z) = z−1 obtenemos:

z 2 + a1 z + a2
q̃H (z) = (p̃M (z))−1 =
z(b1 z + b2 )

Diseño del Controlador CMI q̃(z)


Deseamos obtener el controlador CMI q̃(z) postulando:

q̃(z) = q̃H (z)q̃− (z)B(z) (7.36)

donde q̃− (z) cancela todos los polos de q̃H (z) que posean parte real negativa
y los sustituye con polos en el origen con el propósito de que el sistema tienda
a controlarse con mı́nimo tiempo de estabilización. B(z) se selecciona para
preservar el tipo m del sistema.
Sean κi , i = 1, . . . , ρ, los polos de q̃H (z) con parte real negativa. Entonces
podemos escribir:
z − κi
q̃− (z) = z −ρ Πρi=1 (7.37)
1 − ki

m−1
B(z) = bi z −i (7.38)
i=0

donde m es el tipo del sistema y los coeficientes bi , i = 0, . . . , m − 1, se selec-


cionan de modo tal que q̃(z) satisfaga la ecuación (7.26). Por construcción,
7.3 Control Robusto para Procesos Estables 361

q̃H (z) también cumple con la ecuación (7.26). Por consiguiente, q̃(z) debe
satisfacer la ecuación (7.26) sı́ y sólo si:
dn
lı́m (1 − q̃− (z)B(z)) = 0, n = 0, 1, . . . , m − 1 (7.39)
z→1 dz n

Para los casos especiales m = 1 y m = 2 se puede obtener:

B(z) = 1, m=1 (7.40)


m−1
B(z) = bi z −i = b0 + b1 z −1 , m=2 (7.41)
i=0


ρ
κi
b0 = 1 − b1 ; b1 = (7.42)
1 − κi
i=1

Ejemplo 7.3

Determinar el controlador CMI q̃(z) sabiendo que el proceso p(z) del ejemplo
7.1 es del tipo m = 1. Tener en cuenta que la entrada v(s) es un escalón.
Solución: Sabemos que q̃(z) = q̃H (z)q̃− (z). Para m = 1, B(z) = 1. Los
polos de q̃H (z) son z = 0 y z = −b2 /b1 = -0.9874. Entonces, ρ = 1 (un polo
con parte real negativa que hay que sustituir con un polo en el origen), i =1
y κi = κ1 = −b2 /b1 , de modo que:
z − κj z − κ1
q̃− (z) = z −ρ Πρj=1 = z −1
1 − kj 1 − k1

Luego:
z 2 + a1 z + a2
q̃(z) = q̃H (z)q̃− (z) =
(b1 + b2 )z 2

7.3.2. El Filtro Discreto CMI


El controlador diseñado q̃(z) debe ahora ser aumentado con un filtro pasa
bajo f (z) de modo tal que q(z) = q̃(z)f (z). La estructura y los parámetros
del filtro se determinan para que se alcance un compromiso óptimo entre
rendimiento y robustez. La forma más simple de f (z) es:

(1 − α)z
f (z) = (7.43)
z−α
362 Control Robusto

El filtro f (z) debe preservar las propiedades asintóticas del sistema de lazo
cerrado; es decir, la ecuación (7.26). Por consiguiente, para que el sistema
sea del tipo m, el filtro f (z) debe satisfacer:

dn 
n
(1 − f (z)) = 0; 0≤n<m (7.44)
dz z=1

Para un sistema del tipo m = 1, el filtro de la ecuación (7.43) cumple el


requerimiento anterior: f (1) = 1. Sin embargo, para m ≥ 2 se debe postular:
(1 − α)z
f (z) = (β0 + β1 z −1 + · · · + βw z −w ) (7.45)
z−α
donde los coeficientes β0 , . . . , βw se seleccionan de modo tal que satisfagan
la ecuación (7.44). Para m = 2 y w ≥ 2 se ha determinado que:
−6kα
βk = , k = 1, . . . , w (7.46)
(1 − α)(w + 1)(2w + 1)

7.3.3. Estabilidad Robusta


Diseño del Filtro
La condición de estabilidad robusta se establece en términos del contro-
lador CMI q(z) = q̃(z)f (z). Asumiendo que todos los procesos p(s) en la
familia II son estables, que q(z) es estable y que c(z) está relacionado con
q(z) por la ecuación (7.7), entonces los sistemas en las figuras 7.2A y 7.3A
son robustamente estables, si y sólo si:
π
|f (ejωT )| < |p̃(ejωT )q̃(ejωT )¯m (ω)|−1 , 0≤ω≤ . (7.47)
T
donde ¯m (ω) representa la cota de la incertidumbre multiplicativa. Para un
buen rendimiento del sistema, las incertidumbres tienen que ser acotadas.
Una simple especificación de rendimiento requiere que el sistema de lazo
cerrado sea del tipo m = 1; es decir, que f (1) = p̃(1)q̃(1) = γ(0) = 1.
Como corolario de la ecuación (7.47), podemos afirmar que si la incer-
¯
tidumbre multiplicativa (ω) es continua, entonces existe un filtro f (z) para
el cual el sistema a bucle cerrado sea del tipo m = 1, ası́ como también robus-
tamente estable para la familia de procesos II. Esto, siempre que ¯m (0) < 1,
donde ¯m (0) es el error multiplicativo en estado estable del sistema continuo.
Una forma simple de diseñar el filtro CMI es emplear un filtro f (z) con
la estructura dada en la ecuación (7.45) y luego variar el parámetro α de
7.3 Control Robusto para Procesos Estables 363

modo tal que se satisfaga la ecuación (7.47). Esta ecuación pone una cota
inferior α∗ a α. Dicha cota también se puede obtener del gráfico de Bode de:

(|p̃(ejωT q̃(eiwT )|¯m (ω))−1 (7.48)

Si esta cantidad nunca es menor que 1, entonces α∗ = 0. Si se obtuvieran


valores menores que 1, α∗ puede ser determinada a partir del gráfico de
Bode de f (z). Este gráfico resulta prácticamente similar al obtenido con el
filtro de primer orden dado en la ecuación (7.43), siempre que el número de
coeficientes w en la ecuación (7.45) sea suficientemente grande. Por ejemplo,
si (|p̃(ejωT q̃(eiwT )|¯m (ω))−1 decrece en la forma que lo hace un sistema de
primer orden, hasta alcanzar un valor de 0,7 en ω = ω
, entonces:

α∗ = e−T w (7.49)

Efecto del Muestreo


Un incremento de la constante de tiempo α del filtro reduce el ancho
de banda del sistema nominal. Grandes valores del tiempo de muestreo T
también reducen el ancho de banda debido a que si escribimos la ecuación
(7.47) como:
|p̃(jω)q̃(ejωT )f (ejωT )| < |p̄(jω)|¯a (ω) (7.50)
podemos observar que el ancho de banda del término de la izquierda puede
ser reducido incrementando α en f (z) o dejando f (z) = 1 y aumentando T .

7.3.4. Rendimiento Robusto


Para rendimiento robusto, el controlador tiene que ser diseñado para
que:

M (w)  |q̂(jω)|¯a (ω) + |1 − p̃(jω)q̂(jω)|W (ω) < 1, 0 ≤ ω ≤ π/T (7.51)

q̂(jω) = q̃(ejωT )f (ejωT )Z[hr0 (s)γ(s)]


donde se ha introducido una función de peso W (ω) sobre la cual se discute
a continuación. La selección de W (w) depende de los requerimientos de
rendimiento impuestos por el diseñador. Es razonable usar la función de
sensitividad ideal η(s) = p̃(s)q̃(s) como una guı́a para la búsqueda de W (ω):

W (ω)−1 ≥ |1 − p̃(jω)q̃(jω)| (7.52)


364 Control Robusto

Para que la condición anterior resulte una función propia (requerimiento que
también es necesario para cualquier W (w)), se deben cumplir las condiciones
siguientes para m ≥ 1:
W (∞)−1 ≥ 1; W (0)−1 ≥ 0 (7.53)

Ejemplo 7.4
Determinar una función de peso adecuada para el proceso servomotor D.C.
sujeto a cargas no lineales (ver ejemplos 7.1, 7.2 y 7.3).
Solución: Podemos seleccionar la siguiente función de peso:
0,5s + 1
W (s)−1 = 0,4 ; s = jω
0,1s + 1
que cumple las condiciones establecidas en la ecuación (7.53). Sin embargo,
se recomienda emplear la forma general dada en la ecuación (7.52), debido a
que nos permite cambiar la magnitud de la función de peso usando un factor
multiplicativo, siempre que no se sobrepase la condición dada en (7.52).
Esta forma de variar la función de peso proporciona mayor flexibilidad en
el proceso de verificación del rendimiento robusto, tal como veremos más
adelante.

Diseño del Filtro


La forma más simple de diseñar el filtro f (z) es especificar su estructura
dada en la ecuación (7.45) y luego tratar de satisfacer la ecuación (7.51) var-
iando el parámetro α. Incrementando α, el primer término de M (w) decrece
mientras que el segundo término crece. Por consiguiente, dependiendo de ¯a
y W , podrı́a no existir un valor de α para que la ecuación (7.45) sea satis-
fecha. Asumiendo que q̃(z) y f (z) se seleccionan de modo tal que el sistema
resulte del tipo m = 1 (para el cual se cumple que p̃(z)q̃(z)f (z)|z=1 = 1) o
mayor, y que ¯m (0) < 1, entonces, siempre es posible conseguir rendimiento
robusto para ω = 0 y para cualquier peso W (ω).
El parámetro α debe ser sintonizado para que se satisfagan las condi-
ciones dadas en las ecuaciones (7.47) y (7.51). Desde que es posible imponer
la cota inferior α∗ de α, entonces, para determinar dicho parámetro, debemos
resolver el siguiente problema de optimización:
mı́n máx M (ω)  ψ(T ) (7.54)
α∗ ≤α≤1 0≤ω≤π/T
7.3 Control Robusto para Procesos Estables 365

donde se ha introducido el argumento T en ψ para indicar que el valor


óptimo de la función objeto depende del tiempo de muestreo T .

Ejemplo 7.5

Diseñar el filtro f (z) para el proceso servomotor D.C. usando los resultados
de los ejemplos 7.1 al 7.4. Verificar que se cumplan las condiciones de estabil-
idad y rendimiento robustos. Asumir: ¯m (ω) ≈ |m (eiω )| y ¯a (ω) ≈ |a (ω)|.

Solución: Como el sistema es del tipo m = 1, entonces: f (z) = (1−α)z z−α .


Para determinar la estabilidad robusta del proceso, empleamos la ecuación
(7.51) con diferentes valores de α, tal como lo calcula el programa ejem7 5.m.
Podemos comprobar que la estabilidad robusta para el caso que nos ocupa,
se preserva para cualquier valor de α entre 0 y 1. El mismo programa de-
termina el rendimiento robusto del proceso. En el gráfico de magnitudes
de la figura 7.5, podemos observar que para α = 0.9 se cumplen las condi-
ciones de estabilidad y rendimiento robustos. Este valor de α es la solución
al problema de optimización planteado en la ecuación (7.54). Notar que en
la verificación del rendimiento robusto estamos empleando un factor de 0.5
en la función de peso W (s).
% ejem7_5.m ESTABILIDAD ROBUSTA Y RENDIMIENTO ROBUSTO
clear all
% PARAMETROS DEL PROCESO NO LINEAL
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.0352e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; % Mo=0,0.01,0.02,0.045;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm +bL; Jeff = n^2*Jm +JL;
% PROCESO p(s)
Mo = 0.045;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
Ap = [0 1;-N/M -(B + n^2*K*E/R)/M];
Bp = [0;n*K*Kact/(R*M)];
Cp = [1 0]; Dp = [0];
[nump,denp]=ss2tf(Ap,Bp,Cp,Dp);
% nump(s)/denp(s) = p(s) = Kp/(s^2 + ap*s + bp)
Kp = nump(3); ap = denp(2); bp = denp(3);
% PROCESO DISCRETO pz(z)
T = 0.05;
[numdp,dendp] = c2dm(nump,denp,T,’zoh’);
366 Control Robusto

% numdp(s)/dendp(s) = pnz(z) = (bp1*z + bp2)/(z^2 + ap1*z + ap2)


ap1 = dendp(2); ap2 = dendp(3);
bp1 = numdp(2); bp2 = numdp(3);
% MODELO NOMINAL pn(s)
Mo=0.00;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
An = [0 1;-N/M -(B + n^2*K*E/R)/M];
Bn = [0;n*K*Kact/(R*M)];
Cn = [1 0]; Dn = [0];
[numn,denn] = ss2tf(An,Bn,Cn,Dn);
% numn(s)/denn(s) = pn(s) = Kn/(s^2 + an*s + bn)
Kn = numn(3); an = denn(2); bn = denn(3);
% MODELO NOMINAL DISCRETO pnz(z)
T = 0.05;
[numd,dend] = c2dm(numn,denn,T,’zoh’);
% numd(s)/dend(s) = pnz(z) = (b1*z + b2)/(z^2 + a1*z + a2)
a1 = dend(2); a2 = dend(3);
b1 = numd(2); b2 = numd(3);
% CHEQUEANDO ESTABILIDAD ROBUSTA
alfa = 0.955;
for w = 0:pi/T
s=i*w; z=exp(s);
pnz = (b1*z+b2)/(z^2+a1*z+a2);
pz = (bp1*z+bp2)/(z^2+ap1*z+ap2);
laz = pz - pnz;
lmz = laz/pnz;
qt = (z^2 + a1*z + a2)/((b1 + b2)*z^2); % qt <> q~
mag_dB(w+1) = 20*log10(1/(abs(pnz*qt*lmz)));
f = (1-alfa)*z/(z-alfa);
magf_dB(w+1) = 20*log10(abs(f));
% PARA ESTABILIDAD ROBUSTA: magf_dB(w+1) < mag_dB(w+1)
end
% CHEQUEANDO RENDIMIENTO ROBUSTO
for w = 0:pi/T
s=i*w; z=exp(s);
pn = Kn/(s^2 + an*s + bn);
p = Kp/(s^2 + ap*s + bp);
la = p - pn;
lm = la/pn;
qt = (z^2 + a1*z + a2)/((b1 + b2)*z^2); % qt <> q~
f = (1-alfa)*z/(z-alfa);
q = qt*f;
7.3 Control Robusto para Procesos Estables 367

W = 0.5/abs(1-pn*qt);
M_dB(w+1) = 20*log10(abs(q*la) + abs((1-pn*q)*W));
% PARA RENDIMIENTO ROBUSTO: M_dB < 0
end
% GRAFICOS
ejew = linspace(0,pi/T,pi/T);
subplot(121)
semilogx(ejew,mag_dB(1:pi/T),ejew,magf_dB(1:pi/T),’--’)
ylabel(’Magnitudes en dB’)
title(’ (a)’)
xlabel(’Frecuencia angular (rad/s)’)
grid
subplot(122)
semilogx(ejew,M_dB(1:pi/T))
ylabel(’Magnitud de M en dB’)
title(’ (b)’)
xlabel(’Frecuencia angular (rad/s)’)
grid
print -f -deps ejem7_5
print -s -deps ejem7_6a

(a) (b)
40 2

30 0

−2
20

−4
Magnitud de M en dB

10
Magnitudes en dB

−6
0
−8

−10
−10

−20
−12

−30 −14

−40 −16
0 1 2 0 1 2
10 10 10 10 10 10
Frecuencia angular (rad/s) Frecuencia angular (rad/s)

¯ −1 y |f (z)| (en trazos) para verificar la


Figura 7.5: (a) Magnitudes de |p̃q̃ |
estabilidad. (b) Magnitud de M para verificar el rendimiento robusto.
368 Control Robusto

Selección del Tiempo de Muestreo

Cuando el tiempo de muestreo es suficientemente pequeño, entonces el


sistema discreto tiende a comportarse como uno continuo, incrementándose
de esta manera el rendimiento nominal del sistema. Sin embargo, el costo
computacional es mayor y la aparición de una alta frecuencia de muestreo del
orden de 1/T puede hacer que disminuya el rendimiento robusto. Por consi-
guiente, tiempos de muestreo suficientemente grandes pueden ser aceptables
para conseguir estabilidad robusta y rendimiento robusto. Sin embargo, si
el tiempo de muestreo fuera muy grande, podrı́a ser imposible satisfacer los
requerimientos para lograr un rendimiento robusto.
Como regla, π/T se puede seleccionar más grande que el ancho de ban-
da sobre el cual se desea un buen rendimiento. Otra forma de seleccionar
T es deteminar la respuesta al escalón del proceso para poder seleccionar
un tiempo T suficientemente pequeño, que nos permita muestrear y luego
recuperar sin dificultad la curva de respuesta resultante.
Si para un cierto tiempo de muestreo T ∗ se encuentra que ψ(T ∗ ) < 1,
entonces podemos seguir incrementando el tiempo de muestreo. Por otra
parte, si para un determinado T ∗ resulta que ψ(T ∗ ) > 1, significa entonces
que las incertidumbres asumidas en el modelo del proceso y en la estructura
del controlador deben ser reajustadas.

Ejemplo 7.6

Simular el sistema de control robusto diseñado en los ejemplos 7.1 al 7.5.

Solución: Ver el diagrama de diseño en la figura 7.6 (archivo ejem7 6a.m)


y los resultados de la simulación en la figura 7.7. Los gráficos se realizan con
el programa ejem7 6b.m.

7.4. Control Robusto para Procesos Inestables


Para controlar procesos con comportamiento inestable se tiene que em-
plear la estructura clásica ilustrada en la figura 7.1. Asumiendo que el modelo
del proceso es perfecto, es decir, que p(s) = p̃(s), y además que p(s) y p̃(z)
posean κ polos inestables π1 , . . . , πk , la estabilidad interna del sistema de la
figura 7.1 (donde c = q(1 − pγ q)−1 ) queda garantizada, siempre que q(z) sea
estable y que (1 − pγ (z)q(z)) posea ceros en π1 , . . . , πk .
7.4 Control Robusto para Procesos Inestables 369

Mux
+ z2+a1.z+a2 (1−alfa)z Kp
− (b1+b2)z2 z−alfa u s2+ap.s+bp q Gráfico
Sum1 Mux
Controlador q~(z) Filtro Proceso p(s)
u_ej7_6 q_ej7_6
control Kn posición
referencia s2+an.s+bn
.
Modelo nominal pn(s) − + Sum2

Figura 7.6: Diagrama de bloques para la simulación del sistema de control


robusto diseñado.

0.8
Posición en rad

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

0.3
Control en voltios

0.2

0.1

0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 7.7: Resultado de la simulación del sistema de control robusto


diseñado en los ejemplos 7.1 al 7.5.
370 Control Robusto

7.4.1. Rendimiento Nominal


El procedimiento de diseño del controlador robusto para procesos inesta-
bles, es el mismo que para procesos estables. Primero se diseña el controlador
q̃H y luego se le modifica de modo tal que permita evitar el problema debido
a las oscilaciones que se pueden originar entre muestras. En esta forma ob-
tenemos el controlador q̃ = q̃H q̃− B(z). Este último controlador se modifica
con un filtro f (z) para poder garantizar estabilidad y rendimiento robustos.
El controlador resultante posee la forma: q(z) = q̃(z)f (z).

El Controlador Óptimo H2∗


Asumamos que p(z) = p̃(z) posee κ polos π1 , . . . , πk ubicados fuera del
CU (cı́rculo unitario) y un polo de multiciplicidad . Definamos:
(1 − (πjH )−1 )(z − πj )
bp (z) = Πκj=1 (7.55)
(1 − πj )(z − (πjH )−1 )

y factoricemos la planta en una porción pasa todo pA (z) y otra porción


semipropia de mı́nima fase pM (z) (ver la subsección 7.3.1):

p̃(z) = p̃A (z)p̃M (z) (7.56)

De manera análoga factoricemos la entrada v(z):

v(z) = vA (z)vM (z) (7.57)

Asumamos ahora sin pérdida de generalidad, que los polos inestables de v(z)
ubicados fuera del CU son los primeros κ1 polos πj del proceso, y definamos:

(1 − (πjH )−1 )(z − πj )


bv (z) = Πκ1
j=1 (7.58)
(1 − πj )(z − (πjH )−1 )

Asumamos además que v(z) posee al menos  polos en z=1. Entonces el


controlador óptimo H2∗ (z) viene dado por:

q̃H (z) = zbp (z)(pM (z)bv (z)vM (z))−1 {(zbp (z)pA (z))−1 bv (z)vM (z)}∗ (7.59)

donde el operador {.}∗ denota que luego de una expansión en fracciones par-
ciales del operando, sólo serán retenidos los términos que sean estrictamente
propios, exceptuando aquellos correspondiente a los polos de pA (z)−1 .
Notar que para procesos estables: bp = bv = 1. Si todos los polos inesta-
bles del proceso p(s) se ubican en el origen, se puede usar la tabla 7.1.
7.4 Control Robusto para Procesos Inestables 371

Diseño del Controlador CMI q̃(z)

El controlador CMI tiene la forma:

q̃(z) = q̃H (z)q̃− (z)B(z) (7.60)

donde q̃− (z) cancela todos los polos κi , i = 1, . . . , ρ de q̃H (z) que posean
parte real negativa, y los sustituye con polos en el origen. De esta forma, el
sistema tiende a controlarse con mı́nimo tiempo de estabilización. El con-
trolador q̃− (z) se formula como:

z − κi
q̃− (z) = z −ρ Πρi=1 (7.61)
1 − ki

Sean πi , i = 1, . . . , ξ, las raı́ces inestables (incluyendo z=1) con multi-


plicidad mi correspondientes al mı́nimo denominador común de p(z) y v(z)
Tener en cuenta que v(z) y p(z) poseen la misma cantidad de polos en z = 1.
Los requerimientos para garantizar el tipo del sistema y la estabilidad inter-
na pueden ser unificados mediante la relación siguiente:


dk
(1 − q̃ − (z)B(z)) = 0, k = 0, . . . , mi − 1; i = 1, . . . , ξ (7.62)
dz k z=πi

Se puede formular además:


M −1
B(z) = bj z −j (7.63)
j=0


ξ
M= mi (7.64)
i=1

y computar los coeficientes bj , j = 0, . . . , M − 1 de (7.63). Notar que (7.62)


da lugar a M ecuaciones lineales con M incógnitas b0 , b1 , . . . , bM −1 ; dicha
ecuación es equivalente a:


dk −1 −1
(1 − q̃ (λ )B(λ )) = 0; k = 0, . . . , mi − 1; i = 1, . . . , ξ.
dλk λ=π −1 i
(7.65)
372 Control Robusto

7.4.2. El Filtro Discreto CMI


La estructura más simple del filtro es:
(1 − α)z
f1 (z) = (7.66)
z−α
En general, el filtro f (z) debe satisfacer los requerimientos siguientes:

1. Seguimiento asintótico a entradas externas al sistema (referencias y/o


disturbios). Es decir, (1 − p(z)q(z)f (z))v(z) debe ser estable.

2. Estabilidad interna. En esta situación, q̃(z)f (z) y (1 − p̃(z)q̃(z)f (z))


deben ser estables.

Dado que q̃(z) cumple los requerimientos anteriores para f (z) = 1, en-
tonces:

k
d
(1 − f (z)) = 0, k = 0, . . . , mi − 1; i = 1, . . . , ξ (7.67)
dz k z=πi

donde πi y mi ya fueron definidos anteriormente. Notar que cuando k = 0,


f (z) = 1 para z = π1 , . . . , πξ . En otro caso, el filtro se escoge de:

f (z) = φ(z)f1 (z) (7.68)

donde:

ω
φ(z) = βj z −j (7.69)
j=0

Los coeficientes β0 , . . . , βω se seleccionan de modo tal que para un determi-


nado α, se cumpla la ecuación (7.67), generándose M ecuaciones lineales con
M incógnitas. Observar que para ξ = 1, se tiene π1 = 1, m1 = 1 y φ(z) = 1.
Si M = 2, conviene seleccionar ω ≥ 2 para evitar la solución trivial.

7.4.3. Estabilidad y Rendimiento Robustos


Los requerimientos a satisfacer para garantizar estabilidad y rendimiento
robustos son los mismos que rigen para procesos estables. Tales requisitos
fueron desarrollados en las subsecciones 7.3.3 y 7.3.4. Resumiendo, para
garantizar estabilidad robusta se debe cumplir:
π
|f (ejωT )| < |p̃(ejωT )q̃(ejωT )¯m (ω)|−1 , 0≤ω≤ . (7.70)
T
7.5 Procedimiento de Diseño 373

Para garantizar rendimiento robusto se tiene que cumplir:

|q̂|¯a + |1 − p̃q̂|W ≤ 1, 0 ≤ ω ≤ π/T (7.71)

donde:
q̂(s) = q̃(esT )f (esT )Z[hr0 γ(s)] (7.72)
El diseño del prefiltro γ(s) se trató en la subsección 7.3.1

7.5. Procedimiento de Diseño


El procedimiento para diseñar un sistema de control robusto discreto con
estructura CMI es como sigue:
1) Formular el problema (definir especificaciones de diseño).

2) Usando toda la información disponible acerca del proceso no lineal,


determinar el modelo de la planta con sus incertidumbres y definir los
tipos de las entradas (subsección 7.2).

3) Seleccionar la frecuencia de muestreo (subsección 7.3.4), analizando


las respuestas al escalón del proceso y del modelo nominal del mismo.

4) Diseñar el controlador óptimo cuadrático q̃H (z). Para procesos estables


ver la subsección 7.3.1 (en esta subsección también se encuentra el
procedimiento para diseñar el prefiltro γ(s)). Para procesos inestables
ver la subsección 7.4.1.

5) Diseñar el controlador CMI: q̃(z). Para procesos estables ver la sub-


sección 7.3.1. Para procesos inestables ver la subsección 7.4.1.

6) Diseñar la función de peso W (subsección 7.3.4, para ambos casos).

7) Diseñar el filtro discreto CM I. Para procesos estables, ver la subsec-


ción 7.3.2, comprobar que se cumplan los requerimientos de estabilidad
robusta y rendimiento robusto (subsecciones 7.3.3 y 7.3.4). Para pro-
cesos inestables, ver subseción 7.4.2, comprobar que se cumplan los
requerimientos de estabilidad robusta y rendimiento robusto (subsec-
ción 7.4.3).

8) Simular el sistema de control robusto.

9) Implementar el hardware del sistema de control.


374 Control Robusto

10) Implementar el software de control.

11) Realizar pruebas de funcionamiento (resultados experimentales).

7.6. Control Robusto de un Servomotor No Lineal


Siguiendo el procedimiento formulado, esta sección presenta el diseño de
un sistema de control robusto para controlar la posición de un servomotor
D.C., sujeto a cargas no lineales.

7.6.1. Formulación del Problema


El servomotor D.C. con carga no lineal mostrado en la figura 3.9 y des-
crito en la sección 3.3, es un proceso de una entrada y una salida. Este
servomotor posee un engranaje reductor de velocidad y puede ser contro-
lado por el voltaje de armadura. La carga no lineal es una varilla metálica
acoplada perpendicularmente al eje del servomotor (a manera de un brazo
robótico de un grado de libertad). En el extremo libre de dicha varilla se
pueden acoplar cargas adicionales. De esta manera la carga no lineal se hace
variable.
El objetivo de control es diseñar e implementar un sistema de control
robusto empleando una ley de control CMI (Control de Modelo Interno),
de modo tal que la varilla se posicione en una referencia predeterminada.
El sobreimpulso de la respuesta debe ser mı́nimo no obstante la presencia
de la carga no lineal variable y de las no linealidades del proceso como son
las fricciones (estática y de Coulomb) y la saturación en el amplificador del
servomotor.

7.6.2. Diseño del Sistema de Control Robusto


Los pasos (2) al (7) del procedimiento de diseño fueron cubiertos en los
ejemplos 7.1 al 7.5.

7.6.3. Simulación del Sistema de Control Robusto


La simulación realizada en el ejemplo 7.6 consideró una planta p(s) lineal.
En la siguiente simulación, la planta a considerar es su modelo no lineal, con
el añadido de dos bloques de saturación (para evitar saturar el amplificador
de potencia) más una señal de realimentación que es proporcional al torque
no lineal producido por la carga no lineal. No se está considerando el efecto
7.6 Control Robusto de un Servomotor No Lineal 375

de la fricción de Coulomb, que también es un componente no lineal, debido


a que tal efecto será compensado mediante software, como veremos más
adelante. El diagrama de simulación, programa disrob1.m, se muestra en
la figura 7.8, mientras que el resultado de la simulación se puede ver en la
figura 7.9. Para efectuar la simulación con el programa disrob1.m, se debe
ejecutar previamente el programa disrob2.m.

+ z2+a1.z+a2 (1−alfa)z u Mux


− (b1+b2)z2 z−alfa
S1 Saturación 1 Graph
Controlador q~(z) Filtro
Mux

Kn
Referencia s2+an.s+bn
u_disrob Saturación 2
Modelo nominal pn(s) − + S2
Control

Kact + n*K 1 w 1 q
− +
R Ms+B s
gan5 −
S3 Subsistema Subsistema Integrador
eléctrico S4 mecánico q_disrob
n*E
MATLAB Salida
gan2 N Function
gan3 Seno

Figura 7.8: Diagrama de bloques para la simulación del sistema de control


robusto diseñado, considerando el modelo no lineal del proceso.

7.6.4. Implementación del Hardware

El hardware empleado en la implementación en tiempo real del sistema


de control robusto es similar al empleado para la implementación en tiem-
po real de los sistemas de control adaptivo, predictivo y no lineal. Dicho
hardware se describe en detalle en la subsección 5.6.8.
376 Control Robusto

Posición en rad
0.5

0
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

0.25

0.2
Control en voltios

0.15

0.1

0.05

0
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 7.9: Resultado de la simulación del sistema de control robusto em-


pleando el modelo no lineal del proceso.

7.6.5. Implementación del Software


El software de control empleado en la implementación en tiempo real
del sistema de control robusto posee la misma estructura que el software de
control empleado para la implementación en tiempo real de los sistemas de
control predictivo y no lineal. La estructura de dicho software se describe en
detalle en la subsección 6.7.7. El diagrama de flujo del software de control
se muestra en la figura 6.13.
El software usado para la implementación del algoritmo de control de
posición emplea el lenguaje C y se ejecuta en una PC Pentium. Los progra-
mas necesarios para el control se estructuran en tres archivos: R1LLIB.H,
R1LLIB.CPP y ROB.CPP. El archivo ROB.CPP es el que contiene el algo-
ritmo de control.
La realización de archivos ejecutables a partir de los programas fuente, se
elabora en el ambiente de trabajo del Borland C/C++ mediante la creación
de un proyecto denominado ROB.PRJ, en donde intervienen los archivos
mencionados en el párrafo anterior. A continuación se presenta el listado del
programa ROB.CPP. El listado de los programas R1LLIB.H y R1LLIB.CPP
fueron presentados en la subsección 6.7.7.
7.6 Control Robusto de un Servomotor No Lineal 377

/* ROB.CPP Programa del sistema de control robusto para proceso


con carga maxima y referencia de 45 grados. Ver especificaciones
de dise~no en la subseccion resultados experimentales */

#include "r1llib.h"
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <alloc.h>
#include <conio.h>
const float ESCALA= 2.*M_PI/(512.*19.7);

/* Declaracion de las funciones propias del programa */


void Inicializa_Sistema();
void Mide_Variables
(float *x1k, float *xn1, float *r, float *vel, float t);
float Aplica_Control(float u, float ykp);

/* Declaracion de las variables globales */


float a1, a2, b1, b2, alfa, N;
float x1, xn1, yant, r, w; //x2;
float x1p, xn1p, xn1pp;
float T;
float t, tsimul;
float Fs;
int p0, pk;
float VcFC, Ofst;
float ep, epp, e;
float up, upp;

/***************** FUNCIONES ************/


float Aplica_Control(float u, float ykp)
{
float v;
if(u<0.) v = -VcFC;
else if(u>0.) v = VcFC;
if(u+v<-1.4) u= -1.4;
else if(u+v>1.4) u= 1.4;
EnviarVoltage(u+v+Ofst);
return u;
}
void Inicializa_Sistema()
{
378 Control Robusto

/* Con Varilla*/
a1=-1.7858; a2= .8264;
b1= .1070; b2= .1004;
/* ATENCION: LOS VALORES DE a1, a2, b1, b2 DEPENDEN DE LA Fs */
VcFC= .15;
Ofst= 2.3;
Fs= 20.; T= 1./Fs;
tsimul= 100.;
alfa=0.955;

/* Inicializacion de variables */
x1p=0.;
xn1p=0.; xn1pp=0.;
ep=0.; epp=0.;
up=0.; upp=0.;
ConfigurarHardware(0x272, 0x270, 0x271, 0x264, Fs);
EnviarVoltage(Ofst);
p0 = LeerPosicion();
} void Mide_Variables(
float *x1, float *xn1, float *r, float *vel, float t)
{
/* referencia: r= r(t)*/
*r = M_PI/4;
/* Ahora leo la posicion */
pk = LeerPosicion();
*x1 = x1p + ((float)(abs(pk-p0)>8000?0:pk-p0))*ESCALA;
p0 = pk;

/* Modelo nominal */
*xn1 = - a1*xn1p - a2*xn1pp + b1*up + b2*upp;

/* Actualizamos los estados */


x1p=*x1;
xn1p=*xn1; xn1pp=xn1p;
epp=ep; ep=e;

/* error */
e = *r - (*x1-*xn1);
w =(e+a1*ep+a2*epp)/(b1+b2);

/* velocidad angular */
*vel= (5.*(*x1-x1p)+ *vel)/(1.+5.*T);
}
7.6 Control Robusto de un Servomotor No Lineal 379

void main()
{
int ant = 0, act = 0, k, n;
FILE *out;
float *x1b, *xn1b;
float *ub, *rb, *wb, u, r, w;
float vel;
float x1p, xn1p;
Inicializa_Sistema();
clrscr();
assert(tsimul<120);
N= tsimul/T;
n= (int)N;
t= vel= 0.;
assert(NULL!=(ub = (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(x1b = (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(xn1b= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(rb = (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(wb = (float *)calloc(n/5,sizeof(float))));
for(k = 0; k<n;)
{
act = NivelClock();
if ((ant==0)&&(act==1))
{
Mide_Variables(&x1, &xn1, &r, &vel, t);
u=alfa*up+(1-alfa)*(w);
upp=up; up=u;
u= Aplica_Control(u, vel);
if(!(k%5))
{
x1b[k/5] = x1*180./M_PI; rb[k/5]=r*180./M_PI;
wb[k/5] = w*180./M_PI; ub[k/5]=u;
}
k++;
t += T;
gotoxy(15,5); printf("****************************************");
gotoxy(18,7); printf("Control robusto del servomotor no lineal");
gotoxy(15,9); printf("****************************************");
gotoxy(21,11);printf("tiempo : t=%+5.3f",t);
gotoxy(21,13);printf("referencia : r=%+5.3f",r*180./M_PI);
gotoxy(21,15);printf("control : u=%+5.3f",u);
gotoxy(21,17);printf("posicion : x1=%+5.3f", x1*180./M_PI);
gotoxy(21,19);printf("posic. nominal : xn1=%+5.3f",x1*180./M_PI);
380 Control Robusto

gotoxy(21,19);printf("error de posic.: e=%+5.3f",e*180./M_PI);


gotoxy(15,21);printf("****************************************");
if(kbhit()) if(getch()==27) break;
}
ant=act;
}
EnviarVoltage(Ofst);
out=fopen("rob.out","wt");
for (int i=0; i<n/5; i++)
fprintf(out,"%10f %10f %10f %10f %10f\n",
i*5*T, rb[i], x1b[i], ub[i], rb[i]-(x1b[i]-xn1b[i]));
delete rb, x1b, xn1b, ub;
fclose(out);
}

7.6.6. Resultados Experimentales


La inercia de la carga no lineal puede variar desde J = 0.007047 kg-m2
(correspondiente a la varilla sin carga adicional), hasta un valor máximo de
2.98J (correspondiente a la varilla con una carga esférica de magnitud Mo
= 0.045 kg). Para mayores detalles acerca de la carga no lineal variable, ver
la subsección 6.7.8.
El sistema de control robusto debe ser capaz de estabilizar la posición
de la carga no lineal para variaciones de su inercia comprendidas entre J
y 2.98J. La figura 7.10 muestra el resultado experimental del control de
posición robusto para una referencia de 45o en presencia de carga máxima.
Podemos observar que la respuesta del sistema muestra sobreimpulso nulo,
un tiempo estabilización menor que 4 s y error en estado estable nulo.

7.7. Problemas Resueltos


En la sección problemas resueltos de los capı́tulos 4 al 8, la solución a los
problemas se encuentra, según el caso, en uno o más archivos con extensión
m escritos en código MATLAB.

Problema 7.1

El problema 3.2 presenta las ecuaciones que gobiernan la dinámica longi-


tudinal de un avión comercial volando a velocidad de crucero (altura y ve-
locidad constantes). El control del ángulo de inclinación θ del avión (ver
7.7 Problemas Resueltos 381

50

(grados)
40

30

Posición
20

10

0
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

0.2
Señal de control (voltios)

0.15

0.1

0.05

0
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

Figura 7.10: Resultado experimental del sistema de control de posición ro-


busto del servomotor D.C. sujeto a una carga no lineal máxima.

figura 3.14) es un problema longitudinal a resolver. El objetivo de control


es entonces diseñar un autopiloto que manipulando el ángulo δe del deflec-
tor de elevación, controle el ángulo de inclinación del avión. Se pide diseñar
un sistema de control robusto con modelo interno que genere una fuerza de
control tal que la salida del proceso (el ángulo de inclinación θ) presente un
sobreimpulso menor al 10 % y un tiempo de estabilización menor que 4 s, con
un error en estado estable nulo. Tomar 0.2 rad como entrada de referencia.
Realizar el cálculo del controlador para una entrada v escalón. El sistema
diseñado debe ser del tipo m = 1. La selección del tiempo de muestreo es a
conveniencia del diseño. Asumir: ¯m (ω) ≈ |m (eiω )| y ¯a (ω) ≈ |a (eiω )|.
Solución: Los rangos de variación de los parámetros se muestran en el pro-
grama p4rob1.m, al igual que el procedimiento en detalle para diseñar el con-
trolador robusto cuando la entrada v es un escalón. La figura 7.12 (archivo
p4rob1s.m) es el diagrama de bloques empleado en la simulación del sis-
tema diseñado y requiere que previamente se ejecute el programa p4rob1.m.
Los resultados de la simulación se muestran en la figura 7.13 (obtenida con
el archivo p4rob1r.m). El sistema diseñado cumple los requerimientos de
estabilidad y rendimiento robustos, tal como se aprecia en la figura 7.11.
% p4rob1.m SOLUCION AL PROBLEMA 7.1
382 Control Robusto

clear all
% FT (FUNCION DE TRANSFERENCIA) DEL PROCESO:
% theta/deltae=(1.151s+0.1774)/(s^2+0.739s^2+0.921s) -->dato
% theta/deltae=(a*s+b)/(s^3+c*s^2+d*s): ESTRUCTURA DE LA FT
% SE DESEA ROBUSTEZ EN TODOS LOS PARAMETROS:
an=1; bn=0.1; cn=0.7; dn=0.9; % PARA EL PROCESO NOMINAL
numn=[0 0 an bn]; denn=[1 cn dn 0];
% pn=(an*s+bn)/(s^3+cn*s^2+dn*s)
ap=1.2; bp=0.2; cp=0.8; dp=0.95; % PARA EL PROCESO
nump = [0 0 ap bp]; denp=[1 cp dp 0];
% p= (ap*s+bp)/(s^3+cp*s^2+dp*s)
% MODELO NOMINAL DISCRETO pnz(z)
T = 0.3;
[numd,dend] = c2dm(numn,denn,T,’zoh’);
% numd(z)/dend(z) = pnz(z) = (b1*z^2+b2*z+b3)/(z^3+a1*z^2+a2*z+a3)
a1=dend(2); a2=dend(3); a3=dend(4);
b1=numd(2); b2=numd(3); b3=numd(4);
% PROCESO DISCRETO
[numdp,dendp] = c2dm(nump,denp,T,’zoh’);
% numdp(z)/dendp(z) = pz(z) = (bp1*z^2+bp2*z+bp3)/...
% (z^3+ap1*z^2+ap2*z+ap3)
ap1=dendp(2); ap2=dendp(3); ap3=dendp(4);
bp1=numdp(2); bp2=numdp(3); bp3=numdp(4);
% DETERMINACION DE pnz(z)=pA(z)*pM(z):
% roots(numd): 0.9704 y -0.9416
% COMO pnz NO POSEE CEROS FUERA DEL CU, Y COMO z^N*pnz
% DEBE SER SEMIPROPIO, N=1; LUEGO pA=z^(-1) Y
% pM=pnz/pA=z*(b1*z^2+b2*z+b3)/(z^3+a1*z^2+a2*z+a3)

% CALCULO DE v(z)=vA(z)*vM(z)=z/(z-1) PARA UNA ENTRADA ESCALON:


% vA=1; vM=z/(z-1)
% CALCULO DE qtilde_H=z(pM*vM)^(-1){z^(-1)pA^(-1)vM}*:
% z(pM*vM)^(-1)=(z-1)pM^(-1)
% {z^(-1)pA^(-1)vM}*={z/(z-1)}*={1+1/(z-1)}*=1/(z-1)
% qtilde_H=pM^(-1)=(z^3+a1*z^2+a2*z+a3)/(b1*z^3+b2*z^2+b3*z)
% CALCULO DE qtilde_:
% (b1*z^2+b2*z+b3)=(z-0.9704)(z+0.9416); DEBEMOS CANCELAR z=-0.9416
% Y SUSTITUIRLO CON z=0; ESTO ES, k1=-0.9416, rho=1; LUEGO
% qtilde_=z^(-rho)*(z-k1)/(1-k1)=z^(-1)*(z-k1)/(1-k1)
k1=-0.9416;
% CALCULO DE qtilde=qtilde_H*qtilde_*B(z) PARA m=1:
% B(z)=1; qtilde=qtilde_H*qtilde_=
% (z^3+a1*z^2+a2*z+a3)*(z-k1)/((b1*z^3+b2*z^2+b3*z)*z*(1-k1))
7.7 Problemas Resueltos 383

% CALCULO DEL FILTRO PARA m=1: f(z)=(1-alfa)*z/(z-alfa);

% FUNCION DE PESO PARA m=1: W(w)>=G/(abs(1-pn*qtilde))


% CONDICIONES: w^(-1)(infty) MAYOR QUE 1, W(0)^(-1) MAYOR QUE 0

% CHEQUEANDO ESTABILIDAD ROBUSTA


alfa = 0.33; % CUMPLE CONDICIONES DE ESTABILIDAD Y RENDIMIENTO
% ROBUSTOS PERO REQUIERE DE UNA ENTRADA U MUY GRANDE; POR ELLO
% PARA EL DISE~NO FINAL EL PARAMETRO SE FIJA EN: alfa=0.5
for w = 0:pi/T % pi/T =
s=i*w; z=exp(s);
pnz = (b1*z^2+b2*z+b3)/(z^3+a1*z^2+a2*z+a3);
pz = (bp1*z^2+bp2*z+bp3)/(z^3+ap1*z^2+ap2*z+ap3);
laz = pz - pnz;
lmz = laz/pnz;
qtilde=(z^3+a1*z^2+a2*z+a3)*(z-k1)/((b1*z^2+b2*z+b3)*z*(1-k1));
mag_dB(w+1) = 20*log10(1/(abs(pnz*qtilde*lmz)));
f = (1-alfa)*z/(z-alfa);
magf_dB(w+1) = 20*log10(abs(f));
% PARA ESTABILIDAD ROBUSTA: magf_dB(w+1) < mag_dB(w+1)
end
% CHEQUEANDO RENDIMIENTO ROBUSTO
for w = 0:pi/T % pi/T =
s=i*w; z=exp(s);
pn=(an*s+bn)/(s^3+cn*s^2+dn*s);
p= (ap*s+bp)/(s^3+cp*s^2+dp*s);
la = p - pn;
lm = la/pn;
qtilde=(z^3+a1*z^2+a2*z+a3)*(z-k1)/((b1*z^2+b2*z+b3)*z*(1-k1));
f = (1-alfa)*z/(z-alfa);
q = qtilde*f;
G = 0.1; W = G/abs(1-pn*qtilde);
% PARA RENDIMIENTO ROBUSTO: M_dB < 1
M_dB(w+1) = 20*log10(abs(q*la) + abs((1-pn*q)*W));
end
% GRAFICOS
ejew = linspace(0,pi/T,pi/T);
subplot(121)
semilogx(ejew,mag_dB(1:pi/T),ejew,magf_dB(1:pi/T),’--’)
ylabel(’Magnitudes en dB’)
title(’ (a)’)
xlabel(’Frecuencia angular (rad/s)’)
384 Control Robusto

grid
subplot(122)
semilogx(ejew,M_dB(1:pi/T))
ylabel(’Magnitud de M en dB’)
title(’ (b)’)
xlabel(’Frecuencia angular (rad/s)’)
grid
print -f -deps p4rob1f
print -s -deps p4rob1s

(a) (b)
40 5

30 Magnitud de M en dB 0
Magnitudes en dB

20 −5

10 −10

0 −15

−10 0 1 2
−20 0 1 2
10 10 10 10 10 10
Frecuencia angular (rad/s) Frecuencia angular (rad/s)

Figura 7.11: Condición de estabilidad robusta (gráfico de la izquierda) y


rendimiento robusto (gráfico de la derecha) para el problema 7.1.

Problema 7.2

El proceso reductor de humedad descrito en el problema 3.7 se muestra


en la figura 3.24(a). El objetivo de control es reducir la humedad h del
material a granel de la tolva. La banda transportadora, que se desplaza a
una velocidad v= 1 m/s constante, introduce el material a un horno de
secado. El sensor de humedad detecta hr a una distancia d = 10 m del
horno y proporciona la señal de voltaje vr . El horno puede modelarse como
un proceso de primer orden. La figura 3.24(b) muestra la F.T del proceso.
7.7 Problemas Resueltos 385

+ (1−alfa)z u ap.s+bp
− Mux
z−alfa s3+cp.s2+dp.s
S1 Graph
Filtro Proceso p(s)
Referencia Mux
an.s+bn
z4+(a1−k1)z 3+(a2−a1*k1)z
. 2+(a3−a2*k1)z−a3*k1 s3+cn.s 2+dn.s
(1−k1)*b1z +(1−k1)*b2z3+(1−k1)*b3z2
4 Modelo nominal pn(s) − + S2

Controlador q~ y_p4rob1
u_p4rob1
Control u Salida y

Figura 7.12: Diagrama de bloques para simular el sistema de control robusto


con modelo interno (problema 7.1).

0.25

0.2
Inclinación (rad)

0.15

0.1

0.05

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

1.5
Deflector (rad)

0.5

−0.5
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 7.13: Ángulo de inclinación (salida controlada) y ángulo del deflector


de elevación (señal de control) para el problema 7.1.
386 Control Robusto

Diseñar un sistema de control robusto con modelo interno para controlar


la humedad del material en la banda transportadora. El único parámetro
incierto a considerar es el tiempo muerto v/d. Asuma como valor nominal
Tn = 9 s y como tiempo muerto del proceso Tp = 11 s. Las especificaciones
de diseño son: tiempo de estabilización menor que 40 s, error en estado
estacionario nulo y porcentaje de sobreimpulso menor al 5 %. Realizar el
cálculo del controlador para una entrada v escalón. El sistema diseñado debe
ser del tipo m = 1. La selección del tiempo de muestreo es a conveniencia
del diseño. Asumir: ¯m (ω) ≈ |m (eiω )| y ¯a (ω) ≈ |a (ω)|.
Solución: El programa p10rob1.m detalla el procedimiento para diseñar el
controlador robusto cuando la entrada v es un escalón. La figura 7.15 (archi-
vo p10rob1s.m) es el diagrama de bloques empleado en la simulación del sis-
tema diseñado y requiere previamente que se ejecute el programa p10rob1.m.
El resultado de la simulación se muestra en la figura 7.16 (obtenida con el
archivo p10rob1r.m). El sistema diseñado cumple los requerimientos de es-
tabilidad y rendimiento robustos, tal como se aprecia en la figura 7.16.

% p10rob1.m SOLUCION AL PROBLEMA 7.2


clear all
% FT (FUNCION DE TRANSFERENCIA) DEL PROCESO
% vr(s)/u(s) = K*exp(-d*s/v)/(s^2 + a*s + b): ESTRUCTURA DE LA FT
K=10; a=1.5; b=0.5;
% DESEAMOS ROBUSTEZ EN EL TIEMPO MUERTO CON RANGO:
Tn=9; Tp=11; % (n: NOMINAL, p: PROCESO)
numn=[0 0 K]; denn=[1 a b];
% pn=K*exp(-Tn*s)/(s^2+a*s+b)
nump=[0 0 K]; denp=[1 a b];
% p=K*exp(-Tp*s)/(s^2+a*s+b)
% MODELO NOMINAL DISCRETO pnz(z)
T = 0.5; % z = exp(T*s) => exp(Tn*s)=z^(Tn/T)=z^18
[numd,dend] = c2dm(numn,denn,T,’zoh’);
% numd(z)/dend(z)=(b1*z+b2)/(z^2+a1*z+a2)
a1=dend(2); a2=dend(3);
b1=numd(2); b2=numd(3);
% numD(z)/denD(z)=pnz(z)=z^(-Tn/T)*numd(z)/dend(z)
% pnz(z) = z^(-Tn/T)*(b1*z+b2)/(z^2+a1*z+a2)
% = (b1*z+b2)/(z^20+a1*z^19+a2*z^18)
% PROCESO DISCRETO pz(z)
% T = 0.5; z = exp(T*s) => exp(Tp*s)=z^(Tp/T)=z^22
[numdp,dendp] = c2dm(nump,denp,T,’zoh’);
% numdp(z)/dendp(z)=(bp1*z+bp2)/(z^2+ap1*z+ap2)
ap1=dendp(2); ap2=dendp(3);
7.7 Problemas Resueltos 387

bp1=numdp(2); bp2=numdp(3);
% numDp(z)/denDp(z)=pz(z)=z^(-Tp/T)*numdp(z)/dendp(z)
% pz(z) = z^(-Tp/T)*(bp1*z+bp2)/(z^2+ap1*z+ap2)
% = (bp1*z+bp2)/(z^24+a1*z^23+a2*z^22)

% DETERMINACION DE pnz(z)=pA(z)*pM(z):
% roots(numD): -0.1353
% COMO pnz NO POSEE CEROS FUERA DEL CIRCULO UNITARIO (CU) Y COMO
% z^N*pnz DEBE SER SEMIPROPIO, ENTONCES N=19; LUEGO pA=z^(-N) Y
% pM=pnz/pA=z^19*(b1*z+b2)/(z^20+a1*z^19+a2*z^18)
% DETERMINACION DE v(z)=vA(z)*vM(z)=z/(z-1) PARA UNA ENTRADA ESCALON:
% SE SABE POR EJERCICIOS ANTERIORES QUE vA=1; vM=z/(z-1)

% CALCULO DE qtilde_H=(pM(z))^(-1):
% SEGUN TABLA, qtilde_H=(z^20+a1*z^19+a2*z^18)/(b1*z^20+b2*z^19)
% CALCULO DE qtilde_:
% (b1*z^4+b2*z^3)=z^3*(b1*z+b2) => CANCELAR z=-b2/b1=-0.1353
% Y SUSTITUIRLO CON z=0; ESTO ES, k1=-0.1353, rho=1, Y
% qtilde_=z^(-rho)*(z-k1)/(1-k1)=z^(-1)*(z-k1)/(1-k1)
k1=-0.1353;
% CALCULO DE qtilde=qtilde_H*qtilde_*B(z) (PARA m=1):
% PARA QUE EL SISTEMA SEA DEL TIPO m=1, B(z)=1, ENTONCES:
% qtilde=qtilde_H*qtilde_=
% (z^20+a1*z^19+a2*z^18)*(z-k1)/(z*(b1*z^20+b2*z^19)*(1-k1))
% CALCULO DEL FILTRO CON m=1: f(z)=(1-alfa)*z/(z-alfa);
% CALCULO DE LA FUNCION DE PESO PARA m=1: W(w)>=G/(abs(1-pn*qtilde))
% CONDICIONES: W^(-1)(infty) MAYOR QUE 1, W(0)^(-1) MAYOR QUE 0

% CHEQUEANDO ESTABILIDAD ROBUSTA


alfa = 0.95;
for w = 0:pi/T % pi/T =
s=i*w; z=exp(s);
pn=K*exp(-Tn*s)/(s^2+a*s^2+b*s);
p= K*exp(-Tp*s)/(s^2+a*s^2+b*s);
pnz = (b1*z+b2)/(z^(Tn/T)*(z^2+a1*z+a2));
pz = (bp1*z+bp2)/(z^(Tp/T)*(z^2+ap1*z+ap2));
laz = pz - pnz;
lmz = laz/pnz;
qtilde=(z^20+a1*z^19+a2*z^18)*(z-k1)/...
(z*(b1*z^20+b2*z^19)*(1-k1));
mag_dB(w+1) = 20*log10(1/(abs(pnz*qtilde*lmz)));
f = (1-alfa)*z/(z-alfa);
magf_dB(w+1) = 20*log10(abs(f));
388 Control Robusto

% PARA ESTABILIDAD ROBUSTA: magf_dB(w+1) < mag_dB(w+1)


end

% CHEQUEANDO RENDIMIENTO ROBUSTO


for w = 0:pi/T
s=i*w; z=exp(s);
pn=K*exp(-Tn*s)/(s^2+a*s^2+b*s);
p= K*exp(-Tp*s)/(s^2+a*s^2+b*s);
la = p - pn;
lm = la/pn;
qtilde=(z^20+a1*z^19+a2*z^18)*(z-k1)/...
(z*(b1*z^20+b2*z^19)*(1-k1));
f = (1-alfa)*z/(z-alfa);
q = qtilde*f;
G = 0.9; W = G/abs(1-pn*qtilde);
% PARA RENDIMIENTO ROBUSTO: M_dB < 1
M_dB(w+1) = 20*log10(abs(q*la) + abs((1-pn*q)*W));
end

% GRAFICOS
ejew = linspace(0,pi/T,pi/T);
subplot(121)
semilogx(ejew,mag_dB(1:pi/T),ejew,magf_dB(1:pi/T),’--’); grid
ylabel(’Magnitudes en dB’)
title(’ (a)’)
xlabel(’Frecuencia angular (rad/s)’)
subplot(122)
semilogx(ejew,M_dB(1:pi/T)); grid
ylabel(’Magnitud de M en dB’)
title(’ (b)’)
xlabel(’Frecuencia angular (rad/s)’)
print -f -deps p10rob1f
print -s -deps p10rob1s

Problema 7.3

La figura 3.20 muestra un monorriel de dos carros descrito en el problema


3.5. El problema a resolver es el control de velocidad del carro de máquinas
mediante un sistema de control robusto empleando modelo interno. Para
garantizar a los pasajeros un viaje confortable, los cambios de velocidad
deben realizarse con un tiempo de estabilización menor que 6 segundos y
con mı́nimo sobreimpulso. El error en estado estable debe ser nulo. Tener
7.7 Problemas Resueltos 389

(a) (b)
15 2

10
0
5

0 −2

Magnitud de M en dB
Magnitudes en dB

−5
−4

−10

−6
−15

−20 −8

−25
−10
−30

−35 0 −12 0
1 1
10 10 10 10
Frecuencia angular (rad/s) Frecuencia angular (rad/s)

Figura 7.14: Condición de estabilidad robusta (gráfico de la izquierda) y


rendimiento robusto (gráfico de la derecha) para el problema 7.2.

+ (1−alfa)z u K
− Mux
z−alfa s2+as+b
S1 Tp Graph
Filtro Proceso p(s)
Referencia Mux
K y_p10rob
z20
+a1.z 19+a2.z 18. z−k1 s2+as+b
Salida y
b1.z 20
+b2.z19 (1−k1)z Modelo nominal pn(s) Tn − + S2
Controlador q~H Controllador q~_ u_p10rob
Control u

Figura 7.15: Diagrama de bloques para simular el sistema de control robusto


con modelo interno (problema 7.2.)
390 Control Robusto

Humedad
0.5

0
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

0.06

0.04
Flujo calorífico

0.02

−0.02
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 7.16: Flujo calorı́fico (señal de control) y humedad sensada (salida


controlada) para el problema 7.2.

en cuenta que debido al peso de los pasajeros, podemos considerar un rango


de variación en la masa de los carros de pasajeros. Realizar el cálculo del
controlador para una entrada v escalón. El sistema diseñado debe ser del tipo
m = 1. La selección del tiempo de muestreo es a conveniencia del diseño.
Asumir: ¯m (ω) ≈ |m (eiω )| y ¯a (ω) ≈ |a (ω)|.
Solución: El programa p7rob1.m muestra el rango de variación de tales
masas y detalla el procedimiento para diseñar el controlador robusto cuando
la entrada v es un escalón. La figura 7.18 (archivo p7rob1s.m) es el diagrama
de bloques empleado en la simulación del sistema diseñado y requiere previ-
amente que se ejecute el programa p7rob1.m. El resultado de la simulación
se muestra en la figura 7.19 (obtenida con el archivo p7rob1r.m). El sistema
diseñado cumple los requerimientos de estabilidad y rendimiento robustos,
tal como se puede apreciar en la figura 7.17.

% p7rob1.m SOLUCION AL PROBLEMA 7.3


clear all
% ROBUSTEZ EN LOS PESOS M2 Y M3 DADO QUE VARIAN CON EL PESO
% PROCESO: M2=3200; M3=3200 (CARROS CON PASAJEROS);
M1=1300; M2=3200; M3=3200; K12=100000; K23=100000;
7.7 Problemas Resueltos 391

B12=500; B23=500; B1=5000; B2=10000; B3=10000;


A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B=[0 1 0 0 0 0]’;
alfa = 1; % CONSTANTE TACOMETRICA
C=[0 alfa 0 0 0 0]; D=[0];
[nump,denp]=ss2tf(A,B,C,D);
bp1=nump(2); bp2=nump(3); bp3=nump(4); bp4=nump(5);
bp5=nump(6); bp6=nump(7); ap1=denp(2); ap2=denp(3);
ap3=denp(4); ap4=denp(5); ap5=denp(6); ap6=denp(7);
% p=(bp1*s^5+bp2*s^4+bp3*s^3+bp4*s^2+bp5*s+bp6)/...
% (s^6+ap1*s^5+ap2*s^4+ap3*s^3+ap4*s^2+ap5*s+ap6);
% PROCESO DISCRETO
T = 0.2; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
[numz,denz]=ss2tf(G,H,C,D);
az1 = denz(2); az2 = denz(3); az3 = denz(4);
az4 = denz(5); az5 = denz(6); az6 = denz(7);
bz1 = numz(2); bz2 = numz(3); bz3 = numz(4);
bz4 = numz(5); bz5 = numz(6); bz6 = numz(7);
% numz/denz=pz=(bz1*z^5+bz2*z^4+bz3*z^3+bz4*z^2*bz5*z+bz6)/...
% (z^6+az1*z^5+az2*z^4+az3*z^3+az4*z^2+az5*z+az6);
% MODELO NOMINAL DEL PROCESO: M2=2600; M3=2600;
M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;
B12=500; B23=500; B1=5000; B2=10000; B3=10000;
A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
B=[0 1 0 0 0 0]’;
alfa = 1; % CONSTANTE TACOMETRICA
C=[0 alfa 0 0 0 0]; D=[0];
[numn,denn]=ss2tf(A,B,C,D);
bn1=numn(2); bn2=numn(3); bn3=numn(4); bn4=numn(5);
bn5=numn(6); bn6=numn(7); an1=denn(2); an2=denn(3);
an3=denn(4); an4=denn(5); an5=denn(6); an6=denn(7);
% pn=(bn1*s^5+bn2*s^4+bn3*s^3+bn4*s^2+bn5*s+bn6)/...
392 Control Robusto

% (s^6+an1*s^5+an2*s^4+an3*s^3+an4*s^2+an5*s+an6);
% MODELO NOMINAL DISCRETO
T = 0.2; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(A,B,C,D,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3 = den(4);
a4 = den(5); a5 = den(6); a6 = den(7);
b1 = num(2); b2 = num(3); b3 = num(4);
b4 = num(5); b5 = num(6); b6 = num(7);
% num/den=pnz=(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)/...
% (z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6);

% DETERMINAION DE bp(z)
% roots(den): pn(z) POSEE 1 POLO EN z=1 Y NINGUNO FUERA DEL
% CU (CIRCULO UNITARIO) => bp(z)=1

% CALCULO DE pnz(z)=pA(z)*pM(z):
% z^N*pnz DEBE SE SEMIPROPIO, ENTONCES N=1 Y pA=z^(-1); LUEGO:
% pM=pnz/pA=z*(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)/...
% (z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6);

% DETERMINACION DE v(z)=vA(z)*vM(z)=z/(z-1) PARA ENTRADA ESCALON:


% SE SABE POR EJEMPLOS ANTERIORES QUE: vA=1; vM=z/(z-1)

% DETERMINACION DE bv(z)
% COMO v(z) NO POSEE POLOS FUERA DEL CU, ENTONCES bv(z)=1

% CALCULO DE qtilde_H=z*bp*(pM*bv*vM)^(-1){(z*bp*pA)^(-1)*vM}*:
% NOTAR QUE pnz(z) Y v(z) POSEEN 1 POLO EN z=1. COMO bp=bv=1,
% qtilde_H=pM^(-1)=(z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6)/...
% (z*(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6));

% CALCULO DE qtilde_= z^(-r)*((z-k1)/(1-k1)* ... *(z-kr)/(1-kr)):


% roots([b1 b2 b3 b4 b5 b6]): -0.2943 + 0.5702i,
% -0.2943 - 0.5702i; 0.4916 + 0.4604i, 0.4916 - 0.4604i, 1.0000
% r=2 POLOS DE qtilde_H CON PARTE REAL NEGATIVA; k1=-0.2943;
% k2=k1 => qtilde_=z^(-2)*(z-k1)^2/(1-k1)^2
k1=-0.2943;

% CALCULO DE qtilde=qtilde_H*qtilde_*B(z):
% EL MINIMO COMUN DENOMINADOR DE pnz Y v CON RAICES INESTABLES ES:
% (z-piz)=(z-1) => z=piz=1, m1=1 (MULTIPLICIDAD) y B(z)=b0=1;
% qtilde=qtilde_H*qtilde_=
7.7 Problemas Resueltos 393

% (z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6)*(z-k1)^2/...
% (z^3*(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)*(1-k1)^2);
% DETERMINACION DEL FILTRO: f(z)=(1-alfa)*z/(z-alfa);

% CALCULO DE LA FUNCION DE PESO PARA m=1: W(w)>=G/(abs(1-pn*qtilde))


% CONDICIONES: w^(-1)(infty) MAYOR QUE 1, W(0)^(-1) MAYOR QUE 0

% CHEQUEANDO ESTABILIDAD ROBUSTA


alfa = 0.8;
for w = 0:pi/T % pi/T =
s=i*w; z=exp(s);
pnz=(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)/...
(z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6);
pz=(bz1*z^5+bz2*z^4+bz3*z^3+bz4*z^2*bz5*z+bz6)/...
(z^6+az1*z^5+az2*z^4+az3*z^3+az4*z^2+az5*z+az6);
laz = pz - pnz;
lmz = laz/pnz;
qtilde=(z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6)*(z-k1)^2/...
(z^3*(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)*(1-k1)^2);
mag_dB(w+1) = 20*log10(1/(abs(pnz*qtilde*lmz)));
f = (1-alfa)*z/(z-alfa);
magf_dB(w+1) = 20*log10(abs(f));
% PARA ESTABILIDAD ROBUSTA: magf_dB(w+1) < mag_dB(w+1)
end

% CHEQUEANDO RENDIMIENTO ROBUSTO


for w = 0:pi/T
s=i*w; z=exp(s);
pn=(bn1*s^5+bn2*s^4+bn3*s^3+bn4*s^2+bn5*s+bn6)/...
(s^6+an1*s^5+an2*s^4+an3*s^3+an4*s^2+an5*s+an6);
p=(bp1*s^5+bp2*s^4+bp3*s^3+bp4*s^2+bp5*s+bp6)/...
(s^6+ap1*s^5+ap2*s^4+ap3*s^3+ap4*s^2+ap5*s+ap6);
la = p - pn;
lm = la/pn;
qtilde=(z^6+a1*z^5+a2*z^4+a3*z^3+a4*z^2+a5*z+a6)*(z-k1)^2/...
(z^3*(b1*z^5+b2*z^4+b3*z^3+b4*z^2*b5*z+b6)*(1-k1)^2);
f = (1-alfa)*z/(z-alfa);
q = qtilde*f;
G = 0.72; W = G/abs(1-pn*qtilde);
% PARA RENDIMIENTO ROBUSTO: M_dB < 1
M_dB(w+1) = 20*log10(abs(q*la) + abs((1-pn*q)*W));
end
% CALCULO DEL CONTROLADOR c=q/(1-pnz*q)
394 Control Robusto

% NOTAR QUE q*pnz=(z-k1)^2*(1-alfa)/(z^2*(1-k1)^2*(z-alfa))


num1=(1-alfa)*[1 -2*k1 k1^2]; den1= ...
[(1-k1)^2 -((1-k1)^2*alfa+(1-alfa)) (1-alfa)*2*k1 -(1-alfa)*k1^2];
% numc=conv(den,num1); denc=conv(num,den1);
[numc,denc]=series(den,num,num1,den1);
% GRAFICOS
ejew = linspace(0,pi/T,pi/T);
subplot(121)
semilogx(ejew,mag_dB(1:pi/T),ejew,magf_dB(1:pi/T),’--’); grid
ylabel(’Magnitudes en dB’);
title(’ (a)’)
xlabel(’Frecuencia angular (rad/s)’)
subplot(122)
semilogx(ejew,M_dB(1:pi/T)); grid
ylabel(’Magnitud de M en dB’);
title(’ (b)’)
xlabel(’Frecuencia angular (rad/s)’)
print -f -deps p7rob1f
print -s -deps p7rob1s

(a) (b)
40 0

−1
30
−2

−3
20
Magnitud de M en dB
Magnitudes en dB

−4

10 −5

−6
0
−7

−8
−10
−9

−20 0 −10 0
1 2 1 2
10 10 10 10 10 10
Frecuencia angular (rad/s) Frecuencia angular (rad/s)

Figura 7.17: Condición de estabilidad robusta (gráfico de la izquierda) y


rendimiento robusto (gráfico de la derecha) para el problema 7.3.
7.7 Problemas Resueltos 395

+ numc(z) u nump(s) y
Mux
r − denc(z) denp(s)
S1 Controlador c(z) Proceso Graph
p(s) Mux
u_p7rob1
y_p7rob1
Control u
. Salida y

Figura 7.18: Diagrama de bloques para simular el sistema de control robusto


con modelo interno del problema 7.3.

15
Velocidad (m/s)

10

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

300

250
Fuerza (N)

200

150

100

50

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 7.19: Velocidad del carro de máquinas y fuerza de control para el


problema 7.3.
396 Control Robusto

Problema 7.4

La figura 3.22 muestra el proceso ascensor tratado en el problema 3.6. Sin


embargo, para este problema considere que el actuador posee la siguiente
función de transferencia:
x1 (s) Ka
= ; 0,008 ≤ Ka ≤ 0,012
v(s) s + 0,2

El problema a resolver es posicionar suavemente el ascensor en un piso de-


terminado, lo que significa sobreimpulso nulo (para que no se pase de piso)
y tiempo de estabilización menor que 8 s. Para no saturar al actuador (un
amplificador de potencia), la señal de control debe estar dentro del rango
de ± 200 volt. Diseñar un sistema de control robusto que cumpla las es-
pecificaciones pedidas. Realizar el cálculo del controlador para una entrada
v escalón. El sistema diseñado debe ser del tipo m = 1. La selección del
tiempo de muestreo es a conveniencia del diseño. Asumir: ¯m (ω) ≈ |m (eiω )|
y ¯a (ω) ≈ |a (ω)|.
Solución: El programa p8rob1.m detalla el procedimiento para diseñar
el controlador robusto cuando la entrada v es un escalón. La figura 7.21
(archivo p8rob1s.m) es el diagrama de bloques empleado en la simulación
del sistema diseñado y requiere pque reviamente se ejecute el programa de
p8rob1.m. El resultado de la simulación se muestra en la figura 7.22 (obteni-
da con el archivo p8rob1r.m). El sistema diseñado cumple los requerimientos
de estabilidad y rendimiento robustos, tal como se aprecia en la figura 7.20.
% p8rob1.m SOLUCION AL PROBLEMA 7.4
clear all
% PROCESO
Ac = [-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];
Bc = [0.012;0;0;0];
Cc = [0 1 0 0]; Dc = [0];
[nump,denp]=ss2tf(Ac,Bc,Cc,Dc);
bp2=nump(3); bp3=nump(4); bp4=nump(5);
ap1=denp(2); ap2=denp(3); ap3=denp(4); ap4=denp(5);
% p=(bp2*s^2+bp3*s+bp4)/(s^4+ap1*s^3+ap2*s^2+ap3*s);
% PROCESO DISCRETO
T = 0.8; % TIEMPO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[numz,denz]=ss2tf(G,H,C,D);
az1 = denz(2); az2 = denz(3); az3=denz(4); az4=denz(5);
bz1 = numz(2); bz2 = numz(3); bz3=numz(4); bz4=numz(5);
7.7 Problemas Resueltos 397

% numz/denz=pz=(bz1*z^3+bz2*z^2+bz3*z+bz4*z)/...
% (z^4+az1*z^3+az2*z^2+az3*z+az4);
% PROCESO NOMINAL
Ac = [-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];
Bc = [0.008;0;0;0];
Cc = [0 1 0 0]; Dc = [0];
[numn,denn]=ss2tf(Ac,Bc,Cc,Dc);
bn2=numn(3); bn3=numn(4); bn4=numn(5);
an1=denn(2); an2=denn(3); an3=denn(4);
% pn=(bn2*s^2+bn3*s+bn4)/(s^4+an1*s^3+an2*s^2+an3*s);
% MODELO NOMINAL DISCRETO
T = 0.8; % TIEMPO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,’zoh’);
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4); a4=den(5);
b1 = num(2); b2 = num(3); b3=num(4); b4=num(5);
% num/den=pnz=(b1*z^3+b2*z^2+b3*z+b4*z)/...
% (z^4+a1*z^3+a2*z^2+a3*z+a4);
% DETERMINAION DE bp(z)
% roots(den): pn(z) POSEE 1 POLO EN z=1 Y NINGUNO FUERA DEL
% CIRCULO UNITARIO => bp(z)=1
% CALCULO DE pnz(z)=pA(z)*pM(z):
% z^N*pnz DEBE SER SEMIPROPIO, ENTONCES N=1 Y pA=z^(-1); LUEGO:
% pM=pnz/pA=z*(b1*z^3+b2*z^2+b3*z+b4*z)/...
% (z^4+a1*z^3+a2*z^2+a3*z+a4);
% DETERMINACION DE v(z)=vA(z)*vM(z)=z/(z-1) PARA ENTRADA ESCALON:
% SE SABE POR EJEMPLOS ANTERIORES QUE vA=1 Y vM=z/(z-1)

% DETERMINACION DE bV(z):
% COMO v(z) NO POSEE POLOS FUERA DEL CU, bv(z)=1
% CALCULO DE qtilde_H=z*bp*(pM*bv*vM)^(-1){(z*bp*pA)^(-1)*vM}*
% NOTAR QUE pnz(z) Y v(z) POSEEN 1 POLO EN z=1. COMO bp=bv=1:
% qtilde_H=pM^(-1)=(z^4+a1*z^3+a2*z^2+a3*z+a4)/...
% z*(b1*z^3+b2*z^2+b3*z+b4);
% CALCULO DE qtilde_= z^(-r)*((z-k1)/(1-k1)* ... *(z-kr)/(1-kr))
rr=roots([b1 b2 b3 b4]); k1=rr(1);
% r=1 POLOS DE qtilde_H CON PARTE REAL NEGATIVA;
% => qtilde_=z^(-1)*(z-k1)/(1-k1)=(z-k1)/(z*(1-k1))
% CALCULO DE qtilde=qtilde_H*qtilde_*B(z)
% EL MINIMO COMUN DENOMINADOR DE pnz Y v CON RAICES INESTABLES
% ES: (z-piz)=(z-1) => z=piz=1, MULTIPLICIDAD m1=1 Y B(z)=b0=1;
% qtilde=qtilde_H*qtilde_=
% (z^4+a1*z^3+a2*z^2+a3*z+a4)*(z-k1)/...
398 Control Robusto

% (z^2*(1-k1)*(b1*z^3+b2*z^2+b3*z+b4*z));
% DETERMINACION DEL FILTRO: f(z)=(1-alfa)*z/(z-alfa);
% CALCULO DE LA FUNCION DE PESO PARA m=1: W(w)>=G/(abs(1-pn*qtilde))
% CONDICIONES: w^(-1)(infty) MAYOR QUE 1, W(0)^(-1) MAYOR QUE 0
%
% CHEQUEANDO ESTABILIDAD ROBUSTA
alfa = 0.7;
for w = 0:pi/T
s=i*w; z=exp(s);
pnz=(b1*z^3+b2*z^2+b3*z+b4)/(z^4+a1*z^3+a2*z^2+a3*z+a4);
pz=(bz1*z^3+bz2*z^2+bz3*z+bz4)/(z^4+az1*z^3+az2*z^2+az3*z+az4);
laz = pz - pnz;
lmz = laz/pnz;
qtilde=(z^4+a1*z^3+a2*z^2+a3*z+a4)*(z-k1)/...
(z^2*(1-k1)*(b1*z^3+b2*z^2+b3*z+b4));
mag_dB(w+1) = -20*log10(abs(pnz*qtilde*lmz));
f = (1-alfa)*z/(z-alfa);
magf_dB(w+1) = 20*log10(abs(f));
% para estabilidad robusta: magf_dB(w+1) < mag_dB(w+1)
end
% CHEQUEANDO RENDIMIENTO ROBUSTO
for w = 0:pi/T
s=i*w; z=exp(s);
pn=(bn2*s^2+bn3*s+bn4)/(s^4+an1*s^3+an2*s^2+an3*s);
p=(bp2*s^2+bp3*s+bp4)/(s^4+ap1*s^3+ap2*s^2+ap3*s);
la = p - pn;
lm = la/pn;
qtilde=(z^4+a1*z^3+a2*z^2+a3*z+a4)*(z-k1)/...
(z^2*(1-k1)*(b1*z^3+b2*z^2+b3*z+b4));
f = (1-alfa)*z/(z-alfa);
q = qtilde*f;
G = 0.75; W = G/abs(1-pn*qtilde);
% PARA RENDIMIENTO ROBUSTO: M_dB < 1
M_dB(w+1) = 20*log10(abs(q*la) + abs((1-pn*q)*W));
end
% CALCULO DEL CONTROLADOR c=q/(1-pnz*q)
% NOTAR QUE q*pnz=(z-k1)*(1-alfa)/(z*(1-k1)*(z-alfa))
num1=(1-alfa)*[1 -k1];
den1=[(1-k1) -((1-k1)*alfa+(1-alfa)) (1-alfa)*k1];
% numc=conv(den,num1); denc=conv(num,den1);
[numc,denc]=series(den,num,num1,den1);
% GRAFICOS
ejew = linspace(0,pi/T,pi/T);
7.8 Problemas Propuestos 399

subplot(121)
semilogx(ejew,mag_dB(1:pi/T),ejew,magf_dB(1:pi/T),’--’); grid
ylabel(’Magnitudes en dB’); title(’ (a)’)
xlabel(’Frecuencia angular (rad/s)’)
subplot(122)
semilogx(ejew,M_dB(1:pi/T)); grid
ylabel(’Magnitud de M en dB’); title(’ (b)’)
xlabel(’Frecuencia angular (rad/s)’)
print -f -deps p8rob1f
print -s -deps p8rob1s

(a) (b)
15 0.5

0
10
−0.5

−1
5
Magnitud de M en dB
Magnitudes en dB

−1.5

0 −2

−2.5
−5
−3

−3.5
−10
−4

−15 0 −4.5 0
1 1
10 10 10 10
Frecuencia angular (rad/s) Frecuencia angular (rad/s)

Figura 7.20: Condición de estabilidad robusta (gráfico de la izquierda) y


rendimiento robusto (gráfico de la derecha) para el problema 7.4.

7.8. Problemas Propuestos


Problema 7.5

El problema 3.1 describe en detalle las ecuaciones que gobiernan la dinámica


del sistema de suspensión de un bus (ver figura 3.12). Diseñar un sistema de
control robusto con modelo interno para lograr el objetivo de control que se
formula a continuación. La salida del proceso y = x2 −x1 (referencia nula) no
400 Control Robusto

+ numc(z) u nump(s) y
Mux
r − denc(z) denp(s)
S1 Controlador c(z) Proceso Graph
p(s) Mux
u_p8rob1 y_p8rob1
. Control u Salida y

Figura 7.21: Diagrama de bloques para simular el sistema de control robusto


con modelo interno del problema 7.4.

2.5
Posición (m)

1.5

0.5

0
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

200

150
Voltaje de control

100

50

−50
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 7.22: Posición del ascensor y fuerza de control (problema 7.4).

debe presentar sobreimpulsos mayores que 5 %. Luego de aproximadamente


20 segundos, las oscilaciones originadas por un disturbio escalón de 10 cm
provocada por imperfecciones en la pista, prácticamente deben desaparecer.
El parámetro incierto del proceso es la masa del bus, la que sin pasajeros es
de m1 = 2500 kg y lleno de pasajeros cambia a 3500 kg. Realizar el cálculo
del controlador para una entrada v escalón. El sistema diseñado debe ser del
tipo m=1. Seleccionar un tiempo de muestreo conveniente.
7.8 Problemas Propuestos 401

Problema 7.6

La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sección


horizontal A=9 m2 de cada tanque es constante. El objetivo de control
es controlar la altura H2 empleando el flujo Qo . La deducción del modelo
linealizado del proceso se describe en el ejemplo 2.1. Las especificaciones de
diseño son: tiempo de estabilización menor que 15 s, sobreimpulso menor al
5 % y error nulo en estado estable. El flujo de entrada (la señal de control)
no debe sobrepasar los 3 m3 /s. Diseñar un controlador robusto con modelo
interno que logre cumplir los requerimientos anteriores. Realizar el cálculo
del controlador para una entrada v escalón. El sistema diseñado debe ser
del tipo m = 1. La selección del tiempo de muestreo es a conveniencia del
diseño.

Problema 7.7

El proceso electromecánico mostrado en la figura 3.26 se describe en el pro-


blema 3.8. Diseñar un sistema de control robusto con modelo interno para
controlar la velocidad angular del eje del motor mediante el voltaje de en-
trada que puede variar entre ± 100 volt. Realizar el cálculo del controlador
para una entrada v escalón. El sistema diseñado debe ser del tipo m=1 y la
selección del tiempo de muestreo es a conveniencia del diseño. La salida con-
trolada no debe presentar sobreimpulso ni error estacionario. El parámetro
incierto es la inercia J de la carga que puede variar en ± 12 %.

Problema 7.8

El problema 3.3 describe el proceso de la bola rodando a lo largo de una barra


con un grado de libertad, tal como se muestra en la figura 3.16. Una leva
conecta la barra con un engranaje que está accionado por un servomotor.
Diseñar un sistema de control robusto que pueda posicionar la bola a 0.5 m
de un extremo de la barra de 1 m de longitud. Evidentemente, la oscilación
de la bola debe estar restringida sobre la barra. El voltaje de control no debe
sobrepasar los ± 40 voltios y la masa de la bola puede variar en ± 15 %.
Realizar el cálculo del controlador para una entrada v escalón. El sistema
diseñado debe ser del tipo m = 1 y la selección del tiempo de muestreo es a
conveniencia del diseño.
402 Control Robusto

Problema 7.9

Las ecuaciones del modelo linealizado para controlar la posición del cañón
montado en la torreta de un tanque (ver figura 3.28) empleando un actuador
hidráulico se detallan en el problema 3.9.

(a) Diseñar un sistema de control robusto con modelo interno para con-
trolar el ángulo de elevación θ con las especificaciones siguientes: tiem-
po de estabilización menor que 8 s, mı́nimo sobreimpulso y error en
estado estacionario nulo. Los disturbios tipo escalón pueden actuar
simultáneamente o no y pueden ser positivos o negativos. Para cada
caso, el sistema de control diseñado debe ser capaz de minimizar sus
efectos. Realizar el cálculo del controlador para una entrada v escalón.
El sistema diseñado debe ser del tipo m = 1 y la selección del tiempo
de muestreo es a conveniencia del diseño. Considerar que todos los
parámetros poseen incertidumbre de ± 5 %.

(b) Lo mismo que (a), pero en este caso para controlar el ángulo azimutal.

Problema 7.10

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito en


la sección 3.3, en donde la carga no lineal posee ahora dos grados de libertad
con Lo = 2L1 /3. La unión de la carga con el eje del servomotor no es flexible.
Las ecuaciones que describen la dinámica del sistema fueron requeridas en
el problema 3.12. Diseñar un sistema de control robusto con modelo interno
para controlar simultáneamente las posiciones θ y τ con mı́nimo tiempo de
estabilización y mı́nimo sobreimpulso. Considerar (a su criterio) variaciones
en la carga adicional Mo . Realizar el cálculo del controlador para una entrada
v escalón. El sistema diseñado debe ser del tipo m = 1 y la selección del
tiempo de muestreo es a conveniencia del diseño. Considerar dos casos: (a)
cuando la inductancia de armadura es despreciable, y (b) cuando no lo es.

Problema 7.11

La figura 3.32 muestra el proceso péndulo doble no lineal que es una ex-
tensión del péndulo simple descrito en la sección 3.1. El acoplamiento entre
los dos péndulos de igual longitud no es flexible. Las ecuaciones que des-
criben la dinámica del sistema son materia del problema propuesto 3.13.
Diseñar un sistema de control robusto con modelo interno para controlar
7.8 Problemas Propuestos 403

simultáneamente las posiciones θ y τ con mı́nimo tiempo de estabilización


y mı́nimo sobreimpulso, de modo tal que el péndulo doble permanezca en
posición vertical. Considerar que la carga adicional esférica de 0.02 kg varı́a
en ± 6 %. Realizar el cálculo del controlador para una entrada v escalón.
El sistema diseñado debe ser del tipo m = 1 y la selección del tiempo de
muestreo es a conveniencia del diseño.

Problema 7.12

La figura 3.33 muestra el proceso doble grúa-puente no lineal que es una ex-
tensión del proceso grúa-puente descrito en la sección 3.2. El acoplamiento
entre los dos péndulos de igual longitud no es flexible. Las ecuaciones que
describen la dinámica del sistema son materia del problema propuesto 3.14.
Diseñar un sistema de control robusto con modelo interno para controlar
simultáneamente las posiciones θ y τ con mı́nimo tiempo de estabilización y
mı́nimo sobreimpulso, de modo tal que la doble grúa puente permanezca en
posición vertical cuando el carro realiza un recorrido predeterminado. Con-
siderar que la carga adicional esférica de 0.02 kg varı́a en ± 6 %. Realizar el
cálculo del controlador para una entrada v escalón. El sistema diseñado debe
ser del tipo m = 1 y la selección del tiempo de muestreo es a conveniencia
del diseño.

Problema 7.13

La figura 1.1 muestra un carro de masa m = 1000 kg desplazándose con una


velocidad v gracias a la acción de la fuerza u producida por su motor. Si se
desprecia la inercia de las ruedas y se asume que la fuerza de fricción bv,
donde b= 50 N-s/m es el coeficiente de fricción, es lo único que se opone
al movimiento del carro, entonces la dinámica del proceso puede modelarse
como (ver ejemplo 1.16):

dv
mv̇(t) + bv(t) = u(t); v̇ =
dt
Diseñar un sistema de control robusto con modelo interno para controlar la
velocidad del móvil con mı́nimo tiempo de estabilización y mı́nimo sobreim-
pulso. Considerar una incertidumbre de ± 5 % en todos los parámetros.
Realizar el cálculo del controlador para una entrada v escalón. El sistema
diseñado debe ser del tipo m = 1 y la selección del tiempo de muestreo es a
conveniencia del diseño.
404 Control Robusto

Problema 7.14

El motor D.C. es un actuador muy popular en los sistemas de control porque


su movimiento rotatorio, mediante acoples adecuados a su eje, puede conver-
tirse fácilmente en movimiento de traslación. Eso se aprecia en fajas trans-
portadoras o en brazos manipuladores. La figura 4.3 muestra el circuito de
armadura del motor y el diagrama de cuerpo libre de su rotor. Las ecuaciones
que gobiernan el comportamiento dinámico del motor fueron derivadas en
el ejemplo 4.1.

(a) Diseñar un sistema de control robusto con modelo interno para esta-
bilizar la velocidad angular del eje del motor con las especificaciones
siguientes: tiempo de estabilización menor que 4 s, error en estado es-
table menor al 1 % y sobreimpulso de la salida menor al 5 %. Considere
variaciones de ± 7 % en los parámetros b y J. Realizar el cálculo del
controlador para una entrada v escalón. El sistema diseñado debe ser
del tipo m = 1 y la selección del tiempo de muestreo es a conveniencia
del diseño.

(b) Diseñar un sistema de control robusto con las especificaciones anterio-


res, pero en este caso para estabilizar la posición del eje del motor.

Problema 7.15

Repetir los problemas 7.1 al 7.14 cuando la entrada v toma las formas:

1 z/τ
v(s) = ; v(z) = ; τ = 100T
τs + 1 z − e−T //tau
donde T es el tiempo de muestreo.

Problema 7.16

Repetir los problemas 7.1 al 7.14 cuando la entrada v toma las formas:
1 Tz
v(s) = ; v(z) =
s2 (z − 1)2

y el tipo del sistema es m=2. Tomar como señal de referencia una rampa de
pendiente unitaria.
Capı́tulo 8

Control No Lineal

Luego de formulado el problema de control a resolver, el siguiente paso


es encontrar un modelo que sea capaz de capturar la dinámica del proceso
en el rango de operación. En realidad todos los procesos son no lineales y
muchas veces resulta más conveniente trabajar directamente con el modelo no
lineal. Ası́ podemos diseñar sistemas de control no lineal empleando diversas
técnicas tales como [13]: el método directo de Liapunov, control deslizante,
control adaptivo (capı́tulo 5) y linealización de la realimentación (materia de
este capı́tulo).
La idea fundamental del control de procesos no lineales empleando la técnica
de linealización por realimentación, es linealizar (hallar un modelo lineal equi-
valente) el proceso (parcial o totalmente, si fuera posible) mediante un cambio
adecuado de coordenadas y una realimentación del vector de estado de dicho
proceso, de modo tal que el proceso resultante (su forma normal) nos permita
aplicar técnicas de control lineal (en el caso de linealización completa del pro-
ceso), o bien, atacar los problemas de control con un grado de dificultad menor
(en el caso de linealización parcial).
El procedimiento de diseño sugerido se aplica al control no lineal de posición
de un servomotor D.C., sujeto a la acción de una carga no lineal y al efecto que
producen algunas no linealidades inherentes al proceso, tales como saturación
del amplificador y fricción de Coulomb.
La penúltima sección, problemas resueltos, está dedicada al diseño de sis-
temas de control no lineal para diferentes procesos. En la última sección se pro-
ponen proplemas de diseño. Todos los archivos correspondientes a los ejercicios,
problemas, diseños, simulaciones y software desarrollados se pueden descargar
del sitio: http://fiee.uni.edu.pe/728681F.
406 Control No Lineal

8.1. Herramientas Matemáticas


Las herramientas matemáticas a discutir corresponden a la geometrı́a
diferencial y a la topologı́a. Sólo se tratan los puntos directamente involu-
crados con la técnica de linealización por realimentación. Por esta razón es
que esas matemáticas no se incluyeron como parte del capı́tulo 1.
La notación:
f : Rn → Rn (8.1)
indica que a cada función vectorial f le corresponde un campo vectorial en el
espacio n-dimensional Rn . Los campos vectoriales de interés para nosotros
son los denominados suaves. Un campo vectorial f (x) es suave cuando tal
función vectorial posee infinitas derivadas parciales continuas.
Si h(x) es una función escalar de variable vectorial suave, donde x es el
vector de estado, entonces su gradiente es:
∂h  .. ∂h

∇h = = ∂h
. (8.2)
∂x ∂x1 ∂xn

El jacobiano de f (x) tiene la forma:


 ∂f1 ∂f1 
∂x1 ··· ∂xn
∂f  .. .. 
∇f = = . .  (8.3)
∂x ∂fn ∂fn
∂x1 ··· ∂xn

8.1.1. Derivadas y Corchetes de Lie


Definición 8.1 Dada una función escalar suave h(x) : Rn → R y un campo
vectorial suave f (x) : Rn → Rn , nosotros podemos definir una nueva fun-
ción escalar Lf h = ∇h f denominada la derivada de Lie, o simplemente la
derivada direccional de h a lo largo de la dirección del vector f .

Sucesivas derivadas de Lie pueden ser definidas recursivamente:

L0f h = ∇h f 0 = h
Lif h = Lf (Lf i−1 h) = ∇(Li−1
f h) f , i = 1, 2, . . . (8.4)

Del mismo modo, si g es otro campo vectorial, la función escalar Lg Lf h(x)


es:
Lg Lf h(x) = ∇(Lf h) g (8.5)
8.1 Herramientas Matemáticas 407

Ejemplo 8.1
Determinar las dos primeras derivadas de Lie de la salida y para el proceso
siguiente:
ẋ = f (x), y = h(x)

Solución: Las derivadas de la salida son:


∂h
ẏ = ẋ = Lẋ h = Lf h
∂x
∂[Lf h]
ÿ = ẋ = L2f h
∂x

Definición 8.2 Sean f y g dos campos vectoriales en Rn . El corchete de


Lie de f y g se define como un tercer campo vectorial de la forma:
[f , g] = ∇g f − ∇f g = adf g
Observar que al corchete de Lie se le denota también como adf g, donde
ad significa adjunta. Sucesivos corchetes de Lie se pueden definir recursiva-
mente:
adf 0 g = g
adf i g = [f , adf i−1 g], i = 1, 2, . . .

Ejemplo 8.2
Determinar [f , g] para el proceso no lineal ẋ = f (x) + gu, donde:



−2x1 + ax2 + senx1 0
f= ; g=
−x2 cosx1 cos(2x1 )

Solución:



0 0 −2x1 + ax2 + senx1
[f , g] =
−2sin(2x1 ) 0 −x2 cosx1



−2 + cosx1 a 0

x2 sinx1 −cosx1 cos(2x1 )


acos(2x1 )
=
cosx1 cos(2x1 ) − 2sen(2x1 )(−2x1 + ax2 + senx1 )
408 Control No Lineal

Lema 8.1 Los corchetes de Lie satisfacen las propiedades siguientes:

1. Bilinealidad:

[α1 f1 + α2 f2 , g] = α1 [f1 , g] + α2 [f2 , g]

[f , α1 g1 + α2 g2 ] = α1 [f , g1 ] + α2 [f , g2 ]

2. Anticonmutatividad:
[f , g] = −[g, f ]

3. Identidad de Jacobi:

Ladf g h = Lf Lg h − Lg Lf h

donde f , f1 , f2 , g, g1 y g2 son campos vectoriales, α1 y α2 son constantes


escalares y h(x) es una función diferenciable.

8.1.2. Difeomorfismo y Transformación de Estados


El concepto de difeomorfismo, que puede ser visto como una general-
ización del concepto familiar de transformación de coordenadas, es el si-
guiente:

Definición 8.3 Una función φ: Rn → Rn definida en una región Ω, se de-


nomina un difeomorfismo si φ y su inversa son suaves. Si Ω = Rn , entonces
φ(x) es un difeomorfismo global. Si φ(x) se define en una región finita y
para un punto dado, entonces el difeomorfismo es local.

El siguiente lema permite determinar difeomorfismos locales.

Lema 8.2 Sea φ(x) una función suave definida en una región Ω en Rn .
Si el jacobiano ∇φ es no singular en un punto x = x̄ de Ω, entonces φ(x̄)
define un difeomorfismo local en una región de Ω.

Ejemplo 8.3

Determinar el difeomorfismo local alrededor del origen para el sistema si-


guiente:


z1 2x1 + 5x1 x22
= φ(x) =
z2 3senx2
8.1 Herramientas Matemáticas 409

Solución: El jacobiano de φ para x̄ = (0, 0) es:





∂φ 2 + 5x22 10x1 x2 2 0
= =
∂x 0 3cosx2 x̄=(0,0) 0 3
que posee rango 2, indicándonos que φ posee inversa porque es no singular
y constituye un difeomorfismo local de acuerdo al lema 8.2.

8.1.3. Transformación no Lineal de Estados


Un difeomorfismo puede ser usado para transformar una representación
no lineal en otra, en términos de un nuevo vector de estado. Consideremos
que el proceso no lineal sea descrito por la siguiente representación en el
espacio de estado:

m
ẋ = f (x(t)) + gj (x(t))uj (t); y(t) = h(x(t)) (8.6)
j=1

donde u(t) = [u1 (t), . . . , um (t)]T es el vector de control (la variable manipu-
lada) del proceso de orden m, x(t) = [x1 (t), . . . , xn (t)]T es el vector de estado
del proceso de orden n, y(t) = [y1 (t), . . . , yp (t)]T es el vector de salida del
proceso (la variable controlada) de orden p y las funciones f = [f1 , . . . , fn ]T ],
g = [g1 , . . . , gm ]T ] y h = [h1 , . . . , hp ]T corresponden a campos vectoriales in-
finitamente diferenciables.
Asumamos la siguiente transformación no lineal de estados:
 
φ1 (x1 , . . . , xn )
 .. 
z = φ(x) =  .  (8.7)
φn (x1 , . . . , xn )
donde la función de transformación φ es invertible y tanto φ como su inversa
φ−1 son infinitamente diferenciables. Notar que la transformación dada en la
ecuación (8.7) es un difeomorfismo. Mientras que la propiedad de inversión
de φ permite un retorno a los estados originales, la propiedad de diferen-
ciación garantiza que la descripción del proceso con las nuevas coordenadas
sea también infinitamente diferenciable, tal como lo es el proceso original.
Empleando la transformación z = φ(x) en la ecuación (8.6) obtenemos:


∂φ
ż = ẋ(t)
∂x x̄(t)



m
∂φ ∂φ
= f (x(t)) + gj (x(t))uj (t) (8.8)
∂x x̄(t) ∂x x̄(t)
j=1
410 Control No Lineal

donde x̄ es un punto de equilibrio para el cual la matriz jacobiana es no


singular, lo que significa que su inversa existe. Luego, podemos obtener la
siguiente representación no lineal para el vector de estado z, como sigue:

m
ż = f̃ (z(t)) + g̃j (z(t))uj (t); y(t) = h̃(z(t)) (8.9)
j=1


∂φ
f̃ (z) = f (φ−1 (z))
∂x


∂φ
g̃j (z) = gj (φ−1 (z))
∂x
h̃(z) = h(φ−1 (z))
Observar que (8.9) constituye un nuevo sistema no lineal con un vector de
estado z.

8.1.4. El Teorema de Frobenius


El teorema de Frobenius es una herramienta importante para el tratamien-
to formal de la linealización por realimentación de procesos de orden n. Este
teorema proporciona las condiciones necesarias y suficientes para resolver
una clase especial de ecuaciones con derivadas parciales. Antes de presentar
el teorema en cuestión se requiere de las siguientes definiciones:
Definición 8.4 Se dice que un conjunto linealmente independiente de cam-
pos vectoriales [f1 , . . . , fm ] en Rn es completamente integrable, si y sólo si
existen (n − m) funciones escalares h1 (x), h2 (x), . . . , hn−m (x) que satisfacen
el siguiente sistema de ecuaciones diferenciales parciales:
∇hi fj = 0
donde 1 ≤ i ≤ n − m, 1 ≤ j ≤ m. En adición, los gradientes ∇hi son
también linealmente independientes.
La definición anterior implica la existencia de n(m − n) ecuaciones diferen-
ciales parciales de la forma ∇hi fj = 0.
Definición 8.5 Se dice que un conjunto linealmente independiente de cam-
pos vectoriales [f1 , . . . , fm ] en Rn es involutivo, si y sólo si existen funciones
escalares αijk : Rn → Rn tales que:

m
[∇g f − ∇f g](x) = [f , g](x) = αijk (x)fk (x), ∀ i, j
k=1
8.1 Herramientas Matemáticas 411

Ya vimos que la notación [f , g] es conocida como el corchete de Lie. Partiendo


de la definición anterior se puede deducir que:
1. Los campos vectoriales constantes, es decir, si fk y gk son constantes
para cualquier k = 1, . . . , m, son siempre involutivos puesto que:

m
[f , g](x) = 0 = αijk (x)fk (x), ∀ x, i, j
k=1

2. Un conjunto compuesto por un solo campo vectorial f es involutivo


porque [f , f ] = 0.
3. Si un conjunto de campos vectoriales [f1 , . . . , fm ] es involutivo, implica
que para todo i, j:
rango [f1 (x), . . . , fm (x)] = rango [f1 (x), . . . , fm (x), [fi , fj ]]

Ahora sı́ podemos formular el teorema de Frobenius:


Teorema 8.1 (Frobenius) Sea [f1 , f2 , . . . , fm ] un conjunto de campos vec-
toriales linealmente independientes. Se dice que tal conjunto es integrable si
y sólo si es involutivo.
Ejemplo 8.4
Considere el conjunto de ecuaciones diferenciales parciales:
∂h ∂h
4x3 − =0
∂x1 ∂x2
∂h ∂h ∂h
−x1 + (x23 − 3x2 ) + 2x3 =0
∂x1 ∂x2 ∂x3
donde sus campos vectoriales asociados poseen la forma:
f1 = [4x3 −1 0]T ; f2 = [−x1 (x23 − 3x2 ) 2x3 ]T
Determine si tal conjunto de ecuaciones diferenciales parciales es solucionable
(o en otras palabras, si [f1 , f2 ] es completamente integrable).
Solución: Operando, encontramos que:
[f1 , f2 ] = [−12x3 3 0]T
Dado que [f1 , f2 ] = −3f1 + 0f2 , este conjunto de campos vectoriales es in-
volutivo. Por consiguiente, las ecuaciones diferenciales parciales dadas son
solucionables.
412 Control No Lineal

8.2. Grado Relativo


Dado el siguiente proceso no lineal de una entrada y una salida:

ẋ = f (x) + g(x)u; y = h(x) (8.10)

se desea obtener una relación directa entre la entrada u y la salida y. Para


ello derivamos la salida como sigue:

∂h(x) ∂h(x) ∂h(x)


ẏ = ẋ = f (x) + g(x)u
∂x ∂x ∂x
= Lf h(x) + Lg h(x)u

Si Lg h(x) = 0, entonces se obtiene la relación deseada entre y y u; en caso


contrario, debemos seguir derivando la salida remanente ẏ = Lf h(x) como
se muestra a continuación:

ÿ = Lf h(x)ẋ
∂x
∂ ∂
= Lf h(x)f (x) + Lf h(x)g(x)u
∂x ∂x
= L2f h(x) + Lg Lf h(x)u

Nuevamente, si Lg Lf h(x) = 0, entonces se tiene la relación deseada. En caso


contrario, se debe seguir derivando la salida hasta que en la r-ésima derivada
la entrada u aparezca en forma explı́cita, como sigue:

y r = Lrf h(x) + Lg Lr−1


f h(x)u; Lg Lr−1
f h(x) = 0

Definición 8.6 El grado relativo del proceso univariable no lineal dado en


la ecuación (8.10), es el número de veces r que hay que derivar la salida
hasta obtener:
Lg Lif h(x) = 0, i = 1, 2, . . . , r − 2 (8.11)

Lg Lr−1
f h(x) = 0 (8.12)

para todo x que pertenezca a una región Ω de Rn .


8.3 Forma Normal de Procesos No lineales 413

8.3. Forma Normal de Procesos No lineales


La técnica de linealización por realimentación requiere de una repre-
sentación no lineal bastante útil del proceso a controlar: la forma normal.
La transformación no lineal de coordenadas que permite llevar un proceso
no lineal de una entrada y una salida (ecuación (8.10)) a su forma normal,
involucra los términos h(x), Lf h(x), . . . , Lr−1
f h(x), tal como veremos más
adelante. Por consiguiente, tal transformación depende del grado relativo
r del proceso. Empezaremos por el caso más simple: r = n, donde n es el
orden del proceso. La siguiente transformación de coordenadas:
   
φ1 (x) h(x)
 φ2 (x)   Lf h(x) 
   
z = φ(x) =  .. = .. ; y = h(x) (8.13)
 .   . 
φn (x) Lfn−1 h(x)

con x = [x1 , x2 , · · · , xn ]T , cumple con las condiciones de una transformación


no lineal; es decir, es un difeomorfismo basado en la hipótesis de que el orden
del sistema es r = n. Por consiguiente, dicha transformación puede llevar al
proceso descrito en la ecuación (8.10) a la forma siguiente:
∂φ1 (x)
ż1 = ẋ
∂x
∂φ1 (x)
= [f (x) + g(x)u]
∂x
= Lf h(x) + Lg h(x)u = Lf h(x) = φ2 (x)
= z2
..
.
∂φn−1 (x)
żn−1 = ẋ
∂x
∂Lfn−2 h(x)
= [f (x) + g(x)u]
∂x
= Lfn−1 h(x) + Lg Lfn−2 h(x)u = Lfn−1 h(x) = φn (x)
= zn
żn = Lnf h(x) + Lg Lfn−1 h(x)u
= Lnf h(φ−1 (z)) + Lg Lfn−1 h(φ−1 (z))u = b(z) + a(z)u

y = z1 (8.14)
414 Control No Lineal

Notar que en la ecuación anterior, a(z) = 0 por definición, ya que en este


caso r = n.
Cuando el proceso no lineal posee rango r < n, entonces el cambio de co-
ordenadas desarrollado anteriormente conduce a una transformación parcial,
en vista de que sólo se pueden definir r funciones de la forma φ1 (x), . . . , φr (x)
linealmente independientes. Sin embargo, es posible agregar n − r funciones
de la forma φr+1 (x), φr+2 (x), . . . , φn (x), de modo tal que φ(x) sea un difeo-
morfismo. Con ello, la forma normal del proceso (8.10) resulta en la siguiente
representación en el espacio de estado:

ż1 = z2
ż2 = z3
..
.
żr−1 = zr
żr = Lrf h(φ−1 (z)) + Lg Lr−1
f h(φ−1 (z))u = b(z) + a(z)u
żr+1 = w1 (z)
..
.
żn = wn−r (z)
y = z1 (8.15)

donde w1 , w2 , . . . , wn−r son funciones suaves que dependen del nuevo estado
z y no de la entrada manipulada u.

8.4. Linealización Exacta y la Ley de Control


La linealización exacta se refiere a tratar con procesos no lineales de
grado r = n. En tales procesos es posible determinar una adecuada real-
imentación no lineal que conduzca a una linealización exacta del proceso
original. El proceso puede ser univariable (con una entrada y una salida) o
multivariable (con múltiples entradas y múltiples salidas). Nosotros sólo nos
ocuparemos del caso univariable.
Hemos visto que un cambio de coordenadas de la forma z = φ(x), des-
crito en la ecuación (8.13) y aplicado al proceso no lineal de la ecuación
(8.10), produce un conjunto de nuevas coordenadas (la nueva representación
en el espacio de estado) que poseen la forma dada en (8.14), ecuación que
8.4 Linealización Exacta y la Ley de Control 415

volvemos a reescribir a continuación:

ż1 = z2
ż2 = z3
..
.
żn−1 = zn
żn = Lnf h(φ−1 (z)) + Lg Lfn−1 h(φ−1 (z))u = b(z) + a(z)u
y = z1 (8.16)

Si se define una señal de realimentación u (la ley de control no lineal) de la


forma:
1
u= [−b(z) + v] (8.17)
a(z)
donde v es una nueva entrada, entonces el nuevo conjunto de ecuaciones
viene a ser:

ż1 = z2
ż2 = z3
..
.
żv = v
y = z1 (8.18)

que en forma compacta resulta en la siguiente representación lineal en el


espacio de estado:
ż = Ax + Bv; y = Cx (8.19)
donde:
   
0 1 0 ... 0 0
 0 0 1 ... 0   0 
     
 .. .. .. .. ..  ; B =  .. 
A= . . . . .   . ; C = 1 0 ... 0 0 (8.20)
   
 0 0 0 ... 1   0 
0 0 0 ... 0 1

Observar que la nueva entrada del proceso lineal es v. La figura 8.1 mues-
tra el proceso de linealización descrito hasta ahora. El proceso lineal de la
ecuación (8.19) es completamente controlable y completamente observable,
416 Control No Lineal

ya que sus matrices de controlabilidad [B AB . . . An−1 B] y de observa-


bilidad [C T AT C T . . . (AT )n−1 C T ] poseen rango n (rango completo). Por
otra parte, el proceso resultante es un integrador de orden n debido a que
su función de transferencia resulta:
y(s) 1
= C[sI − A]−1 B = n (8.21)
v(s) s

 
v u x
- × - + - ẋ = f (x) + g(x)u
 
6 − 6
z
b(.)  z = φ(x) 
a(.)
1 y
a(.)  ? - C -

Figura 8.1: Linealización por realimentación.

Respecto al proceso de linealización desarrollado, debemos remarcar lo


siguiente:
El sistema de lazo cerrado resultante (figura 8.1) es lineal, completa-
mente controlable y completamente observable. Por consiguiente, el
problema de control a resolver, ya sea de regulación o de seguimiento
de trayectorias, queda resuelto diseñando v con cualquier técnica de
control lineal conocida.
En general, la realimentación no lineal requiere de todo el vector de
estado z, por lo que es necesario que todos sus elementos sean me-
dibles. De lo contrario, estamos obligados a estimarlos empleando un
observador no lineal, como veremos más adelante.

Condiciones para Linealización Exacta


La linealización desarrollada anteriormente fue posible debido a la exis-
tencia de una función de salida h(x) respecto a la cual el proceso no lineal
8.4 Linealización Exacta y la Ley de Control 417

original tiene grado relativo r = n. Resaltemos que un proceso no lineal uni-


variable como el de la ecuación (8.10) posee grado r = n cuando la función
h(x), para un entorno alrededor del punto de operación x̄, satisface:

Lg h(x) = Lg Lf h(x) = · · · = Lg Lfn−2 h(x) = 0


Lg Lfn−1 h(x̄) = 0 (8.22)

Las condiciones para linealización exacta pueden ahora ser rigurosamente


formalizadas.

Teorema 8.2 El proceso univariable no lineal de la ecuación (8.10):

ẋ = f (x) + g(x)u

donde f (x) y g(x) son campos vectoriales suaves, es linealizable si y sólo si


existe una región Ω en donde se cumplen las condiciones siguientes:

1. Los campos vectoriales:

[g, adf g, . . . , adfn−1 g]

son linealmente independientes en Ω, lo que equivale a decir, que el


rango de la matriz resultante [.] debe ser igual al orden n del proceso.

2. El conjunto:
[g, adf g, . . . , adfn−2 g]
es involutivo en Ω.

La primera condición puede ser interpretada como una condición de con-


trolabilidad dado que los campos vectoriales [g, adf g, . . . , adfn−1 g] aplicados
a procesos lineales se convierten en la conocida matriz de controlabilidad
[B, AB, . . . , An−1 B]. El rango de esta matriz debe ser n para que el proceso
lineal (entendiéndose que el modelo del proceso es lineal) sea completamente
controlable (subsección 2.3.6). Sin embargo, puede ocurrir que un sistema
no lineal sea controlable, mientras que su modelo linealizado no lo es. Por
ello, la primera condición puede considerarse como una generalización de la
condición de controlabilidad.
La condición involutiva es menos intuitiva. Para sistemas lineales, tal
condición se satisface trivialmente ya que los campos vectoriales son cons-
tantes. Pero, en general, no se puede decir lo mismo cuando se trata con
procesos no lineales.
418 Control No Lineal

8.5. Observadores No Lineales


El estudio de la observabilidad en sistemas lineales tiene su base en la
matriz de observabilidad, que para sistemas univariables no forzados de la
forma:
ẋ = Ax(t); y(t) = Cx(t)
se define como:  
C
 CA 
 
N = ..  (8.23)
 . 
CAn−1
El caso no lineal y no forzado que nos ocupa posee la descripción:
ẋ = f (x); y(t) = h(x) (8.24)
cuya correspondiente matriz de observabilidad generalizada es:
 
h(x)
∂ 
 Lf h(x) 

O(x)   ..  (8.25)
∂x  . 
Lfn−1 h(x)
Es fácil demostrar que si f (x) = Ax y h(x) = Cx, las matrices de
observabilidad de las ecuaciones (8.23) y (8.25) se igualan. Supongamos que
la matriz O(x) posea inversa para todo x. En tal caso, la transformación
definida por:  
h(x)
∂ 
 Lf h(x) 

z = φ(x) =  ..  (8.26)
∂x  . 
Lfn−1 h(x)
representa un cambio de coordenadas. Empleando los resultados anteriores
y en analogı́a con la ecuación (8.16); la descripción en el espacio de estado
para las nuevas coordenadas (notar que g = 0) es:
   
ż1 z2
 ż2   z3 
   
 ..   .. 
 . = . ; y = z1 (8.27)
   
 żn−1   zn 
żn Lnf h[φ−1 (z)]
8.5 Observadores No Lineales 419

que posee la forma matricial siguiente:


ż = Az + BLnf h(φ−1 (z)); y = Cz (8.28)
donde:
   
0 1 0 ... 0 0
 0 0 1 ... 0   
  0   
 .. .. .. .. ..  ; B =  .. 
A= . . . . .   . ; C = 1 0 ... 0 0 (8.29)
   
 0 0 0 ... 1   0 
0 0 0 ... 0 1
Se puede demostrar que la matriz de observabilidad del proceso descrito
en la ecuación (8.28) es la matriz identidad. Por consiguiente, tal proceso es
completamente controlable. Conforme a las relaciones (8.24), (8.25) y (8.26)
se tiene que:
∂φ
ż = ẋ = O(x)f (x)
∂x
= Az + BLnf h(φ−1 (z))
y = Cz (8.30)
El observador a diseñar debe estimar el vector de estado z; es decir, debe
determinar su estimado ẑ empleando las mediciones a la entrada y a la sali-
da del proceso. Haciendo una extensión de los bien conocidos observadores
lineales (subsección 2.3.6), para el observador no lineal podemos considerar
la dinámica siguiente :
dẑ
= Aẑ + BLnf h(φ−1 (z)) + L[y − Cẑ]; ŷ = Cx̂ (8.31)
dt
donde observamos que el término L[y − Cẑ] es proporcional al error entre la
salida del proceso y y la salida del observador ŷ. Para obtener la expresión
del observador para los estados x(t) del proceso no lineal, empleamos la
versión estimada de la ecuación (8.30) que nos permite despejar el vector de
estado estimado dx̂/dt como sigue:
dx̂ dẑ
= O−1 (x̂)
dt dt
y usando la relación (8.31) obtenemos:
dx̂
= O−1 (x̂){Aẑ + BLnf h(φ−1 (z)) + L[y − Cẑ]}
dt
= O−1 (x̂){O(x̂)f (x̂) + L[y − Cẑ]}
= f (x̂) + O−1 (x̂)L[y − h(x̂)] (8.32)
420 Control No Lineal

que es la ecuación del observador no lineal para el sistema no forzado


ẋ = f (x), y = h(x), con condición inicial x̂(0), siempre que O−1 (x) exista.
Notar que también hemos usado el hecho de que:

ŷ = h(x̂) = h(φ−1 (ẑ)) = Cẑ

Para el caso de procesos no lineales forzados con grado relativo r = n,


y teniendo en cuenta la transformación acostumbrada z = φ(x), entonces el
sistema con las nuevas coordenadas resulta:

ż = Az + B[Lnf h(φ−1 (z)) + Lg Lfn−1 h(φ−1 (z))u] (8.33)

Luego, por extensión (ver ecuación (8.31)), la dinámica del observador para
el sistema forzado:

ẋ = f (x) + g(x)u; y = h(x)

tiene la forma:
dẑ
= Aẑ + BLnf h(φ−1 (ẑ)) + Lg Lfn−1 h(φ−1 (ẑ))u + L[y − Cẑ] (8.34)
dt
que debe cumplir con los requerimientos siguientes: que el proceso posea
grado relativo r = n, que su matriz de observabilidad sea invertible y que
la entrada u sea uniformemente acotada. La ecuación del observador para el
sistema original toma la forma siguiente:
dx̂
= f (x̂) + g(x̂)u + O−1 L[y(t) − h(x̂)] (8.35)
dt
para una condición inicial x̂(0).

Cálculo de la Matriz de Ganancia L del Observador


Dado que el par [A, C] dado en (8.29) es completamente observable, una
forma de obtener L es aplicar la conocida fórmula del observador lineal [3]:
 
αn − an
 .. 
L = (W N T )−1  .  (8.36)
α1 − a1

donde n es el orden del proceso, y:


 
N = C T AT C T · · · (AT )n−1 C T
8.6 Procedimiento de Diseño 421

 
an−1 an−2 · · · a1 1
 an−2 an−3 ··· 1 0 
 
 .. .. .. .. 
W = . . . . 
 
 a1 1 ··· 0 0 
1 0 ··· 0 0
Los parámetros ai , i = 1, . . . , n, se obtienen de la ecuación:

|sI − A| = sn + a1 sn−1 + · · · + an−1 s + an

mientras que los parámetros αi , i = 1, . . . , n, se determinan a partir de las


raı́ces deseadas del observador µi , i = 1, . . . , n. Estas raı́ces conforman la
ecuación caracterı́stica del observador:

(s − µ1 ) · · · (s − µ1 ) = sn + α1 sn−1 + · · · + αn−1 s + αn

y deben tener parte real negativa para garantizar la estabilidad del obser-
vador no lineal.

8.6. Procedimiento de Diseño


El procedimiento para diseñar el sistema de control no lineal basado en
la técnica de linealización por realimentación es como sigue:
1) Formular el problema (definir especificaciones de diseño).

2) Determinar el modelo no lineal continuo del proceso.

3) Determinar el grado relativo del modelo no lineal continuo del proceso


(subsección 8.2).

4) Comprobar que se cumplen las condiciones de linealización exacta del


modelo no lineal continuo del proceso (subsección 8.4).

5) Determinar la forma normal del proceso no lineal (subsección 8.3).

6) Implementar la linealización por realimentación de estado y la ley de


control no lineal (subsección 8.4).

7) Diseñar el observador no lineal de estados (si fuera necesario).

8) Simular el sistema de control no lineal con el propósito de predecir un


rendimiento satisfactorio.
422 Control No Lineal

9) Implementar el hardware.

10) Implementar el software de control.

11) Realizar pruebas de funcionamiento (resultados experimentales).

8.7. Control No Lineal de un Servosistema


8.7.1. Formulación del Problema
El servomotor D.C. con carga no lineal mostrado en la figura 3.9 y des-
crito en la sección 3.3, es un proceso de una entrada y una salida. Este
servomotor posee un engranaje reductor de velocidad y puede ser contro-
lado por el voltaje de armadura. La carga no lineal es una varilla metálica
acoplada perpendicularmente al eje del servomotor, a manera de un brazo
robótico de un grado de libertad. En el extremo libre de dicha varilla se
pueden acoplar cargas adicionales. De esta manera la carga no lineal se hace
variable.
El objetivo de control es diseñar e implementar un sistema de control
no lineal basado en la técnica de linealización por realimentación, de modo
tal que la varilla se posicione en una referencia predeterminada o siga una
trayectoria en el rango de 0 a 2π rad. El sobreimpulso de la respuesta debe ser
mı́nimo no obstante la presencia de la carga no lineal y de las no linealidades
del proceso, como las fricciones estática y de Coulomb, y la saturación en el
amplificador de potencia.
Las derivaciones que siguen a continuación corresponden a dos casos del
proceso:

1. Modelo no lineal de tercer orden del proceso cuando consideramos que


la inductancia de armadura L es no despreciable.

2. Modelo no lineal de segundo orden del proceso cuando se desprecia la


inductancia L.

8.7.2. Modelo del Proceso


Modelo No Lineal de Tercer Orden (L = 0)
La figura 3.9 presenta la estructura del proceso no lineal a controlar. La
tabla 3.2 describe las variables y los valores de los parámetros. Asumiendo
que la señal de control u va a ser compensada en software de los efectos de la
8.7 Control No Lineal de un Servosistema 423

fricción estática y fricción de Coulomb, entonces el proceso no lineal puede


ser descrito mediante la siguiente representación en el espacio de estado:

ẋ = f (x) + g(x)u; y = h(x) (8.37)

donde:
 
x2
f (x) =  −( M
N
)senx1 − MB
x2 + nK
M x3

− L x2 − L x3
nE R
 
0
g(x) =  0  ; h(x) = x1 (8.38)
Kact
L

Los elementos del vector de estado [x1 x2 x3 ]T son la posición angular, la


velocidad angular y la corriente de armadura, respectivamente, y Kact u es la
tensión de armadura. Notar que el modelo del proceso no lineal es continuo
y diferenciable.
El término no lineal TN debido a las fricciones estática y de Coulomb,
puede no considerarse, dado que sus efectos van a ser compensados por
software cuando el sistema de control no lineal se implemente en tiempo
real.

Modelo No Lineal de Segundo Orden (L = 0)


El modelo no lineal de segundo orden del proceso es (subsección 3.3):


x2
ẋ = BR+n2 KE = f (x) + g(x)u
− M R x2 − M −
TN N
M senx1 + nKact K
MR u
y = h(x) = x1 (8.39)

donde:



x2 0
f (x) = BR+n2 KE ; g(x) = nKact K
− M R x2 − TMN − N
M senx1 MR

Al igual que en el caso anterior (L no despreciable), el término no lineal


TN debido a las fricciones estática y de Coulomb, puede no ser tomado en
cuenta, dado que su efecto va a ser compensado por software.
424 Control No Lineal

8.7.3. Determinación del Grado Relativo


Grado Relativo del Proceso No Lineal de Tercer Orden
De acuerdo a lo establecido en la subsección 8.2, empleamos las derivadas
de Lie en el modelo del proceso no lineal de tercer orden como sigue:

Lf h(x) = ∇h(x)f (x) = x2 (8.40)


Lg Lf h(x) = ∇(Lf h(x))g(x) = 0 (8.41)
N B nK
L2f h(x) = ∇(Lf h(x))f (x) = − senx1 − x2 + x3 (8.42)
M M M
nK
Lg L2f h(x) = ∇(L2f h(x))g(x) = = 0 (8.43)
ML
por consiguiente, el rango del proceso respecto a la salida y es r = 3. Ello
implica que el proceso en cuestión es completamente linealizable.

Grado Relativo del Proceso No Lineal de Segundo Orden


De acuerdo a lo establecido en la subsección 8.2, empleamos las derivadas
de Lie en el modelo del proceso no lineal de segundo orden como sigue:

Lf h(x) = ∇h(x)f (x) = x2 (8.44)


nKact K
Lg Lf h(x) = ∇(Lf h(x))g(x) =  0
= (8.45)
MR
Por consiguiente, el rango del proceso respecto a la salida y es r = 2. Ello
implica que el proceso en cuestión es completamente linealizable.

8.7.4. Comprobar Linealización Exacta


Linealización Exacta del Modelo Lineal de Tercer Orden
Para aplicar las condiciones de linealización establecidas en el teorema
8.2, debemos calcular:

adf g = [f , g] = ∇g f − ∇f g
    
0 1 0 0 0
=  −MN
cosx1 − M B nK  
M 0  =  −M
nK 
L
1
0 − nEL − R
L L
R
L2

ad2f g = [f , adf g] = ∇(adf g) f − ∇f adf g


8.7 Control No Lineal de un Servosistema 425

    nK 
0 1 0 0 ML
=  −MN
cosx1 − M
B nK
M
 nK 
− ML =  − M 2 L − nKR
nKB
M L22

0 − nE −R R n2 KE
L L L 2 − ML 2 + R
L3
 nK 
0 0 ML
[g adf g ad2f g] =  0 − M L − M 2 L − nKR
nK nKB
M L22

1 n2 KE
L
R
L2
− M L2 + L3R

Dado que:
n2 K 2
det[g adf g ad2f g] =
M 3 L3
entonces tal conjunto está conformado por campos vectoriales linealmente
independientes. Por otra parte, el conjunto:
[g adf g]
es involutivo porque es constante.

Linealización Exacta del Modelo Lineal de Segundo Orden


Como en el caso anterior, para aplicar las condiciones de linealización
establecidas en el teorema 8.2, debemos calcular:
adf g = [f , g] = ∇g f − ∇f g
Es fácil demostrar que:
2
nKact K
det[g adf g] = −
MR
lo que significa que tal conjunto está conformado por campos vectoriales
linealmente independientes.
Por otra parte, el conjunto [g adf g] es involutivo porque es constante.

8.7.5. La Forma Normal


Forma Normal del Modelo No Lineal de Tercer Orden
La forma normal del proceso en estudio puede ser obtenida mediante la
transformación no lineal z = φ(x) del estado x, como sigue:
     
z1 h(x) x1
z =  z2  = φ(x) =  Lf h(x)  =  x2 
2
z3 Lf h(x) − M sinx1 − M x2 + M x3
N B nK

(8.46)
426 Control No Lineal

Notar en la última ecuación que el nuevo estado z posee significado fı́sico,


puesto que z1 es la posición del eje del servomotor, z2 es su velocidad angular
y z3 su aceleración. El estado original x expresado en función del nuevo
estado z está dado por:
   
x1 z1
x =  x2  = φ−1 (z) =  z2 
N B M
x3 nK senz1 + nK z2 + nK z3
De acuerdo a la subsección 8.3, las nuevas coordenadas resultan:
ż1 = z2
ż2 = z3
ż3 = L3f h(φ−1 (z)) + Lg L2f h(φ−1 (z))u (8.47)
(8.48)
donde:
L3f h(x) = ∇(L3f h(x)) f (x)

N B N B nK nK nE R
= − cosx1 x2 − − senx1 − x2 + x3 + − x2 − x3
M M M M M M L L
nK K
Lg L2f h(x) =
act
ML
Luego, la forma normal del proceso resulta:
ż1 = z2
ż2 = z3

N NR n2 KE BR B R
ż3 = − cosz1 z2 − senz1 − + z2 − + z3
M ML ML ML M L
nKact K
+ u
ML
y = z1 (8.49)

Forma Normal del Modelo No Lineal de Segundo Orden


El modelo no lineal de segundo orden del proceso, sin considerar el térmi-
no no lineal TN es (ver ecuación 8.39):


x2
ẋ = 2 KE = f (x) + g(x)u
− BR+n
MR x2 − M
N
senx1 + nKMact
R u
K

y = h(x)(8.50) = x1
que de hecho ya se encuentra en su forma normal.
8.7 Control No Lineal de un Servosistema 427

8.7.6. La ley de Control No Lineal


Ley de Control No Lineal para el Modelo de Tercer Orden
La forma normal para linealización exacta del proceso está dada en la
ecuación (8.49). Reemplazamos en dicha ecuación la siguiente ley de control:
1
u = [v − L2f h(φ−1 (z))]
Lg L2f h(φ−1 (z))

ML N NR
= v+ cosz1 z2 + senz1
nKKact M ML
2 #
n KE BR B R
+ + z2 + + z3 (8.51)
ML ML M L
donde v es una entrada equivalente, obtenemos:
ż1 = z2
ż2 = z3
ż3 = v
y = z1 (8.52)
o lo que es equivalente:
ż = Az + Bv; y = Cz
donde:   
0 1 0 0  
A =  0 0 1 ; B =  0 ;C = 1 0 0
0 0 0 1
La función de transferencia del proceso lineal equivalente se obtiene de:
y(s) 1
= C(sI − A)−1 B = 3
v(s) s
O lo que es lo mismo:
d3 y(t)
=v (8.53)
dt
El proceso de linealización desarrollado se ilustra en la figura 8.2.
Ahora se debe diseñar v de modo tal que y = z1 siga una trayectoria
deseada r(t). El siguiente control logra tal objetivo:
d3 r d2 (r − y) d(r − y)
v= − K1 − K2 − K3 (r − y) (8.54)
dt3 dt2 dt
428 Control No Lineal

v Realimentacion Proceso y
no lineal no
u = u(z,v) lineal
z x
z = φ (x )

v 1 y
Proceso lineal s3
equivalente

Figura 8.2: Linealización del proceso no lineal y su proceso lineal equivalente.

Reemplazando (8.54) en (8.53) obtenemos la ecuación del sistema de lazo


cerrado:
d3 (r − y) d2 (r − y) d(r − y)
3
− K1 2
− K2 − K3 (r − y) = 0
dt dt dt
donde los parámetros K1 , K2 y K3 determinan la dinámica del error r −y. Si
se desea que y → r cuando t → ∞, entonces los eigenvalores de la ecuación
anterior deben poseer parte real negativa. Por ejemplo, si deseamos que los
eigenvalores sean s1 = s2 = s3 = −4, entonces la ecuación del sistema de
lazo cerrado resulta s3 + 12s2 + 48s + 64, de donde se obtiene: K1 = 12,
K2 = 48 y K3 = 64. La expresión de v en función de la trayectoria de
referencia resulta:
d3 r d2 r dr
v= 3
+ K1 2
+ K2 + K3 r − Kz (8.55)
dt dt dt
donde:  
  y
K= K3 K2 K1 ; z =  ẏ 

Finalmente, la señal de control u puede ser obtenida reemplazando (8.55)
en (8.51), lo que resulta en:

ML d3 r d2 r dr N
u = 3
+ K1 2
+ K2 + K3 r − Kz + cosz1 z2
nKKact dt dt dt M
8.7 Control No Lineal de un Servosistema 429

#
NR n2 KE BR B R
+ senz1 + + z2 + + z3 (8.56)
ML ML ML M L

Ley de Control No Lineal para el Modelo de Segundo Orden


La siguiente ley de control:


MR BR + n2 KE N
u= v+ x2 + senx1 (8.57)
nKactK MR M

linealiza completamente el modelo del proceso dado en (8.50), donde v es


una nueva entrada por diseñarse. Al aplicar la señal de control anterior, el
modelo del proceso completamente linealizado queda como:

ẋ1 = x2
ẋ2 = v
y = x1 (8.58)

Tal conjunto de ecuaciones representa un doble integrador. Es decir:

d2 y
=v
dt2
La señal v debe diseñarse de modo tal que y = x1 siga una trayectoria de
referencia r(t). La siguiente señal v:

d2 r d(r − y)
v= 2
− K1 − K2 (r − y)
dt dt
logra que el sistema de lazo cerrado tenga la forma:

d2 (r − y) d(r − y)
+ K1 + K2 (r − y) = 0
dt2 dt
donde K1 y K2 determinan la dinámica del error (r − y). Si se desea que
y → r cuando t → ∞, entonces los eigenvalores de la ecuación anterior deben
poseer parte real negativa. Por ejemplo, si deseamos que los eigenvalores
sean s1 = s2 = −4, entonces la ecuación del sistema de lazo cerrado resulta
s2 +8s+16, de donde se obtiene: K1 = 8 y K2 = 16 y K3 = 64. La expresión
de v en función de la trayectoria de referencia resulta entonces:

d2 r dr
v= + K1 + K2 r − Kx (8.59)
dt2 dt
430 Control No Lineal

donde:

  y
K= K2 K1 ; z=

Finalmente, la señal de control u puede obtenerse reemplazando (8.59) en
(8.57), lo que resulta en:

2
MR d r dr
u = + K1 + K2 r − Kx
nKact K dt2 dt
2

BR + n KE N
+ x2 + senx1 (8.60)
MR M

8.7.7. Diseño del Observador No Lineal de Estados


Observador No Lineal para el Modelo de Tercer Orden
Dado el modelo no lineal del proceso de tercer orden:
ẋ = f (x) + g(x)u; y = h(x)
su correspondiente matriz de observabilidad puede obtenerse aplicando la
ecuación (8.25) como sigue:
   
h(x) x1
∂  = ∂  
O(x) = Lx h(x) x2
∂x ∂x
L2x h(x) −MN
senx1 − M
B
x2 + nK
M x3
 
1 0 0
=  0 1 0  (8.61)
−MN
cosx1 −M M
B nK

Claramente vemos que:


nK
det[O(x)] = = 0
M
lo que significa que O(x) posee inversa. Esta inversa es:
 
1 0 0
O−1 (x) =  0 1 0 
− nK cosx1 − nK nK
N B M

Por consiguiente, la ecuación del observador es:


dx̂
= f (x̂) + g(x̂)u + O−1 L[y(t) − h(x̂)]
dt
ŷ = h(x̂) (8.62)
8.7 Control No Lineal de un Servosistema 431

Observador No Lineal para el Modelo de Segundo Orden


Como en el caso anterior, consideremos el modelo no lineal del proceso
de segundo orden, que posee la forma:

ẋ = f (x) + g(x)u; y = h(x)

La correspondiente matriz de observabilidad puede obtenerse aplicando la


ecuación (8.25) como sigue:



∂ h(x) ∂ x1
O(x) = =
∂x Lx h(x) ∂x x2


1 0
= (8.63)
0 1− M B nK
M

La dinámica del observador queda descrita entonces por:

dx̂
= f (x̂) + g(x̂)u + O−1 L[y(t) − h(x̂)]
dt
ŷ = h(x̂) (8.64)

Cabe anotar que en este caso el observador es útil para estimar la veloci-
dad angular x2 . Sin embargo, por software podemos también estimar x2 ,
sabiendo que es la derivada de x1 .

8.7.8. Simulación del Sistema de Control No Lineal


Simulación Empleando el Modelo No Lineal de Tercer Orden
La figura 8.3 muestra el diagrama de bloques del sistema de control no
lineal a simular. Se desea que los polos del sistema realimentado linealizado
sean: √ √
s1 = −40; s2 = −10 2 − 10j; s3 = −10 2 + 10j
Por consiguiente, el polinomio caracterı́stico toma la forma:

(s − s1 )(s − s2 )(s − s3 ) = s3 + K1 s2 + K2 s + K3

de donde resulta:
√ √
K1 = 40 + 20 2; K2 = 300 + 800 2; K3 = 12000
432 Control No Lineal

Sistema lineal equivalente

r Realimentacion v Realimentacion u Proceso y


lineal no lineal no
v = v(r, z ) u = u( z ,v) lineal

z z x
z = φ (x)

Figura 8.3: Sistema de control no lineal.

La figura 8.4 (archivo disnl1.m) muestra el diagrama SIMULINK para la


simulación del sistema. En el ambiente de trabajo de MATLAB, cada sub-
sistema de la figura 8.4 puede ser visualizado a voluntad. En el subsistema
Proceso no lineal se ha colocado la condición inicial x1 (0) = 1 rad. Los
resultados de la simulación se muestran en la figura 8.5, donde podemos
observar que la señal controlada sigue exactamente a la trayectoria de refe-
rencia (una señal sinusoidal), en tanto que la magnitud de la señal de control
u no sobrepasa el lı́mite previamente establecido de u < |1,4| volt. Para ini-
ciar la simulación empleando la figura 8.4, previamente se requiere ejecutar
el programa de datos disnl1p.m.

% disnl1p.m PARAMETROS PARA LA SIMULACION DEL SISTEMA DE


% CONTROL NO LINEAL DE TERCER ORDEN
clear all
% PARAMETROS DEL PROCESO (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.0;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% GANANCIA DEL SISTEMA LINEALIZADO
K1=40+20*sqrt(2); K2=300+800*sqrt(2); K3=12000;
% GRAFICOS
load disnl1_x1; load disnl1_r; load disnl1_u;
8.7 Control No Lineal de un Servosistema 433

disnl1_u disnl1_x
u x

Mux

Señal de Proceso gráfico


Señal v Mux
control u no lineal

Referencia
r Conversión disnl1_r
de x a z referencia r

Figura 8.4: Simulación del sistema de control no lineal de orden 3.

lg = size(disnl1_x1,1); % LONGITUD DE LAS MUESTRAS


ejex = linspace(0,20,lg);
subplot(2,1,1)
plot(ejex,disnl1_r,’-’,ejex,disnl1_x1); grid
ylabel(’Posicion (radianes)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,disnl1_u); grid
ylabel(’Se~nal de control (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps disnl1r % CREA ARCHIVO disnl1r.eps

Simulación Usando el Proceso de Tercer Orden con Observador


La figura 8.6 muestra el diagrama de bloques del sistema de control no
lineal a simular. Notar que se ha incluido el observador no lineal. Se desea
que los polos del sistema realimentado linealizado sean:
√ √
s1 = −40; s2 = −10 2 − 10j; s2 = −10 2 + 10j

Por consiguiente, el polinomio caracterı́stico toma la forma:

(s − s1 )(s − s2 )(s − s3 ) = s3 + K1 s2 + K2 s + K3
434 Control No Lineal

1.5

Posición (radianes)
1

0.5

−0.5

−1
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

1.5
Señal de control (voltios)

0.5

−0.5

−1

−1.5
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 8.5: Resultado de la simulación del sistema de control no lineal em-


pleando un modelo no lineal de tercer orden.

Sistema lineal equivalente

r Realimentacion v Realimentacion u Proceso y


lineal no lineal no
v = v(r, ^
z) u = u( z ,v) lineal

^
z ^
z ^
x
z^ = φ (x)
^ Observador
no lineal

Figura 8.6: Sistema de control no lineal con observador.

de donde resulta:
√ √
K1 = 40 + 20 2; K2 = 300 + 800 2; K3 = 12000

La figura 8.7 (archivo disnl2.m) muestra el diagrama SIMULINK para la


simulación. En el ambiente de trabajo de MATLAB, cada susbsistema de la
figura 8.7 puede ser visualizado a voluntad. Los resultados de la simulación
8.7 Control No Lineal de un Servosistema 435

se muestran en la figura 8.8, donde podemos observar que la señal contro-


lada sigue exactamente a la trayectoria de referencia (una señal sinusoidal).
Para iniciar la simulación empleando la figura 8.7, previamente se requiere
ejecutar el programa de datos disnl2p.m, pues en este programa se encuen-
tran los valores de los parámetros del sistema, ası́ como también el cálculo
de la matriz de ganancia L.

disnl2_u
u
Mux

gráfico
Señal u Proceso Mux
Señal v no lineal
disnl2_x1
x1
Referencia disnl2_r
r Conversión Observador r
de x a z no lineal

Figura 8.7: Simulación del sistema de control no lineal de tercer orden con
observador.

% disnl2p.m PARAMETROS PARA SIMULAR EL SISTEMA DE CONTROL


% NO LINEAL DE TERCER ORDEN CON OBSERVADOR
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.0;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL EQUIVALENTE DE TERCER ORDEN
436 Control No Lineal

Ac = [0 1 0;0 0 1;0 0 0];


Bc = [0;0;1];
Cc = [1 0 0]; D = [0];
NN = [Cc’ Ac’*Cc’ (Ac’)^2*Cc’];
rangoNN = rank(NN); % es n=3 => EL PROCESO ES C.C.
% CALCULO DE LAS GANANCIAS L1, L2 y L3
p = poly(Ac);
a1=p(2); a2=p(3); a3=p(4);
J = [-15+10j 0 0
0 -19 0
0 0 -15-10j]; % RAICES DESEADAS
JJ = poly(J);
aa1=JJ(2); aa2=JJ(3); aa3=JJ(4);
W = [a2 a1 1;a1 1 0;1 0 0];
% GANANCIA DEL OBSERVADOR NO LINEAL
LL = inv(W*N’)*[aa3-a3;aa2-a2;aa1-a1];
L1=LL(1); L2=LL(2); L3=LL(3);
% GANANCIA DEL SISTEMA LINEALIZADO
K1=40+20*sqrt(2); K2=300+800*sqrt(2); K3=12000;
% GRAFICOS
load disnl2_x1; load disnl2_r; load disnl2_u;
lg = size(disnl2_x1,1); % LONGITUD DE LAS MUESTRAS
ejex = linspace(0,20,lg);
subplot(2,1,1)
plot(ejex,disnl2_r,’-’,ejex,disnl2_x1)
ylabel(’Posicion (radianes)’)
xlabel(’Tiempo en segundos’)
grid
subplot(2,1,2)
plot(ejex,disnl2_u)
ylabel(’Se~nal de control (voltios)’)
xlabel(’Tiempo en segundos’)
grid
print -f -deps disnl2r % CREA ARCHIVO disnl2r.eps

Simulación Empleando el Proceso de Segundo Orden


La figura 8.3 muestra diagrama de bloques del sistema de control no
lineal a simular. Se desea que los polos del sistema realimentado linealizado
sean s1 = −4 y s2 = −4. Por consiguiente, el polinomio caracterı́stico toma
la forma:
(s − s1 )(s − s2 ) = s2 + K1 s + K2
8.7 Control No Lineal de un Servosistema 437

Posición (radianes)
0.5

−0.5

−1
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

3
Señal de control (voltios)

−1
0 2 4 6 8 10 12 14 16 18 20
Tiempo en segundos

Figura 8.8: Resultado de la simulación del sistema de control no lineal de


tercer orden.

de donde resulta: K1 = 8 y K2 = 16.


Esta vez vamos a simular el sistema de control no lineal mediante dis-
cretización directa del sistema continuo. La razón es que la implementación
en tiempo real del sistema de control se va a realizar digitalmente. El pro-
grama disnl3.m realiza la simulación del sistema y los resultados se pueden
ver en la figura 8.9. Es importante anotar que en el programa de simulación
disnl3.m se ha incluido la compensación de la fricción no lineal de Coulomb
y la limitación de la señal de control para evitar saturar el amplificador.
Con el propósito de suavizar los efectos de las derivadas presentes en
la señal de control u emplearemos la siguiente fórmula no recursiva para la
derivada:

dr ∼ 1
= [r(k) + 3r(k − 1) − 3r(k − 2) − r(k − 3)]
dt 6T

donde T es el tiempo de muestreo. Tal fórmula se obtiene calculando el


promedio temporal r̄:

1
r̄ = [e(k) + e(k − 1) + e(k − 2) + e(k − 3)]
4
438 Control No Lineal

para luego aproximar la derivada con relación a r̄, como sigue:

dr ∼ 1 r(k) − r̄ r(k − 1) − r̄ r(k − 2) − r̄ r(k − 3) − r̄


= [ + + + ]
dt 4 1,5T 0,5T 0,5T 1,5T
% disnl3.m DISE~NO DEL SISTEMA DE CONTROL NO LINEAL
% EMPLEANDO MODELO DE SEGUNDO ORDEN DEL PROCESO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.0; % también 10, 20, 45;
K = 31.071e-3; n = 19.741; L = 4.64e-1; %4.64e-3;
B = n^2*bm + bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% POLOS DEL SISTEMA LINEALIZADO REALIMENTADO: -4 y -4
pol = conv([1 4],[1 4]); % POLINOMIO CARACTERISTICO
K1 = pol(2); K2 = pol(3);
% CONDICIONES Y PARAMETROS INICIALES
r(1) =0; r(2)=0; r(3)=0; r(4)=0;
dr(1) =0; dr(2)=0; dr(3)=0; dr(4)=0;
ddr(1)=0; ddr(2)=0; ddr(3)=0; ddr(4)=0;
x1(1) =0; x1(2)=0; x1(3)=0; x1(4)=0;
x2(1) =0; x2(2)=0; x2(3)=0; x2(4)=0;
MM=1000; T = 0.05;
% LAZO DE CONTROL
for k=4:MM
r(k) = sin(0.2*k*T); % TRAYECTORIA DE REFERENCIA
% APROXIMACION DE LAS DERIVADAS
dr(k) = (r(k) + 3*r(k-1) - 3*r(k-2) - r(k-3))/(6*T);
ddr(k) = (dr(k) + 3*dr(k-1) - 3*dr(k-2) - dr(k-3))/(6*T);
% SE~NAL DE CONTROL
u(k) = (M*R/(Kact*n*K))*(ddr(k) + K1*dr(k) + K2*r(k) ...
- K2*x1(k) - K1*x2(k) ...
+ (B*R+n^2*K*E)/(M*R)*x2(k) + (N/M)*sin(x1(k)) );
TN = cc*sign(x2(k)); % torque de fricción de Coulomb
% COMPENSANDO FRICCION
if(x2(k) > 0)
u(k) = u(k) + R*cc/(n*K*Kact);
elseif(x2(k) < 0)
8.7 Control No Lineal de un Servosistema 439

u(k) = u(k) - R*cc/(n*K*Kact);


end
% EVITANDO SATURACION DEL ACTUADOR
if(u(k) > 1.4)
u(k) = 1.4;
elseif(u(k) < -1.4)
u(k) = -1.4;
end
% PROCESO NO LINEAL DE SEGUNDO ORDEN DISCRETIZADO
x1(k+1) = x1(k) + T*x2(k);
x2(k+1) = x2(k) + T*( - (N/M)*sin(x1(k)) ...
- (B/M + n^2*K*E)/(M*R)*x2(k) ...
- (1/M)*TN + n*K*Kact/(M*R)*u(k) );
end % FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex = linspace(0,MM*T,MM-3);
subplot(2,1,1)
plot(ejex,r(4:MM),ejex,x1(4:MM)); grid
ylabel(’Posicion (radianes)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,u(4:MM)); grid
ylabel(’Se~nal de control (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps disnl3 % crea disnl3.eps

8.7.9. Implementación del Hardware


El hardware empleado en la implementación en tiempo real del sistema
de control no lineal es similar al empleado para la implementación en tiempo
real de los sistemas de control adaptivo, predictivo y robusto. Dicho hard-
ware se describe en detalle en la subsección 5.6.8.

8.7.10. Implementación del Software


El software de control empleado en la implementación en tiempo real del
sistema de control no lineal posee la misma estructura que el software de
control empleado para la implementación en tiempo real de los sistemas de
control predictivo y robusto. La estructura de dicho software se describe en
detalle en la subsección 6.7.7. El diagrama de flujo del software de control
se muestra en la figura 6.13.
440 Control No Lineal

Posición (radianes)
1

−1

−2
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

0.4
Señal de control (voltios)

0.2

−0.2

−0.4
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

Figura 8.9: Resultado de la simulación del sistema de control no lineal em-


pleando un modelo no lineal de segundo orden.

El software usado para la implementación del algoritmo de control de


posición emplea el lenguaje C y se ejecuta en una PC Pentium. Los progra-
mas necesarios para el control se estructuran en tres archivos: R1LLIB.H,
R1LLIB.CPP y DISNL.CPP. El archivo DISNL.CPP es el que contiene el
algoritmo de control.
La realización de archivos ejecutables a partir de los programas fuente, se
elabora en el ambiente de trabajo del Borland C/C++ mediante la creación
de un proyecto denominado DISNL.PRJ, en donde intervienen los archivos
mencionados en el párrafo anterior. A continuación se presenta el lista-
do del programa DISNL.CPP. El listado de los programas R1LLIB.H y
R1LLIB.CPP fueron presentados en la subsección 6.7.7.

/* DISNL.CPP Programa del sistema de control no lineal de posicion.


Ver especificaciones de dise~no en la subseccion resultados
experimentales. */
#include "r1llib.h"
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <alloc.h>
#include <conio.h>
8.7 Control No Lineal de un Servosistema 441

const float ESCALA= 2.*M_PI/(512.*19.7);


/* Declaracion de las funciones propias del programa */
void Inicializa_Sistema();
void Mide_Variables(float *yk, float *x2k, float *r, float t);
float Aplica_Control(float u, float ykp);
/* Declaracion de las variables globales */
float y, yp, x2, x2p, r;
float rp, rpp, rppp;
float drp, drpp, drppp;
float T, k;
float t, tsimul;
float Fs;
int p0, pk;
float bL, bm, Lo, Ro, g, E, R, m, Kact, Mo, K, n, B;
float Jeff, Jm, JL, M, N, TN, upar, K1, K2;
float VcFC, VcFE, Wth, Ofst;
float up;
/*************** FUNCIONES ******/
float Aplica_Control(float u)
{
float v;
float ykp
if(u<0.) v = -VcFC;
else if(u>0.) v = VcFC;
if(u+v<-1.5) u = -1.5;
else if(u+v>1.4) u = 1.4;
EnviarVoltage(u+v+Ofst);
return u;
}
void Inicializa_Sistema()
{
VcFC = .15;
Ofst = 2.3;
Fs = 20.; T = 1./Fs;
tsimul= 100.;
/* Parametros del proceso no lineal */
Lo = 0.776; Ro = 0.01; g = 9.81;
Mo = 0.0; m = 0.06377; R = 7.38;
E = 31.035e-3; Kact = 14.9; K = 31.071e-3;
bm = 1.8338e-6; bL = 1e-5; n = 19.741;
B = (n*n)*bm+bL; Jm = 1.9062e-6;
Jeff = n*n*Jm+JL; K1 = 28.2843; K2 = 300;
M = Jeff+(1/3)*m*Lo*Lo + Mo*Lo*Lo + (2/5)*Mo*Ro*Ro;
442 Control No Lineal

N = g*Lo*(Mo + m/2);
/* Inicializacion de variables */
yp =0.; x2p = 0.;
rp =0.; rpp = 0.; rppp = 0.;
drp =0.; drpp = 0.; drppp = 0.;
up =0.;

ConfigurarHardware(0x272, 0x270, 0x271, 0x264, Fs);


EnviarVoltage(Ofst);
p0= LeerPosicion();
}
void Mide_Variables(float *y, float *x2, float *r, float t )
{
/* En primer lugar, la referencia: r = r(t)*/
*r = - 2*exp(-2*k*T) - 2*cos(2*k*T)+2;
/* Ahora leo la posicion */
pk = LeerPosicion();
*y = yp + ((float)(abs(pk-p0)>8000?0:pk-p0))*ESCALA;
p0 = pk;

/* Actualizamos los estados */


yp =* y;
x2p =* x2;
}
void main()
{
int ant=0, act=0, k, nd;
FILE *out;
float *yb, x2, y;
float *ub, *rb, u, r;
float yp, x2p;
float ddr, dr;
Inicializa_Sistema();
clrscr();
assert(tsimul<120);
nd = (int)tsimul/T;
t = 0.;
assert(NULL!=(ub= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(yb= (float *)calloc(n/5,sizeof(float))));
assert(NULL!=(rb= (float *)calloc(n/5,sizeof(float))));
for(k=0; k<nd;)
{
act = NivelClock();
8.7 Control No Lineal de un Servosistema 443

if ((ant == 0)&&(act == 1))


{
Mide_Variables(&y, &x2, &r, t);
upar = (ddr+K1*dr+K2*r-K2*(y)-K1*x2+(B*R+n*n*K*E)/
(M*R)*x2+(N/M)*sin(y));
u = (M*R/(Kact*n*K))*upar;
up = u;
u = Aplica_Control(u);
if(!(k%5))
{
yb[k/5] = y*180./M_PI; rb[k/5] = r*180./M_PI;
ub[k/5] = u;
}
k++;
t += T;
gotoxy(15,5); printf("****************************************");
gotoxy(18,7); printf("Control no lineal de un servomotor D.C.");
gotoxy(15,9); printf("****************************************");
gotoxy(21,11);printf("tiempo : t=%+5.3f",t);
gotoxy(21,13);printf("referencia : r=%+5.3f",r*180./M_PI);
gotoxy(21,15);printf("se~nal de control: u=%+5.3f",u);
gotoxy(21,17);printf("posicion : y=%+5.3f",y*180./M_PI);
gotoxy(15,21);printf("****************************************");
if(kbhit()) if(getch()==27) break;
}
ant = act;
}
EnviarVoltage(Ofst);
out = fopen("disnl.out","wt");
for (int i=0; i<n/5; i++)
fprintf(out,"%10f %10f %10f %10f\n",
i*5*T, rb[i], yb[i], ub[i]);
delete rb, yb, ub;
fclose(out);
}

8.7.11. Resultados Experimentales


La figura 8.10 muestra el resultado experimental obtenido con el sistema
de control de posición no lineal. La trayectoria de referencia posee la forma:

r(t) = −3e−2t + 2sen(2t) + 2


444 Control No Lineal


Los polos√del sistema lineal equivalente se ubicaron en p1 = −10 2 − 10i y
p2 = −10 2 + 10i. La ecuación caracterı́stica correspondiente a tales polos
es:
s2 + 28,2843s + 300 = 0
de donde obtenemos: K1 = 28,2843 y K2 = 300. Podemos observar en la
figura 8.10 que la respuesta presenta sobreimpulso nulo, tiempo de estabi-
lización menor que 0.4 s y error en estado estable nulo.
300
Posición (grados)

200

100

−100
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Tiempo en segundos

1.5
Señal de control (voltios)

0.5

−0.5

−1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Tiempo en segundos

Figura 8.10: Resultado experimental del sistema de control de posición no


lineal para el servomotor D.C. accionando una carga no lineal.

8.8. Problemas Resueltos


En la sección problemas resueltos de los capı́tulos 4 al 8, la solución a los
problemas se encuentra, según el caso, en uno o más archivos con extensión
m escritos en código MATLAB.

Problema 8.1

El proceso péndulo no lineal mostrado en la figura 2.3, cuyo modelo se des-


cribe en el ejemplo 2.2, puede rotar libremente alrededor del pivote gracias a
8.8 Problemas Resueltos 445

la acción de un torque externo U . En dicha figura Bp =1.3366 N-m/rad/s es


la fricción viscosa rotacional en el punto pivote, Lo =1.6350 m es la longitud
de la varilla de peso despreciable, Mo =0.5 kg es la masa de la esfera y g=9.81
m/s2 es la aceleración de la gravedad. La salida de interés es la posición an-
gular θ del péndulo. Para la situación mostrada en la figura 2.3(a), diseñar
un sistema de control no lineal empleando el método de linealización por
realimentación. Los eigenvalores del sistema lineal equivalente realimentado
deben estar ubicados en 8 ± 8i.
Solución: El proceso en estudio es univariable; es decir, una sola entrada
U actuando sobre el proceso y una sola salida: la posición angular. En la
figura 2.3(a) el torque resultante alrededor del pivote es:

U = Mo L2o Θ̈ + Bp Θ̇ + Mo gLo senΘ (8.65)

que es una ecuación no lineal debido al término senΘ. Seleccionando como


variables de estado X1 = Θ, X2 = Θ̇ y como salida Y = X1 , se obtiene:

Ẋ1 = X2
g Bp 1
Ẋ2 = − senX1 − X2 + U
Lo Mo L2o Mo L2o
Y = X1 = h

cuya representación compacta resulta: Ẋ = f, donde:




 
X1 f1 X2
X= ; f= = g B 1
X2 f2 − Lo senX1 − Mo pL2 x2 + Mo L2o
U
o

La ecuación anterior posee una forma normal. Por consiguiente, empleando


la siguiente ley de control:

U = BX2 + M LgsenX1 + M L2 V

obtenemos Ẋ2 = V . Definiendo e = r − X1 , donde r es una trayectoria de


referencia y seleccionando la señal V como:

V = r̈ + K1 ė + K2 ë = Ẋ2

entonces la ecuación del sistema lineal equivalente realimentado resulta:

ë + K1 ė + K2 e = 0; (s2 + K1 s + K2 )e(s) = 0
446 Control No Lineal

Si las raı́ces del sistema realimentado son s1,2 = −8 ± 8i, entonces:

(s + 8 + 8i)(s + 8 − 8i) = s2 + 16s + 128; K1 = 16; K2 = 128

La señal V viene a ser:

V = r̈ + K1 ṙ + K2 r − K1 X1 − K2 X2 ; Y = X1 = Θ

La ley de control toma la forma siguiente:

u = BX2 + M LgsenX1 + M L2 (r̈ + K1 ṙ + K2 r) − M L2 (K2 X1 + K2 X2 )

El programa p8 1.m simula el sistema de control no lineal y los resultados


se muestran en la figura 8.11.
% p8_1.m SOLUCION DEL PROBLEMA 8.1 (PENDULO NO LINEAL)
clear all
% PARAMETROS DEL PROCESO
Bp=1.3366; Lo=1.6350; Mo=0.5; g=9.81;
% POLOS DEL SISTEMA REALIMENTADO LINEALIZADO: -5 y -5
pol = conv([1 8+8i],[1 8-8i]); % POLINOMIO CARACTERISTICO
K1 = pol(2); K2 = pol(3);
% CONDICIONES INICIALES:
r(1) =0; r(2)=0; r(3)=0; r(4)=0;
dr(1) =0; dr(2)=0; dr(3)=0; dr(4)=0;
ddr(1)=0; ddr(2)=0; ddr(3)=0; ddr(4)=0;
X1(1) =0; X1(2)=0; X1(3)=0; X1(4)=0;
X2(1) =0; X2(2)=0; X2(3)=0; X2(4)=0;
MM=1000; T = 0.01;
% LAZO DE CONTROL
for k=4:MM
r(k) = 2*sin(0.8*k*T); % trayectoria de referencia
% APROXIMACION DE LAS DERIVADAS
dr(k) = (r(k) + 3*r(k-1) - 3*r(k-2) - r(k-3))/(6*T);
ddr(k) = (dr(k) + 3*dr(k-1) - 3*dr(k-2) - dr(k-3))/(6*T);
U(k) = Bp*X2(k)+Mo*Lo*g*sin(X1(k))+Mo*Lo^2*(ddr(k)+K1*dr(k)...
+K2*r(k)-K2*X1(k)-K1*X2(k));
% PROCESO NO LINEAL DE ORDEN 2 DICRETIZADO
X1(k+1) = X1(k) + T*X2(k);
X2(k+1) = X2(k) + T*(-(Bp/Mo*Lo^2)*X2(k)-(g/Lo)*sin(X1(k))...
+(1/Mo*Lo^2)*U(k));
end % fin del lazo de control
% GRAFICOS
ejex = linspace(0,MM*T,MM-3);
8.8 Problemas Resueltos 447

subplot(2,1,1)
plot(ejex,r(4:MM),ejex,X1(4:MM)); grid
ylabel(’Posicion (radianes)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,U(4:MM)); grid
ylabel(’Se~nal de control (N)’)
xlabel(’Tiempo en segundos’)
print -f -deps p8_1 % CREA EL ARCHIVO p8_1.eps

4
Posición (radianes)

−2

−4
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

400
Señal de control (N)

200

−200

−400

−600
0 1 2 3 4 5 6 7 8 9 10
Tiempo en segundos

Figura 8.11: Trayectoria de posición del péndulo (problema de seguimiento)


y señal de control correspondiente al problema 8.1

Problema 8.2

La figura 2.2 muestra dos tanques idénticos colocados en cascada. La sección


horizontal A=9 m2 de cada tanque es constante. El objetivo de control es
controlar la altura H2 empleando el flujo Qo como señal de control. Diseñar
el sistema de control no lineal empleando el método de linealización por
realimentación. El flujo de control no debe sobrepasar los 5 m3 /s y el tiempo
de estabilización de la salida debe ser menor que 20 s con error en estado
estable prácticamente nulo. Seleccionar apropiados tiempo de muestreo y
eigenvalores del sistema realimentado.
448 Control No Lineal

Solución: En el ejemplo 2.1 se derivó el modelo no lineal del proceso con


γ=0.4 (una constante que depende de la geometrı́a del orificio), ρ=1.23
(la densidad del lı́quido) y g=9.81 m/s2 (la aceleración de la gravedad),
resultando:

Ḣ = f + gU ; Y = h(H) = H2 ; U = Qo

donde: f = [f1 f2 ]T , g = [g1 g2 ]T , siendo:


√ √
γ ρg  γ ρg   1
f1 = − H1 ; f2 = [ H1 − H2 ]; g1 = ; g2 = 0
A A A

Operando con c = γ ρg/A obtenemos:

h(H) = H2 ; Lf h(H) = ∇(H)f = f2


c
Lg Lf h(H) = ∇(f2 ) g = √ = 0
2A H1
Luego, el sistema es completamente linealizable dado que su grado relativo
es dos. Seguimos operando:

2 c2 H1
Lf h(H) = ∇(Lf h(H)) f = ∇f2 f = √ −2
2 H2

c2 
Lg L2f h(H) = ∇(L2f h(H)) g =4A H1 H2
1
El nuevo conjunto de variables de estado resulta:
 
z1 = φ1 (H) = h(H) = H2 ; z2 = φ2 (H) = Lf h(H) = c H1 − c H2

Los estados originales en función de los nuevos estados vienen a ser:


z2 √ 2
H2 = φ−1
1 (z) = z1 ; H1 = φ−1
2 (z) = ( + z1 )
c
y la ecuación de estado del nuevo sistema resulta:

ż1 = z2

z˙2 = L2f h(φ−1 (z)) + Lg L2f h(φ−1 (z)) = b(φ−1 (z)) + a(φ−1 (z))U
donde:

−1 c2 cz2 c2
b(φ (z)) = √ −1 ; a(φ−1 (z)) = √ √
2 z1 4A z1 (z2 /c + z1 )
8.8 Problemas Resueltos 449

Definiendo una señal equivalente V con Y = H2 :

V = Ÿ = r̈ + K1 ė + K2 e; e=r−Y

se da lugar a la siguiente ecuación caracterı́stica del sistema linealizado re-


alimentado:
ë + K1 ė + K2 e = 0
Si las raı́ces deseadas del sistema son s1,2 = −0,6, entonces:

(s + 0,6)(s + 0,6) = s2 + 1,25s + 0,39; K1 = 1,25; K2 = 0,39

La señal V , con Y = H2 = z1 e Ẏ = z˙1 = z2 , toma la forma final:

V = r̈ + K1 ṙ + K2 r − K2 z1 − K1 z2

y la ley de control resulta: U = a1 (V − b). El programa p8 2p9.m simula el


sistema de control no lineal. Los resultados se muestran en la figura 8.12.
% p8_2p9.m DISE~NO DEL SISTEMA DE CONTROL NO LINEAL
% PARA EL PROCESO HIDRAULICO (PROBLEMA 8_2)
clear all
% PARAMETROS DEL PROCESO NO LINEAL
A=9; gamma=0.4; rho=1.23; g=9.81; c=gamma*sqrt(rho*g)/A;
% POLOS DEL SISTEMA LINEALIZADO REALIMENTADO: -8-8i y -8+8i
pol = conv([1 0.6],[1 0.65]); % POLINOMIO CARACTERISTICO
K1 = pol(2); K2 = pol(3);% K1=K2=0.6; T=0.01-0.07 Ts=20
% CONDICIONES Y PARAMETROS INICIALES
r(1) =0; r(2)=0; r(3)=0; r(4)=0;
dr(1) =0; dr(2)=0; dr(3)=0; dr(4)=0;
ddr(1)=0; ddr(2)=0; ddr(3)=0; ddr(4)=0;
H1(4)=2; H2(4)=2;
MM=1000; T = 0.05;
% LAZO DE CONTROL
for k=4:MM
r(k) = 3; % TRAYECTORIA DE REFERENCIA
% APROXIMACION DE LAS DERIVADAS
dr(k) = (r(k) + 3*r(k-1) - 3*r(k-2) - r(k-3))/(6*T);
ddr(k) = (dr(k) + 3*dr(k-1) - 3*dr(k-2) - dr(k-3))/(6*T);
% CONVERSION DE ESTADOS
z1(k)=H2(k);
z2(k)=c*(sqrt(H1(k))-sqrt(H2(k)) );
% LEY DE CONTROL
V(k) = ddr(k) + K1*dr(k) + K2*r(k) - K2*z1(k) - K1*z2(k);
450 Control No Lineal

b(k) = (c^2/2)*( c*z2(k)/sqrt(z1(k))-1 );


a(k) = c^2/( 4*A*sqrt(z1(k))*(z2(k)/c+sqrt(z1(k)) ) );
U(k) = (V(k)-b(k))/a(k);
Q=5;
if(U(k) > Q)
U(k)=Q;
elseif(U(k) < -Q)
U(k)=Q;
end
% PROCESO NO LINEAL DE SEGUNDO ORDEN DISCRETIZADO
H1(k+1) = H1(k) + T*(-c*sqrt(H1(k)) + (1/A)*U(k));
H2(k+1) = H2(k) + T*(c*sqrt(H1(k)) - c*sqrt(H2(k)) );
end % fin del lazo de control
% GRAFICOS
ejex = linspace(0,MM*T,MM-3);
subplot(2,1,1)
plot(ejex,r(4:MM),ejex,H2(4:MM)), grid
ylabel(’Nivel (m)’)
xlabel(’Tiempo en segundos’)
subplot(2,1,2)
plot(ejex,U(4:MM)), grid
ylabel(’Flujo de control (m^3/s)’)
xlabel(’Tiempo en segundos’)
print -f -deps p8_2p9 % crea p8_2p9.eps

Problema 8.3

Determinar si es posible una linealización exacta de los procesos péndulo


invertido no lineal y grúa-puente descritos en las secciones 3.1 y 3.2 respec-
tivamente. Se sabe que la salida es la posición x3 .
Solución: La ecuación de estado que describe al péndulo no lineal es:
 
  x2
ẋ1  M2 (sin x1 )(cos x1 )x22 −Bx (cos x1 )x4 −(M1 +J2 )g(sin x1 )+Kx (cos x1 )KA u 
 ẋ2   (M2 (cos2 x1 )−(M1 +J2 )J1 )/M2

 = 
 ẋ3   x4 
 
ẋ4 M22 g(sin x1 )(cos x1 )−J1 M2 (sin x1 )x22 +J1 Bx x4 −J1 Kx KA u
M22 (cos2 x1 )−(M1 +J2 )J1

De la ecuación anterior de orden n=4 es fácil deducir las expresiones de las


funciones vectoriales f (x) y g(x). Un proceso es exactamente linealizable
8.9 Problemas Propuestos 451

3.5

Nivel (m)
2.5

2
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

5
Flujo de control (m^3/s)

−5
0 5 10 15 20 25 30 35 40 45 50
Tiempo en segundos

Figura 8.12: Nivel de salida y flujo de control para el problema 8.2.

si su grado relativo es igual al orden del proceso. Empleando el criterio de


grado relativo en el proceso péndulo obtenemos:

h(x) = x4

Lf h(x) = ∇h(x) f = f4 (x)


Lg Lf h(x) = ∇f4 (x) g(x) = 0
Luego, el grado relativo resulta r = 2, que es menor que el orden del proceso:
n = 4. Por consiguiente, el proceso péndulo invertido no es exactamente
linealizable. Lo mismo podemos aseverar para el proceso grúa-puente.

8.9. Problemas Propuestos


Problema 8.4

La figura 3.30 muestra el proceso servomotor con carga no lineal descrito en


la sección 3.3, en donde el eje de salida del mecanismo de reducción está su-
jeto a la carga no lineal mediante una junta flexible que puede ser modelada
como un resorte rotacional de constante Kω =0.5 N/m/s. Diseñar un sistema
452 Control No Lineal

de control no lineal que emplee el método de linealización por realimentación


para controlar la posición angular de la carga no lineal. Las especificaciones
de diseño son: error en estado estacionario nulo y tiempo de establecimiento
menor que 1 s para una señal de referencia arbitraria. Seleccionar el tiempo
de muestreo y los eigenvalores apropiados del sistema lineal equivalente re-
alimentado. Considere dos casos: (a) cuando la inductancia de armadura es
despreciable, y (b) cuando no lo es

Problema 8.5

Demostrar las propiedades de bilinealidad, anticonmutatividad y de Jacobi


establecidas en el lema 8.1 y luego demostrar el teorema 8.2.

Problema 8.6

La figura 3.31 muestra el proceso servomotor con carga no lineal descrito


en la sección 3.3, en donde la carga no lineal posee ahora dos grados de
libertad con Lo = 2L1 /3 y Mo =0.02 kg. La unión de la carga con el eje
del servomotor no es flexible. Las ecuaciones que describen la dinámica del
sistema son materia del problema 3.12. Determinar si el proceso descrito es
completamente linealizable. Si lo es, diseñar un sistema de control no lineal
con linealización de la realimentación para controlar simultáneamente las
posiciones θ y τ con mı́nimo tiempo de estabilización y mı́nimo sobreimpulso.
Considerar dos casos: (a) cuando la inductancia de armadura es despreciable,
y (b) cuando no lo es.
Bibliografı́a

[1] Omar A. Tupayachi-Calderón, Control No Lineal de Servosistemas.


Aplicación: Manipulador de Robot de un Grado de Libertad. Tesis para
optar el Tı́tulo de Ingeniero Electrónico, Facultad de Ingenierı́a Eléctri-
ca y Electrónica de la Universidad Nacional de Ingenierı́a, Perú, 1995-I,
Capı́tulo III.

[2] Alexander L. Ponce-Dioses , Control de Servo Sistemas No Lineales


Usando Redes Neuronales. Tesis para optar el Tı́tulo de Ingeniero Elec-
trónico, Facultad de Ingenierı́a Eléctrica y Electrónica de la Universidad
Nacional de Ingenierı́a, Perú, 1996-II, Capı́tulo VI.

[3] Katsuhiko Ogata, Sistemas de Control en Tiempo Discreto. Prentice


Hall Hispanoamericana S.A., México, segunda edición, 1996

[4] Charles L. Phillips y H. Troy Nagle, Digital Control System Analy-


sis and Design. Prentice Hall, Englewood Cliffs, New Jersey, segunda
edición, 1990

[5] N. Rao Sripada y D. Grant Fisher, “Improved Least Squares Identifi-


cation”. Int. J. Control, vol. 46, no. 6, pp. 1889–1913, Dic. 1987.

[6] M. G. Sofonov, Stability and Robustness of Multivariable Feedback Sys-


tems. MA, London, UK: The MIT Press Cambridge, 1980.

[7] R. De Keyser, “A Gentle Introduction to Model Based Predictive Con-


trol”. In PADI2 International Conference on Control Engineering and
Signal Processing, Piura, Perú, 1998.

[8] Eduardo F. Camacho y Carlos Bordons, Model Predictive Control.


Springer-Verlag London Limited 1999.
454 BIBLIOGRAFÍA

[9] Manfred Morari y Evanghelos Zafiriou, Robust Process Control. PTR


Prentice Hall, Englewood Cliffs, New Jersey 07632, 1989.

[10] R. Canales Ruiz y R. Barrera Rivera, Análisis de Sistemas Dinámicos


y Control Automático. Editorial Limusa, México, 1977.

[11] A. Rojas-Moreno, Design of Self-tuning Controllers for Processes Hav-


ing Multiple Unknown Time-varying Delays, Ph.D. Thesis, Utah State
University, Logan, UT, 1995.

[12] Rolf Isermann, Digital Control Systems, Volume 1, Springer-Verlag, se-


gunda edición, Germany, 1989

[13] Jean-Jacques E. Slotine y Weiping Li, Applied Nonlinear Control, Pren-


tice Hall, Englewood Cliffs, New Jersey 07632, 1991.

[14] Alan V. Oppenheim y Alan S. Willsky, Señales y Sistemas Prentice-


Hall Hispanoamericana, S.A., México-Englewood Cliffs-Londres-Sidney
y otras, 1983.

[15] Gene H. Hostetter, Digital Control System Design, Holt, Rinehart and
Winston, Inc., New York, Chicago, San Francisco, Philadelphia, Mon-
treal, Toronto, London, Sydney, Tokyo, 1988.

[16] William H. Press, Brian P. Flannery y Saul A. Teukolosky, Numerical


Recipes in C, Cambridge University Press, Cambridge, 1988.

[17] Bernard Friedland, Control System Design. An Introduction to State-


Space Methods, McGraw-Hill, Inc., New York St. Louis y otras, 1986.

[18] Murray R. Spiegel, Análisis Vectorial, serie de compendios Schaum,


McGraw-Hill México Panamá Bogotá y otras, 1973 (o ediciones más
recientes).

[19] Murray R. Spiegel, Cálculo Superior, serie de compendios Schaum,


McGraw-Hill México Panamá Bogotá y otras, 1973 (o ediciones más
recientes).

[20] Donald M. Wiberg, Espacio de Estado y Sistemas Lineales, serie de


compendios Schaum, McGraw-Hill México Panamá Bogotá y otras,
1973 (o ediciones más recientes).
BIBLIOGRAFÍA 455

[21] Frank Ayres Jr., Matrices, serie de compendios Schaum, McGraw-Hill


México Panamá Bogotá y otras, 1973 (o ediciones más recientes).

[22] Murray R. Spiegel, Transformada de Laplace, serie de compendios


Schaum, McGraw-Hill México Panamá Bogotá y otras, 1973 (o edi-
ciones más recientes).

[23] MathWorks, Inc., MATLAB Reference Guide, Prentice Hall, Englewood


Cliffs, New Jersey, primera edición, 1998.

[24] MathWorks, Inc., SIMULINK User’s Guide, Prentice Hall, Englewood


Cliffs, New Jersey, primera edición, 1996.

[25] Lab-PC+ User Manual, National Instruments Corporation, Part Num-


ber 320502B-01, edición de agosto de 1994.
Índice alfabético

Actuador, 231 Control no lineal de un servosis-


Amplificador de potencia, 160 tema de posición, 424
Control predictivo
del servomotor no lineal, 306
Campo vectorial suave, 408
disturbio del proceso en el, 289
Campos vectoriales
ley de control con restriccio-
integrables, 412
nes del, 304
involutivos, 413
ley de control del, 303
CMI:
modelo CARIMA del, 290
control con modelo interno, 351
modelo del predictor en el, 292
Codificador óptico, 159
modelo del proceso del, 289
codificador óptico, 235 modelo paralelo en el, 292
Control óptimo modelo serie/paralelo en el, 293
concepto, 126 predicción del disturbio en el,
Control óptimo cuadrático, 126 294
de la grúa puente, 181 salida del modelo en el, 290
del péndulo invertido, 147 Control predictivo basado en mo-
discreto, 126 delos, 285
estacionario, 129 principios del, 286
no estacionario, 127 Control predictivo:respuesta forza-
Control adaptivo de un servomo- da del, 300
tor no lineal, 224 Control predictivo:respuesta libre
Control con modelo interno del, 299
estructura del, 351 Control robusto
estructuras alternativas del, 353 para procesos estables, 358
incertidumbres del modelo en para procesos inestables, 370
el, 355 Control robusto de un servomotor
modelo del proceso en el, 355 no lineal, 376
representaciones del, 351 Controlabilidad, 66
Control matricial dinámico, 286 Controlador óptimo H2 : q̃H (z), 372
ÍNDICE ALFABÉTICO 457

Controlador óptimo cuadrático ecuación de, 33, 58


proporcional, 221 espacio de, 33, 55
proporcional integral, 223 variables de, 33
Controlador óptimo cuadrático H2 : vector de, 33
q̃H (z), 360 Estimación de estados, 221
para entradas tı́picas, 361
Controlador CMI q̃(z), 362, 373 Filtro de Kalman, 221
Controlador predictivo, 298 Filtro discreto CMI, 363, 374
función de costo del, 298 Forma bilineal, 21
objetivo del, 298 Forma canónica, 60
parámetros de diseño del, 298 controlable, 60
Corchete de Lie, 409 de Jordan, 62
Corchetes de Lie diagonal, 61
propiedades de los, 410 observable, 61
Forma canónica de Jordan, 20
Definición de Matrices, 21 Forma cuadrática, 20
Definición de matrices, 21 Forma normal, 416
Derivada de Lie, 408 Frobenius
Determinante, 5 teorema de, 413
de una matriz, 5 Función de costo, 126
propiedades, 6 cuadrática discreta, 127
Diagonalización de matrices, 19 mı́nima, 129
Difeomorfismo, 410 Función de transferencia de pulso,
local, 410 53
Discretización directa, 43
Grúa-puente, 79
Ecuación caracterı́stica, 34 modelo, 79
Ecuación de Riccati, 128, 129 Grado relativo, 415
Ecuación de salida, 33, 58
Ecuación de transferencia, 34 Hardware del sistema de control,
Ecuación del observador no lineal, 155, 314, 377, 443
422
Independencia de vectores, 16
Eigenvalor, 19
Interfaz Lab-PC+, 161, 236
Eigenvector, 19
Espacio de estado discreto, 55 Jacobiano, 15
Estabilidad interna, 351
Estabilidad Robusta, 364 Ley de control óptima, 127, 140
Estabilidad robusta, 374 Ley de control no lineal, 417
Estado, 33 Linealización de procesos, 33
458 ÍNDICE ALFABÉTICO

Linealización exacta, 417 hermitiana, 5


condiciones para, 420 identidad, 5
Linealización por realimentación, indefinida, 21
407 integral de una, 14
inversa de una, 6
Mı́nimos cuadrados recursivo nilpotente, 5
algoritmo, 211 norma de una, 18
método de los, 210 normal, 5
método mejorado de los, 213 orden de una, 1
mejorado, algoritmo, 213 ortogonal, 5
Matrices, 3 periódica, 5
de ponderación, 132 rango de una, 18
diagonalización de, 19 semidefinida negativa, 21
iguales, 3 semidefinida positiva, 21
jacobianas, 34 simétrica, 5
lema de inversión de, 7 singular, 5
multiplicación de, 3 transpuesta, 4
que conmutan, 3 traza de una, 4
similares, 19 triangular inferior, 4
suma de, 3 triangular superior, 4
Matriz, 1 unitaria, 5
antihermitiana, 5 Modelando procesos no lineales, 209
antisimétrica, 5 Modelo CARIMA, 290
cero, 3 Muestreo y reconstrucción, 40
cuadrada, 4
de control, 34 Nomenclatura, 1
de disturbios, 34
de estado, 34 Observabilidad, 68
de observabilidad generaliza- Observador óptimo cuadrático, 138
da, 420 Observadores no lineales, 420
de salida, 34 Operación con vectores, 16
de transferencia, 34 Operaciones con matrices, 3
definida negativa, 21
definida positiva, 21 Péndulo invertido, 71
derivada de una, 14 control óptimo del, 147
diagonal, 4 modelo, 72
eigenvalor de una, 19 Plano de fase, 33
eigenvector de una, 19 Predictor, 292
forma canónica de Jordan, 20 Prefiltro
ÍNDICE ALFABÉTICO 459

diseño del, 359 fórmulas notables, 50


Proceso estable e inestable, 35 inversa, 51
Proceso multivariable, 33 propiedades, 48
Proceso univariable, 34
Procesos con tiempo muerto, 65 Valor absoluto, 8
Puntos de equilibrio, 33 Variables residuales, 34
Vector, 2
Regulador óptimo cuadrático de información, 210
proporcional, 131 de parámetros, 210
proporcional integral, 141 derivada de un, 15
Rendimiento nominal, 359, 372 integral de un, 15
Rendimiento robusto, 365, 375 norma de un, 17
Respuestas libres y forzadas, 299 Vectores, 16
Retención de orden cero, 43 independencia de, 16
operación con, 16
Sensor(es) de posición, 158, 235 ortonormales, 16
Servomotor DC no lineal, 86
modelo, 86
Sistema causal y estrictamente causal,
355
Sistema de control adaptivo, 208
con autosintonización, 208
Software de control, 162, 237, 314,
378, 443
Solución de la ecuación de estado,
55, 58

Teorema del muestreo, 42


Tipo de sistemas, 359
Tipos de matrices, 4
Transformación no lineal de esta-
dos, 411
Transformada de Laplace, 27
fórmulas notables, 27
inversa, 27
propiedades, 27
Transformada Z, 47
de secuencias, 49
definición, 47

Potrebbero piacerti anche