0% encontró este documento útil (0 votos)
106 vistas

Parra Qa PDF

Este trabajo de tesis trata sobre el diseño e implementación de controladores PID industriales. Presenta el algoritmo PID mejorado y su implementación discreta, así como métodos para sintonizar controladores PID. Además, modela un brazo robótico de 1 grado de libertad y un sistema de tanque de agua para validar experimentalmente algoritmos de control PID, adaptativo y difuso implementados en tiempo real.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
106 vistas

Parra Qa PDF

Este trabajo de tesis trata sobre el diseño e implementación de controladores PID industriales. Presenta el algoritmo PID mejorado y su implementación discreta, así como métodos para sintonizar controladores PID. Además, modela un brazo robótico de 1 grado de libertad y un sistema de tanque de agua para validar experimentalmente algoritmos de control PID, adaptativo y difuso implementados en tiempo real.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 110

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

DISEÑO E IMPLEMENTACIÓN DE
CONTROLADORES PID INDUSTRIALES

TESIS

PARA OPTAR EL GRADO DE MAESTRO EN CIENCIAS


MENCIÓN: AUTOMÁTICA E INSTRUMENTACIÓN

PRESENTADA POR:

ANÍBAL ARTURO PARRA QUISPE


LIMA - PERU

2007
A mis Padres Anı́bal y Fausta,
mi Esposa Yaqueline,
y mis Hijos Arturo, Anı́bal y Marı́a.
AGRADECIMIENTO

Quisiera expresar mi agradecimiento al Dr. Arturo Rojas Moreno, mi anterior


asesor y profesor, por su apoyo y por sentar las bases de una formación académica
sólida. Igualmente mi agradecimiento a mi actual asesor, el M.S. Raúl Benites Saravia,
por su aliento constante y asesorı́a en los últimos tramos del presente trabajo de tesis.

A la Sección de Post Grado de la FIEE-UNI, por brindarme las facilidades del


caso para poder desarrollar este trabajo de investigación.

A los buenos profesores de la Maestrı́a en Automática e Instrumentación. Las


clases impartidas por los mismos me han permitido tener un concepto claro de los
sistemas industriales automatizados.
UNIVERSIDAD NACIONAL DE INGENIERIA
Facultad de Ingenierı́a Eléctrica y Electrónica

Diseño e Implementación de Controladores PID Industriales

TESIS

Para optar el grado de Maestro en Ciencias


Mención: Automática e Instrumentación

PRESENTADA POR:

Anı́bal Arturo Parra Quispe

LIMA – PERÚ

RESUMEN

Este trabajo de tesis trata principalmente sobre el diseño e implementación de


controladores PID, los cuales se emplean masivamente en la industria para controlar
una gran variedad de procesos que trabajan en un rango de operación pequeño. Es
decir, procesos cuyas salidas controladas siguen a una señal de referencia (o “set point”)
constante. Para tal punto de operación, la dinámica del proceso se puede considerar
lineal. De hecho el algoritmo de control PID es básicamente lineal.

Por su aplicación masiva, los controladores PID han recibido y siguen recibiendo
especial atención por parte de los investigadores, ingenieros y técnicos de operación de
procesos. En este trabajo, el algoritmo de control básico se modifica para lograr un
mejor rendimiento del sistema de control a lazo cerrado.

El algoritmo PID también puede ser parte de una matriz de compensación


empleada para controlar un proceso multivariable, tal como se muestra en la ecuación
(6.13) de la sección 6.2. Dicho compensador, el cual posee la forma de un controlador
MIMO PID, también se implementa en este trabajo de tesis. MIMO es la abreviatura

iv
de “Multiple-Input Multiple-Output”(múltiples entradas y múltiples salidas).

Los controladores PID mencionados pierden eficiencia y/o capacidad de control


cuando se aplican a procesos tremendamente no lineales. Afortunadamente, procesos
de este tipo son los menos, mientras que aquellos apropiados para ser controlados
con controladores PID son más del 90 % del total [3]. Sin embargo, para propósitos de
comparación, esta tesis también implementa un algoritmo de control adaptativo, el cual
agrega al sistema de control realimentado la capacidad de adaptarse automáticamente
y en lı́nea a situaciones cambiantes en el entorno del sistema de control.

Este trabajo de tesis también presenta la introducción de inteligencia artificial en


el sistema de control. Especı́ficamente se implementa un sistema de control de posición
difuso.

Para validar y compararlos experimentalmente los algoritmo de control descri-


tos arriba, operando en tiempo real, en este trabajo se implementan y discuten las
aplicaciones siguientes:

Control PID de un brazo robótico de 1GDL (1 Grado de Libertad).

Control PID multilazo del sistema tanque de agua.

Control MIMO PID del sistema tanque de agua.

Control no lineal adaptativo de un brazo robótico de 1GDL.

Control difuso de un brazo robótico de 1GDL.

En todos los casos presentados, la o las salidas controladas cumplen las especi-
ficaciones de diseños establecidas previamente.

v
UNIVERSIDAD NACIONAL DE INGENIERIA
Facultad de Ingenierı́a Eléctrica y Electrónica

Design and Implementation of Industrial PID–Controllers

THESIS

To obtain the Degree of Master of Science


Mention: Automatic and Instrumentation

BY:

Anı́bal Arturo Parra Quispe

LIMA – PERÚ

ABSTRACT

This thesis work deals basically with the design and implementation of PID con-
trollers, which are used extensively in the industry to control a great amount of pro-
cesses working in small operation ranges. That is, processes whose controlled outputs
track to a constant set point. For such ranges, the process dynamics can be assumed
to be linear. In fact, the PID algorithm is linear.

Because of its extensive use, PID controllers have been received special con-
sideration from researchers, engineers and process operators. In this work, the basic
PID control algorithm is modified in order to achieve a better performance of the
corresponding feedback control system.

The PID algorithm can also be part of a compensator matrix used to control
a MIMO (Multiple-Input Multiple-Output) process (see equation (6.13), section 6.2).
Such a compensator, which possesses the form of a MIMO PID controller, is also
implemented.

The PID controllers mentioned above, can lose performance and control capa-

vi
bility when they are applied to nonlinear processes. Fortunately, processes of this kind
are not numerous compared with processes presenting a linear behavior. In fact, about
90 % of the controllers operating in plants are PID. However, for comparison purposes,
this work also implement an adaptive control algorithm which possesses the on-line
adaptation capability of its parameters in the presence of disturbing signals, industrial
noise or changing situations of the control system.

This thesis also presents the introduction of artificial intelligence in the control
system. Specifically, a position fuzzy control system is also implemented.

In order to validate through experimentation the control algorithms described


above, the following applications are implemented and discussed:

PID control of a robotic arm of 1DOF (1 Degree of Freedom).

PID multiloop control of a tank water system.

PID MIMO control of a tank water system.

Non linear adaptive control of a robotic arm of 1DOF.

Fuzzy control of a robotic arm of 1DOF.

In all the developed applications, the controlled outputs meet the design speci-
fications previously established.

vii
TABLA DE CONTENIDO

LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

LISTA DE TABLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

CAPÍTULO 1.

INTRODUCCIÓN 6

1.1. Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4. Organización de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . 8

CAPÍTULO 2.

EL ALGORITMO PID MEJORADO 10

2.1. Estructuras PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2. El Algoritmo PID Mejorado . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3. El Algoritmo PID Discreto . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4. Respuesta Transitoria de los Procesos . . . . . . . . . . . . . . . . . . . 15

2.4.1. Respuesta Transitoria en el Tiempo . . . . . . . . . . . . . . . . 15

2.4.2. Respuesta Transitoria en Frecuencia . . . . . . . . . . . . . . . . 19

2.5. Sintonización de Controladores PID . . . . . . . . . . . . . . . . . . . . 21

2.5.1. Método de la Curva de Reacción del Proceso . . . . . . . . . . . 22

viii
2.5.2. Método de Kessler . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5.3. Método de la Respuesta Crı́tica de ZN . . . . . . . . . . . . . . 23

CAPÍTULO 3.

MODELADO DE PROCESOS 25

3.1. Proceso: Brazo Robótico de 1 GDL . . . . . . . . . . . . . . . . . . . . 25

3.2. Proceso: Tanque de Agua . . . . . . . . . . . . . . . . . . . . . . . . . 32

CAPÍTULO 4.

IMPLEMENTACIÓN EN TIEMPO REAL 39

4.1. Estructura en Tiempo Real . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2. El Sistema de Control del Brazo Robótico de 1GDL . . . . . . . . . . . 40

4.2.1. Generación de la señal PWM . . . . . . . . . . . . . . . . . . . 41

4.2.2. El Amplificador de Potencia . . . . . . . . . . . . . . . . . . . . 41

4.3. El Sistema de Control del Tanque . . . . . . . . . . . . . . . . . . . . . 45

CAPÍTULO 5.

CONTROL PID 48

5.1. Control PID del Tanque . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.2. Control PID del Brazo Robótico de 1GDL . . . . . . . . . . . . . . . . 51

CAPÍTULO 6.

CONTROL PID MULTIVARIABLE 57

6.1. Diseño de un Controlador MIMO PID . . . . . . . . . . . . . . . . . . 57

6.2. Control MIMO PID del Tanque . . . . . . . . . . . . . . . . . . . . . . 60

CAPÍTULO 7.

CONTROL ADAPTATIVO 64

7.1. Configuración de un SCAMR . . . . . . . . . . . . . . . . . . . . . . . 64

ix
7.2. Diseño del Controlador Adaptativo . . . . . . . . . . . . . . . . . . . . 66

7.2.1. La Ley de Adaptación . . . . . . . . . . . . . . . . . . . . . . . 67

7.2.2. La Zona–Muerta evita el Desplazamiento de Parámetros . . . . 68

7.3. Controlador Adaptativo Para el Brazo Robótico . . . . . . . . . . . . . 70

CAPÍTULO 8.

CONTROL DIFUSO 75

8.1. El Controlador “Fuzzy” . . . . . . . . . . . . . . . . . . . . . . . . . . 75

8.2. Control Difuso del Brazo Robótico de 1GDL . . . . . . . . . . . . . . . 76

8.2.1. Proceso de Fuzzyfication . . . . . . . . . . . . . . . . . . . . . . 77

CAPÍTULO 9.

CONCLUSIONES Y RECOMENDACIONES 83

APÉNDICE A.

LISTADO DE PROGRAMAS 86

A.1. Programas del Capı́tulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . 86

A.2. Programas del Capı́tulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . 87

A.3. Programas del Capı́tulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . 88

A.4. Programas del Capı́tulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . 93

A.5. Programas del Capı́tulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . 94

A.6. Programas del Capı́tulo 8 . . . . . . . . . . . . . . . . . . . . . . . . . 96

BIBLIOGRAFÍA.

99

x
LISTA DE FIGURAS

2.1. Sistema de control realimentado. . . . . . . . . . . . . . . . . . . . . . . . 11

2.2. Respuesta al escalón de un proceso autoregulado. . . . . . . . . . . . . . . 15

2.3. Determinación de K, L y τ en un proceso autoregulado. . . . . . . . . . . 16

2.4. Respuesta al escalón de un proceso no autoregulado. . . . . . . . . . . . . 17

2.5. Determinación de K, L y R en un proceso no autoregulado. . . . . . . . . 17

2.6. Respuesta al escalón de un proceso oscilatorio. . . . . . . . . . . . . . . . . 18

2.7. Determinación de d y Tp en un proceso oscilatorio. . . . . . . . . . . . . . 18

2.8. Gráfico de Nyquist de G(iω) donde se observa ωcr y Kcr . . . . . . . . . . . 20

2.9. Sistema realimentado para el experimento de estabilidad de Ziegler y Nichols. 20

2.10. Sistema con relé realimentado. . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1. Sistema brazo robótico de 1 GDL. . . . . . . . . . . . . . . . . . . . . . . . 27

3.2. El brazo robótico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.3. Respuestas de los modelos no lineal, lineal continuo y lineal discreto del
brazo robótico a una entrada u escalón de magnitud 1.4 voltios. . . . . . . 32

3.4. Proceso tanque de agua. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.1. Estructura del sistema de control en tiempo real empleado. . . . . . . . . . 39

1
4.2. Sistema de control en tiempo real para el brazo robótico de 1 GDL. . . . . 40

4.3. Diagrama de flujo para la generación de los pulsos PWM. . . . . . . . . . . 42

4.4. Rangos de trabajo en el PIC 16f877. . . . . . . . . . . . . . . . . . . . . . 42

4.5. Diseño ORCAD para implementar la placa del generador de pulsos PWM. 43

4.6. Esquema del circuito amplificador con su circuito de control. . . . . . . . . 44

4.7. Circuitos de control del amplificador de potencia. . . . . . . . . . . . . . . 46

4.8. Sistema de control en tiempo real para el tanque. . . . . . . . . . . . . . . 47

5.1. Resultado de la simulación del sistema de control PID del nivel del tanque:
nivel controlado y su respectiva señal de control. . . . . . . . . . . . . . . . 49

5.2. Nivel controlado en el sistema de control PID en tiempo real del nivel del
tanque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.3. Señal de control del nivel en el sistema de control PID en tiempo real del
nivel del tanque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.4. Resultado de la simulación para el control de temperatura del tanque con


su respectiva señal de control. . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.5. Nivel controlado en el sistema de control PID multilazo en tiempo real. . . 51

5.6. Señal de control del nivel en el sistema de control PID multilazo en tiempo
real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.7. Temperatura controlada en el sistema de control PID multilazo en tiempo


real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.8. Señal de control de la temperatura en el sistema de control PID multilazo


en tiempo real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2
5.9. Posición angular controlada en la simulación del sistema de control PID del
brazo robótico de 1GDL, para una señal de referencia fija. . . . . . . . . . 53

5.10. Posición angular controlada en el sistema de control PID en tiempo real del
brazo robótico de 1GDL, para una señal de referencia fija. . . . . . . . . . 54

5.11. Señal de control de la posición angular en el sistema de control PID en


tiempo real del brazo robótico de 1GDL, para una señal de referencia fija. . 54

5.12. Posición angular controlada en la simulación del sistema de control PID del
brazo robótico de 1GDL, para una señal de referencia variable. . . . . . . . 55

5.13. Posición angular controlada en el sistema de control PID en tiempo real del
brazo robótico de 1GDL, para una señal de referencia variable. . . . . . . . 55

5.14. Señal de control de la posición angular en el sistema de control PID en


tiempo real del brazo robótico de 1GDL, para una señal de referencia variable. 56

6.1. Diagrama de bloques de un sistema de control PID MIMO. . . . . . . . . . 58

6.2. Diagrama de bloques en detalle del sistema de control PID MIMO imple-
mentado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

6.3. Nivel controlado en el sistema de control PID MIMO en tiempo real. . . . 62

6.4. Señal de control del nivel en el sistema de control PID MIMO en tiempo real. 62

6.5. Temperatura controlada en el sistema de control PID MIMO en tiempo real. 62

6.6. Señal de control de la temperatura en el sistema de control PID MIMO en


tiempo real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

7.1. Configuración de un SCAMR. . . . . . . . . . . . . . . . . . . . . . . . . . 65

7.2. Posición angular controlada en la simulación del sistema de control adapta-


tivo del brazo robótico de 1GDL, para una señal de referencia variable. . . 73

3
7.3. Posición angular controlada en el sistema de control adaptativo en tiempo
real del brazo robótico de 1GDL, para una señal de referencia variable. . . 73

7.4. Señal de control de la posición angular en el sistema de control PID en


tiempo real del brazo robótico de 1GDL, para una señal de referencia variable. 74

8.1. Sistema de control a lazo cerrado, donde el controlador convencional se


reemplaza por un controlador fuzzy. . . . . . . . . . . . . . . . . . . . . . . 76

8.2. Funciones de membresia para las entradas (error e(t) y de(t)/dt) y para la
salida u(t). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8.3. Posición angular controlada en la simulación del sistema de control fuzzy


del brazo robótico de 1GDL, para una señal de referencia fija. . . . . . . . 81

8.4. Posición angular controlada en el sistema de control fuzzy en tiempo real


del brazo robótico de 1GDL, para una señal de referencia fija. . . . . . . . 82

8.5. Señal de control de la posición angular en el sistema de control fuzzy en


tiempo real del brazo robótico de 1GDL, para una señal de referencia fija. . 82

4
LISTA DE TABLAS

2.1. Reglas de sintonı́a PID según Ziegler-Nichols y Cohen-Coon. . . . . . . . . 22

2.2. Reglas de sintonı́a PID atendiendo a la respuesta crı́tica a lazo cerrado según
Ziegler y Nichols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1. Parámetros y variables del brazo robótico de 1 GDL. . . . . . . . . . . . . 26

3.2. Parámetros y variables del proceso tanque de agua. . . . . . . . . . . . . . 33

4.1. Conmutación de los MOSFET’s. . . . . . . . . . . . . . . . . . . . . . . . . 45

8.1. Conjunto de reglas del controlador fuzzy mostradas en la forma de una


matriz de memoria asociativa fuzzy (“FAM-matrix”). . . . . . . . . . . . . 77

8.2. Rango de las funciones de membresia para el error e(t). . . . . . . . . . . . 79

8.3. Rango de las funciones de membresia para la derivada del error de(t)/dt. . 79

8.4. Rango de las funciones de membresia para la señal de control u(t). . . . . . 79

5
CAPÍTULO 1

INTRODUCCIÓN

1.1. Generalidades

Este trabajo de tesis se ocupa del diseño e implementación de controladores PID,


los cuales, como todos sabemos, se emplean masivamente en la industria para controlar
una gran variedad de señales tales como presión, nivel, flujo, temperatura, ph, redox,
velocidad, posición, voltaje, corriente, entre otras. En la mayorı́a de los casos, el proceso
controlado por un controlador PID, trabaja en un rango de operación pequeño. Para
tal situación la dinámica del proceso se puede considerar lineal. De hecho el algoritmo
de control PID es básicamente lineal.

Nosotros entenderemos como sistema de control a lazo cerrado, cuando el con-


trolador del sistema genera una señal de control (la señal de entrada al proceso), proce-
sando mediante un algoritmo de control, la diferencia entre la señal de salida del proceso
y una señal de referencia o “set-point”. Evidentemente, la señal de realimentación es la
salida controlada del proceso. En contraposición, un sistema de lazo abierto está cons-
tituido por el controlador en cascada con el proceso, sin presencia de realimentación.

Los controladores PID lineales mencionados en el primer párrafo, pierden efi-


ciencia y/o capacidad de control cuando se aplican a procesos tremendamente no linea-
les. Afortunadamente, procesos de este tipo son los menos, mientras que los procesos
apropiados para ser controlados empleando controladores PID son más del 90 % del
total [3].

Sin embargo, existen controladores PID del tipo no lineal (ver referencia [3] por
ejemplo), apropiados para controlar procesos tremendamente no lineales. La desventaja
es que tales controladores no son comerciales ni tampoco de uso masivo debido a que el
esquema de diseño del sistema de control que emplean, se aplica a procesos no lineales
con ciertas caracterı́sticas particulares (orden del proceso predeterminado, elementos
no lineales bastante bien definidos, cotas mı́nimas y máximas en las señales en juego,
etc). Para mencionar un caso, el controlador PID no lineal de la referencia [3] se diseña

6
empleando la técnica del control adaptativo con modelo referencial. En este trabajo de
tesis se dedica un capı́tulo para el diseño e implementación de un sistema de control de
posición adaptativo de un brazo robótico de 1GDL (un Grado de Libertad). El objetivo
principal es comparar el rendimiento del sistema de control adaptativo con respecto al
sistema de control convencional empleando un controladores PID.

Por su aplicación masiva, los controladores PID han recibido y siguen recibiendo
especial atención por parte de los investigadores, ingenieros y técnicos de operación de
procesos. El algoritmo de control básico ha sufrido modificaciones para lograr un mejor
rendimiento del sistema de control a lazo cerrado, tal como describe en detalle en el
Capı́tulo 2 de este trabajo.

En estos últimos tiempos ya se presentan muchas aplicaciones basadas en con-


troladores con inteligencia artificial. Este trabajo de tesis también incluye la imple-
mentación de un sistema de control de posición difuso. Además, se compara el rendimien-
to del controlador difuso con el del controlador PID convencional y con el del contro-
lador adaptativo.

1.2. Antecedentes

Es evidente que controladores PID con las caracterı́sticas mencionadas en la


sección anterior se ofrecen actualmente en el mercado. Dichos controladores también
ofrecen alternativas de control difuso y adaptativo. Sin embargo, el know-how de diseño
e implementación le pertenece a cada una de las firmas fabricantes. En la industria na-
cional, en un gran porcentaje, sólo se emplean controladores PID comerciales. En nues-
tro medio nacional no existen antecedentes relacionados con el diseño e implementación
de controladores PID que posean, además de las caracterı́sticas convencionales, las op-
ciones de control difuso y control adaptativo.

1.3. Objetivos

Los objetivos de este trabajo de tesis son los siguientes:

7
1) Diseñar e implementar en tiempo real controladores PID que posean capacidades
de adaptabilidad y de control inteligente. Tales controladores van a ser apropiados
para controlar una gran variedad de procesos industriales.

2) Contribuir en cerrar la brecha que existe entre la teorı́a y la aplicación práctica


en el campo de los controladores.

3) Dar un aporte a la industria nacional en el campo de la automatización de pro-


cesos, mediante la introducción de este tipo de controladores que emplean al-
goritmos de control PID mejorado y también algoritmo de control adaptativo y
difuso.

1.4. Organización de la Tesis

Esta tesis está organizada en 5 capı́tulos. El Capı́tulo 2 se ocupa de las genera-


lidades de los controladores PID convencionales y de algunos tópicos relacionados con
su implementación, como son, entre otros, las acciones proporcional, integral y deriva-
tiva, el modo de evitar el “windup”de la acción integral (es decir, cuando la salida
del integrador del controlador no puede limitarse), y la forma de pasar de operación
manual a automático sin que el proceso de conmutación provoque anomalı́as en el fun-
cionamiento del sistema. En este capı́tulo también se analizan las reglas de sintonı́a de
los parámetros del controlador PID.

El capı́tulo 3 se ocupa de la descripción y el modelado de los los procesos a ser


controlados en tiempo real: un brazo robótico de 1GDL y el sistema tanque de agua.
En este último proceso, las variables a controlar simultáneamente son el nivel del agua
y su temperatura.

El capı́tulo 4 se ocupa de la arquitectura de implementación en tiempo real de


los sistemas de control desarrollados en este trabajo de tesis. Brevemente expuesto,
las variables a controlar se miden y se convierten adecuadamente, antes de ingresar
a una tarjeta de adquisición de datos instalada en una PC (Personal Computer). Los
algoritmos de control se generan en la PC y son luego encaminadas hacia el proceso
a controlar a través de la tarjeta de adquisición de datos, pasando por actuadores

8
apropiados. El lenguaje empleado para la implementación en tiempo real es LabView,
mientras que los estudios de simulación se realizan con Matlab.

El Capı́tulo 5 trata sobre el diseño e implementación en tiempo real de varios


sistemas de control PID para el tanque de agua y para el brazo robótico de 1GDL.
Especı́ficamente los sistemas de control implementados son los siguientes:

(a) Control PID del nivel de agua del tanque.

(b) Control PID multilazo del nivel y de la temperatura en el tanque.

(c) Control PID multivariable del tanque de agua.

(d) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
fija.

(e) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
variable.

El capı́tulo 6 se ocupa del diseño de sistemas de control difuso y su aplicación en


el caso siguiente: control difuso de la posición angular de un brazo robótico de 1GDL.

El capı́tulo 7 trata sobre el diseño e implementación de un sistema de control


adaptativo para el brazo robótico de 1GDL. La técnica a emplear es bastante poderosa
y del tipo robusto. En su diseño emplea un mecanismo de adaptación de parámetros
del sistema.

El capı́tulo 8 presenta las conclusiones y recomendaciones con respecto al tra-


bajo desarrollado. Principalmente se compara y discute los resultados obtenidos y se
propone temas para futuros trabajos de investigación relacionados.

9
CAPÍTULO 2
EL ALGORITMO PID MEJORADO

2.1. Estructuras PID

El controlador PID es el algoritmo de control más usado en la actualidad por


la industria. Se estima que tal algoritmo se aplica en más del 90 % de las aplicaciones
[3]. Sin embargo, no existe un estándar industrial del algoritmo PID. La versión “texto
universitario” del algoritmo de control PID posee la forma:
  
1 t de(t)
u(t) = Kp e(t) + e(t)dτ + Td
Ti 0 dt
e(t) = r(t) − y(t) (2.1)

donde u(t) es la señal o fuerza de control, y(t) es la salida controlada del proceso y
sujeta a medición, e(t) es la señal de error, r(t) es la señal de referencia deseada o
“set-point”, Kp es la ganancia proporcional, Ti es la constante de tiempo integral o
simplemente tiempo integral, y Td es la constante de tiempo derivativo, o simplemente
tiempo derivativo. El algoritmo PID dado en (2.1) se denomina también algoritmo ISA
(Instrument Society of America) o algoritmo PID no interactuante.

En el dominio de Laplace, (2.1) toma la forma:


 
1
u(s) = Kp 1 + + Td s e(s)
Ti s
e(s) = r(s) − y(s) (2.2)

Otros algoritmos de control PID empleados comercialmente son:

1) Controlador PID interactuante.


  t  
 1  de(t)
u(t) = K e(t) +  e(t)dτ 1 + Td (2.3)
Ti 0 dt

2) Controlador PID ideal paralelo.

 t
de(t)
u(t) = Kp e(t) + Ki e(t)dτ + Kd (2.4)
0 dt

10
Foxboro y Fisher emplean el algoritmo PID no interactuante, mientras que Honeywell
y Texas usan el algoritmo interactuante [6].

Notar que (2.4) es equivalente a (2.1); esto es, (2.4) puede ser siempre reemplaza-
do por (2.1). Por otro lado, se puede demostrar que (2.1) tiene una correspondencia
directa con (2.3) siempre que Td < 14 Ti [3].

Los algoritmos PID descritos operan con una señal de error e(t) la cual es
generada en lı́nea (“on-line”), es decir, con el controlador en plena operación, tal como
se ilustra en la figura 2.1, en donde también se muestran las nuevas señales externas al
lazo de control: l y n. Tales señales son el disturbio en la carga y el ruido de medición
respectivamente. El sistema de control de la figura 2.1 se denomina sistema de control
con error realimentado y debe satisfacer varios requerimientos tales como estabilidad
a lazo cerrado, buena respuesta transitoria en presencia de cambios de r(t), rechazo a
los disturbios de carga y rechazo al ruido.

El objetivo de control consiste en diseñar una señal de control u(t) que sea
capaz de estabilizar la salida y(t) con respecto a r(t), cumpliendo ciertas especifica-
ciones de diseño como son: error en estado estable prefijado, determinado porcentaje
de sobreimpulso, tiempo de establecimiento, ancho de banda, márgenes de fase y de
ganancia definidos, entre otros criterios.

l n
r e u y
Controlador Proceso

Figura 2.1: Sistema de control realimentado.

2.2. El Algoritmo PID Mejorado

La configuración básica del algoritmo PID mostrado en (2.1) se puede modificar


introduciendo ciertas caracterı́sticas con la finalidad de que su rendimiento mejore

11
sustancialmente. Por ejemplo, no podemos evitar la ocurrencia fortuita de cambios
bruscos del error e(t), los cuales pueden incrementar el término derivativo:
de(t) d
= (r(t) − y(t))
dt dt
Este fenómeno es conocido en inglés como “derivative kick” y su efecto se puede
apaciguar si es que utilizamos como señal de entrada únicamente la señal realimen-
tada y(t) en lugar de e(t). De esta forma, (2.1) se convierte en:
  
1 t dy(t)
u1 (t) = Kp e(t) + e(t)dτ − Td (2.5)
Ti 0 dt
mientras que (2.2) toma la forma:
 
1
u1 (s) = Kp 1 + e(s) − Kp Td s y(s) (2.6)
Ti s

Otra modificación importante es filtrar la acción derivativa del controlador PID


original mediante un filtro de primer (o segundo) orden para disminuir el ruido deriva-
tivo. Esta caracterı́stica limita la amplificación del ruido de medición de alta frecuencia
en la salida del controlador. La señal de control será ası́ menos ruidosa y la ganancia en
alta frecuencia permanecerá dentro de cotas apropiadas. Un término derivativo prácti-
co, ya que un derivador puro no puede realizarse exactamente, puede aproximarse por
un sistema de primer orden con una constante de tiempo Tf que a menudo se normaliza
con respecto al tiempo derivativo Td . Por consiguiente, el derivador del algoritmo PID
(2.6) se modifica como:
Td s Td
Tf =
1 + Tf s N
donde N es una constante que varı́a de 3 a 10 y es conocida como la cota de la ganancia
derivativa. Luego, el algoritmo (2.6) se convierte en:
 
1 Kp Td s
u1 (s) = Kp 1 + e(s) − y(s) = P (s) + I(s) + D(s) (2.7)
Ti s 1 + Tf s
donde:
Kp Kp Td s Td
P (s) = Kp e(s); I(s) = e(s); D(s) = − y(s); Tf = (2.8)
Ti s 1 + Tf s N
Los términos P , I y D representan las partes proporcional, integral y derivativa del
controlador PID respectivamente.

En toda implementación práctica, la señal de salida del controlador debe de


estar limitada por dos razones. La primera es que su magnitud no debe de exceder el

12
rango permitido por el sistema de adquisición de datos, y la segunda razón es que su
valor no debe de exceder el rango permitido por el actuador. Por estas razones es que
debemos de introducir un limitador a la salida del controlador. Lamentablemente este
limitador, el cual es un elemento no lineal, es el causante del efecto denominado en
inglés “windup”. Cuando la magnitud de la señal de control u(t) sobrepasa los lı́mites
del limitador, tal efecto se manifiesta como un incremento del término integral del
controlador, lo que a su vez provoca un aumento del sobreimpulso y del tiempo de
establecimiento en la señal controlada y(t).

Por consiguiente, para evitar el efecto “windup”, no debemos de usar el término


integral en los casos en que la señal de control u1 (t) sobrepase los lı́mites de operación
umin y umax , con el fin de evitar la saturación del limitador. Una forma de implementar
esta acción ”anti windup” se da en el siguiente segmento de programa:

u1 (t) = P (t) + D(t) + I(t)

u(t) = P (t) + D(t) si u1 (t) ≤ umin

u(t) = u1 (t) si umin ≤ u1 (t) ≤ umax

u(t) = P (t) + D(t) si u1 (t) ≥ umax

En las implementaciones realizadas en este trabajo seguiremos empleando el limitador


a la salida de la señal de control.

Por otra parte, cuando el controlador conmuta de manual a automático, el


valor de la señal de control u(t) puede cambiar de un valor a otro, no importando
que la señal de error e(t) sea cero. Este salto debe de evitarse y en este caso se dice
que la conmutación de manual a automático debe de ser sin saltos (“bumpless” en
inglés). Para lograr conmutación sin saltos, el algoritmo de control debe de ejecutarse
siempre, aunque la operación del sistema de control se encuentre en modo manual. Esta
corrección se realiza en el programa en tiempo real.

2.3. El Algoritmo PID Discreto

Sea k el tiempo discreto, el cual está relacionado con el tiempo continuo t


mediante la relación t = T k, donde T es el tiempo de muestreo o discretización. La

13
parte proporcional P = Kp e(s) de (2.8) se discretiza directamente, obteniéndose:

P = KP e(k) (2.9)
Kp
Para la parte integral I(s) = Ti s
e(s), o lo que es lo mismo:

Kp t
I(t) = e(t)dt
Ti 0
empleamos la aproximación trapezoidal:

Kp  [e(i) + e(i − 1)]


k
I(k) = T
Ti i=1 2

Kp  [e(i) + e(i − 1)] Kp [e(k) + e(k − 1)]


k−1
I(k) = T + T
Ti i=1 2 Ti 2
donde, para el tiempo discreto (k − 1) se cumple que:

Kp  [e(i) + e(i − 1)]


k−1
T = I(k − 1)
Ti i=1 2

Restando I(k − 1) de I(k) se obtiene:


Kp T
I(k) = I(k − 1) + [e(k) + e(k − 1)] (2.10)
2Ti

Kp Td s
La parte derivativa D(s) = − 1+T f s
y(s) se puede escribir como:

(1 + Tf s)D(s) = −Kp Td s y(s)

D(t) + Tf Ḋ(t) = −Kp Td ẏ(t)

y aproximando las derivadas Ḋ(t) e ẏ(t) por atraso (desplazamiento de k hacia (k −1)),
se obtiene:
   
D(k) − D(k − 1) y(k) − y(k − 1)
D(k) + Tf = −Kp Td
T T
Despejando D(k), la parte derivativa discreta queda entonces como:
Td Td
D(k) = {D(k − 1) − Kp N [y(k) − y(k − 1)]} Tf = (2.11)
N T + Td N

Por consiguiente, el algoritmo PID discreto usado en las implementaciones en


tiempo real tiene la siguiente forma:

u(k) = P (k) + I(k) + D(k) (2.12)

donde las expresiones para P (k), I(k) D(k) se muestran en (2.9), (2.10) y (2.11) res-
pectivamente.

14
2.4. Respuesta Transitoria de los Procesos

2.4.1. Respuesta Transitoria en el Tiempo

La repuesta transitoria de un proceso, se refiere a la respuesta transitoria de


la misma sin control (respuesta a lazo abierto) a una señal excitadora. La señal de
excitación más usada es el escalón.

Los procesos autoregulados son aquellos que poseen una respuesta estable al
escalón, es decir, después que el proceso es excitado con un salto de escalón, su respuesta
transitoria alcanza un nuevo nivel, tal como se muestra en la figura 2.2. Este es el caso
tı́pico de los procesos de temperatura y presión.

Figura 2.2: Respuesta al escalón de un proceso autoregulado.

Muchos procesos industriales autoregulados se pueden modelar mediante el si-


guiente modelo de primer orden con tiempo muerto [4], [5]:

K L
G(s) = e−sL m=K (2.13)
1 + τs τ

donde K es la ganancia del proceso a lazo abierto, τ es su constante de tiempo, L es el


tiempo muerto (“dead time”) y m es la razón de reacción unitaria. Este modelo describe
el comportamiento del proceso escalado en L, donde L en este sentido representa una

15
aproximación de las constantes de tiempo de alto orden del proceso. Tener en cuenta
que K es la relación entre la salida en estado estacionario del proceso con respecto a una
entrada tipo escalón de magnitud arbitraria. La figura 2.3 muestra la determinación
gráfica de los parámetros K, L y τ de un proceso autoregulado mediante el trazado de
una tangente a la respuesta al escalón .

Figura 2.3: Determinación de K, L y τ en un proceso autoregulado.

Procesos no autoregulados, como es el caso de la posición angular de un motor


o el nivel, poseen una respuesta al escalón como el de la figura 2.4. La dinámica de
tales procesos se puede modelar como [4], [5]:
K −sL
G(s) = e R=KL (2.14)
s
donde L es el tiempo muerto aparente, el cual aproxima las constantes de tiempo del
proceso, R es la razón de reacción unitaria y K es la ganancia. Estos dos parámetros
se pueden obtener gráficamente, tal como se ilustra en la figura 2.5.

Los procesos autoregulados pueden ser también oscilatorios; es decir, pueden


presentar una respuesta oscilatoria al escalón, tal como la mostrada en la figura 2.6.
La dinámica de tales procesos se puede aproximar mediante la siguiente función de
transferencia [4], [5]:
K ω2
G(s) = (2.15)
s2 + 2ζωs + ω 2

16
Figura 2.4: Respuesta al escalón de un proceso no autoregulado.

Figura 2.5: Determinación de K, L y R en un proceso no autoregulado.

donde los parámetros del modelo ω (la frecuencia natural), K (la ganancia) y ζ (la fre-
cuencia relativa o coeficiente de amortiguamiento), se pueden aproximar gráficamente

17
empleando la figura 2.7 y las siguientes relaciones:
 −1
ζ = 1 + (2π/ln d)2

ω =  (2.16)
Tp 1 − ζ 2

donde d es el amortiguamiento y Tp es el perı́odo de oscilación.

Figura 2.6: Respuesta al escalón de un proceso oscilatorio.

Figura 2.7: Determinación de d y Tp en un proceso oscilatorio.

18
Una forma alternativa de (2.15) incluyendo un tiempo muerto aparente L es:

K ω2
G(s) = e−sL (2.17)
s2 + 2ζωs + ω 2

donde L se puede determinar en la misma forma que para el modelo dado en (2.13)

2.4.2. Respuesta Transitoria en Frecuencia

Asumamos que el proceso G(s) del sistema realimentado de la figura 2.9 posee
una respuesta en frecuencia G(iω) y que el controlador es proporcional con ganancia
K. La función de transferencia del sistema es:

y(iω) K G(iω)
=
r(iω) 1 + K G(iω)

La idea básica en la mayorı́a de los métodos de respuesta en frecuencia, es llevar al


proceso G(iω) a un estado de autooscilación (ciclo lı́mite) usando realimentación en
una frecuencia apropiada. La figura 2.8 muestra el gráfico de Nyquist de la función
de transferencia a lazo abierto K G(iω). Para determinar dónde ocurre la frecuencia
lı́mite ωcr , igualamos a cero la ecuación caracterı́stica:

1 + K G(iω) = 0

de donde, despejando se obtiene:

G(iωcr ) = −1/Kcr M ag[G(iωcr )] = 1/Kcr arg[Kcr G(iωcr )] = π

La frecuencia de este ciclo lı́mite se denomina la frecuencia de cruce ωcr y es la frecuencia


donde la curva de Nyquist intercepta el eje real negativo a un ángulo (argumento) de
π radianes. El perı́odo Tcr = 2π/ωcr se denomina el perı́odo crı́tico, mientras que
la ganancia a la cual ocurre ωcr se denomina la ganancia crı́tica Kcr . Esta ganancia
conduce al sistema realimentado al lı́mite de la estabilidad bajo un control puramente
proporcional.

Basado en la técnica del ciclo lı́mite descrita en el párrafo anterior, Ziegler y


Nichols [4], [5] han sugerido una técnica experimental para determinar los parámetros
de un controlador PID en función de Kcr y Tcr (ver subsección 2.5.3) basado en la
observación de que muchos sistemas de control pueden ser llevados al lı́mite de la

19
Figura 2.8: Gráfico de Nyquist de G(iω) donde se observa ωcr y Kcr .

estabilidad empleando un control puramente proporcional y seleccionando una ganancia


K suficientemente grande (ver figura 2.9). En este lı́mite, la entrada u y la salida y del
proceso son sinusoides con una diferencia de fase de 180o . La frecuencia de oscilación es
la frecuencia de cruce ωcr , y la ganancia K que lleva al sistema al lı́mite de la estabilidad
es la ganancia crı́tica Kcr . Este método experimental sólo es aplicable para procesos
autoregulados.

Figura 2.9: Sistema realimentado para el experimento de estabilidad de Ziegler y


Nichols.

20
Hagglum y Astrom [7] han sugerido un método para determinar el punto crı́tico
de la curva de Nyquist, el cual se basa en el experimento del relé realimentado. Como
se muestra en la figura 2.10, una oscilación tipo ciclo lı́mite es forzada en el proceso
empleando un relé descrito por:

u = δ si e > 0

u = −δ si e < 0 (2.18)

donde δ es la amplitud del relé. La condición de oscilación en la figura 2.10 es que el


proceso lineal G(s) posea una curva de Nyquist que intersecte el eje real negativo. El
tiempo crı́tico Tcr es el mismo que el perı́odo de oscilación del ciclo lı́mite, y la ganancia
crı́tica Kcr es la ganancia del relé dada por:


Kcr = (2.19)
πd

donde d es la amplitud de la oscilación en la señal de error e(t) [3].

Figura 2.10: Sistema con relé realimentado.

2.5. Sintonización de Controladores PID

Los métodos de sintonización de controladores PID están referidos generalmente


a la estructura dada en La tabla (2.1). En este trabajo se describen tres métodos
clásicos: el método de la curva de reacción del proceso, el método de Kessler y el
método de la respuesta crı́tica de Ziegler y Nichols. Sólo el método de la curva de
reacción se usa en este trabajo para determinar los parámetros iniciales Kp , Ti y Td del
controlador. Luego, la sintonización final de tales parámetros se realiza en tiempo real.

21
2.5.1. Método de la Curva de Reacción del Proceso

El método de la curva de reacción del proceso atribuido a Ziegler-Nichols y


Cohen-Coon [1] se puede aplicar tanto a procesos autoregulados como no autoregu-
lados. Los parámetros PID del controlador se determinan empleando la tabla 2.1, en
donde S es la pendiente promedio normalizada del proceso. Para el caso de procesos
autoregulados, tal pendiente toma la forma S = K/τ , mientras que para el caso de
procesos no autoregulado la pendiente es S = R/L. Ya sabemos que K es la ganancia
a lazo abierto del proceso y se determina mediante la relación entre la respuesta en
estado estable del proceso a una excitación escalón de magnitud arbitraria.

Tabla 2.1: Reglas de sintonı́a PID según Ziegler-Nichols y Cohen-Coon.

Controlador Kc Ti Td

1
P LS

0,9
PI LS
3,33L

1,2
PID LS
2L 0,5L

2.5.2. Método de Kessler

El método atribuı́do a C. Kessler [9], para sintonizar los parámetros PID en


procesos no autoregulados y autoregulados, establece que para procesos que poseen las
siguientes funciones de transferencia:

Kp 
Gp (s) =  T1 > 4 Tσ Tσ = tµ (2.20)
(1 + T1 s) µ (1 + tµ s) µ

KI 
Gp (s) =  Tσ = tµ (2.21)
s µ (1 + tµ s) µ

22
se recomienda emplear un controlador PI de la forma (con Xp siendo la banda propor-
cional):

1 100
Gc (s) = Kc 1+ Xp = (2.22)
TI s Kc
Para el proceso descrito en (2.20), los parámetros del controlador PI se sintonizan como
sigue:
T1
Kc = TI = 4 Tσ (2.23)
2Kp Tσ
mientras que para el proceso descrito en (2.21), los parámetros del controlador PI se
sintonizan ası́:
1
Kc = TI = 4 Tσ (2.24)
2KI Tσ

También, para procesos que poseen las siguientes funciones de transferencia:

Kp
Gp (s) =  (2.25)
(1 + T1 s)(1 + T2 s) µ (1 + tµ s)

T1 > 4 Tσ Tσ = tµ T1 > T2 > Tσ
µ

KI
Gp (s) =  (2.26)
s(1 + T2 s) µ (1 + tµ s)

Tσ = tµ T2 > Tσ
µ

Se recomienda emplear un controlador PID de la forma:


1
Gc (s) = Kc 1 + (1 + TD s) (2.27)
TI s
Para el proceso descrito en (2.25), los parámetros del controlador PID se sintonizan
como sigue:
T1
Kc = TI = 4 Tσ TD = T2 (2.28)
2Kp Tσ
mientras que para el proceso descrito en (2.26), los parámetros del controlador PI se
sintonizan ası́:
1
Kc = TI = 4 Tσ TD = T2 (2.29)
2KI Tσ

2.5.3. Método de la Respuesta Crı́tica de ZN

Los métodos de sintonización de Ziegler y Nichols (ZN) presentados en 1942, con


ciertas modificaciones, se siguen empleando aún en la industria (ver referencias [4], [5]

23
y [8]). Estos métodos se basan en muchos experimentos realizados en tı́picos procesos
industriales autoregulados, es decir, procesos que presentan una respuesta estacionaria
cuando son excitados con una señal de entrada tipo escalón.

El método de la respuesta crı́tica a lazo cerrado de Ziegler y Nichols tiene dos


formas. En la primera, se determina primero un simple modelo del proceso autoregula-
do, empleando la técnica descrita en la sección 2.4.1. Luego, se computan directamente
los mejores parámetros PID usando (2.30) y la tabla 2.2, como sigue:
2
Tcr = 4 L Kcr = (2.30)
mL

Tabla 2.2: Reglas de sintonı́a PID atendiendo a la respuesta crı́tica a lazo cerrado según
Ziegler y Nichols.

Controlador Kp Ti Td Tp

P 0.5Kcr Tcr
PI 0.45Kcr 0.83Tcr 1.4Tcr
PID 0.6Kcr 0.5Tcr 0.125Tcr 0.85Tcr

Tener en cuenta que los parámetros PID en la tabla 2.2 (Kc , Ti y Td ) se refieren
al algoritmo PID mostrado en (2.1). Además recordar que los parámetros m y L del
modelo se obtienen gráficamente empleando la respuesta a lazo abierto del proceso a
una excitación escalón (ver subsección 2.4.1 para mayores detalles). En la tabla 2.2, Tp
es aproximadamente el perı́odo de la dinámica dominante del sistema a lazo cerrado.

En la segunda forma, denominada el método de respuesta en frecuencia de ZN,


primero se determinan los parámetros Kcr y Tcr a partir del experimento de estabi-
lidad descrito en la subsección 2.4.2. Entonces, a partir de la tabla 2.2, se calculan
los parámetros del controlador PID, a saber, Kp , Ti y Td . Dado que en muchas situa-
ciones no es práctico realizar en un proceso el experimento de estabilidad de Ziegler y
Nichols, entonces se puede emplear otra alternativa, tal como la técnica de excitación
por relé descrita en la subsección 2.4.2. Esta técnica tampoco forma parte de este
trabajo de tesis.

24
CAPÍTULO 3
MODELADO DE PROCESOS

3.1. Proceso: Brazo Robótico de 1 GDL

El brazo robótico de 1 GDL (Grado De Libertad) mostrado en la figura 3.1,


es uno de los procesos a ser utilizado en este trabajo de tesis para validar mediante
experimentación los algoritmos de control empleados. Este proceso se compone de un
subsistema eléctrico y un subsistema mecánico. El subsistema eléctrico comprende un
servomotor D.C. (“Direct Current”) con codificador (“encoder”) de posición incorpo-
rado, el cual se emplea para medir la posición angular del brazo en cada instante de
tiempo. El servomotor posee una caja de engranajes para reducir la velocidad en su
eje de salida, y de esta manera, facilitar el control de posición del brazo robótico.

El subsistema mecánico consiste de un brazo accionado por el torque rotacional


generado en el actuador, en este caso el servomotor. En el extremo del brazo robótico
se acopla el efector final, el cual puede ser una pinza para asir objetos, una herramienta
para soldar, una herramienta para pintar, etc. En nuestro caso, con propósitos de mo-
delado, vamos a suponer que el efector final y su carga se pueden reemplazar mediante
una masa mh que puede variar. La tabla 3.1 describe las variables y los valores de los
parámetros del brazo robótico mostrados en la figura 3.1.

El proceso descrito previamente es del tipo SISO (“Single Input Single Output”)
ya que sólo posee una entrada: el voltaje de control aplicado a la armadura u del
servomotor, y una salida: la posición angular θ del brazo.

Modelo del Subsistema Mecánico

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


los movimientos lineal y rotacional. La aplicación de esta segunda ley se traduce en
una ecuación de balance mecánico. Con respecto a la figura 3.1, la ecuación de balance

25
Tabla 3.1: Parámetros y variables del brazo robótico de 1 GDL.

Sı́mbolo Descripción Valor Unidades


u Voltaje de entrada al sistema V
KA Ganancia del amplificador 14.9
Va Voltaje de armadura V
Ra Resistencia de armadura 7.38 Ω
La Inductancia de armadura 4.64×10−2 H
ia Corriente de armadura A
−3
Km Constante del torque motor 31.071×10 N-m/A
Tm Torque motor N-m
TL Torque de carga N-m
τL Torque causado por pesos de la carga N-m
Tg1 Torque de entrada a los engranajes N-m
Tg2 Torque de salida de los engranajes N-m
−6
Jm Inercia del motor 1.9062×10 kg-m2
Jg Inercia de los engranajes 3.5×10−7 kg-m2
JL Inercia de la carga kg-m2
Bm Constante de fricción del motor 1.8338×10−6 N-m/rad/s
Bg Constante de fricción en engranajes 10−5 N-m/rad/s
BL Constante de fricción en la carga N-m/rad/s
mh Masa del efector final 0.045 kg
mb Masa del brazo 0.06377 kg
L Longitud del brazo 0.776 m
rh Distancia al centro de masa del efector 0.02 m
Vb Voltaje contraelectromotriz V
−3
Kb Constante contraelectromotriz 31.0352×10 V/rad/s
g Aceleración de la gravedad 9.81 m/s2
N1 , N2 N o de dientes de los engranajes N2 > N1
n Relación de engranajes (n = N2 /N1 ) 19.741
θm Posición angular del motor rad
θ Posición angular de la carga rad
ω Velocidad angular de la carga rad/s
ωm Velocidad angular del motor ωm = nω rad/s

26
Figura 3.1: Sistema brazo robótico de 1 GDL.

mecánico en el eje del servomotor articulado al primer engranaje se formula como:


dθ d2 θm
Tm = Jm θ̈m + Bm θ̇m + Tg1 θ̇ = θ̈m = (3.1)
dt dt2
donde Jm y Bm representan el momento de inercia y la constante de fricción viscosa
del rotor, Tm es el torque del servomotor y Tg1 es el torque de reacción debido al primer
engranaje. Para los engranajes de reducción del servomotor podemos formular:
N2 θm
n= = θm = nθ n>1 (3.2)
N1 θ
La ecuación (3.2) es cierta debido a que el espacio angular recorrido por el engranaje de
menor radio debe de ser n veces mayor que el espacio recorrido por el el engranaje de
radio mayor. Por otra parte, el principio de la conservación de la energı́a establece que
el trabajo realizado por el engranaje de la izquierda debe ser igual al trabajo realizado
por el engranaje de la derecha, es decir:

Tg2 θ = Tg1 θm = Tg1 nθ; Tg2 = nTg1 (3.3)

donde Tg2 es el torque de reacción debido al segundo engranaje. El balance mecánico


en el eje articulado al brazo produce:

Tg2 = Jg θ̈ + Bg θ̇ + TL (3.4)

donde Jg y Bg representan el momento de inercia y la constante de fricción viscosa


de la caja de reducción respectivamente. El torque de carga TL se formula como (ver

27
figura 3.2):

TL = JL θ̈ + BL θ̇ + τL (3.5)
L
τL = mb g senθ + mh g (L + rh )senθ = Q sen θ (3.6)
2
L
Q = mb g + mh g (L + rh )
2

donde JL y BL representan el momento de inercia y la constante de fricción viscosa de


la carga no lineal (brazo más efector final), g es la constante gravitacional, mb y mh
denotan las masas del brazo y del efector final (esta masa también incluye la masa de
la carga en el efector) respectivamente, y rh denota la distancia desde el extremo del
brazo al centro de masa de mh . Para fines prácticos asumiremos que rh ≈ 0. Notar en
(3.5) que el torque τL se debe a las fuerzas ejercidas por los pesos del brazo y de la
L senθ
esfera. Ası́, el torque mb g 2
se debe al peso mb g del brazo, mientras que el torque
mh g (L + rh )senθ ≈ mh g Lsenθ es causado por el peso mh g del efector, Las distancias
L senθ
2
y (L + rh )senθ ≈ Lsenθ son los correspondientes brazos de palanca del brazo y
del efector respectivamente.

El momento de inercia JL de la carga es la suma del momento de inercia del


brazo Jb más el momento de inercia del efector Jh . Asumiendo que la masa mh está con-
centrada en su C.M. (centro de masa), entonces:

Jh = mh (L + rh )2 ≈ mh L2 (3.7)

Del mismo modo, asumiendo que la masa mb del brazo se concentra en su C.M., en-
tonces:
2
L
Jb = m b (3.8)
2
Sin embargo, si se considera que la masa del brazo está distribuida a lo largo de su
longitud, entonces debemos aplicar el teorema de los ejes paralelos, el cual establece
que el momento de inercia de una masa m alrededor de un eje que no pasa por su
centro de masa está dado por:
J = Jo + ma2 (3.9)

donde a es la distancia entre el eje que pasa por el centro de masa de m y el eje
paralelo, y Jo es el momento de inercia alrededor del eje que pasa por su centro de
masa. Aplicando el teorema de los ejes paralelos al brazo, el momento de inercia Jb con

28
respecto al punto de articulación se formula como:

2
1 2 L 1
Jb = mb L + mb = m b L2 (3.10)
12 2 3
Por simplicidad, sin embargo, emplearemos las fórmulas dadas en (3.7) y (3.8). Empleando

Figura 3.2: El brazo robótico.

(3.5), (3.6), (3.4), (3.3) y (3.2) en (3.1) y operando se obtiene:

nTm = Jeq θ̈ + Beq θ̇ + τL = Jeq ω̇ + Beq ω + Q senθ (3.11)

donde:
Jeq = n2 Jm + Jg + JL Beq = n2 Bm + Bg + BL

Las expresiones de Q, Jh y Jb (tener en cuenta que JL = Jh + Jb ) se dan en (3.6), (3.7)


y (3.8) respectivamente.

Modelo del Subsistema Eléctrico

El voltaje de armadura Va viene expresado por (ver la descripción de las varia-


bles y parámetros en la Tabla 3.1):
dia
Va = ia Ra + La + Vb (3.12)
dt

29
donde ia , Ra y La son la corriente, la resistencia y la inductancia en la armadura del
servomotor respectivamente, y Vb es el voltaje de fuerza contraelectromotriz gobernado
por la relación:
Vb = Kb ωm = Kb nω = Kb nθ̇ (3.13)

donde Kb es la constante de fuerza contra-electromotriz y está relacionado con la ve-


locidad angular ωm del motor. El voltaje de armadura Va es:

Va = uKA (3.14)

donde KA es la ganancia del amplificador.

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:

Tm = Km ia (3.15)

donde Km es la constante del motor. Igualando (3.12) con (3.14) obtenemos:


dia KA Kb n Ra
= u− ω− ia (3.16)
dt La La La
Empleando (3.15) en (3.11) y despejando ω̇ = dω/dt obtenemos:
dω Q Beq nKm
=− senθ − ω+ ia (3.17)
dt Jeq Jeq Jeq

Ecuación de Estado del Proceso

Las ecuaciones (3.16) y (3.17) describen el modelo no lineal del proceso. Eligien-
do como variables de estado: x1 = θ (posición angular), x2 = ω (velocidad angular) y
x3 = ia (corriente de armadura), se obtiene:

ẋ1 = x2
Q Beq nKm
ẋ2 = − senx1 − x2 + x3
Jeq Jeq Jeq
nKb Ra KA
ẋ3 = − x2 − x3 + u (3.18)
La La La
donde la salida es la posición x1 y la señal de control es u.

30
En la Tabla 3.1 podemos observar que la inductancia de armadura La del ser-
vomotor es bastante pequeña, de modo tal que puede despreciarse sin que se pierda
exactitud en los resultados. Considerando el producto ẋ3 La = 0 en la tercera ecuación
de (3.18) y despejando la corriente de armadura x3 obtenemos:
KA nKb
x3 = u− x2 (3.19)
Ra Ra
Reemplazando (3.19) en la segunda ecuación de (3.18), se obtiene entonces la ecuación
de estado no lineal de orden dos del brazo robótico:

ẋ1 = x2

P Beq Ra + n2 Km Kb nKm KA
ẋ2 = − senx1 − x2 + u (3.20)
Jeq Jeq Ra Jeq Ra

Linealización del Modelo no Lineal

Despreciando la inductancia La del servomotor, entonces, para desviaciones


pequeñas de la posición θ = x1 se cumple que senx1 ≈ x1 . Aplicando tal aproximación
en la ecuación (3.20) obtenemos una ecuación de estado lineal de la forma:

ẋ = Ax + Bu (3.21)
⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤
ẋ1 0 1 x 0
⎣ ⎦=⎣ 2
⎦⎣ 1 ⎦ + ⎣ ⎦u
ẋ2 − JQeq − Beq RaJ+n
eq Ra
Km Kb
x2 nKm KA
Jeq Ra
y la correspondiente ecuación de salida:
⎡ ⎤
  x1
y = Cx + Du = 1 0 ⎣ ⎦ + [0] u (3.22)
x2
A tal resultado también se puede llegar si aplicáramos la técnica del jacobiano.

El programa C3rpta.m determina la respuesta (la posición angular θ) del modelo


no lineal de segundo orden y de los modelos lineales continuo y discreto derivados de
este modelo. Para fines de análisis se asume que la señal de entrada u es de 1.4 voltios,
que BL = Bg y que el efector final es una esfera de masa mh y de radio rh . En esta
situación:
2
Jh = mh rh2 + mh (L + rh )2
5
El programa C3rpta.m también determina la funciones de transferencia, la estabilidad,
la controlabilidad y la observabilidad de los modelos lineales continuo y discreto. Las
respuestas se muestran en la figura 3.3.

31
0.8

y(t) NO LINEAL [rad]


0.6

0.4

0.2

0
0 50 100 150

6
y(t) LINEAL [rad]

0
0 50 100 150

6
y(k) LINEAL [rad]

0
0 50 100 150
Tiempo en segundos

Figura 3.3: Respuestas de los modelos no lineal, lineal continuo y lineal discreto del
brazo robótico a una entrada u escalón de magnitud 1.4 voltios.

3.2. Proceso: Tanque de Agua

El proceso tanque de agua estudiado aquı́ se muestra en la figura 3.4. En este


proceso, el agua frı́a que se envı́a al tanque se calienta en forma controlada. El agua
calentada que sale del tanque puede ser usado luego por los consumidores. Este proceso
es multivariable porque posee dos entradas de control: el flujo de entrada al tanque
y el calor suministrado al agua mediante una resistencia eléctrica, y dos variables a
controlar: el nivel del tanque y la temperatura de salida del agua calentada. La tabla
3.2 describe las variables y los valores de los parámetros del tanque de agua mostrado
en la figura 3.4. Notar que el volumen nominal de trabajo empleado es de V = SH =
0.0082 m3 .

32
Tabla 3.2: Parámetros y variables del proceso tanque de agua.

Sı́mbolo Descripción Valor Unid.


dS Diámetro del tanque 0.25 m
S Sección circular del tanque 0.041 m2
H Nivel del agua en estado estable 0.2 m
H Nivel del agua m
V Volumen nominal del tanque (V = SH) 0.0082 m3
h Nivel perturbacional del agua: h = H − H m
3
Q Flujo de agua en estado estable 0.16 m /h
Qi Flujo de agua de entrada al tanque m3 /s
Qi Flujo de entrada en estado estable 0.16 m3 /h
qi Flujo perturbacional del agua: qi = Qi − Qi m3 /s
Qo Flujo de agua de salida del tanque m3 /s
qo Flujo perturbacional a la salida: qo = Qo − Qo m3 /s
Rh Resistencia hidráulica del tanque: Rh = H/Q̄ 2700 s/m2
g Aceleración de la gravedad 9.81 m/s2
ρ Densidad del agua 1000 kg/m3
do Diámetro del orificio de salida 0.0127 m
Ao Sección del orificio de salida 0.000126 m2
Av Sección de la vena contracta m2
Cc Coeficiente de corrección entre Ao y Av 0.6 a 1
Cv Coeficiente de corrección por pérdidas 0.8 a 0.99
Cd Coeficiente de descarga:Cd = Cv Cc 0.5

a Factor de flujo turbulento: a = Cd AO 2g 0.00028 m2.5 /s
J
Cp Calor especı́fico del agua 4186.8 kg K
Ct Capacitancia térmica del tanque: Ct = ρSHCp 27633 K/W
Rt Resistencia térmica del tanque: Rt = Cp1ρQ 0.0054 K/W
o
Θa Temperatura del ambiente 27.0 C
o
Θo Temperatura en el tanque en estado estable 28.5 C
o
Θo Temperatura del agua de salida C
θo Temperatura perturbacional: θo = Θo − Θo o
C
Φi Calor entregado por la resistencia eléctrica W
Φi Calor entregado en estado estable 1540 W
ΦT Calor del agua en el tanque W
Φo Calor que toma el flujo de salida W
Φs Calor que se libera al exterior: Φs = ΘoR−Θ
t
a
W
Φc Calor que trae consigo el flujo de entrada W

33
Figura 3.4: Proceso tanque de agua.

Modelo Lineal del Proceso Nivel

El volumen de agua acumulado en el tanque se modela como:

dh
S = S ḣ = qi − qo (3.23)
dt

Considerando un flujo laminar de salida:

h
qo = (3.24)
Rh

donde la resistencia hidráulica Rh se calcula de la relación:

H
Rh = (3.25)
Q
Entonces, la ecuación de estado del proceso nivel toma la forma:

1 1
ḣ = − h + qi (3.26)
SRh S

y su función de transferencia resulta:

h(s) Rh
= (3.27)
qi (s) SRh s + 1

donde el producto SRh es la constante de tiempo del proceso nivel.

34
Determinación Experimental de Rh

La válvula de control empleada para regular la entrada de agua al tanque es del


tipo VXN015F250, con diámetro nominal DN15, conexión G1B y actuador motórico.
La abertura máxima se obtiene alimentando con 10 V al actuador, la cual corresponde
a un flujo de 0.4 m3 /h, de acuerdo al manual del fabricante. La mı́nima abertura, con
0 V, corresponde a un flujo de 0 m3 /h. Esto significa que para una abertura de 1 V el
flujo que pasa por la válvula es de 1/90000 m3 /s.

Asumiendo una variación lineal entre el flujo Qi que pasa por la válvula y la
altura H del tanque, se realizó el siguiente experimento. Con una abertura de válvula
para 4 V (0.16 m3 /h), se abrió convenientemente la válvula de descarga hasta lograr
una altura estable de 0.12 m. Luego, con una abertura de válvula para 6 V (0.24 m3 /h),
se siguió abriendo la válvula de descarga hasta lograr una altura de 0.18 m. Empleando
la relación (3.25), la resistencia hidráulica para cada punto resultó aproximadamente
Rt = 2700 s/m2 . Se asume también que los valores estables de H y Qi son H = 0.12
m y Q = 0.16 m3 /h.

Modelo Lineal del Proceso Temperatura

El calor en el interior del tanque se modela aproximadamente como:


dθo
Ct = Φi − Φo (3.28)
dt
donde:
Φo = Cp ρ Q θo (3.29)

Por consiguiente, la ecuación de estado del proceso temperatura resulta:


1 1
θ˙o = − θo + Φi (3.30)
Rt Ct Ct
donde la capacitancia térmica Ct y la resistencia térmica Rt se calculan de:
1
Ct = ρSHCp Rt = (3.31)
Cp ρQ
La función de transferencia del proceso temperatura toma la forma:
θo (s) Rt
= (3.32)
Φi (s) Ct Rt s + 1
donde el producto Ct Rt es la constante de tiempo de dicho proceso.

35
Modelo No Lineal del Proceso Tanque de Agua

El volumen de agua acumulado en el tanque se modela como:

dH
S = S Ḣ = Qi − Qo (3.33)
dt

donde, para orificios circulares pequeños, se puede formular [11]:


 √ 
Qo = Cd Ao 2gh = a h; a = Cd Ao 2g (3.34)

Se sabe además que [11]:

Cd = CvCc ; 0.8 ≤ Cv ≤ 0.99; 0.6 ≤ Cc ≤ 1 (3.35)

Para nuestro estudio tomaremos Cd =0.5. De (3.33) se obtiene la primera ecuación de


estado:
a√ 1
Ḣ = − H + Qi (3.36)
S S

Por otro lado, el balance de energı́a térmica dentro del tanque se formula:

ΦT = −Φo − Φs + Φc + Φi (3.37)

donde:

Q2o dΘo dΘo


ΦT = SρCp 2
= SρCp H (3.38)
a dt √ dt
Φo = Cp ρΘo Qo = Cp ρaΘo H (3.39)
Θo − Θa
Φs = (3.40)
Rt
Φc = Cp ρΘi Qi (3.41)

dΘo
La segunda ecuación de estado se obtiene despejando dt
= Θ̇o de (3.37):

a Θo 1 Θo Θa 1 Θi Qi 1 Φi
Θ̇o = − √ − + + + (3.42)
S H SρCp Rt H SρCp Rt H A h SρCp H

Para linealizar el proceso tanque emplearemos la técnica del Jacobiano. Para ello se
definen los siguientes vectores de estado y de control:
⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤
X1 H Ẋ f U Q
X=⎣ ⎦=⎣ ⎦ ; Ẋ = ⎣ 1 ⎦ = ⎣ 1 ⎦ ; U = ⎣ 1 ⎦ = ⎣ i ⎦ (3.43)
X2 Θo Ẋ2 f2 U2 Φi

36
de modo tal que (3.36) y (3.42) toman la forma:

a 1
Ẋ1 = − X1 + X1 = f1 (3.44)
S S
a X2 1 X2 θa 1 θi U1 1 U2
Ẋ2 = − √ − + + + = f2 (3.45)
S X1 SρCp Rt X1 SρCp Rt X1 S X1 SρCp X1
Tomando derivadas parciales y haciendo notar que una barra sobre una variable indica
el valor estacionario de dicha variable, se obtiene:

∂f1 a 1/2 a
= − X1 = − 
∂X1 2S 2S X 1
∂f1
= 0
∂X2
∂f1 1
=
∂U1 S
∂f1
= 0
∂U2
∂f2 a −3/2 1 θa θi 1
= X2 X1 + X2 X1−2 − X1−2 − U1 X1−2 − U2 X1−2
∂X1 2S SρCp Rt SρCp Rt S SρCp
a X2 1 X2 θa 1 θi U 1 1 U2
=  + 2 − 2 − 2 −
2S 3 SρCp Rt X 1 SρCp Rt X 1 S X 1 SρCp X 21
X1
∂f2 a 1 1 1
= −  −
∂X2 S X 1 SρCp Rt X 1
∂f2 θi 1
=
∂U1 S X1
∂f2 1 1
= (3.46)
∂U2 SρCp X 1

Luego el proceso tanque de agua linealizado queda como:

ẋ = Ax + Bu (3.47)

donde: ⎡ ⎤ ⎡ ⎤
∂f1 ∂f1 ∂f1 ∂f1
A=⎣ ∂X1 ∂X2 ⎦ B=⎣ ∂U1 ∂U2 ⎦
∂f2 ∂f2 ∂f2 ∂f2
∂X1 ∂X2 ∂U1 ∂U2

Determinación de las Señales de Control en Estado Estable

El actuador que emplea el sistema de control de temperatura trabaja en el rango


de voltaje de 1 a 5 V. Con 5 V, el calefactor proporciona un flujo máximo de calor de
7700 W, de acuerdo al manual del fabricante. Asumiendo una correspondencia lineal

37
entre el voltaje que ingresa al actuador y el flujo de calor entregado, entonces para subir
1 V en dicho actuador (de 1 a 2 V o de 4 a 5 V por ejemplo), se debe de proporcionar
7700/4 = 1925 W.

El cálculo de las matrices A y B requiere conocer los valores de Qi = U 1 y


Φi = U 2 . Para ello, experimentalmente se mantuvo en el tanque una altura de H = 0.11
m a una temperatura de 27.5 o C. Luego, se subió en 1 V al actuador (se incrementó el
calor en 1925 W), hasta que la nueva temperatura en el tanque se estabilizó en 27.5 o C
a una altura de 0.12 m. Por consiguiente, los valores a tomar en los cálculos son U 1 =
0.16 m3 /h, correspondiente a una altura de H = 0.12 m (determinado anteriormente)
y = U 2 = 1925 W.

38
CAPÍTULO 4

IMPLEMENTACIÓN EN TIEMPO REAL

4.1. Estructura en Tiempo Real

La estructura en tiempo real mostrada en la figura 4.1 se emplea para la imple-


mentación del sistema de control de posición de un brazo robótico de 1GDL y para el
control del tanque de agua (control de temperatura más control de nivel).

Figura 4.1: Estructura del sistema de control en tiempo real empleado.

Notar en la figura 4.1 que cualquier algoritmo de control se implementa en la PC.


De hecho, los algoritmos de control implementados en este trabajo, emplean el lenguaje
del software LabVIEW, versión 7.1. La interfaz entre la PC y el usuario es una tarjeta
de adquisición de datos PCI 6229 de NI (National Instrument). Las señales medidas y
generadas para cada sistema de control se discuten en las siguientes secciones.

39
4.2. El Sistema de Control del Brazo Robótico de 1GDL

La figura 4.2 muestra La estructura en tiempo real para controlar la posición


angular del proceso brazo robótico de 1GDL. El sistema de control requiere la medición
de la posición angular, la cual se logra gracias al sensor de posición en cuadratura
(“encoder”) que posee el servomotor D.C. en su eje. La señal medida ingresa por
uno de los dos contadores que posee la tarjeta PCI 6229, ubicado en sus terminales
PFI (Programmable Function I/O). La señal medida se procesa en la PC empleando
LabVIEW. El detalle de la programación del contador se puede ver en los programas en
tiempo real para controlar la posición del brazo robótico. Tales programas se encuentran
en el CD adjunto a este trabajo.

Figura 4.2: Sistema de control en tiempo real para el brazo robótico de 1 GDL.

El algoritmo de control grabado en la PC procesa tal medición y genera una señal


de control. Esta señal resulta débil para poder alimentar directamente a la armadura
el servomotor D.C. Por ello es que se procesa empleando la técnica de modulación
por ancho de pulsos (en inglés PWM: Pulse Width Modulation) y luego pasa a un
amplificador con configuración en H para darle el nivel de potencia adecuado para
hacer girar al servomotor en la dirección adecuada.

40
4.2.1. Generación de la señal PWM

La señal PWM se genera por software. Para ello se emplea el microcontrolador


PIC 16f877 de Microchip. La sigla PIC (Peripheral Interface Controller) significa que
tal dispositivo es un controlador de la interfaz periférica. El generador de PWM, cuyo
diagrama de flujo se muestra en la figura 4.3, genera pulsos de ancho diverso, en con-
cordancia con la señal generada por el algoritmo de control. Tal señal de control puede
variar en el rango de - 2.5 a 0 V para giro antihorario del servomotor, y de 0 a 2.5 V
para giro horario. Esto significa que la posición (por ende la velocidad) del servomotor
varı́a de acuerdo a la magnitud del ancho del pulso generado.

Para que el PIC 16f877 trabaje con rangos positivos, mediante LabVIEW, el
rango de - 2.5 a 0 V se convierte en uno de 0 a 2.5 V, mientras que el rango de 0 a 2.5
V se convierte en otro de 2.5 a 5 V (ver figura 4.4). De este modo, las señales de control
en el rango de 0 a 5 V ingresan al PIC 16f877 por el pin RAO, tal como se muestra en
la figura 4.5. Estas señales se convierten en pulsos PWM que operan a una frecuencia
aproximada de 7.8 kHz, que luego de pasar por el amplificador en H, obtienen el nivel
adecuado de potencia para conmutar el giro del motor tal como se explica en la siguiente
sección. La subsección A.2 muestra el código en lenguaje ensamblador del programa
para generar las señales PWM, mientras que la figura 4.5 muestra el diagrama circuital
para realizar la placa del generador de pulsos PWM empleando ORCAD.

4.2.2. El Amplificador de Potencia

El Circuito Amplificador

Un circuito amplificador por conmutación puede ser construido de varias formas,


ya sea cambiando la frecuencia de conmutación, modificando el ciclo de trabajo (“duty
cycle”) o cambiando ambas. El efecto buscado en un método u otro es que el promedio
de voltaje de salida sea proporcional a la tensión de control. El método más común de
un conmutador amplificador es la modulación PWM (por ancho de pulso). En nuestro
caso, los dispositivos conmutadores, conmutan a una frecuencia constante, dando como
resultado la variación de la tensión de salida entre dos valores extremos. Por variación

41
Figura 4.3: Diagrama de flujo para la generación de los pulsos PWM.

Figura 4.4: Rangos de trabajo en el PIC 16f877.

del ancho de pulso o el duty cycle, el valor promedio de voltaje de salida puede ser
cambiado en forma proporcional a la tensión de control.

42
Figura 4.5: Diseño ORCAD para implementar la placa del generador de pulsos PWM.

El conmutador amplificador implementado es del tipo H y su diagrama se mues-


tra en la figura 4.6. Dicho amplificador emplea dispositivos conmutadores MOSFET
IRFZ34 de 30 A y una fuente de 24 voltios y 8 A. La principal ventaja del conmutador
en H es que sólo necesita una fuente. Los dispositivos conmutadores son conmutados en
pares generando una tensión bipolar a la salida. Para disparar los MOSFET se necesita
circuiterı́a adicional para generar la tensión de disparo en cada conmutador.

En sı́ntesis, cuando el sistema de disparo cierra el conmutador (A1 A4 ) y abre


(A2 A3 ), el sentido de la corriente es la lı́nea punteada, induciendo de esta forma una
tensión +Vcc en el servomotor. Luego, si el sistema de disparo abre al conmutador A1,4
y cierra A2,3 , el sentido de la corriente es la lı́nea continua, induciendo ası́ una tensión
−Vcc en el servomotor. Por lo tanto, el servomotor ve en sus terminales una onda de
voltaje cuadrada variando entre ±Vcc y la corriente que pueda absorber dependerá de

43
la capacidad en corriente de los dispositivos usados en los conmutadores y de la fuente.

Figura 4.6: Esquema del circuito amplificador con su circuito de control.

El Circuito de Control de Disparo de los MOSFET

El objetivo del circuito de control de disparo mostrado en La figura 4.6 es


realizar la conmutación de (A1 A4 ) a (A2 A3 ) o viciversa, de forma tal que no se generen
cortocircuitos durante la conmutación. Tales cortocircuitos se pueden generar cuando
los dos pares de conmutadores se encuentran cerrados, ya que en tal situación puede
circular una gran corriente capaz de deteriorar al dispositivo conmutador.

La lógica del circuito de control de disparo de los MOSFET responde a la tabla


4.1. Notar en esta tabla que cuando las señales PWM1 y PWM2 que salen del generador
de PWM poseen igual amplitud, los conmutadores A1 , A2 , A3 y A4 estarán siempre en
el estado OFF.

Una protección adicional para evitar corrientes de cortocircuito en los conmu-


tadores se logra introduciendo los diodos D1 , D2 , D3 y D4 , tal como se muestra en la

44
Tabla 4.1: Conmutación de los MOSFET’s.

P W M 1 P W M 2 A1 A2 A3 A4
0 0 OFF OFF OFF OFF
0 1 ON OFF ON OFF
1 0 OFF ON OFF ON
1 1 OFF OFF OFF OFF

figura 4.6.

La figura 4.7 muestra los circuitos de disparo de los MOSFET Q14, Q5, Q6 y
Q7. Tales circuitos emplean compuertas lógicas de tecnologı́a TTL (Transistor Tran-
sistor Logic) conformado por los integrados 7404, 7486, 7408 y dos resistencias de 500
Ω. El circuito de disparo de Q14 comprende los transistores Q1 y Q3 formando un
amplificador que trabaja en clase B. Este circuito de disparo trabaja simultáneamente
con el circuito de disparo del MOSFET Q6 (transistores Q8 y Q9). Del mismo modo,
los circuitos de disparo de los MOSFET Q5 (transistores Q2 y Q4) y Q7 (transistores
Q10 y Q11) trabajan en conjunto.

Por ejemplo para el MOSFET Q14, cuando en la salida de la compuerta 7417


existe una señal ON, el transistor Q1 se corta mientras que Q3 se satura. De este modo
a la base del MOSFET llega una corriente que lo habilita. En caso contrario, cuando
en la salida de la compuerta 7417 existe una señal OFF, el transistor Q1 se satura
mientras que Q3 se corta. De este modo a la base del MOSFET no llega una corriente
y lo inhabilita. El mismo análisis se puede hacer para todos los circuitos de disparo.

4.3. El Sistema de Control del Tanque

La figura 4.8 muestra La estructura en tiempo real para controlar simultánea-


mente o por separado el nivel y la temperatura del agua contenido en el tanque. Los
sistemas de control a realizarse requieren de la medición del nivel y de la temperatura
del agua. La medición de nivel se logra empleando un transmisor de presión Valcom
de rango 0 a 1.25 m, mientras que la medición de la temperatura emplea una termore-
sistencia con sensor Pt 100 y de rango 0 a 100 o C.

45
Figura 4.7: Circuitos de control del amplificador de potencia.

La medición de nivel debe ingresar a la PC a través de la tarjeta de adquisición


de datos en un rango de voltaje adecuado. Para ello se emplea el convertidor e indicador
de nivel Safir tipo P, el cual convierte los 4 a 20 mA que proporciona el transmisor de
nivel Valcom tipo P, a una señal de voltaje de 0 a 10 V, que equivale al rango de 0 a
1.25 m de medición de nivel. El transmisor usado sirve también como indicador digital
del nivel.

De mismo modo, la señal que proporciona la termoresistencia se convierte al


rango de voltaje de 0 a 10 V empleando para ello el transmisor de temperatura Valcom
tipo T, el cual convierte el rango de temperatura de 0 a 100 o C a una señal de voltaje de
0 a 10 V. El convertidor usado sirve también como indicador digital de la temperatura.

El algoritmo de control grabado en la PC procesa tal medición y genera dos


señales de control. Estas señales salen a través de dos de las cuatro salidas analógicas
que posee la tarjeta PCI 6229. La primera señal de rango 0 a 10 V, va directamente a

46
Figura 4.8: Sistema de control en tiempo real para el tanque.

la válvula motórica Sauter AVM104S, la cual sirve para controlar el flujo de agua de
entrada al tanque. La segunda señal de rango 1 a 5 V, sirve para excitar al controlador
de potencia SPC1-35, el cual genera la corriente adecuada para alimentar a la resistencia
eléctrica con el propósito de producir el calor necesario para calentar el agua del tanque
a una temperatura deseada.

47
CAPÍTULO 5
CONTROL PID

5.1. Control PID del Tanque

En este capı́tulo se implementan y discuten los siguientes sistemas de control:

(a) Control PID del nivel del agua del tanque.

(b) Control PID multilazo del nivel y de la temperatura en el tanque.

(c) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
fija.

(d) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
variable.

Todas las estructuras de control en tiempo real desarrolladas en este capı́tulo


emplean las configuraciones descritas en las seciones 4.2 y 4.3

Control PID del Nivel

El programa pidtanquenivel.m escrito en código MATLAB y cuyo listado se


muestra en la sección A.3, simula el comportamiento del sistema de control PID de
nivel del tanque de agua. Para ello emplea el modelo lineal del proceso nivel del tanque
dado en 3.26 y usa los datos de la tabla 3.2. La figura 5.1 muestra el resultado de tal
simulación.

Las figuras 5.2 y 5.3 muestran el resultado de la implementación en tiempo real


del sistema de control PID del nivel del tanque. Tal resultado se obtiene ejecutando el
programa NIVELPID.vi escrito en código LabVIEW. Este programa se encuentra en
el CD que se adjunta a este trabajo de tesis.

48
0.25

0.2

NIVEL h (m)
0.15

0.1

0.05

0
0 1 2 3 4 5 6 7 8 9 10

0.12

0.1
Señal de control u (V)

0.08

0.06

0.04

0.02

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

Figura 5.1: Resultado de la simulación del sistema de control PID del nivel del tanque:
nivel controlado y su respectiva señal de control.

Figura 5.2: Nivel controlado en el sistema de control PID en tiempo real del nivel del
tanque.

Control PID Multilazo del Tanque

El sistema de control PID multilazo del tanque se refiere al control simultáneo


del nivel y de la temperatura del tanque. Este control se logra precisamente usando

49
Figura 5.3: Señal de control del nivel en el sistema de control PID en tiempo real del
nivel del tanque.

dos lazos de control PID, uno para el nivel y otro para la temperatura. Para lograr un
control eficiente de la temperatura, la experiencia dicta que debemos de lograr primero
un buen control del nivel del tanque. El experimento realizado sigue tal procedimiento.

Los programas pidtanquenivel.m (visto anteriormente) y pidtanquetemp.m es-


critos en código MATLAB y cuyos listados se muestran en la sección A.3, simulan el
comportamiento del sistema de control multilazo del tanque de agua. Para este caso,
la simulación emplea el modelo lineal del proceso nivel del tanque dado en (3.26), el
modelo lineal del proceso temperatura del tanque dado en (3.32) y usa los datos de la
tabla 3.2. La figura 5.1 muestra el nivel controlado del tanque, mientras que la figura
5.4 muestra la temperatura controlada del tanque.

Las figuras 5.2 y 5.3 muestran el resultado de la implementación en tiempo real


del sistema de control PID del nivel del tanque. Tal resultado se obtiene ejecutando el
programa NIVELPID.vi escrito en código LabVIEW. Este programa se encuentra en
el CD que se adjunta a este trabajo de tesis.

Las figuras 5.5 y 5.6 muestran el nivel controlado y su respectiva señal de control,
mientras que las figuras 5.7 y 5.8 muestran la temperatura controlada y su respectiva
señal de control. Tales respuestas correspondientes al sistema de control PID multilazo
en tiempo real del tanque, se obtuvieron ejecutando el programa MLAZOPID.vi escrito
en código LabVIEW. Este programa se encuentra en el CD que se adjunta a este trabajo
de tesis.

50
25

20
TEMPERATURA (C)
15

10

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000

6000

5000
Señal de control u (W)

4000

3000

2000

1000

0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Tiempo en segundos

Figura 5.4: Resultado de la simulación para el control de temperatura del tanque con
su respectiva señal de control.

Figura 5.5: Nivel controlado en el sistema de control PID multilazo en tiempo real.

5.2. Control PID del Brazo Robótico de 1GDL

El programa pidposfijo.m escrito en código MATLAB y cuyo listado se muestra


en la sección A.3, simula el comportamiento del sistema de control PID de la posición
51
Figura 5.6: Señal de control del nivel en el sistema de control PID multilazo en tiempo
real.

Figura 5.7: Temperatura controlada en el sistema de control PID multilazo en tiempo


real.

del brazo robótico de 1GDL. Para ello emplea el modelo descrito en la sección 3.1
usando los datos de la tabla 3.1. La figura 5.9 muestra el resultado de tal simulación.

Las figuras 5.10 y 5.11 muestran la posición controlado y su respectiva señal de


control del sistema de control PID en tiempo real de la posición del brazo robótico de
1GDL, para una señal de referencia fija. Tales respuestas se obtuvieron ejecutando el
programa PIDPOSFIJO.vi escrito en código LabVIEW. Este programa se encuentra
en el CD que se adjunta a este trabajo de tesis.

El programa pidposvar.m escrito en código MATLAB y cuyo listado se muestra

52
Figura 5.8: Señal de control de la temperatura en el sistema de control PID multilazo
en tiempo real.

1
Posición angular (rad)

0.8

0.6

0.4

0.2

0
0 10 20 30 40 50 60 70 80 90 100

0.2
Señal de control u (voltios)

0.18

0.16

0.14

0.12

0.1
0 10 20 30 40 50 60 70 80 90 100
Tiempo en segundos

Figura 5.9: Posición angular controlada en la simulación del sistema de control PID del
brazo robótico de 1GDL, para una señal de referencia fija.

en la sección A.3, simula el comportamiento del sistema de control PID de la posición


del brazo robótico de 1GDL. Para ello emplea el modelo descrito en la sección 3.1
usando los datos de la tabla 3.1. La figura 5.12 muestra el resultado de tal simulación.

Las figuras 5.13 y 5.14 muestran la posición controlado y su respectiva señal


de control del sistema de control PID en tiempo real de la posición del brazo robótico

53
Figura 5.10: Posición angular controlada en el sistema de control PID en tiempo real
del brazo robótico de 1GDL, para una señal de referencia fija.

Figura 5.11: Señal de control de la posición angular en el sistema de control PID en


tiempo real del brazo robótico de 1GDL, para una señal de referencia fija.

de 1GDL, para una señal de referencia VARIABLE. Tales respuestas se obtuvieron


ejecutando el programa PIDPOSVAR.vi escrito en código LabVIEW. Este programa
se encuentra en el CD que se adjunta a este trabajo de tesis.

54
12

10

Posición angular (rad) 8

0
0 1 2 3 4 5 6 7 8 9 10

3
Señal de control u (voltios)

−1

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

Figura 5.12: Posición angular controlada en la simulación del sistema de control PID
del brazo robótico de 1GDL, para una señal de referencia variable.

Figura 5.13: Posición angular controlada en el sistema de control PID en tiempo real
del brazo robótico de 1GDL, para una señal de referencia variable.

55
Figura 5.14: Señal de control de la posición angular en el sistema de control PID en
tiempo real del brazo robótico de 1GDL, para una señal de referencia variable.

56
CAPÍTULO 6
CONTROL PID MULTIVARIABLE

6.1. Diseño de un Controlador MIMO PID

El controlador MIMO (“Multiple Input Multiple Output” a diseñar requiere de


una representación lineal en el espacio de estado o en el dominio de Laplace del proceso
multivariable. Tal diseño debe de cumplir las siguientes especificaciones de rendimiento:

1. Requerimiento de no interacción.

2. Requerimiento de exactitud estática.

3. Requerimiento de estabilidad.

Para explicar cada uno de tales requerimientos, formulemos las ecuaciones de


estado y de salida del proceso MIMO:

ẋ = Ax + Bu y = Cx + Du (6.1)

donde x es el vector de estado de orden n, u es el vector fuerza de control de orden m


e y es el vector de salidas controladas de orden p.

Con relación al diagrama de bloques de la figura 6.1, la matriz de transferencia


a lazo cerrado Gc (s) del proceso se puede calcular de:
⎡ ⎤
G (s) · · · Gc1p (s)
⎢ c11 ⎥
⎢ .. ... .. ⎥
Gc (s) = ⎢ . . ⎥ (6.2)
⎣ ⎦
Gcp1 (s) · · · Gcpp (s)

No Interacción

Los elementos ubicados fuera de la diagonal principal de Gc (s) determinan el


grado de interacción entre las diferentes entradas de referencia ri con respecto a las

57
Figura 6.1: Diagrama de bloques de un sistema de control PID MIMO.

salidas yi . Para obtener desacoplamiento completo entre las diferentes entradas ri ,


obviamente se requiere que Gc (s) sea diagonal, esto es:

Gcij = 0 parai = j (6.3)

Una condición necesaria y suficiente para no interacción en un sistema de control


MIMO con realimentación unitaria es que la matriz de transferencia a lazo abierto
G(s) = Gp (s)Gs (s) del sistema de control mostrado en la figura 6.1, sea diagonal.
Este último requerimiento es fácil de probar. De la figura 6.1, vemos que G se puede
expresar como:
Gc (s) = [I + G(s)]−1 G(s)

Despejando G(s):

G(s) = Gp (s)Gs (s) = Gc (s)[I − Gc (s)]−1 (6.4)

Nosotros concluimos que Gc (s) es diagonal; por consiguiente, I − Gc es diagonal,


ası́ como también lo es su matriz inversa [I − Gc ]−1 (s) [2], la cual toma la forma:
⎡ ⎤
1
⎢ 1−Gc11 (s) 0 ⎥
⎢ 1 ⎥
⎢ ⎥
−1
[I − Gc (s)] = ⎢ ⎢ 1−Gc22 (s) ⎥
... ⎥
⎢ ⎥
⎣ ⎦
1
0 1−Gcpp (s)

Por lo tanto, (6.4) resulta en la siguiente matriz diagonal:


⎡ ⎤
Gc11 (s)
⎢ 1−Gc11 (s) 0 ⎥
⎢ Gc22 (s) ⎥
⎢ ⎥
G(s) = ⎢ ⎢
1−Gc22 (s)
...

⎥ (6.5)
⎢ ⎥
⎣ ⎦
Gcpp (s)
0 1−Gcpp (s)

58
Exactitud Estática

Nosotros deseamos que para una entrada de referencia constante, el vector de


error:
e(t) = r(t) − y(t)

se aproxime a cero cuando t se aproxime a infinito. En el dominio de s, el error resulta:

e(s) = r(s) − y(s) = r(s) − Gc (s)y(s) = [I − Gc (s)]r(s)

Aplicando el teorema del valor final, podemos concluir que para exactitud estática
(error en estado estable nulo) se requiere:

lı́m[Gc (s)] = I (6.6)


s→0

Estabilidad

La estabilidad del sistema descrito en (6.1), se preserva si los valores propios


de la matriz de estado A se ubican a la izquierda del plano s. Tales valores propios se
calculan resolviendo la siguiente ecuación caracterı́stica del sistema:

|sI − A| = 0 (6.7)

Dicha ecuación caracterı́stica tiene una expresión equivalente, la cual se determina


partiendo del diagrama de bloques mostrado en la figura 6.1, donde:

y(s) = [I + G(s)]−1 G(s)r(s) G(s) = Gp (s) Gs (s) (6.8)

La inversa de [I + G(s)] se puede expresar como:

Adj (I + G(s))
[I + G(s)]−1 =
|I + G(s)|

Por consiguiente, la ecuación caracterı́stica del sistema también se expresa por:

|I + G(s)| = 0 (6.9)

Cabe recalcar que las ecuaciones dadas en (6.7) y (6.9) generan las mismas raı́ces
caracterı́sticas [10].

59
6.2. Control MIMO PID del Tanque

La relación (3.47) o las ecuaciones dadas en (6.1) describen la dinámica del


tanque en el espacio de estado, que como sabemos, posee dos entradas y dos salidas.
De acuerdo a (6.2), la matriz de transferencia del proceso se determina de:

Gp (s) = C(sI − A)−1 B + D (6.10)

Con el auxilio del programa mimopid.m, cuyo listado se muestra en la sección A.4, se
puede determinar que Gp (s) posee la forma:
⎡ ⎤
Kp11
0
⎢ Tp11 s+1 ⎥
⎢ ⎥
Gp (s) = ⎢ ⎥
⎣ ⎦
P s+Q Kp22
(Tp11 s+1)(Tp22 s+1) Tp22 s+1

donde s es la variable laplaciana y Kp11 , Kp22 , P y Q son constantes.

Para diseñar la matriz de control serie Gs (s), podemos asumir primero una
matriz Gc (s) de la forma:
⎡ ⎤
1
0
Gc (s) = ⎣ Tniv s+1 ⎦ (6.11)
1
0 Ttemp s+1

la cual cumple las especificaciones de rendimiento requeridas por lo siguiente:

1. La matriz es diagonal, por lo tanto satisface el requerimiento de no interacción.

2. Como Gc (0) = I, de acuerdo a (6.6), entonces se satisface el requerimiento de


exactitud estática.

3. Debido a que los elementos de la diagonal de Gc (s) son funciones de transferencia


de primer orden, cuyas raı́ces caracterı́sticas se ubican en la parte izquierda del
plano s, entonces podemos asegurar el requerimiento de estabilidad. Además,
cada canal responde exponencialmente con una constante de tiempo igual a Tniv
para el primer canal (control de nivel) y Ttemp (control de temperatura) para el
segundo canal.

La matriz de control Gs (s) se obtiene de (6.4):

Gs (s) = Gp (s)−1 Gc (s)(I − Gc (s))−1 (6.12)

60
la cual, luego de ejecutar el programa MIMOPID.m, resulta en una matriz con 3
controladores PI:
⎡   ⎤
1
Ks11 1 + 0
⎢ TI11 s ⎥
⎢ ⎥
Gs (s) = ⎢ ⎥ (6.13)
⎣     ⎦
1 1
−Ks21 1 + TI21 s
) K s22 1 + TI22 s

La figura 6.2 muestra en detalle la interconexión de todos los bloques.

Figura 6.2: Diagrama de bloques en detalle del sistema de control PID MIMO
implementado.

Las figuras 6.3 y 6.4 muestran el nivel controlado y su respectiva señal de control,
mientras que las figuras 6.5 y 6.6 muestran la temperatura controlada y su respectiva
señal de control. Tales respuestas correspondientes al sistema de control PID MIMO
en tiempo real del tanque, se obtuvieron ejecutando el programa MIMO.vi escrito en
código LabVIEW. Este programa se encuentra en el CD que se adjunta a este trabajo
de tesis.

61
Figura 6.3: Nivel controlado en el sistema de control PID MIMO en tiempo real.

Figura 6.4: Señal de control del nivel en el sistema de control PID MIMO en tiempo
real.

Figura 6.5: Temperatura controlada en el sistema de control PID MIMO en tiempo


real.

62
Figura 6.6: Señal de control de la temperatura en el sistema de control PID MIMO en
tiempo real.

63
CAPÍTULO 7
CONTROL ADAPTATIVO

Este capı́tulo trata sobre el diseño e implementación en tiempo real de un sis-


tema de control adaptativo aplicado al brazo robótico de 1 GDL. Se ha seleccionado el
sistema de control adaptativo con modelo referencial debido a que:

(a) Es un sistema de control robusto porque acepta que los parámetros del proce-
so sean inciertos o puedan cambiar en el tiempo, cuando el proceso controlado
esté operando.

(b) Requiere de un modelo matemático del proceso, pero no necesariamente tiene que
ser el modelo más complejo debido a que su algoritmo puede aceptar dinámica
no modelada o insuficientemente modelada.

(c) Puede trabajar tanto con “set-points” constantes (el problema de regulación) o
“set-points” variables con el tiempo (el problema de seguimiento o “tracking” en
inglés).

(c) Trabaja muy bien con sistemas no lineales.

7.1. Configuración de un SCAMR

La figura 7.1 ilustra la configuración de un SCAMR (Sistema de Control Adap-


tativo con Modelo Referencial) empleado en una variedad de aplicaciones. El SCAMR
se compone principalmente de un modelo de referencia, un controlador adaptativo, el
proceso a controlar y un mecanismo de adaptación. El esquema básico en consideración
se denomina un SCAMR paralelo debido a la ubicación relativa del modelo referencial
con respecto al sistema.

El modelo de referencia, el cual está excitado por una entrada externa r, es un


sistema dinámico auxiliar usado para especificar la respuesta deseada del sistema. Tal
respuesta debe de ser lograda por el SCAMR a pesar de las restricciones generadas por

64
Figura 7.1: Configuración de un SCAMR.

inexactitudes en el modelado de la estructura del modelo de referencia y el modelo del


sistema.

La ley de adaptación consiste en la relación entre el error e y el vector esti-


 El error e es a la vez, la diferencia entre la salida del modelo
mado de parámetros θ.
y la del sistema. Por otra parte, el mecanismo de adaptación es un conjunto de blo-
ques interconectados usado para implementar la ley de adaptación. De hecho, la ley
de adaptación es el algoritmo de control empleado para modificar los parámetros del
controlador adaptativo, de modo tal que el SCAMR permanezca estable y que el error
de seguimiento converja a cero en la presencia de parámetros del sistema variantes con
el tiempo y disturbios externos.

Si el proceso a controlar es no lineal, su descripción analı́tica puede ser impre-


cisa; esto es, el modelo dinámico del sistema puede presentar incertidumbres en su
estructura o dinámica no modelada en su representación. Ya que la descripción del
sistema permite incertidumbres, el control adaptativo (en general) se puede considerar
una aproximación particular de control robusto.

El controlador adaptativo debe de ser capaz de realizar un seguimiento perfecto


en la presencia de incertidumbres en los parámetros. Esto es, en presencia de parámetros
conocidos o desconocidos, los parámetros del controlador requieren ser reajustados
por el mecanismo de adaptación con el fin de hacer cero el error de seguimiento e.
El SCAMR en juego emplea el método directo de Lyapunov para determinar que el

65
sistema diseñado garantice convergencia global de las señales controladas con respecto
a sus trayectorias deseadas.

Es conocido que A. M. Lyapunov trata el problema de la estabilidad de sistemas


descritos mediante ecuaciones diferenciales empleando dos métodos. El denominado
primer método analiza el comportamiento de la estabilidad de una solución explı́cita
del modelo no lineal del sistema y se aplica solamente a ciertos casos. El segundo método
o método directo de Lyapunov es de gran generalidad y potencia porque no requiere
de la solución de la descripción del sistema, como sı́ lo requiere el primer método.

7.2. Diseño del Controlador Adaptativo

Consideremos el siguiente sistema no lineal en su forma asociativa:



m
dn y
(n)
y + αi∗ fi (x, t) = bu  y (n) (7.1)
i=1
dtn

donde x = [y ẏ ... y (n) ]T es el vector de estado de orden n, αi∗ y b son constantes


desconocidas, y fi son funciones no lineales conocidas. Dividiendo ambos miembros de
(7.1) por b, se obtiene:


n
1 αi∗
(n)
hy + αi fi (x, t) = u h= αi = (7.2)
i=1
b b

Definamos el error de seguimiento a la salida:

e = y − yd

donde yd es la trayectoria deseada, de modo tal que el error combinado s se pueda


expresar como:

s = e(n−1) + λn−2 e(n−2) + · · · + λ0 e = ∆(p)e = y (n−1) − yr(n−1) (7.3)

donde:
∆(p) = pn−1 + λn−2 pn−2 + · · · + λ0 = (p − p1 ) . . . (p − pn )
(n−1)
yr(n−1) = yd − λn−2 e(n−2) − · · · − λ0 e

66
en el cual p es el operador de Laplace y ∆(p) es un polinomio estable Hurwitz, lo cual
significa que todas las raı́ces complejas pi = σi + jωi , i = 1, . . . , n de ∆(p) = 0 verifican
la condición σi < 0. Asumamos la siguiente ley de control:

m
u= h yr(n) −ks+ αi fi (x, t) (7.4)
i=1

(n)
donde las constantes k y h poseen el mismo signo. La variable yr , denotada como el
valor de “referencia” de y (n) , se determina de:
(n−1)
(n) dyr
yr(n) = yd − λn−2 e(n−1) − · · · − λ0 ė yr(n) =
dt
Sustituyendo (7.4) en (7.2) nos conduce al error de seguimiento dinámico:

h ṡ + k s = 0 (7.5)

Observar que (7.5) es exponencialmente convergente en s, lo cual a la vez garantiza la


convergencia del error de seguimiento e.

7.2.1. La Ley de Adaptación

Reemplazando los parámetros h y αi de (7.4) por sus valores estimados 


hy
i respectivamente, entonces la ley de control del SCAMR toma la forma:
α

m
u=
h yr(n) − k s + i fi (x, t)
α (7.6)
i=1

Ahora definamos 
h=
h−h y α i − αi . Sustituyendo (7.6) en (7.2) produce el error
i = α
de seguimiento dinámico:

m
hṡ + k s = 
h yr(n) + i fi (x, t)
α (7.7)
i=1

el cual se puede reescribir como:


 
1/h m
s=  (n)
h yr + fi (x, t)
α (7.8)
p + (k/h) i=1

donde p es el operador de Laplace. Considere la siguiente ley de adaptación:

˙

h = −γ sgn(
h)s yr(n)

α̂˙ = −γ sgn(
h)s fi (7.9)

67
donde γ es la ganancia de adaptación. Para determinar si el SCAMR garantiza con-
vergencia seguimiento global, consideremos la siguiente función de Lyapunov:
 
 m
V = |h|s2 + γ −1 h2 + 2
α i (7.10)
i=1

Usando el hecho de que h sign(h) = |h| y k sign(k) = |k| ya que k y h poseen el mismo
signo, se puede demostrar fácilmente que:

V̇ = −2|k|s2 < 0 (7.11)

lo cual garantiza convergencia de seguimiento global del SCAMR en el sentido del


método directo de Liapunov. Ahora, considere la ley de adaptación:

˙

h = −γh sgn(
h)s yrn

˙ i = −γα sgn(
α h)s fi (7.12)

donde las ganancias de adaptación γh y γk son diferentes para cada parámetro descono-
cido. Seleccionando la siguiente candidata para función de Lyapunov:

m
2
V = |h|s + γh−1
h2 + γk−1 i2
α (7.13)
i=1

se puede demostrar fácilmente que V̇ nos conduce a (7.11), lo cual garantiza conver-
gencia de seguimiento global del SCAMR.

7.2.2. La Zona–Muerta evita el Desplazamiento de Parámetros

El análisis de los SCAMR hasta ahora realizado sólo ha tomado en cuenta incer-
tidumbre en los parámetros. Sin embargo, en el mundo real, sistemas controlados tienen
que trabajar en la presencia de incertidumbres no paramétricas tales como: dinámica de
alta frecuencia no modelada en actuadores o estructuras sujetas a vibración, dinámica
de baja frecuencia no modelada tales como las fricciones estática y de Coulomb, ruido
de medición, retardos en el dominio discreto, error computacional de redondeo, etc.

En sistemas de control es intuitivamente comprensible que mientras más grande


sean las incertidumbres paramétricas, más grande será el error de seguimiento. Con-
secuentemente, los SCAMR se pueden volver inestables en presencia de grandes in-
certidumbres paramétricas. Por otro lado, estudios de simulación han demostrado que

68
cuando un SCAMR es persistentemente excitado, entonces el sistema muestra cier-
ta robustez con respecto a las incertidumbres no paramétricas. Por el contrario, aún
pequeñas incertidumbres paramétricas pueden causar problemas de estabilidad si el
SCAMR no está excitado permanentemente.

El problema del desplazamiento de los valores de los parámetros hacia valores


peligrosos está asociado con las incertidumbres no paramétricas. Tal problema se origi-
na principalmente cuando el SCAMR no está excitado permanentemente o debido a la
presencia del ruido de medición. Tal desplazamiento de los parámetros puede causar que
el SCAMR se torne inestable si se permite que los parámetros estimados desplacen sus
valores hacia magnitudes que puedan provocar que los polos del SCAMR realimentado
se vuelvan inestables.

La experiencia dicta que la presencia de pequeños errores de seguimiento pueden


originar el desplazamiento de los parámetros a valores peligrosos. La técnica más simple
de modificación de la ley de control para evitar este problema es detener el mecanismo
de adaptación en presencia de pequeño errores de seguimiento. Esta técnica conocida
como “zona–muerta”, sustituye los términos de (7.12):

˙

h = −γh sgn(
h)s yr(n) ˙ i = −γk sgn(
α h)s fi

por:

⎨ −γ sgn( (n)
h)s yr |s| > ∆y
˙
 h
h =
⎩ 0 |s| < ∆y

⎨ −γ sgn(h)s fi |s| > ∆f
α
˙ i =
α (7.14)
⎩ 0 |s| < ∆f

donde ∆h y ∆f representan el tamaño de la zona–muerta. En la aplicación que nos


ocupa y a la luz de los resultados, no ha sido necesario considerar una zona muerta.

69
7.3. Controlador Adaptativo Para el Brazo Robótico

Forma Asociativa del Modelo

La forma asociativa del brazo robótico de 1GDL dada en (7.2)se deduce a partir
de su modelo desarrollado en la sección 3.1. Escribiendo nuevamente la ecuación del
torque motor dada en (3.11):

nTm = nKm ia = Jeq θ̈ + Beq θ̇ + Q senθ (7.15)

Despejando, se obtiene la expresión de la corriente de armadura ia :


Jeq Beq Q
ia = θ̈ + θ̇ + senθ (7.16)
nKm nKm nKm
y derivando con respecto al tiempo obtenemos:
dia Jeq (3) Beq Q
= θ + θ̈ + cosθ̇ (7.17)
dt nKm nKm nKm
donde: θ(3) = d3 θ/t3 . Sabemos por (3.16) que:
dia KA Kb n Ra
= u− θ̇ − ia (7.18)
dt La La La
Igualando las dos últimas expresiones y despejando el voltaje de armadura u se obtiene:

u = hy (3) + α1 f1 + α2 f2 + α3 f3 + α4 f4 (7.19)

que es la forma asociada del proceso con:

x = [y ẏ ÿ y (3) ] = [θ θ̇ θ̈ θ(3) ]
La Jeq La Beq Ra Jeq
h= α1 = +
nKA Km nKA Km nKA Km
nKb Ra Beq Ra Q La Q
α2 = + α3 = α4 =
KA nKA Km nKA Km nKA Km
f1 = ÿ f2 = ẏ f3 = cosy ẏ f4 = seny

Expresiones del Error Adaptativo

El error combinado s dado en (7.8) se expresa como:

s = ë + λ1 ė + λ0 e = ∆(p)e = ÿ − ÿr

∆(p) = p̈ + λ1 p + λ0 = (p − p1 )(p − p2 )

ÿr = ÿd − λ1 ė − λ0 e (7.20)

70
donde yd es la trayectoria deseada, e = y − yd es el error de seguimiento y p1 y p2 son
las raı́ces deseadas del sistema de control adaptativo. Los valores de los complejos p1
y p2 se escogen de modo tal que posean parte real negativa, mientras que la expresión
de yd (t), tal como se muestra en el programa de simulación del sistema de control
adaptativo: mracsarm.m.

Para el caso que nos ocupa, se puede demostrar fácilmente que:

f3 = f2 cosy s = f1 − ÿr ė = f2 − ẏd ë = f1 − ÿd

En el dominio discreto k y para un tiempo de discretización T , y teniendo en


cuenta que:

y(k) − y(k − 1) ẏ(k) − ẏ(k − 1) ÿ(k) − ÿ(k − 1)


ẏ = ÿ = y (3) =
T T T

entonces las funciones f2 = ẏ y f1 = ÿ toman la forma:

y(k) − y(k − 1) y(k) − 2y(k − 1) + y(k − 2)


f2 (k) = f1 (k) =
T T2

Adaptación de Parámetros y Ley de Control

Los parámetros del sistema de control se adaptan de acuerdo a la expresión


(7.9). Para el brazo robótico que nos ocupa, tal ley de adaptación toma la forma:

ḣ = −γsign(h)syr(3)

α̇1 = −γsign(h)sf1

α̇2 = −γsign(h)sf2

α̇3 = −γsign(h)sf3

α̇4 = −γsign(h)sf4 (7.21)

mientras que la ley de control dada en 7.6 toma la forma:

u = h yr(n) − k s + α1 f1 + α2 f2 + α3 f3 + α4 f4 (7.22)

Finalmente, con propósitos de simulación, la expresión del modelo dinámico del proceso
dado en (7.1), tanto en el dominio continuo como en el dominio discreto toma las formas,

71
:

4
1
(3)
y = αi∗ fi (x, t) + u
i=1
h
T3
y(k) = 3y(k − 1) − 3y(k − 2) + y(k − 3) + (−α1 f1 − α2 f2 − α3 f3 − α4 f4 + u)
h
(7.23)

Resultados de la Implementación en Tiempo Real

El programa mracsarm.m escrito en código MATLAB y cuyo listado se muestra


en la sección A.5, simula el comportamiento del sistema de control adaptativo de la
posición del brazo robótico de 1GDL. Para ello emplea el modelo descrito en la sección
3.1 usando los datos de la tabla 3.1. La figura 7.2 muestra el resultado de tal simulación.

Las figuras 7.3 y 7.4 muestran la posición controlado y su respectiva señal de con-
trol del sistema de control adaptativo en tiempo real de la posición del brazo robótico de
1GDL, para una señal de referencia variable. Tales respuestas se obtuvieron ejecutando
el programa ADAPPOS.vi escrito en código LabVIEW. Este programa se encuentran
en el CD que se adjunta a este trabajo de tesis.

72
6

Posición y (rad) 4

0
0 5 10 15 20 25 30 35 40 45 50

6
Señal de control u (voltios)

−2

−4

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

Figura 7.2: Posición angular controlada en la simulación del sistema de control adap-
tativo del brazo robótico de 1GDL, para una señal de referencia variable.

Figura 7.3: Posición angular controlada en el sistema de control adaptativo en tiempo


real del brazo robótico de 1GDL, para una señal de referencia variable.

73
Figura 7.4: Señal de control de la posición angular en el sistema de control PID en
tiempo real del brazo robótico de 1GDL, para una señal de referencia variable.

74
CAPÍTULO 8
CONTROL DIFUSO

8.1. El Controlador “Fuzzy”

Con el propósito de desarrollar un controlador “fuzzy” (difuso en castellano),


primero se debe de identificar el problema. Esto es, definir los objetivos de control para
los cuales desarrollaremos tal controlador. Luego debemos de diseñar el sistema de
control “fuzzy”. Para ello podemos usar el sistema de control a lazo cerrado mostrado
en la figura 8.1, donde el controlador convencional del sistema está siendo reemplazado
por un controlador ‘fuzzy”. Tal controlador posee tres partes remarcables:

1. El fuzzyficador (palabra derivada del inglés “fuzzifier”), en donde la entrada al


controlador se convierte en variables de entrada tipo fuzzy, usando para ello
funciones de membresia.

2. El conjunto de reglas fuzzy, en donde las variables fuzzy de entrada son evaluadas
para generar variables fuzzy de salida. Estas últimas pasan luego al defuzzyficador
(palabra derivada del inglés “defuzzifier”).

3. El defuzzificador, el cual toma como base las variables fuzzy de salida para generar
un conjunto de valores de salida: las señales de control.

Las funciones de membresia poseen una forma geométrica caracterı́stica. Por


ejemplo pueden ser de forma triangular, de forma trapezoidal, o de alguna forma arbi-
traria, siempre que pueda ser descrita y evaluada mediante una función.

El conjunto de reglas fuzzy son las sentencias del tipo “if/then” que se definen en
conformidad con los objetivos de control. Tales reglas constituyen la clave del sistema
de control “fuzzy”, ya que ellas deciden el comportamiento del sistema para diferentes
entradas.

Con el fin de generar las señales de control, el defuzzyficador puede hacer uso


de varios métodos, todos relacionados con el procesamiento de las variables fuzzy para

75
generar señales que se puedan implementar en tiempo real. Por ejemplo, es común
tomar el promedio ponderado de las variabes ya procesadas con las reglas fuzzy.

Figura 8.1: Sistema de control a lazo cerrado, donde el controlador convencional se


reemplaza por un controlador fuzzy.

8.2. Control Difuso del Brazo Robótico de 1GDL

Un sistema de control de posición angular convencional tradicionalmente emplea


un controlador PD. Por ello, el controlador fuzzy empleado es del tipo PD, el cual se
logra haciendo que sus entradas sean el error e(t) y la derivada del error de(t)/dt, y
que su salida sea la señal de control u(t).

En este trabajo de tesis empleamos funciones de membresia del tipo triangular


para las entradas y funciones “singletons” (o únicas) para la salida. El procedimiento
de fuzzyficación emplea el método de descomposición mı́nima de las funciones de mem-
bresia, mientras que el procedimiento de defuzzification emplea el método del centroide
(ponderación de las variables promediadas para obtener un valor.

La figura 8.2 muestra las funciones de membresia para el controlador fuzzy tipo
PD, mientras que la tabla 8.1 presenta el conjunto de reglas del controlador en la forma
de una matriz de memoria asociativa fuzzy (en inglés: “FAM: Fuzzy Asociative Memory
matrix”). En dicha matriz, las letras tienen el siguiente significado: NL: “Negative
Large” (negativo grande), NM: “Negative Medium” (negativo medio), NS: “Negative

76
Small” (negativo pequeño), ZE: “zero ”(cero), PS: “Positive Small” (positivo pequeño),
PM: “Positive Medium” (positivo medio), PL: “Positive Large” (positivo grande).

Notar que en las funciones de membresia estamos usando los parámetros de


escalamiento p para el error, f para la derivada del error y uu para la salida. Estos
parámetros nos van a permitir sintonizar en tiempo real el controlador difuso para
cumplir el objetivo de control. Debemos anotar que los rangos de e(t) y de(t)/dt son
sólo estimaciones. Para el caso de la salida u(t), se debe tener en cuenta que el rango
de salida de − 2.5 V a + 2.5 V se convierten usando LabVIEW al rango de salida de
0 a + 5 V, que corresponden a los valores máximo y mı́nimo que puede soportar el
PIC que estamos usando para generar la señal PWM (“Pulse Width Modulation”) que
requiere el amplificador con configuración H.

Tabla 8.1: Conjunto de reglas del controlador fuzzy mostradas en la forma de una
matriz de memoria asociativa fuzzy (“FAM-matrix”).

de \ e NL NM NS ZE PS PM PL

DNL NX NX NX NX NS XE PX
DNM NX NX NL NL NS PS PX
DNS NX NL NL NM PS PS PX
DZE NX NL NL ZE PL PL PX
DPS NX NS NS PM PL PL PX
DPM NX NS PS PL PL PX PX
DPL NX ZE PS PX PX PX PX

8.2.1. Proceso de Fuzzyfication

El proceso de fuzzyficación emplea básicamente la información de la figura 8.2.


Por consiguiente, primero definimos los rangos de las funciones de membresia del error,
de la derivada del error y de la salida (tablas 8.2, 8.3 y 8.4), donde las abreviaturas
en minúsculas min, nom y max significan mı́nimo, nominal y máximo respectivamente.

77
Figura 8.2: Funciones de membresia para las entradas (error e(t) y de(t)/dt) y para la
salida u(t).

El valor nominal siempre se sitúa entre los valores mı́nimo y máximo de la función.
Cabe anotar que esta nomenclatura también se emplea en el programa de simulación
del sistema de control fuzzy.

Para explicar el procedimiento de fuzzyficación, tomemos como ejemplo los dos


primeros tramos de la función de membresia del error e(t), correspondiente a la función
NL(t). Podemos observar que para el rango NLmin ≤ e(t) ≤ NLnom, la función de
membresia correspondiente toma el valor NL = 1, mientras que para el rango NLnom
≥ e(t) ≥ NLmax, la función de membresia correspondiente toma el valor genérico:
e(t) + 0.3p
NL(t) = −
0.7p

78
Tabla 8.2: Rango de las funciones de membresia para el error e(t).

NLmin = - 1.2p NLnom = - 1.0p NLmax = - 0.3p


NMmin = - 1.0p NMnom = - 0.3p NMmax = - 0.1p
NSmin = - 0.3p NSnom = - 0.1p NSmax = + 0.0p
ZEmin = - 0.1p ZEnom = + 0.0p ZEmax = + 0.1p
PSmin = + 0.0p PSnom = + 0.1p PSmax = + 0.3p
PMmin = + 0.1p PMnom = + 0.3p PMmax = + 1.0p
PLmin = + 0.3p PLnom = + 1.0p PLmax = + 1.2p

Tabla 8.3: Rango de las funciones de membresia para la derivada del error de(t)/dt.

DNLmin = - 6.0f DNLnom = - 5.0f DNLmax = - 2.0f


DNMmin = - 5.0f DNMnom = - 2.0f DNMmax = - 1.0f
DNSmin = - 2.0f DNSnom = - 1.0f DNSmax = + 0.0f
DZEmin = - 1.0f DZEnom = + 0.0f DZEmax = + 1.0f
DPSmin = + 0.0f DPSnom = + 1.0f DPSmax = + 2.0f
DPMmin = + 1.0f DPMnom = + 2.0f DPMmax = + 5.0f
DPLmin = + 2.0f DPLnom = + 5.0f DPLmax = + 6.0f

Tabla 8.4: Rango de las funciones de membresia para la señal de control u(t).

UNX = - 0.7uu UNL = - 0.6uu UNM = - 0.4uu


UNS = - 0.2uu UZE = 0uu UPS = + 0.2uu
UPM = + 0.4uu UPL = + 0.6uu UPX = + 0.7uu

Notar que la expresión de NL(t) es la ecuación de la recta con pendiente negativa


correspondiente al tramo NLnom ≥ e(t) ≥ NLmax.

Del mismo modo podemos deducir todas las ecuaciones correspondiente al pro-
ceso de fuzzyficación de las entradas e(t) y de(t)/dt. Tales ecuaciones se muestran a
continuación en código MATLAB. Notar que sólo para fines de inicialización, se están

79
añadiendo los valores iniciales nulos de las funciones de membresia.

% FUZZYFICACIÓN DE LAS FUNCIONES DE MEMBRESIA PARA EL ERROR e(t):

NL = 0; if( e >= NLmin & e <= NLnom), NL = +1;


elseif(e >= NLnom & e <= NLmax), NL = -(e+0.3*p)/(0.7*p); end

NM = 0; if(e >= NMmin & e <= NMnom), NM = +(e+1.0*p)/(0.7*p);


elseif(e >= NMnom & e <= NMmax), NM = -(e+0.1*p)/(0.2*p); end

NS = 0; if(e >= NSmin & e <= NSnom), NS = +(e+0.3*p)/(0.2*p);


elseif(e >= NSnom & e <= NSmax), NS = -(e-0.0)/(0.1*p); end

ZE = 0; if(e >= ZEmin & e <= ZEnom), ZE = +(e+0.1*p)/(0.1*p);


elseif(e >= ZEnom & e <= ZEmax), ZE = -(e-0.1*p)/(0.1*p); end

PS = 0; if(e >= PSmin & e <= PSnom), PS = +(e-0.0)/(0.1*p);


elseif(e >= PSnom & e <= PSmax), PS = -(e-0.3*p)/(0.2*p); end

PM = 0; if(e >= PMmin & e <= PMnom), PM = +(e-0.1*p)/(0.2*p);


elseif(e >= PMnom & e <= PMmax), PM = -(e-1.0*p)/(0.7*p); end

PL = 0; if(e >= PLmin & e <= PLnom), PL = +(e-0.3*p)/(0.7*p);


elseif(e >= PLnom & e <= PLmax), PL = +1; end

% FUZZYFICACIÓN DE LAS FUNCIONES DE MEMBRESIA PARA LA DERIVADA DEL ERROR de(t)/dt:

DNL = 0; if( de >= DNLmin & de <= DNLnom), DNL = +1;


elseif(de >= DNLnom & de <= DNLmax), DNL = (-de-2*f)/(3*f); end

DNM = 0; if(de >= DNMmin & de <= DNMnom), DNM = +(de+5*f)/(3*f);


elseif(de >= DNMnom & de <= DNMmax), DNM = (-de-1*f)/f; end

DNS = 0; if(de >= DNSmin & de <= DNSnom), DNS = +(de+2*f)/f;


elseif(de >= DNSnom & de <= DNSmax), DNS = (-de-0.0*f)/f; end

DZE = 0; if(de >= DZEmin & de <= DZEnom), DZE = +(de+1*f)/f;


elseif(de >= DZEnom & de <= DZEmax), DZE = (-de+1*f)/f; end

DPS = 0; if(de >= DPSmin & de <= DPSnom), DPS = +(de+0.0)/f;


elseif(de >= DPSnom & de <= DPSmax), DPS = (de-2*f)/f; end

DPM = 0; if(de >= DPMmin & de <= DPMnom), DPM = +(de-1*f)/f;


elseif(de >= DPMnom & de <= DPMmax), DPM = (-de+5*f)/(3*f); end

DPL = 0; if(de >= DPLmin & de <= DPLnom), DPL = +(de-2*f)/(3*f);


elseif(de >= DPLnom & de <= DPLmax), DPL = +1; end

El programa fuzzyposition.m escrito en código MATLAB y cuyo listado se mues-


tra en la sección A.6, simula el comportamiento del sistema de control fuzzy de la posi-
ción del brazo robótico de 1GDL. Para ello emplea el modelo descrito en la sección 3.1
usando los datos de la tabla 3.1. La figura 8.3 muestra el resultado de tal simulación.

80
Las figuras 8.4 y 8.5 muestran la posición controlado y su respectiva señal de
control del sistema de control PID fuzzy en tiempo real de la posición del brazo robótico
de 1GDL, para una señal de referencia fija. Tales respuestas se obtuvieron ejecutando
los programas FUZZYANT.vi, FUZZYPOSICION.vi y UUPOSICION.vi escritos en
código LabVIEW. Estos programas se encuentra en el CD que se adjunta a este trabajo
de tesis.
1
Posición angular (rad)

0.8

0.6

0.4

0.2

0
0 1 2 3 4 5 6

1.4
Señal de control u (voltios)

1.2

0.8

0.6

0.4

0.2

0
0 1 2 3 4 5 6
Tiempo en segundos

Figura 8.3: Posición angular controlada en la simulación del sistema de control fuzzy
del brazo robótico de 1GDL, para una señal de referencia fija.

81
Figura 8.4: Posición angular controlada en el sistema de control fuzzy en tiempo real
del brazo robótico de 1GDL, para una señal de referencia fija.

Figura 8.5: Señal de control de la posición angular en el sistema de control fuzzy en


tiempo real del brazo robótico de 1GDL, para una señal de referencia fija.

82
CAPÍTULO 9
CONCLUSIONES Y RECOMENDACIONES

A la luz de las aplicaciones en tiempo real presentadas en este trabajo, podemos


aseverar que el rendimiento del algoritmo PID mejorado, diseñado en las secciones 2.2
y 2.3 de este trabajo de tesis, ha sido completamente satisfactorio. Especı́ficamente, en
las siguientes implementaciones en tiempo real llevadas a cabo en el Capı́tulo 5:

(a) Control PID del nivel del agua del tanque.

(b) Control PID multilazo del nivel y de la temperatura en el tanque.

(c) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
fija. una referencia variable.

(d) Control PID de la posición angular del brazo robótico de 1GDL para una referencia
variable.

la o las salidas controladas cumplen con las especificaciones de diseño propuestas. Cabe
mencionar que en todos los casos, la sintonización de los parámetros se realizó con el
correspondiente sistema de control operando.

Para el control multilazo del sistema tanque de agua se emplean dos lazos de
control independientes: uno para el control de nivel y otro para el control de tempera-
tura. Sin embargo, la experiencia dicta que para lograr un buen control automático de
la temperatura, se requiere que el nivel del agua en el tanque varı́e muy poco. Esto se
logra evidentemente poniendo a punto primero el lazo de control del nivel, y luego el
lazo de control de temperatura. Los resultados mostrados en la sección 5.1 evidencia
que el sistema de control multilazo implementado trabaja de acuerdo a las especifica-
ciones pre-establecidas en las variables nivel y temperatura. Cabe anotar que el control
multilazo de las variables de un proceso es muy común en la industria.

Cuando la interacción entre las variables del proceso a controlar es muy fuerte,
entonces la técnica multilazo puede fallar. Si se quiere hacer intervenir en el diseño
del sistema de control la interacción entre las variables, entonces debemos de emplear

83
técnicas de control multivariable. Estas técnicas requieren del modelo dinámico del
proceso a controlar, que no es el caso en la técnica multilazo. El modelo dinámico del
tanque de agua se deduce en la sección 3.2, mientras que el controlador PID multi-
variable se diseña en la sección 6.1. Cabe mencionar que el modelo lineal del proceso
multivariable empleado en el diseño del controlador PID multivariable, se dedujo del
modelo no lineal del sistema.

Como se observa en el diagrama de bloques de la figura 6.2, el sistema de


control PID multivariable requiere de tres controladores PID, uno de ellos trabajando
en contraposición a los otros. No se observa mucha diferencia en los resultados obtenidos
con la técnica multilazo (sección 5.1), comparado con los resultados obtenidos con
la técnica multivariable (sección 6.2). Esto se explica porque el sistema de control
multilazo trabaja satisfactoriamente, lo que indica que la interacción entre las variables
controladas no es del todo relevante como para desintonizar la operación del sistema
de control.

Este trabajo de tesis también presenta la implementación en tiempo real de un


controlador no lineal, el cual debe de emplear el modelo dinámico no lineal del proceso
en el diseño. Este es el caso del control no lineal del brazo robótico desarrollado en
la sección 7.3. La técnica empleada es el control adaptativo empleando un modelo
referencial. Esta técnica emplea el modelo no lineal desarrollado en la sección 3.1.

La técnica del control adaptativo, por diseño propio, es más robusta que la
técnica PID. En principio, el controlador PID es de carácter lineal y no requiere del
modelo del proceso en su diseño ya que procesa el error de medición, y trabaja muy
bien para rangos pequeños de variación de la variable controlada. Si los parámetros
del proceso varı́an notoriamente, entonces un controlador PID requiere ser sintoniza-
do para operar satisfactoriamente en esta nueva situación. El controlador adaptativo
desarrollado, luego de la sintonización inicial de sus parámetros, no requiere un ajuste
posterior, debido a que emplea una ley de adaptación de parámetros que permite que
el proceso adapte sus parámetros a nuevos escenarios de operación.

La figura 5.13 muestra la posición angular del brazo robótico controlada em-
pleando un sistema de control PID con señal de referencia variable, mientras que la
figura 7.3 muestra también la posición angular del brazo, pero controlada empleando

84
un sistema de control no lineal adaptativo. La señal de referencia variable es la misma
en ambos casos. Las diferencias respecto al control no son notorias en ambos casos.
Sin embargo, la experiencia demostró que cuando variamos considerablemente la carga
en el efector final del brazo, el sistema de control PID se desintoniza, mientras que el
sistema de control adaptativo sigue operando normalmente.

En este trabajo de tesis también se implementa un sistema de control difuso


en tiempo real para controlar la posición del brazo robótico (sección 8.1). Las figuras
8.4 y 5.10 muestran la posición angular del brazo robótico controlada empleando un
controlador fuzzy en el primer caso y un controlador PID en el segundo. En ambos casos
la señal de referencia es constante. La respuesta de la figura 5.10 (control PID) presenta
un menor tiempo de estabilización comparado con la respuesta de la figura 8.4 (control
fuzzy). Experimentalmente, la sintonización de un controlador fuzzy resultó más tediosa
que la sintonización de un controlador PID.

Concluyendo, este trabajo de tesis ha demostrado que es posible diseñar y va-


lidar mediante experimentación diferentes algoritmos de control, los cuales pueden ser
aplicados a una gran variedad de procesos. En todos los casos los objetivos de control
se cumplieron satisfactoriamente. Los algoritmos probados, pueden ahora emplearse
para, en un próximo paso, fabricar controladores que además de ser abiertos en su
programación, tengan a disposición los algoritmos de control desarrollados.

Este trabajo de tesis abre un abanico de posibilidades para próximos trabajos


de tesis. Algunos temas a investigarse en esta dirección, y siempre vı́a experimentación,
son por ejemplo: implementación de controladores PID adaptativos que no requieren
sintonización, implementación de controladores PID no lineales multivariables, entre
otros.

85
APÉNDICE A
LISTADO DE PROGRAMAS

A.1. Programas del Capı́tulo 3

Simulación de la Respuesta a Lazo Abierto del Brazo Robótico

% C3rpta.m RESPUESTAS AL ESCALON Y OTROS EN EL SISTEMA BRAZO ROBOTICO DE 1GDL


clear all
% PARAMETROS Y CONSTANTES
KA = 14.9; Km = 31.071*10^(-3); Kb = 31.0352*10^(-3);
Ra = 7.38; La = 4.64*10^(-2); Jm = 1.9062*10^(-6);
Jg = 3.5*10^(-7); Bm = 1.8338*10^(-6); Bg = 10^(-5); BL = Bg;
mh = 0.045; mb = 0.06377; L = 0.776; rh = 0.02; n = 19.741; g = 9.81;
JL = mh*(L + rh)^2 + 2*mh*rh^2/5 + mb*L^2/3;
P = mb*g*L/2 + mh*g*(L + rh);
Jeq = n^2*Jm + Jg + JL; Beq = n^2*Bm + Bg + BL;

% MODELO LINEAL CONTINUO


A = [0 1;-P/Jeq -(Beq*Ra+n^2*Km*Kb)/(Jeq*Ra)];
B = [0;n*Km*KA/(Jeq*Ra)]; C = [1 0]; D = [0]; n = 2;
rankM = rank(ctrb(A,B)); % rankM = 2 ==> C.C.
rankN = rank(obsv(A,C)); % rankN = 2 ==> C.O.
eigA = eig(A); % eigA = [-0.6139+3.7078i -0.6139-3.7078i] ==> ESTABLE
[numc,denc] = ss2tf(A,B,C,D); % FUNCION DE TRANSFERENCIA numc(s)/denc(s)
% numc(s) = 29.4408; denc(s) = s^2 + 1.2278s + 14.1244;

% MODELO LINEAL DISCRETO


T = 0.05; % TIEMPO DE MUESTREO
[G,H,Cd,Dd] = c2dm(A,B,C,D,T,’zoh’);
rankMd = rank(ctrb(G,H)); % rankMd = 2 ==> C.C.
rankNd = rank(obsv(G,Cd)); % rankNd = 2 ==> C.O.
eigG = eig(G); % eigG = [0.9532+0.1788i 0.9532-0.1788i] ==> ESTABLE
[numd,dend] = ss2tf(G,H,Cd,Dd); % FUNCION DE TRANSFERENCIA dumd(z)/dend(z)
% numc(z) = 0.036z^(-1) + 0.0352z^(-2);
% denc(z) = 1 -1.9063z^(-1) + 0.9405z^(-2);

% DISCRETIZACION DIRECTA
x = [0;0]; xc = x; xd = x; x1 = 0; x2 = 0; % CONDICIONES INICIALES
N = 3000;
for k=1:N
u =1.4; U(k) = u; % ENTRADA
x1 = x1 + T*x2; % ECUACION DE ESTADO NO LINEAL DE ORDEN 2
x2 = x2 + T*(-(P/Jeq)*sin(x1) - ((Beq*Ra + n^2*Km*Kb)/(Jeq*Ra))*x2 ...
+ (n*Km*KA/(Jeq*Ra))*u);
Y(k) = x1; % SALIDA NO LINEAL
xc = xc + T*(A*xc + B*u); Yc(k) = C*xc; % SALIDA SLIT CONTINUO
xd = G*xd + H*u; Yd(k) = Cd*xd; % SALIDA SLIT DISCRETO
end

% GRAFICOS

86
t=linspace(0,N*T,N);
subplot(3,1,1)
plot(t,Y(1:N)); grid; ylabel(’y(t) NO LINEAL [rad]’)
subplot(3,1,2)
plot(t,Yc(1:N)); grid; ylabel(’y(t) LINEAL [rad]’)
subplot(3,1,3)
plot(t,Yd(1:N)); grid; ylabel(’y(k) LINEAL [rad]’)
xlabel(’Tiempo en segundos’)
print -deps -f C3rpta

A.2. Programas del Capı́tulo 4

Programa para Generar Señales PWM

list p=16f877
include<p16f877.inc>

org 0000H
goto INICIO

org 0004H
goto INTERRUPCION

INICIO
bsf STATUS,RP0
bcf TRISC,1
bcf TRISC,2
movlw B’00001110’
movwf ADCON1
movlw 0x7E
movwf PR2
movlw B’11000000’
movwf INTCON
bsf PIE1,TMR2IE
bcf STATUS,RP0

MOVLW b’01000001’
MOVWF ADCON0

movlw B’00000100’
movwf T2CON
bcf PORTC,1
BCF PORTC,2
GOTO $

INTERRUPCION

bsf PIR1,TMR2IF
bsf ADCON0,GO
btfsc ADCON0,GO
goto $-1

87
movf ADRESH,W
sublw 0x80
btfss STATUS,C
goto PW2

movlw 0x7F
subwf ADRESH,W
btfss STATUS,C
GOTO PW1

clrf CCP2CON
clrf CCP1CON
bcf PORTC,1
bcf PORTC,2
retfie

PW2
movlw 0x81
subwf ADRESH,W

movwf CCPR1L
movlw b’00001100’
movwf CCP1CON

clrf CCP2CON
bcf PORTC,1
retfie

PW1
mof ADRESH,W
SUBLW 0X7E

movwf CCPR2L
movlw b 00001100’
movwf CCP2CON

clrf CCP1CON
bcf PORTC,2
retfie

end

A.3. Programas del Capı́tulo 5

Control PID del Nivel del Tanque

% pidtanquenivel.m CONTROL LINEAL PID DEL NIVEL DEL TANQUE


clear all
% ECUACIONE DINAMICAS
% S*dh = (qi - qo)*dt; qo = H/Rh
% dh/dt = -1/(S*Rh)*h + (1/S)*qi
% PARAMETROS DEL PROCESO LINEAL

88
% H = 0.2 m, Q = 0.2 m^3/hora = 0.2/3600 m^3/s: VALORES ESTABLES DE h Y qi;
% Rh = H/Q = 3600 s/m^2: REISTENCIA HIDRAULICA;
% diam = 0.25 m: DIAMETRO DEL TANQUE;
% S = pi*(diam/2)^2 = 0.041 m^2: SUPERFICIE DEL TANQUE
H = 0.2; Q = 0.2/3600; Rh = H/Q; diam = 0.25; S = pi*(diam/2)^2; g = 9.81;
% MODELO LINEAL DEL PROCESO CONTINUO
A = -1/(S*Rh); B = 1/S; % A = -0.0057; B = 20.3718; S*Rh = 176.7146 s = 2.94 min
% PERIODO DE MUESTREO Y PARAMETROS PID
T = 0.01; Nn = 10; Kp = 0.5; Ti = 100; Td = 0;
% EN TIEMPO REAL: T = 1; Nn = 10; Kp = 4; Ti = 100; Td = 0;
% CONDICIONES INICIALES
ep = 0; % ERROR PASADO
x = 0; xp=0; % NIVEL
Ip = 0; Dp=0;
% ******** LAZO DEL SISTEMA DE CONTROL *********
Mm = 1000;
for k = 1:Mm
% SE~NAL DE REFERENCIA
% r = 2*sin(0.002*k)+ 0.001*k; R(k) = r;
r = 0.2; R(k) = r;
% CALCULO DE LA SE~NAL DE CONTROL u(t)
e = r - x; Y(k) = x;
P = Kp*e;
I = Ip + T*Kp*(e+ep)/(2*Ti); % APROXIMACION TRAPEZOIDAL
D = (Td/(Nn*T + Td))*Dp - Kp*Td*Nn*(x - xp)/(Nn*T + Td);
% Td
% D = -----------*[ Dp - Kp*Nn*(x1 - x1p) ]
% (Nn*T + Td)
u = P + I + D; U(k) = u;
% MODELO LINEAL (DISCRETIZACION DIRECTA)
x = x + T*(A*x + B*u);
ep = e; xp=x; Ip=I;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS
ejet = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejet,r,ejet,Y); grid
ylabel(’NIVEL h (m)’)
subplot(2,1,2)
plot(ejet,U); grid
ylabel(’Se~nal de control u (V)’)
xlabel(’Tiempo en segundos’)
print -f -deps pidnivel % crea pidnivel.eps

Control PID de la Temperatura del Tanque

% pidtanquetemp.m CONTROL LINEAL PID DE LA TEMPERATURA DEL TANQUE


clear all
% ECUACIONES DINAMICAS PARA NIVEL
% S*dh = (qi - qo)*dt; qo = H/Rh
% dh/dt = -1/(S*Rh)*h + (1/S)*qi
% PARAMETROS DEL PROCESO LINEAL
% H=0.2 m, Q=0.2 m^3/hora=0.2/3600 m^3/s (ABERTURA MEDIA): VALORES D.C. DE h Y qi;
% Rh = H/Q = 3600 s/m^2: REISTENCIA HIDRAULICA;

89
% diam = 0.25 m: DIAMETRO Y S = pi*(diam/2)^2 = 0.041 m^2 SUPERFICIE DEL TANQUE
H = 0.2; Q = 0.2/3600; Rh = H/Q; diam = 0.25; S = pi*(diam/2)^2; g = 9.81;
% DENSIDAD DEL H2O: rho=1000 kg/m^3; CALOR ESPECIFICO DEL H20: Cp=4186.8 J/(Kg C);
% CAPACITANCIA TERMICA DEL TANQUE: Ct = rho*S*H*Cp = 34332 J/ C;

% ECUACIONES DINAMICAS PARA TEMPERATURA


% thetao (EN GRADOS CENTIGRADOS): TEMPERATURA DE SALIDA;
% phii EN W = J/s: CALOR ENTREGADO POR EL CALEFACTOR ELECTRICO;
% phio EN W = J/s: CALOR QUE TOMA EL FLUJO DE SALIDA
% Ct*d(thetao)/dt = phii - phio
% phio = Cp*rho*qo*thetao; ASUMIENDO QUE qo = Q ==> phio = Cp*rho*Q*thetao, Y
% Ct*d(thetao)/dt = phii - Cp*rho*Q*thetao
% d(thetao)/dt = - (Cp*rho*Q/Ct)*thetao + (1/Ct)*phii
% SE SABE QUE LA RESISTENCIA TERMICA SE EXPRESA: Rt = 1/(Cp*rho*Q)= C s/J, ENTONCES:
% d(thetao)/dt = - (1/Rt*Ct)*thetao + (1/Ct)*phii
rho = 1000; Cp = 4186.8; Ct = rho*S*H*Cp; Rt = 1/(Cp*rho*Q); % Rt = 0.043 0.00097
% MODELO LINEAL DEL PROCESO CONTINUO
A = -1/(Ct*Rt); B = 1/Ct; % A=-0.0057; B=2.4329e-005; Ct*Rt=176.7146 = 2.94 min
% PERIODO DE MUESTREO Y PARAMETROS PID
T = 1; Nn = 10; Kp = 1.5; Ti = 3; Td = 0;
% EN TIEMPO REAL: T = 1; Nn = 10; Kp = 4; Ti = 100; Td = 0;
% CONDICIONES INICIALES
ep = 0; % ERROR PASADO
x = 0; xp=0; % TEMPERATURA
Ip = 0; Dp=0;
% ******** LAZO DEL SISTEMA DE CONTROL *********
Mm = 2000;
for k = 1:Mm
% SE~
NAL DE REFERENCIA
r = 24; R(k) = r;
% CALCULO DE LA SE~NAL DE CONTROL u(t)
e = r - x; Y(k) = x;
P = Kp*e;
I = Ip + T*Kp*(e+ep)/(2*Ti); % APROXIMACION TRAPEZOIDAL
D = (Td/(Nn*T + Td))*Dp - Kp*Td*Nn*(x - xp)/(Nn*T + Td);
% Td
% D = -----------*[ Dp - Kp*Nn*(x1 - x1p) ]
% (Nn*T + Td)
u = P + I + D; U(k) = u;
% 1 V < > 1540 W, 2 V < > 2*1540 = 3080 W, 3 V < > 3*1540 = 4620 W,
% 4 V < > 4*1540 = 6160 W, 5 V < > 5*1540 = 7700 W
% if(u < 1540)
% u = 1540;
% elseif(u > 7700)
% u = 7700;
% end
% MODELO LINEAL (DISCRETIZACION DIRECTA)
x = x + T*(A*x + B*u);
ep = e; xp=x; Ip=I;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS
ejet = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejet,r,ejet,Y); grid
ylabel(’TEMPERATURA (C)’)
subplot(2,1,2)
plot(ejet,U); grid

90
ylabel(’Se~
nal de control u (W)’)
xlabel(’Tiempo en segundos’)
print -f -deps pidtanquetemp % crea pidtanquetemp.eps

Control PID de la Posición Angular del Brazo Robótico de 1GDL

% pidposfijo.m CONTROL DE POSICION CON REFERENCIA FIJA


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;
Kb = 31.035e-3; Ra = 7.38; mb = 0.06377;
KA = 14.9; mh = 0.00; % 0.01, 0.02, 0.045;
Km = 31.071e-3; n = 19.741; La = 4.64e-3;
L = 0.776;
B = n^2*bm +bLa;
Jeff = n^2*Jm +JLa;
M = Jeff + (1/3)*m*L^2 + Mo*L^2 + (2/5)*Mo*Ro^2;
N = g*L*(mh+mb/2);
% MODELO LINEAL DEL PROCESO DE SEGUNDO ORDEN (c: CONTINUO)
Ac = [0 1;-N/M -(B + n^2*Km*Kb/Ra)/M];
Bc = [0;n*Km*KA/(Ra*M)];
Cc = [1 0]; Dc = [0];
% PERIODO DE MUESTREO Y OTROS PARAMETROS
T = 0.01; Nn = 10; Kp = 0.1; Ti = 0.4; Td = 0.01; Tf=Td/Nn;
% EN TIEMPO REAL: T = 0.001; Nn = 10; Kp = 4; Ti = 1e10; Td = 20; Tf=Td/Nn;
% TENSION EN AMPLIFICADOr hH: 8.8 V; TENSION EN FUENTE: 9 V.
%
% CONDICIONES INICIALES
ep = 0; % ERROR PASADO
x1 = 0; x1p=0; % POSICION
x2 = 0; % VELOCIDAD
Ip = 0; Dp=0;
% ******** LAZO DEL SISTEMA DE CONTROL *********
Mm = 5000;
for k = 1:Mm
% SE~
NAL DE REFERENCIA
% r = 2*sin(0.002*k)+ 0.001*k; R(k) = r;
r = 1; R(k) = r;
% CALCULO DE LA SE~nNAL DE CONTROL u(t)
e = r - x1; Y(k) = x1;
P = Kp*e;
I = Ip + T*Kp*(e+ep)/(2*Ti); % APROXIMACION TRAPEZOIDAL
D = (Td/(Nn*T + Td))*Dp - Kp*Td*Nn*(x1 - x1p)/(Nn*T + Td);
% Td
% D = -----------*[ Dp - Kp*Nn*(x1 - x1p) ]
% (Nn*T + Td)
u = P + I + D;
% if(u > 5)
% u = P + I;
% elseif( u < - 5)
% u = P + I;
% else
% u = P + I + D;
% end

91
U(k) = u;
% MODELO DE SEGUNDO ORDEN DEL PROCESO (DISCRETIZACION DIRECTA)
TN = 0;
x1 = x1 + T*x2;
x2 = x2 + T*( -(N/M)*x1 - (B/M + n^2*Km*Kb/(M*Ra))*x2 ...
- TN/M + (n*Km*KA/(Ra*M))*u );
ep = e; x1p=x1; Ip=I;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,R,ejex,Y); grid; ylabel(’Posición angular (rad)’)
subplot(2,1,2)
plot(ejex,U); grid; ylabel(’Se~
nal de control u (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps pidposfijo % crea pidposfijo.eps

% pidposvar.m CONTROL DE POSICION CON REFERENCIA VARIABLE


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;
Kb = 31.035e-3; Ra = 7.38; mb = 0.06377;
KA = 14.9; mh = 0.00; % 0.01, 0.02, 0.045;
Km = 31.071e-3; n = 19.741; La = 4.64e-3;
L = 0.776;
B = n^2*bm +bLa;
Jeff = n^2*Jm +JLa;
M = Jeff + (1/3)*mb*L^2 + mh*L^2 + (2/5)*mh*Ro^2;
N = g*L*(mh + mb/2);
% MODELO LINEAL DEL PROCESO DE SEGUNDO ORDEN (c: CONTINUO)
Ac = [0 1;-N/M -(B + n^2*Km*Kb/Ra)/M];
Bc = [0;n*Km*KA/(Ra*M)];
Cc = [1 0]; Dc = [0];
% PERIODO DE MUESTREO Y OTROS PARAMETROS
T = 0.001; Nn = 10; Kp = 10.9; Ti = 1e12; Td = 0.5; Tf=Td/Nn; ;
% EN TIEMPO REAL:
% TENSION EN AMPLIFICADOr hH: 8.8 V; TENSION EN FUENTE: 9 V.
% GRAFICOS GENERADOS EN s (TOTAL: 40 S): i -----> .
% --- ---->
% 500 -----> .
% CONDICIONES INICIALES
ep = 0; % ERROR PASADO
x1 = 0; x1p=0; % POSICION
x2 = 0; % VELOCIDAD
Ip = 0; Dp=0;
% ******** LAZO DEL SISTEMA DE CONTROL *********
Mm = 10000;
for k = 1:Mm
% SE~NAL DE REFERENCIA
r = 2*sin(0.002*k)+ 0.001*k; R(k) = r;
% CALCULO DE LA SE~NAL DE CONTROL u(t)
e = r - x1; Y(k) = x1;
P = Kp*e;
I = Ip + T*Kp*(e+ep)/(2*Ti); % APROXIMACION TRAPEZOIDAL

92
D = (Td/(Nn*T + Td))*Dp - Kp*Td*Nn*(x1 - x1p)/(Nn*T + Td);
% Td
% D = -----------*[ Dp - Kp*Nn*(x1 - x1p) ]
% (Nn*T + Td)
u = P + I + D; U(k) = u;
% MODELO DE SEGUNDO ORDEN DEL PROCESO (DISCRETIZACION DIRECTA)
TN = 0;
x1 = x1 + T*x2;
x2 = x2 + T*( -(N/M)*x1 - (B/M + n^2*Km*Kb/(M*Ra))*x2 ...
- TN/M + (n*Km*KA/(Ra*M))*u );
ep = e; x1p=x1; Ip=I;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,R,ejex,Y); grid; ylabel(’Posición angular (rad)’)
subplot(2,1,2)
plot(ejex,U); grid; ylabel(’Se~
nal de control u (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps pidposvar % crea pidposvar.eps

A.4. Programas del Capı́tulo 6

Control PID MIMO del Tanque

% mimopid.m CONTROL PI MULTIVARIABLE DEL TANQUE


clear all
% DEERMINACION DE LAS MATRICES DE LA ECUACION DE ESTADO
% DIAMETRO DEL TANQUE: diam = 0.25 m; SU SUPERFICIE: S = pi*(diam/2)^2 = 0.041 m^2;

% ECUACIONES DINAMICAS PARA EL NIVEL h


% S*dh = (qi - qo)*dt; qo = a*sqrt(h) --> h = (qo/a)^2
% ----------------------------------------------------
% dh/dt = -(a/S)*sqrt(h) + (1/S)*qi
% ----------------------------------
% SE SABE QUE qo = Cd*Ao*sqrt(2gh) = Cd*Ao*sqrt(2*g)*sqrt(h) ==> a = Cd*Ao*sqrt(2*g);
% SE SABE QUE Cd = Cv*Cc, 0.8<=Cv<= 0.99, 0.6<=Cc<=1, 0.48<=Cd<= 0.99, ==> Cd = 0.5;
% DIAMETRO DEL ORIFICIO: do = 0.5" = 0.0127 m; AREA DEL ORIFICIO: Ao = pi*(do/2)^2
diam = 0.265; S = pi*(diam/2)^2; Cd = 0.5; do = 0.0127; Ao = pi*(do/2)^2; g = 9.81;
a = Cd*Ao*sqrt(2*g); H = 0.12; Q = 0.16/3600; % a=2.8055e-004
% ECUACIONES DINAMICAS PARA LA TEMPERATURA thetao
% PhiT = - Phio - Phis + Phic + Phii
% PhiT = S*rho*Cp*h*(dthetao/dt); CALOR DEL AGUA EN EL TANQUE
% Phio = Cp*rho*thetao*a*sqrt(h); CALOR QUE TOMA EL FLUJO DE AGUA DE SALIDA
% Phis = (thetao - thetaa)/Rt; CALOR QUE SE LIBERA DEL TANQUE AL EXTERIOR
% Phic = Cp*rho*thetai*qi; CALOR QUE TRAE CONSIGO EL FLUJO DE AGUA QUE ENTRA
% dthetao/dt = -(a/S)*thetao/sqrt(h) - (1/(S*rho*Cp*Rt))*thetao/h + ...
% (thetaa/(S*rho*Cp*Rt))/h + (thetai/S)8qi/h + (1/S*rho*Cp)*Phii/h
rho = 1000; Cp = 4186.8; Ct = rho*S*H*Cp; Rt = 1/(Cp*rho*Q); % Rt = 0.0054
thetao = 273.15+28.5; thetai = 273.15+27.5; thetaa = 273.15 + 27; %
U1 = Q; U2 = 1925; % VALORES PUNTO DE OPERACION

93
X1 = H; X2 = thetao; % VALORES PUNTO DE OPERACION
% 1 a 2 V < > 1925 W, 2 a 3 V < > 2*1925 = 3850 W, 3 a 4 V < > 3*1925 = 5775 W,
% 4 a 5 V < > 7700 W
% 1 cal = 4.186 J; 1 cal/(gr*C) = 4.1868 J/(0.001 kg * K) = 4186.8 J/(kg*K)
% LINEALIZACION
% x1 = h; x2 = thetao; u1 = qi; u2 = Phii; VARIABLES DE ESTADO
% -----------------------------------------------------------------------------
% f1 = dx1/dt = -(a/S)*sqrt(x1) + (1/A)*u1
% f2 = dx2/dt = -(a/S)*x2/sqrt(x1) - (1/(S*rho*Cp*Rt))*x2/x1 + ...
% (thetaa/(S*rho*Cp*Rt))/x1 + (thetai/S)*u1/x1 + (1/S*rho*Cp)*u2/x1
% Df1/Dx1 = a11; Df1/Dx2 = a12; Df1/Du1 = b11; Df1/Du2 = b12;
% Df2/Dx1 = a21; Df2/Dx2 = a22; Df2/Du1 = b21; Df2/Du2 = b22;
% -----------------------------------------------------------------------------
a11 = -a/(2*S*sqrt(X1)); a12 = 0;
a21 = a*X2/(2*S*sqrt(X1^3)) + (X2 - thetaa)/(S*rho*Cp*Rt*X1^2) - ...
thetai*U1/(S*X1^2) - U2/(S*rho*Cp*X1^2);
a22 = -a/(S*sqrt(X1)) - 1/(S*rho*Cp*Rt*X1);
b11 = 1/S; b12 = 0;
b21 = thetai/(S*X1); b22 = 1/(S*rho*Cp*X1);
AA = [a11 a12;a21 a22];
BB = [b11 b12;b21 b22];
CC=[1 0;0 1]; DD=[0 0;0 0];
[E,D] = eig(AA); % D = diag(-0.0184,-0.0064)
mo = ss(AA,BB,CC,DD);
tf1 = tf(mo)
syms s
Gp = CC*inv(s*eye(2) -AA)*BB;
% Gp = [ 2469.5/(136.2s + 1) 0
% (3.1375e+8*s + 2.8949e+6)/((136.2s + 1)*(50.7s + 1)) 0.0018/(50.7s + 1)];
Tniv = 180; Ttemp=420;
Gc = [1/(Tniv*s+1) 0;0 1/(Ttemp*s+1)];
Gs = inv(Gp)*Gc*inv(eye(2)-Gc);
pretty(simplify(Gs));
% EN TIEMPO REAL: N=10, SP = 14 cm, Td=0, Kp= 4, Ti=100 PARA NIVEL
% N=10, SP = 14 cm, Td=0, Kp=-4, Ti=-100 PARA 3er CONTROLADOR
% N=10, SP = 29 C, Td=0, Kp= 6, Ti=100 PARA TEMPERATURA

% Gs = [1.8385e-004*(1 + 1/(136.2026*s)) 0 ]
% [ ]
% [-3.8570e+005*(1 + 1/(105.2191*s)) 50.7*(1 + 1/(50.709*s)) ]

tf1

A.5. Programas del Capı́tulo 7

Control Adaptativo del Brazo Robótico de 1GDL

% mracsrarm.m SIMULACION DEL SISTEMA DE CONTROL ADAPTATIVO CON MODELO


% REFERENCIAL PARA EL PROCESO RARM: REFERENCIA VARIABLE (TRACKING)
clear all
% PARAMETROS DEL PROCESO NO LINEAL
Jeq = 4.2e-6; Beq = 3.3e-6; L = 0.776; g = 9.81;

94
Kb = 31.035e-3; Ra = 7.38; La = 4.64e-3;
KA = 14.9; Km = 31.071e-3; n = 19.741;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; mb = 0.06377; mh = 0.8;
meq = mb + Mo;
Beq = n^2*bm +bL;
Jeff = n^2*Jm +JL;
Jeq = Jeff + (1/3)*mb*L^2 + mh*L^2 + (2/5)*mh*Ro^2;
H = Jeq*La/KA;
ALPHA1 = Beq*La/KA + Ra*Jeq/(n*KA*Km);
ALPHA2 = n*Kb/KA + Ra*Beq/(n*KA*Km);
ALPHA3 = meq*g*L*La/KA;
ALPHA4 = meq*g*L*Ra/(n*KA*Km);
% RAICES DESEADAS
r1 = -5; r2 = -4; % r1 = -2.5; r2 = -3.5;
lambda0 = r1*r2; lambda1 = -(r1+r2);
% PARAMETROS DE SINTONIZACION
k = 5; gamma = 6; T = 0.01; % TIEMPO DE MUESTREO
% CONDICIONES INICIALES
y = 0; yp = 0; ypp = 0;
h = 0;
alpha1 = 0;
alpha2 = 0;
alpha3 = 0;
alpha4 = 0;
% ******** LAZO DEL SISTEMA DE CONTROL ADAPTIVO *********
Mm = 5000; Td = 10; W = 0.5*2*pi*T/Td;
for t = 1:Mm
% TARYECTORIA DESEADA
yd = sin(W*t)+0.001*t; dyd = W*cos(W*t)+0.001; Yd(t) = yd;
ddyd = -W^2*sin(W*t); dddyd = -W^3*cos(W*t);
% yd = 1; dyd = 0; ddyd = 0; dddyd = 0; Yd(t) = yd;
% FUNCIONES NO LINEALES
f4 = sin(y); f2 = (y - yp)/T; f3 = f2*cos(y);
f1 = (y - 2*yp + ypp)/T^2;
% ERROR DE SEGUIMIENTO
e = y - yd; de = f2 - dyd; dde = f1 - ddyd;
% VARIABLE DE REFERENCIA
ddyr = ddyd - lambda1*de - lambda0*e;
% FUNCION DE ERROR
s = f1 - ddyr;
% ADAPTACION DE PARAMETROS
dddyr = dddyd - lambda1*dde - lambda0*de;
h = h + T*(- gamma*sign(h)*s*dddyr);
alpha1 = alpha1 + T*(- gamma*sign(h)*s*f1);
alpha2 = alpha2 + T*(- gamma*sign(h)*s*f2);
alpha3 = alpha3 + T*(- gamma*sign(h)*s*f3);
alpha4 = alpha4 + T*(- gamma*sign(h)*s*f4);
% LEY DE CONTROL
u = h*dddyr - k*s + alpha1*f1 + alpha2*f2 + alpha3*f3 + alpha4*f4; U(t)=u;
% PROCESO NO LINEAL
yf = 3*y - 3*yp + ypp + (T^3/H)*(- ALPHA1*f1 - ...
ALPHA2*f2 - ALPHA3*f3 - ALPHA4*f4 + u); Y(t)=yf;
% UPDATE
y = yf; yp = y; ypp = yp;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS

95
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,Yd(1:Mm),ejex,Y(1:Mm)); grid
ylabel(’Posición 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 mracsrarm

A.6. Programas del Capı́tulo 8

Control Fuzzy del Brazo Robótico de 1GDL

% fuzzyposition.m SIMULACION DEL SISTEMA DE CONTROL DE POSICION FUZZY


%
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;
Kb = 31.035e-3; Ra = 7.38; mb = 0.06377;
KA = 14.9; mh = 0.00; % 0.01, 0.02, 0.045;
Km = 31.071e-3; n = 19.741; La = 4.64e-3;
L = 0.776;
B = n^2*bm +bLa;
Jeff = n^2*Jm +JLa;
M = Jeff + (1/3)*mb*L^2 + mh*L^2 + (2/5)*mh*Ro^2;
N = g*L*(mh+mb/2);
% MODELO LINEAL DEL PROCESO DE SEGUNDO ORDEN (c: CONTINUO)
Ac = [0 1;-N/M -(B + n^2*Km*Kb/Ra)/M];
Bc = [0;n*Km*KA/(Ra*M)];
Cc = [1 0]; Dc = [0];
% PERIODO DE MUESTREO Y OTROS PARAMETROS
T = 0.001;
% RANGOS DE LAS FUNCIONES DE MEMBRESIA PARA EL ERROR e:
p=0.9;
NLmin=-1.2*p; NLnom=-1.0*p; NLmax=-0.3*p;
NMmin=-1.0*p; NMnom=-0.3*p; NMmax=-0.1*p;
NSmin=-0.3*p; NSnom=-0.1*p; NSmax=+0.0*p;
ZEmin=-0.1*p; ZEnom=+0.0*p; ZEmax=+0.1*p;
PSmin=+0.0*p; PSnom=+0.1*p; PSmax=+0.3*p;
PMmin=+0.1*p; PMnom=+0.3*p; PMmax=+1.0*p;
PLmin=+0.3*p; PLnom=+1.0*p; PLmax=+1.2*p;
% RANGOS DE LAS FUNCIONES DE MEMBRESIA PARA LA DERIVADA DEL ERROR de:
f=0.5;
DNLmin=-6.0*f; DNLnom=-5.0*f; DNLmax=-2.0*f;
DNMmin=-5.0*f; DNMnom=-2.0*f; DNMmax=-1.0*f;
DNSmin=-2.0*f; DNSnom=-1.0*f; DNSmax=+0.0*f;
DZEmin=-1.0*f; DZEnom=+0.0*f; DZEmax=+1.0*f;
DPSmin=+0.0*f; DPSnom=+1.0*f; DPSmax=+2.0*f;
DPMmin=+1.0*f; DPMnom=+2.0*f; DPMmax=+5.0*f;
DPLmin=+2.0*f; DPLnom=+5.0*f; DPLmax=+6.0*f;

96
% SALIDAS (FUERZAS DE CONTROL)
uu = 2;
UNX=-0.7*uu; UNL=-0.6*uu; UNM=-0.4*uu; UNS=-0.2*uu; UZE=0*uu;
UPS=0.2*uu; UPM=0.4*uu; UPL=0.6*uu; UPX=0.7*uu;

% CONDICIONES INICIALES
ep = 0; % se~nal de error pasado
x1 = 0; % posicion
x2 = 0; % velocidad

I = 0;
D = 0; % ******** LAZO DEL SISTEMA DE CONTROL FUZZY *********
Mm = 6000;
for k = 1:Mm
% SE~NAL DE REFERENCIA
r = 1; R(k) = r; % set point
% CALCULO DE LA SE~NAL DE CONTROL u(t)
e = r - x1; Y(k) = x1;
de = (e - ep)/T;
% P = Kp*e;
% I = I + Kp*ep/Ti;
% D = (Td/(Nn*T + Td))*D + Kp*Td*Nn*(e-ep)/(Nn*T+Td);
% u = P + I + D; U(t) = u;
% FUZZYFICATION DE LAS FUNCIONES DE MEMBRESIA PARA EL ERROR e:
NL = 0; if( e >= NLmin & e <= NLnom), NL = +1;
elseif(e >= NLnom & e <= NLmax), NL = -(e+0.3*p)/(0.7*p); end

NM = 0; if(e >= NMmin & e <= NMnom), NM = +(e+1.0*p)/(0.7*p);


elseif(e >= NMnom & e <= NMmax), NM = -(e+0.1*p)/(0.2*p); end

NS = 0; if(e >= NSmin & e <= NSnom), NS = +(e+0.3*p)/(0.2*p);


elseif(e >= NSnom & e <= NSmax), NS = -(e-0.0)/(0.1*p); end

ZE = 0; if(e >= ZEmin & e <= ZEnom), ZE = +(e+0.1*p)/(0.1*p);


elseif(e >= ZEnom & e <= ZEmax), ZE = -(e-0.1*p)/(0.1*p); end

PS = 0; if(e >= PSmin & e <= PSnom), PS = +(e-0.0)/(0.1*p);


elseif(e >= PSnom & e <= PSmax), PS = -(e-0.3*p)/(0.2*p); end

PM = 0; if(e >= PMmin & e <= PMnom), PM = +(e-0.1*p)/(0.2*p);


elseif(e >= PMnom & e <= PMmax), PM = -(e-1.0*p)/(0.7*p); end

PL = 0; if(e >= PLmin & e <= PLnom), PL = +(e-0.3*p)/(0.7*p);


elseif(e >= PLnom & e <= PLmax), PL = +1; end

% FUZZYFICATION DE LAS FUNCIONES DE MEMBRESIA PARA LA DERIVADA DEL ERROR de:


DNL = 0; if( de >= DNLmin & de <= DNLnom), DNL = +1;
elseif(de >= DNLnom & de <= DNLmax), DNL = (-de-2*f)/(3*f); end

DNM = 0; if(de >= DNMmin & de <= DNMnom), DNM = +(de+5*f)/(3*f);


elseif(de >= DNMnom & de <= DNMmax), DNM = (-de-1*f)/f; end

DNS = 0; if(de >= DNSmin & de <= DNSnom), DNS = +(de+2*f)/f;


elseif(de >= DNSnom & de <= DNSmax), DNS = (-de-0.0*f)/f; end

DZE = 0; if(de >= DZEmin & de <= DZEnom), DZE = +(de+1*f)/f;


elseif(de >= DZEnom & de <= DZEmax), DZE = (-de+1*f)/f; end

97
DPS = 0; if(de >= DPSmin & de <= DPSnom), DPS = +(de+0.0)/f;
elseif(de >= DPSnom & de <= DPSmax), DPS = (de-2*f)/f; end

DPM = 0; if(de >= DPMmin & de <= DPMnom), DPM = +(de-1*f)/f;


elseif(de >= DPMnom & de <= DPMmax), DPM = (-de+5*f)/(3*f); end

DPL = 0; if(de >= DPLmin & de <= DPLnom), DPL = +(de-2*f)/(3*f);


elseif(de >= DPLnom & de <= DPLmax), DPL = +1; end
% RULES
w11=min(NL,DNL); w12=min(NM,DNL); w13=min(NS,DNL); w14=min(ZE,DNL);
w15=min(PS,DNL); w16=min(PM,DNL); w17=min(PL,DNL);
w21=min(NL,DNM); w22=min(NM,DNM); w23=min(NS,DNM); w24=min(ZE,DNM);
w25=min(PS,DNM); w26=min(PM,DNM); w27=min(PL,DNM);
w31=min(NL,DNS); w32=min(NM,DNS); w33=min(NS,DNS); w34=min(ZE,DNS);
w35=min(PS,DNS); w36=min(PM,DNS); w37=min(PL,DNS);
w41=min(NL,DZE); w42=min(NM,DZE); w43=min(NS,DZE); w44=min(ZE,DZE);
w45=min(PS,DZE); w46=min(PM,DZE); w47=min(PL,DZE);
w51=min(NL,DPS); w52=min(NM,DPS); w53=min(NS,DPS); w54=min(ZE,DPS);
w55=min(PS,DPS); w56=min(PM,DPS); w57=min(PL,DPS);
w61=min(NL,DPM); w62=min(NM,DPM); w63=min(NS,DPM); w64=min(ZE,DPM);
w65=min(PS,DPM); w66=min(PM,DPM); w67=min(PL,DPM);
w71=min(NL,DPL); w72=min(NM,DPL); w73=min(NS,DPL); w74=min(ZE,DPL);
w75=min(PS,DPL); w76=min(PM,DPL); w77=min(PL,DPL);

u = max([w11*UNX, w12*UNX, w13*UNX, w14*UNX, w15*UNS, w16*UZE, w17*UPX, ...


w21*UNX, w22*UNX, w23*UNL, w24*UNL, w25*UNS, w26*UPS, w27*UPX, ...
w31*UNX, w32*UNL, w33*UNL, w34*UNM, w35*UPS, w36*UPS, w37*UPX, ...
w41*UNX, w42*UNL, w43*UNL, w44*UZE, w45*UPL, w46*UPL, w47*UPX, ...
w51*UNX, w52*UNS, w53*UNS, w54*UPM, w55*UPL, w56*UPL, w57*UPX, ...
w61*UNX, w62*UNS, w63*UPS, w64*UPL, w65*UPL, w66*UPX, w67*UPX, ...
w71*UNX, w72*UNS, w73*UPS, w74*UPL, w75*UPL, w76*UPX, w77*UPX]);
U(k) = u;

% MODELO DE SEGUNDO ORDEN DEL PROCESO (DISCRETIZACION DIRECTA)


TN = 0;
x1 = x1 + T*x2;
x2 = x2 + T*( -(N/M)*x1 - (B/M + n^2*K*Kb/(M*Ra))*x2 ...
- TN/M + (n*Km*KA/(Ra*M))*u );
ep = e;
end
% ***************** FIN DEL BUCLE **********************
% GRAFICOS
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,R,ejex,Y); grid
ylabel(’Posición angular (rad)’)
subplot(2,1,2)
plot(ejex,U); grid
ylabel(’Se~
nal de control u (voltios)’)
xlabel(’Tiempo en segundos’)
print -f -deps fuzzyposition

98
BIBLIOGRAFÍA

[1] D. E. Seborg, T. F. Edgar, D. A. Mellichamp. Process Dynamics and Control .


Wiley, 1989.

[2] Elgerd, Olle I. Control Systems Theory. McGraw-Hill Kogakusha, Ltd., Tokyo
et.al., 1967.

[3] Ghanadan, R. Adaptive PID Control of Nonlinear Systems. MS thesis, University


of Maryland, College Park, 1990.

[4] J. G. Ziegler, N. B.Ñichols. “Optimum settings for automatic controllers,” ASME


Trans., 64 :759 (nov 1942).

[5] J. G. Ziegler, N. B.Ñichols. “Process lags in automatic control circuits,” ASME


Trans., 433 (jul 1943).

[6] Jerry, J. P. “A Comparison of pid control algorithms,” Control Eng., 102 (march
1987).

[7] K. J. Astrom, T. Hagglund. “Automatic tuning of simple regulators with specifi-


cations on phase and amplitude margins,” Automatica, 20 :645 (May 1984).

[8] K. J. Astrom, T. Hagglund. “Automatic Tuning of PID Controllers,” Instrument


Sciety of America (1988).

[9] Kessler, C. “Optimum settings for automatic controllers,” Regelungstechnik ,


6 :395–400, 432–436 (1958).

[10] Ogata, Katsuhiko. Ingenierı́a de Control Moderna. Prentice Hall, Mexico y otros,
tercera edición, 1998.

99
[11] W. F. Hughes, J. A. Brighton. Theory and Problems of Fluid Dynamics. Shaum’s
outline series, McGraw-Hill, Inc., 2nd edition, 1991.

100

También podría gustarte