Diseño Control PID Espacio Estados

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 20

PROGRAMA DE INGENIERÌA MECATRÓNICA

UNIVERSIDAD AUTONOMA DE BUCARAMANGA - UNAB


CONTROL POR ESPACIO DE ESTADOS

M.Sc. Hernando González Acevedo

MODELO MATEMÁTICO

1. Determinar el modelo matemático de un motor DC con caja reductora (figura 1). Representar la
dinámica del sistema en espacio de estados, la variable de entrada es la señal de modulación de
ancho de pulso (PWM), la cual va en un rango de −100 ≤ PWM ≤100 , y la variable de salida es la
velocidad del eje del motor expresada en RPM.

Fig.1 Motorreductor con encoder

PWM∗Vcc
vin=
100

vin=R I a + L I˙a + Kv∗ωm


Ecuaciones diferenciales

K I I a−Bm ω m−T 1=Jm ω̇ m

ω m=θ˙m
Nombre de las variables y KV kI R L Bm Jm n
parámetros del modelo
matemático

Vector de estados

Representación en espacio
de estados (Expresión
simbólica en función de los
parámetros)

C
2. Diseñar un circuito eléctrico que permita modificar la velocidad del eje de un motor de corriente
continua utilizando la técnica de PWM. La señal de control se encuentra en un rango de
−100 ≤ PWM ≤100 ; la velocidad se registra por medio de un encoder y se utiliza un circuito para
determinar la dirección de giro (Figura 2).

Fig.2 Control de velocidad de un motor de corriente DC

Diagrama de bloques del circuito eléctrico

3. Programar en un sistema de procesamiento digital un algoritmo para generar una señal PWM y
determinar la velocidad de un motor (expresada en RPM) a partir de una señal de un encoder.
Seleccionar el periodo de muestreo de forma que se pueda realizar seguimiento al transitoria de la
señal de velocidad

Periodo de 0.02
muestreo
Código (anexar sentido = digitalRead(senti);
únicamente lo N = contador;
relacionado con la velocidad = (N * 200 * 60 /6533);
lectura de la if (sentido == 0) {
velocidad y velocidad = velocidad;
generación de }
señales de else {
control) velocidad = velocidad * (-1);
}
contador = 0;

//val = analogRead(pote);
val=
pwm = (200 * val) / 1023 - 100;

4. Determinar el modelo estático del sistema, para lo cual modificar el ciclo útil de la señal PWM y
registrar la velocidad del motor en estado estable (lazo abierto). Completar la siguiente tabla, iniciando
con un ciclo útil de -100 % hasta un ciclo del 100 %, con incrementos de 10%.

Señal de Control (u) Velocidad (RPM)


-100 -88,1975737
-90 -85,2530574
-80 -83,225974
-70 -80,4604317
-60 -77,2714286
-50 -71,3611111
-40 -63,3010471
-30 -47,9526412
-20 -24,3952096
-10 -0,28919578
0 0
10 0,00486618
20 27,5625
30 50,5485714
40 64,84
50 72,7443299
60 77,527163
70 81,0734694
80 83,8886827
90 86,0621762
100 87,0377953

- Graficar los valores de la tabla anterior, ubicando en el eje de las abscisas la señal de control y en el
eje de las ordenadas la velocidad en estado estable. Determinar el rango en el cual el sistema
presenta un comportamiento lineal.
Gráfica del modelo
estático

Zona de comportamiento Zona lineal positiva [10.33x-35.18x] [0.9238y-57.95


lineal

5. Ajustar los parámetros del modelo matemático del motor DC para lo cual deben seguir la siguiente
metodología:
- Modificar el ciclo útil de la señal PWM de forma aleatoria en la zona que presente un comportamiento
lineal el sistema y registrar la respuesta transitoria de la señal de velocidad del motor. La toma de
datos debe iniciar con PWM igual a cero.

Periodo de
muestreo
0.02
Señal PWM
Señal de Velocidad
- Implementar el diagrama de bloques de la figura 3. Ajustar los parámetros del modelo matemático de
forma que la respuesta simulado coincida con los datos experimentales. Calcular el índice best fit el
cual está definido por la ecuación (1), donde y s corresponde a los datos simulados, y E a los datos
experimentales y y´ E a la media de los datos experimentales.

BestFit=100 ¿ (1)

Fig.3 Diagrama de simulink para determinar los parámetros del modelo matemático

Parámetros del
modelo
matemático
Comparación de
los datos
simulados con los
datos
experimentales
Best fit 84%

6. Discretizar el modelo del motor DC en espacio de estados, dado un periodo de muestreo T m.

Periodo de muestreo (justificar la 0.02


selección del periodo de muestreo)
Modelo lineal en espacio de estados en
discreta

CONTROL PID

7. Diseñar un control PID discreto, de uno o dos grados de libertad para regular la velocidad del eje de
un motor DC a partir de la señal de PWM.

Justificación de la
estrategia de control PID
Se eligió un control de un grado de libertad debido a que sistema se
Controlador PID (1 DOF o
identificó adecuadamente por ende la acción de control requerida no es
2 DOF)
muy alta
Ecuación de diferencias del
controlador (1 DOF o 2 0.4∗e ( n )−0.3764∗e ( n−1 )+ 0.000376∗e ( n−2 )+ 1.04∗u ( n−1 )−0.04∗u(n−2)
DOF)
Respuesta transitoria de la
variable y i del modelo
lineal. Determinar el
sobrepaso, el tiempo de
levantamiento y el tiempo
de establecimiento

Respuesta transitoria de la
acción de control ui del
modelo lineal. Determinar
el valor pico, el tiempo de
establecimiento y el valor
en estado estable

- Determinar la ganancia antiwindup adecuada para el sistema de control e implementar en un sistema


embebido la estrategia de control.

Ganancia antiwindup (Justificar la selección de la ganancia) 3


Código Control PID (anexar únicamente lo relacionado con la sentido = digitalRead(senti);
lectura de la velocidad y generación de la señal de control) N = contador;
velocidad =
(N*200*60/6533);
if (sentido==0){
velocidad = velocidad;
}
else {
velocidad = velocidad*(-
1);
}
Sf = (yn_2*salida_2) +
(yn_1*salida_1) +
(xn_1*entrada_1) +
(xn_2*entrada_2);
entrada_2 = entrada_1;
entrada_1 = velocidad;
salida_2 = salida_1;
salida_1 = Sf;

contador = 0;

val = analogRead(pote);

Sp = 200*val/1023 -100;
en=Sp-Sf;
Un= en*0.4-0.3764 *en_1+
0.000376*en_2+1.04*Un_1-
0.04*Un_2 + ka*Du_act;

if (Un <= -100) {


U = -100;
}
if (Un > -100 && Un < 100) {
U = Un ;
}
if (Un >= 100) {
U = 100;
}
if( U> 0){
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
pwm = U*255/100;
analogWrite(11, pwm);
}
else{
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
pwm = -U*255/100;
analogWrite(11, pwm);
}

Du_act = U - Un;
en_2=en_1;
en_1 = en;
Un_2=Un_1;
Un_1=Un;
I_er_1 = I_err1;

Pseudocódigo de un control PID (1 DOF o 2 DOF)

Inicialización de variables de Fn_k = 0 Registros del controlador


almacenamiento Du = 0 Memoria actuador saturado
Programa principal SP = Valor del setpoint
PV = Valor de la variable del proceso
en = SP – PV
un = Ecuación de diferencias del controlador (1 DOF o 2
DOF)
if un > -100 & un<100
U = un
If un > 100
U = 100
If un < -100
U = -100

Actualizar U
Actualización de registros

- Evaluar el comportamiento dinámico del regulador para diferentes puntos de operación (incluir valores
de referencia en los cuales el actuador se sature). Comparar la respuesta transitoria que se obtienen a
partir del modelo dinámico con los datos experimentales, dado un setpoint variable.

Setpoint – Pv
Experimental -
Pv Simulada

Señal Control
Experimental –
Señal de
Control
Simulada

Análisis de los El sistema responde de una forma adecuada pero al momento de salir de saturación
resultados su respuesta no es optima

CONTROLADOR LQG CONTINUA

8. Diseñar un controlador LQG en continua para regular la velocidad del eje de un motor DC a partir de la
señal de PWM. El controlador se diseña con la técnica LQR y el observador es un filtro Kalman. La
varianza de la señal de velocidad, Q n, la determina a partir de datos experimentales.

Diseño del controlador


Matriz Q

Matriz R

Matriz de
ganancias K
Polos en lazo
cerrado

Respuesta
transitoria de la
variable y i del
modelo lineal.
Determinar el
sobrepaso, el
tiempo de
levantamiento y
el tiempo de
establecimiento

Respuesta
transitoria de la
acción de control
ui del modelo
lineal.
Determinar el
valor pico, el
tiempo de
establecimiento y
el valor en
estado estable

Diseño del observador


Matriz de
covarianza Qn

Matriz de
covarianza Rn
Matriz de
ganancias L

Polos del
observador

- Unificar en una sola representación de espacio de estados el controlador y el observador: control de


dos grados de libertad.

Representación en A
espacio de estados:
Controlador de dos
grados de libertad

Respuesta transitoria de
la variable y i del modelo
lineal. Determinar el
sobrepaso, el tiempo de
levantamiento y el
tiempo de
establecimiento
Respuesta transitoria de
la acción de control ui
del modelo lineal.
Determinar el valor pico,
el tiempo de
establecimiento y el
valor en estado estable

- Discretizar la estrategia de control LQG e implementar el controlador en un sistema embebido.


Determinar la matriz de ganancia antiwindup adecuada para el sistema de control.

Periodo de 0.02
muestreo
Representación G
en espacio de
estados
discretos

D
Respuesta
transitoria de la
variable y i del
modelo lineal.
Determinar el
sobrepaso, el
tiempo de
levantamiento y
el tiempo de
establecimiento

Respuesta
transitoria de la
acción de control
ui del modelo
lineal.
Determinar el
valor pico, el
tiempo de
establecimiento
y el valor en
estado estable

Matriz 0.02
antiwindup
(Justificar la
selección de la
matriz)
Código Control sentido = digitalRead(senti);
LQG de dos N = contador;
grados de pv1 = (N * 200 * 60 / 6533);
libertad (anexar if (sentido == 0) {
únicamente lo pv1 = pv1;
relacionado con }
la lectura de la else {
velocidad y pv1 = pv1 * (-1);
generación de la }
señal de control) contador = 0;
val = float(analogRead(pinSP1));
sp1 = 200 * val / 1023 - 100;
mtx_type in [2][1] = {
{sp1},
{pv1}
};

Matrix.Multiply((mtx_type*)LQG_a, (mtx_type*)xob_1, 3, 3, 1,
(mtx_type*)AX); // LQG_a*xob_1
Matrix.Multiply((mtx_type*)LQG_b, (mtx_type*)in, 3, 2, 1,
(mtx_type*)BU); // LQG_b*[sp;y]
Matrix.Multiply((mtx_type*)ka, (mtx_type*)Du, 3, 1, 1, (mtx_type*)KD); //
ka*Du
Matrix.Multiply((mtx_type*)I_, (mtx_type*)KD, 3, 3, 1, (mtx_type*)KD_); //
-ka*Du
Matrix.Add((mtx_type*)AX, (mtx_type*)BU, 3, 1, (mtx_type*)xob); //
LQG_a*xob_1 + LQG_b*[sp;y]
Matrix.Add((mtx_type*)xob, (mtx_type*)KD_, 3, 1, (mtx_type*)xob_); //
LQG_a*xob_1 + LQG_b*[sp;y] - ka*Du

Matrix.Multiply((mtx_type*)LQG_c, (mtx_type*)xob_1, 1, 3, 1, (mtx_type*)u); //


LQG_c*xob_1

Pseudocódigo de un regulador LQG de dos grados de libertad

Inicialización de variables de Xob_1 = 0 Estados del observador


almacenamiento Du = 0 Memoria actuador saturado
Ka Matriz de ganancia antiwindup
% Matrices del controlador LQG
LQG.a
Inicialización de constantes
LQG.b
LQG.c
LQG.d
SP = Valor del setpoint
PV = Valor de la variable del proceso
Xob = LQG.a* Xob_1 + LQG.b* [Sp; Pv] + Ka*Du
un = LQG.c* Xob_1 + LQG.d* [Sp; Pv]
if un > -100 & un<100
U = un
If un > 100
Programa principal U = 100
If un < -100
U = -100

Actualizar U

Du = U - un
Xob_1 = Xob

- Evaluar el comportamiento dinámico del regulador para diferentes puntos de operación (incluir valores
de referencia en los cuales el actuador se sature). Comparar la respuesta transitoria que se obtienen a
partir del modelo dinámico con los datos experimentales, dado un setpoint variable.
Setpoint – Pv
Experimental -
Pv Simulada

Señal Control
Experimental –
Señal de
Control
Simulada

Análisis de los El sistema de control es óptimo y hace un buen seguimiento de la señal, tiene un
resultados mejor comportamiento que el control PID

CONTROLADOR ÓPTIMO Y OBSERVADOR DE LUENBERGER

9. Diseñar un sistema de control digital para regular la velocidad del eje de un motor DC a partir de la
señal de PWM utilizando la técnica de control óptimo; para estimar los estados diseñar un observador
de Luenberger.

Diseño del controlador

Matriz Q

Matriz R
Matriz de
ganancias K
Polos en lazo
cerrado
Respuesta
transitoria de la
variable y i del
modelo lineal.
Determinar el
sobrepaso y el
tiempo de
establecimiento

Respuesta
transitoria de la
acción de control
ui del modelo
lineal. Determinar
el valor pico, el
tiempo de
establecimiento y
el valor en estado
estable

Diseño del observador


Matriz
observabilidad (V)
Rango de la matriz
de observabilidad
V
Sobrepaso 0
Criterios de diseño
Tiempo de establecimiento 0.26
Polos del
observador ( si )
Mapeo de los
polos e T si
Matriz G
Matriz de
ganancias
T
L=( G X −1 )

- Determinar la ganancia antiwindup adecuada para el sistema de control e implementar en un sistema


embebido la estrategia de control.

Ganancia antiwindup (Justificar la selección de la ganancia) 1


Código Control de un control óptimo y un observador de sentido = digitalRead(senti);
Luenberger (anexar únicamente lo relacionado con la lectura N = contador;
de la velocidad y generación de la señal de control) pv1 = (N * 200 * 60 / 6533);
if (sentido == 0) {
pv1 = pv1;
}
else {
pv1 = pv1 * (-1);
}
contador = 0;

val =
float(analogRead(pinSP1));
sp1 = 200 * val / 1023 - 100;
en = sp1 - pv1;

mtx_type PV1 [1][1] = {


{pv1}
};
mtx_type in [1][1] = {
{en}
};
// calculo vk
Matrix.Multiply((mtx_type*)Ka,
(mtx_type*)Du, 1, 1, 1,
(mtx_type*)KD); // Ka*Du
Matrix.Multiply((mtx_type*)Id_,
(mtx_type*)KD, 1, 1, 1,
(mtx_type*)KD_); // -Ka*Du
Matrix.Add((mtx_type*)in,
(mtx_type*)vk_1, 1, 1,
(mtx_type*)SUM1); // en+vk_1
Matrix.Add((mtx_type*)SUM1,
(mtx_type*)KD_, 1, 1,
(mtx_type*)vk); // en+vk_1-
Ka*Du
// calculo un
Matrix.Multiply((mtx_type*)ki,
(mtx_type*)vk, 1, 1, 1,
(mtx_type*)KV); // Ki*Vk

Matrix.Multiply((mtx_type*)Kest,
(mtx_type*)xob_1, 1, 1, 1,
(mtx_type*)KX); // Kest*xob_1
Matrix.Multiply((mtx_type*)Id_,
(mtx_type*)KX, 1, 1, 1,
(mtx_type*)KX_); //
-Kest*xob_1
Matrix.Add((mtx_type*)KX_,
(mtx_type*)KV, 1, 1, (mtx_type*)u); //
Ki*Vk -Kest*xob_1

Pseudocódigo de un control óptimo y observador Luenberger

Xob_1 = 0 Estados del observador


Inicialización de variables de
Vk_1 = 0 Integral del error
almacenamiento
Du = 0 Memoria actuador saturado
Inicialización de constantes Ki Ganancia del integrador
K Matriz de ganancias que multiplica a los estados
Ka Ganancia antiwindup
G Matriz de estados
H Matriz de entrada
C Matriz de salida
L Matriz de ganancia del observador
SP = Valor del setpoint
PV = Valor de la variable del proceso
en = SP – PV
Vk = en + Vk_1 – Ka*Du
un = Ki*Vk – K*Xob_1
if un > -100 & un<100
U = un
If un > 100
U = 100
If un < -100
Programa principal
U = -100

Actualizar U

% Calculo del observador


Xob = (G – L*C)*Xob_1 + H*U + L*PV

Vk_ 1 = Vk
Du = un - U
Xob_1 = Xob

- Evaluar el comportamiento dinámico del regulador para diferentes puntos de operación (incluir valores
de referencia en los cuales el actuador se sature). Comparar la respuesta transitoria que se obtienen a
partir del modelo dinámico con los datos experimentales, dado un setpoint variable.

Setpoint – Pv
Experimental -
Pv Simulada
Señal Control
Experimental –
Señal de
Control
Simulada

Análisis de los El control discreto de lqr y lunguerbert responde de una buena forma el problema es
resultados que tiene gran sobrepaso antes de estabilizarse, y su tiempo de respuesta luego de
la saturación es lento

10.A partir de los datos experimentales, justificar cuál es la mejor estrategia de control que se ajusta al
sistema.

Rta. La mejor estrategia de control es la de LQG debido a que es la que presenta un menor índice
de error y por consiguiente permite hacer un mejor seguimiento, además responde bien luego
de que el sistema entre en saturación

CONCLUSIONES.
 Primeramente, tenemos que, partir de un modelo de identificación (Caja negra) cuando no se
conoce un modelo que me describa el comportamiento dinámico del sistema, es una alternativa
que permite interpretar el sistema y dar una aproximación de su comportamiento para poder
elaborar diferentes estrategias de control y verificar un modelo de simulación con un modelo
experimental, para ello es necesario cumplir con cierto requisitos como lo son el porcentaje de
best-fit que me indica el grado de similitud del modelo identificado, con el comportamiento del
sistema a partir de datos tomados de forma experimental.

 Se desarrollaron a cabo tres estrategias de control, dos de forma inicial, LQG ydos grados de
libertad y la segunda fue un control LQR con observador de orden completo, anteriormente
escogíamos el mejor controlador o la mejor estrategia basados solo en la respuesta transitoria del
sistema, sin embargo, al incluir índices de error podemos tener un mejor criterio para seleccionar
la mejor estrategia de control para el sistema.

 Basados en la conclusión anterior revisamos los índices de error para los modelos estáticos, y
también las respuestas transitorias donde podemos argumentar que la mejor estrategia planteada
para este sistema corresponde a un LQG de un grado de libertad, pues a diferencia de las otras
estrategias esta presenta los índices de error más pequeños, y al ser comparado con la
respuesta del modelo dinámico (datos experimentales) es el de mejor relación y comportamiento
en el sistema identificado.

 En cuanto a las acciones de control si se tuvo una mayor diferencia en la comparación de modelo
simulado y experimental, puesto que para ninguna estrategia planteada el modelo simulado llega
a saturarse, sin embargo, en la implementación física la acción de control no sobrepasa del
100%, aun así, existen zonas de mucho acercamiento o de similar comportamiento entre ambas
acciones de control, lo que permite decir que podría ser una aproximación que nos muestre el
comportamiento del sistema físico en la variable a controlar (velocidad), de acuerdo al
comportamiento de la acción de control generado por la estrategia implementada.

También podría gustarte