Parra Qa PDF
Parra Qa PDF
DISEÑO E IMPLEMENTACIÓN DE
CONTROLADORES PID INDUSTRIALES
TESIS
PRESENTADA POR:
2007
A mis Padres Anı́bal y Fausta,
mi Esposa Yaqueline,
y mis Hijos Arturo, Anı́bal y Marı́a.
AGRADECIMIENTO
TESIS
PRESENTADA POR:
LIMA – PERÚ
RESUMEN
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.
iv
de “Multiple-Input Multiple-Output”(múltiples entradas y múltiples salidas).
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
THESIS
BY:
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 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
CAPÍTULO 2.
viii
2.5.2. Método de Kessler . . . . . . . . . . . . . . . . . . . . . . . . . 22
CAPÍTULO 3.
MODELADO DE PROCESOS 25
CAPÍTULO 4.
CAPÍTULO 5.
CONTROL PID 48
CAPÍTULO 6.
CAPÍTULO 7.
CONTROL ADAPTATIVO 64
ix
7.2. Diseño del Controlador Adaptativo . . . . . . . . . . . . . . . . . . . . 66
CAPÍTULO 8.
CONTROL DIFUSO 75
CAPÍTULO 9.
CONCLUSIONES Y RECOMENDACIONES 83
APÉNDICE A.
LISTADO DE PROGRAMAS 86
BIBLIOGRAFÍA.
99
x
LISTA DE FIGURAS
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
1
4.2. Sistema de control en tiempo real para el brazo robótico de 1 GDL. . . . . 40
4.5. Diseño ORCAD para implementar la placa del generador de pulsos PWM. 43
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.6. Señal de control del nivel en el sistema de control PID multilazo en tiempo
real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
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.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
6.2. Diagrama de bloques en detalle del sistema de control PID MIMO imple-
mentado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4. Señal de control del nivel en el sistema de control PID MIMO en tiempo real. 62
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
8.2. Funciones de membresia para las entradas (error e(t) y de(t)/dt) y para la
salida u(t). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4
LISTA DE TABLAS
2.2. Reglas de sintonı́a PID atendiendo a la respuesta crı́tica a lazo cerrado según
Ziegler y Nichols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.3. Rango de las funciones de membresia para la derivada del error de(t)/dt. . 79
5
CAPÍTULO 1
INTRODUCCIÓN
1.1. Generalidades
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.
1.2. Antecedentes
1.3. Objetivos
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.
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.
(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.
9
CAPÍTULO 2
EL ALGORITMO PID MEJORADO
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.
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
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
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).
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 Td s
La parte derivativa D(s) = − 1+T f s
y(s) se puede escribir como:
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
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
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.
K L
G(s) = e−sL m=K (2.13)
1 + τs τ
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 .
16
Figura 2.4: Respuesta al escalón de 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π
ω = (2.16)
Tp 1 − ζ 2
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)
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ω)
1 + K G(iω) = 0
19
Figura 2.8: Gráfico de Nyquist de G(iω) donde se observa ωcr y Kcr .
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)
4δ
Kcr = (2.19)
πd
21
2.5.1. Método de la Curva de Reacción del Proceso
Controlador Kc Ti Td
1
P LS
0,9
PI LS
3,33L
1,2
PID LS
2L 0,5L
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σ
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σ
µ
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σ
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.
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.
24
CAPÍTULO 3
MODELADO DE PROCESOS
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.
25
Tabla 3.1: Parámetros y variables del brazo robótico de 1 GDL.
26
Figura 3.1: Sistema brazo robótico de 1 GDL.
Tg2 = Jg θ̈ + Bg θ̇ + TL (3.4)
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
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
donde:
Jeq = n2 Jm + Jg + JL Beq = n2 Bm + Bg + BL
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)
Va = uKA (3.14)
Tm = Km ia (3.15)
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
ẋ = 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.
31
0.8
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.
32
Tabla 3.2: Parámetros y variables del proceso tanque de agua.
33
Figura 3.4: Proceso tanque de agua.
dh
S = S ḣ = qi − qo (3.23)
dt
h
qo = (3.24)
Rh
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
h(s) Rh
= (3.27)
qi (s) SRh s + 1
34
Determinación Experimental de Rh
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.
35
Modelo No Lineal del Proceso Tanque de Agua
dH
S = S Ḣ = Qi − Qo (3.33)
dt
Por otro lado, el balance de energı́a térmica dentro del tanque se formula:
ΦT = −Φo − Φs + Φc + Φi (3.37)
donde:
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
ẋ = Ax + Bu (3.47)
donde: ⎡ ⎤ ⎡ ⎤
∂f1 ∂f1 ∂f1 ∂f1
A=⎣ ∂X1 ∂X2 ⎦ B=⎣ ∂U1 ∂U2 ⎦
∂f2 ∂f2 ∂f2 ∂f2
∂X1 ∂X2 ∂U1 ∂U2
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.
38
CAPÍTULO 4
39
4.2. El Sistema de Control del Brazo Robótico de 1GDL
Figura 4.2: Sistema de control en tiempo real para el brazo robótico de 1 GDL.
40
4.2.1. Generación de la señal PWM
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.
El Circuito Amplificador
41
Figura 4.3: Diagrama de flujo para la generación de los pulsos PWM.
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.
43
la capacidad en corriente de los dispositivos usados en los conmutadores y de la fuente.
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.
45
Figura 4.7: Circuitos de control del amplificador de potencia.
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
(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.
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.
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.
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.
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.
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.
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.
54
12
10
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
1. Requerimiento de no interacción.
3. Requerimiento de estabilidad.
ẋ = Ax + Bu y = Cx + Du (6.1)
No Interacción
57
Figura 6.1: Diagrama de bloques de un sistema de control PID MIMO.
Despejando G(s):
58
Exactitud Estática
Aplicando el teorema del valor final, podemos concluir que para exactitud estática
(error en estado estable nulo) se requiere:
Estabilidad
|sI − A| = 0 (6.7)
Adj (I + G(s))
[I + G(s)]−1 =
|I + G(s)|
|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
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
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
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
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.
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
(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).
64
Figura 7.1: Configuración de un SCAMR.
65
sistema diseñado garantice convergencia global de las señales controladas con respecto
a sus trayectorias deseadas.
n
1 αi∗
(n)
hy + αi fi (x, t) = u h= αi = (7.2)
i=1
b b
e = y − yd
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)
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
˙
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:
˙
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.
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.
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.
˙
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
69
7.3. Controlador Adaptativo Para el Brazo Robótico
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):
u = hy (3) + α1 f1 + α2 f2 + α3 f3 + α4 f4 (7.19)
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
s = ë + λ1 ė + λ0 e = ∆(p)e = ÿ − ÿr
∆(p) = p̈ + λ1 p + λ0 = (p − p1 )(p − p2 )
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.
ḣ = −γsign(h)syr(3)
α̇1 = −γsign(h)sf1
α̇2 = −γsign(h)sf2
α̇3 = −γsign(h)sf3
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)
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.
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
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.
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.
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.
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).
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
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.
78
Tabla 8.2: Rango de las funciones de membresia para el error e(t).
Tabla 8.3: Rango de las funciones de membresia para la derivada del error de(t)/dt.
Tabla 8.4: Rango de las funciones de membresia para la señal de control u(t).
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.
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.
82
CAPÍTULO 9
CONCLUSIONES Y RECOMENDACIONES
(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.
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.
85
APÉNDICE A
LISTADO DE PROGRAMAS
% 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
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
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
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;
90
ylabel(’Se~
nal de control u (W)’)
xlabel(’Tiempo en segundos’)
print -f -deps pidtanquetemp % crea pidtanquetemp.eps
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
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
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
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
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
97
DPS = 0; if(de >= DPSmin & de <= DPSnom), DPS = +(de+0.0)/f;
elseif(de >= DPSnom & de <= DPSmax), DPS = (de-2*f)/f; end
98
BIBLIOGRAFÍA
[2] Elgerd, Olle I. Control Systems Theory. McGraw-Hill Kogakusha, Ltd., Tokyo
et.al., 1967.
[6] Jerry, J. P. “A Comparison of pid control algorithms,” Control Eng., 102 (march
1987).
[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