Universidad Central de Venezuela
Facultad de Ingeniería
Escuela de Ingeniería Mecánica
Departamento de Automática
Controles Automáticos
Profesor: Gabriel Nhora
Aplicación de controles inteligentes sobre sistemas no lineales y análisis
de estabilidad en el Plano de fase (sistema barra esfera)
Integrantes:
Michael Cortez
Ci: 20067229
Caracas, 28 de julio del 2023
Introducción
Actualmente, el control de sistemas no lineales es un área de investigación activa en la
ingeniería de control. Los sistemas no lineales se caracterizan por su complejidad y la
falta de soluciones analíticas exactas, lo que hace que el diseño de controladores para
estos sistemas sea un desafío. En este sentido, los controles inteligentes se han
convertido en una herramienta útil para el control de sistemas no lineales, ya que
permiten la adaptación y aprendizaje del controlador en tiempo real.
En este análisis, se estudia la aplicación de controles inteligentes sobre un sistema no
lineal específico: el sistema barra-esfera. Este sistema consiste en una esfera de masa m
que se mueve a lo largo de una barra horizontal de longitud R y está conectada a un
motor que puede aplicar una fuerza F en la dirección horizontal. El objetivo del
controlador es controlar la posición de la esfera en la barra utilizando la fuerza del
motor. Además, se analiza la estabilidad del sistema en el plano de fase, que permite
visualizar la evolución de las variables del sistema en el tiempo. En este análisis, se
utilizan técnicas de control inteligente para diseñar un controlador que permita controlar
la posición de la esfera en la barra de manera efectiva. También se lleva a cabo un
análisis de estabilidad en el plano de fase para entender el comportamiento del sistema y
el efecto del controlador en la estabilidad del sistema.
El código proporcionado tiene algunas correcciones se utilizo las herramientas
(matlab ,scilab) y el modelado fue realizado en (xcos) para llevar a cabo el análisis y
diseño de control de un sistema dinámico que tiene como objetivo controlar la posición
de una esfera en una barra utilizando un controlador de retroalimentación de estados. El
sistema está compuesto por una esfera de masa m que se mueve a lo largo de una barra
horizontal de longitud R. La esfera está conectada a un motor que puede aplicar una
fuerza F en la dirección horizontal. El objetivo del controlador es controlar la posición
de la esfera en la barra utilizando la fuerza del motor.
El código utiliza una matriz de estado para describir las ecuaciones diferenciales del
sistema, y calcula la matriz de ganancias de retroalimentación de estados para diseñar el
controlador. Luego, se simula la respuesta temporal del sistema utilizando una entrada
escalón unitario y se grafica la posición de la esfera en función del tiempo. Además, se
utiliza la función bode para obtener el diagrama de Bode del sistema, que muestra la
respuesta en frecuencia del sistema.
Antecedentes
El control de posición de objetos móviles mediante sistemas de barras o brazos
robóticos es un problema ampliamente estudiado en automatización y robótica.
Diversos autores han abordado el control de un sistema barra-esfera desde diferentes
enfoques.
Wang et al. (2020) implementaron un controlador difuso (fuzzy) para regular la
posición de una esfera sobre un riel mediante la fuerza de un actuador lineal. Si bien
lograron un buen rechazo a perturbaciones, la respuesta presentó lentitud en el tiempo
de estabilización.
Por su parte, Martínez & Ruiz (2018) aplicaron un controlador PID al mismo sistema,
obteniendo rapidez en la respuesta pero con oscilaciones residuales en estado estable.
Estos trabajos ponen en evidencia las ventajas y limitaciones de usar estrategias de
control convencionales en este problema.
Liu et al. (2019) simularon un sistema barra-esfera controlado mediante técnicas
óptimas LQR (Linear Quadratic Regulator), logrando una estabilización efectiva ante
perturbaciones. Esto motiva el estudio de modernas estrategias de control como la
retroalimentación de estados para mejorar el desempeño. Sin embargo, la
implementación experimental de estas técnicas en sistemas reales ha sido aún muy
limitada, siendo este un aporte potencial del presente trabajo.
El control de sistemas no lineales se ha abordado mediante linealización o técnicas
simples como control PID con resultados limitados (Dorf & Bishop, 2001). Pero estas
estrategias resultan inadecuadas cuando se requiere alto desempeño y robustez.
Los desarrollos modernos en control adaptativo, control óptimo, lógica difusa, redes
neuronales y métodos híbridos han demostrado alto potencial para sistemas no lineales
complejos (Hunt et al. 1992). Estas estrategias de control inteligente permiten mejorar el
desempeño y la flexibilidad frente a los enfoques clásicos.
Alzate y Giraldo (2006) analizaron la estabilidad de sistemas no lineales mediante el
plano de fase. Aplicaron control difuso, redes neuronales y neurodifuso al sistema barra-
esfera, analizando la estabilidad alcanzada. Sin embargo, son pocos los trabajos que
estudian implementaciones de control inteligente en sistemas mecatrónicos no lineales
reales. Este proyecto contribuye a llenar ese vacío en la literatura.
Marco Teórico
El control por realimentación de variables de estado, también conocido como control
óptimo cuadrático, es una poderosa técnica de control moderna que permite estabilizar
sistemas lineales de manera efectiva (Ogata, 2010).
Se basa en el diseño de una matriz de ganancias K que pondera los errores de las
variables de estado para determinar la señal de control. Mediante la asignación de polos,
es posible determinar las ganancias que colocan los polos del sistema en lazo cerrado en
ubicaciones deseadas del plano complejo. Esto permite cumplir especificaciones de
performance en términos de rapidez de respuesta, precisión y amortiguamiento (Ogata,
2010).
El análisis de la respuesta temporal permite estudiar propiedades clave como
estabilidad, velocidad de respuesta, precisión y oscilaciones. Por su parte, herramientas
como el lugar de las raíces y los diagramas de Bode y Nyquist resultan fundamentales
para entender la estabilidad y desempeño de sistemas de control en lazo cerrado.
Este marco teórico sustenta el diseño e implementación de un controlador de
retroalimentación de estados para el sistema barra-esfera, analizando su desempeño
mediante la simulación de la respuesta temporal y los diagramas de Bode del sistema
compensado.
Desarrollo
En este punto mostraremos el sistema a estudiar:
Como se muestra en la figura es un sistema barra esfera, ha dicho sistema le
aplicaremos una simplificación para facilitar el análisis:
Se aplicara un lagranjeano para obtener las ecuaciones acopladas del sistema, donde r
es la posición de la bola, theta el Angulo del riel tao el torque aplicado, g la aceleración
de la gravedad, j el momento de inercia debido a la masa del riel, m y R la masa y el
radio de la bola y jb el momento de inercia debido a la masa de la bola:
Definiremos nuestras variables de estados en las entradas y salidas del sistema:
Entrada del sistema: x1= r, x2= r’, x3= θ, x4= θ’.
Salida del sistema u= τ, y=r.
Don u es la variable manipulada y r que es la posición de la bola es la salida del sistema.
Aplicando los despejes y manipulaciones necesarias tendremos el modelado no lineal en
el espacio de estados:
X1’= r’=x2
X2’= r’’= B ((X1*X4)^2 –Gsenx3)
X3’= θ’=x4 y x4’= θ’’=0
Rescribiendo estas ecuaciones optemos la siguiente matriz de espacio de estados:
De estas matrices obtenemos las matrices del modelo linealizado del sistema y su
respectivo jacobiano evaluado en el punto de equilibrio:
A continuación se explicara el paso a paso del modelado con su código correspondiente
tanto en Matlab como en Scilab y se anexara cada código, se podrá verificar dicho
código solo se tiene que copiar y pegar el cogido en el compilador de dichos programas.
Para este trabajo se utilizo el compilador de Scilab para realizar el primer análisis del
sistema y verificar si el sistema es observable y controlable; a continuación se explicara
el procedimiento realizando un desglose del código realizado en este punto:
g = 9.81;
j = 0.0208;
jb = 0.004;
R = 0.1;
m = 0.1;
r = 1;
En esta sección se definen algunas constantes que se utilizan en el modelo del sistema
dinámico.
j = sqrt (-1);
A = [0,1,0,0;0,0,-g,0;0,0,0,1;(m*g)/(j+jb),0,0,0];
B = [0; 0; 0; 40.3];
C = eye (4,4);
D = [0; 0; 0; 1/(j+jb)];
cini = [1; 0; 0; 0];
En esta sección se define el modelo del sistema dinámico utilizando una matriz de
estado, donde A es la matriz de coeficientes, B es la matriz de entrada, C es la matriz de
salida y D es la matriz de transmisión directa. En este caso, el modelo representa un
sistema barra esfera con un motor en el extremo inferior que aplica un par de fuerzas.
La variable cini se utiliza para definir las condiciones iníciales del sistema.
sl = syslin('c',A,B,C,D,cini);
[FT] = ss2tf (sl);
VpA = spec (A);
En esta sección se utiliza la función syslin para definir el sistema dinámico en forma de
función de transferencia, y luego se utiliza la función ss2tf para convertir el modelo de
matriz de estado a una función de transferencia. La función spec se utiliza para calcular
los valores propios de la matriz A, que son importantes para determinar la estabilidad
del sistema.
Co = cont_mat(A,B);
rCo = rank (Co);
En esta sección se calcula la matriz de controlabilidad Co y se utiliza la función rank
para determinar su rango. La controlabilidad es una medida de la capacidad del
controlador para controlar todas las variables de estado del sistema.
Como rCo es igual a 4 el sistema es perfectamente controlable.
Ob = obsv_mat(A,C);
rOb = rank(Ob);
En esta sección se calcula la matriz de observabilidad Ob y se utiliza la función rank
para determinar su rango. La observabilidad es una medida de la capacidad del
controlador para observar todas las variables de estado del sistema.
polos = [(-2.5+6*j), (-2.5-6*j), 1.25, -5];
polos_reales = real(polos);
A_real = real(A);
B_real = real(B);
[K] = ppol(A_real,B_real,polos_reales);
Ac = A - (B*K);
sl = syslin('c',Ac,B,C,D,cini);
[FT2] = ss2tf(sl);
vpAc = spec(Ac);
En esta sección se define un conjunto de polos deseados para el sistema y se utiliza la
función ppol para calcular una matriz de ganancias de retroalimentación de estados K
que coloca los polos en las posiciones deseadas. Luego se utiliza la matriz de ganancias
K para definir la matriz Ac, que representa la matriz A del sistema con la
retroalimentación de estados. Se vuelve a utilizar la función syslin para definir el
sistema dinámico actualizado y se utiliza la función ss2tf para convertir el modelo de
matriz de estado a una función de transferencia. La función spec se utiliza nuevamente
para calcular los valores propios de la matriz Ac.
En general, en el análisis y diseño del controlador de retroalimentación de estados del
sistema dinámico específico. Se incluye la determinación de la controlabilidad y
observabilidad del sistema, mientras que el diseño implica la asignación de polos para
lograr un comportamiento deseado del sistema. El resultado final es una función de
transferencia que representa el comportamiento del sistema con el controlador de
retroalimentación de estados implementado representado por:
Representación del modelo en Xcos.
A continuación se realiza una explicación detallada en matlab del código con el cual se
realizo la visualización del diagrama de bode de la grafica de la respuesta temporal del
sistema:
Se definen las constantes del sistema: la aceleración debida a la gravedad g, los
momentos de inercia de la esfera (j) y de la barra (jb), la longitud de la barra (R), la
masa de la esfera (m) y su radio (r).
g j jb R m r
9.81 0.0208 0.004 0.1 0.1 1
Definir constantes y parámetros del sistema:
En este paso, se definen las constantes y parámetros del sistema, tales como la
aceleración debido a la gravedad (g), la inercia del disco del péndulo (j), la inercia del
motor (jb), el radio del disco del péndulo (R), la masa del péndulo (m), y el radio del
motor (r).
g = 9.81;
j = 0.0208;
jb = 0.004;
R = 0.1;
m = 0.1;
r = 1;
Definir la matriz de estado del sistema:
Aquí se define la matriz de estado del sistema (A), la cual describe las relaciones entre
las variables de estado del sistema. En este caso, las variables de estado son la posición
angular del péndulo, su velocidad angular, la posición lineal del carro, y su velocidad
lineal.
A = [0, 1, 0, 0; 0, 0, -g, 0; 0, 0, 0, 1; (m*g)/(j+jb), 0, 0, 0];
Definir las matrices de entrada, salida y transmisión directa del sistema:
En este paso, se definen las matrices de entrada (B), salida (C) y transmisión directa (D)
del sistema. La matriz de entrada se refiere a la entrada del sistema (es decir, la fuerza
aplicada al carro), la matriz de salida se refiere a las variables de estado que se miden
(en este caso, todas las variables de estado), y la matriz de transmisión directa se refiere
a la relación directa entre la entrada y la salida del sistema.
B = [0; 0; 0; 40.3];
C = eye(4, 4);
D = [0; 0; 0; 1/(j+jb)];
Definir el estado inicial del sistema:
Aquí se define el estado inicial del sistema (x0), que es el estado del sistema en el
momento inicial de la simulación.
x0 = [1; 0; 0; 0];
Definir los polos deseados del sistema y calcular la matriz de ganancias de
retroalimentación de estados:
En este paso, se definen los polos deseados del sistema (polos), que son las ubicaciones
de los polos del sistema en el plano complejo que se desea. Los polos deseados se
utilizan para calcular la matriz de ganancias de retroalimentación de estados (K), que se
utiliza a continuación para definir la matriz de estado con retroalimentación de estados
(Ac).
polos = [-2.5+6i, -2.5-6i, 1.25, -5];
K = place(A, B, polos);
Definir la matriz de estado con retroalimentación de estados:
Aquí se define la matriz de estado con retroalimentación de estados (Ac) utilizando la
matriz de estado original del sistema (A) y la matriz de ganancias de retroalimentación
de estados (K).
Ac = A - B*K;
Definir el sistema con retroalimentación de estados:
En este paso, se define el sistema con retroalimentación de estados (sys), utilizando la
matriz de estado con retroalimentación de estados (Ac), la matriz de entrada (B), la
matriz de salida (C) y la matriz de transmisión directa (D).
sys = ss(Ac, B, C, D);
Calcular la función de transferencia del sistema:
Aquí se calcula la función de transferencia del sistema (FT), que es una representación
matemática de la relación entre la entrada y la salida del sistema.
FT = tf(sys);
Calcular el diagrama de Bode del sistema:
En este paso, se calcula el diagrama de Bode del sistema, que es una representación
gráfica de la respuesta en frecuencia del sistema. El diagrama de Bode muestra la
ganancia y la fase del sistema en función de la frecuencia de la señal de entrada.
bode(FT);
Simular la respuesta temporal del sistema con una entrada escalón unitario:
En este paso, se simula la respuesta temporal del sistema a una entrada escalón unitario
utilizando la función lsim de MATLAB. Se almacena la respuesta temporal (y), el
tiempo (t) y el estado del sistema (x) en variables correspondientes.
t = linspace(0, 10, 1000);
u = ones(size(t));
[y, t, x] = lsim(sys, u, t, x0);
Graficar la respuesta temporal del sistema:
Finalmente, se grafica la respuesta temporal del sistema (y) en función del tiempo (t)
utilizando la función plot de MATLAB. Se agrega un título, etiquetas de eje y leyenda a
la figura resultante.
plot(t, y);
title('Respuesta temporal del sistema');
xlabel('Tiempo (s)');
ylabel('Posición (m)');
En resumen, este código utiliza la matriz de estado del sistema, las matrices de entrada,
salida y transmisión directa, y los polos deseados para diseñar un controlador de
retroalimentación de estados para el sistema barra-esfera. Luego, se simula la respuesta
temporal del sistema utilizando una entrada escalón unitario y se grafica la posición de
la esfera en función del tiempo y se grafica el diagrama de bode.
A continuación dejare los códigos solo para copiar, pegar y compilarlos en el programa
deseado:
1. Código Scilab
g = 9.81;
j = 0.0208;
jb = 0.004;
R = 0.1;
m = 0.1;
r = 1;
j = sqrt (-1);
A = [0,1,0,0;0,0,-g,0;0,0,0,1;(m*g)/(j+jb),0,0,0];
B = [0; 0; 0; 40.3];
C = eye (4,4);
D = [0; 0; 0; 1/(j+jb)];
cini = [1; 0; 0; 0];
sl = syslin(‘c’,A,B,C,D,cini);
[FT] = ss2tf (sl);
VpA = spec (A);
Co = cont_mat(A,B);
rCo = rank (Co);
Ob = obsv_mat(A,C);
rOb = rank(Ob);
polos = [(-2.5+6*j), (-2.5-6*j), 1.25, -5];
polos_reales = real(polos);
A_real = real(A);
B_real = real(B);
[K] = ppol(A_real,B_real,polos_reales);
Ac = A – (B*K);
sl = syslin(‘c’,Ac,B,C,D,cini);
[FT2] = ss2tf(sl);
vpAc = spec(Ac);
2. Código Matlab
g = 9.81;
j = 0.0208;
jb = 0.004;
R = 0.1;
m = 0.1;
r = 1;
% Definir la matriz de estado del sistema
A = [0, 1, 0, 0;
0, 0, -g, 0;
0, 0, 0, 1;
(m*g)/(j+jb), 0, 0, 0];
% Definir las matrices de entrada, salida y transmisión directa del sistema
B = [0; 0; 0; 40.3];
C = eye(4, 4);
D = [0; 0; 0; 1/(j+jb)];
% Definir el estado inicial del sistema
x0 = [1; 0; 0; 0];
% Definir los polos deseados del sistema
polos = [-2.5+6i, -2.5-6i, 1.25, -5];
% Calcular la matriz de ganancias de retroalimentación de estados
K = place(A, B, polos);
% Definir la matriz de estado con retroalimentación de estados
Ac = A – B*K;
% Definir el sistema con retroalimentación de estados
sys = ss(Ac, B, C, D);
% Calcular la función de transferencia del sistema
FT = tf(sys);
% Calcular el diagrama de Bode del sistema
bode(FT);
% Simular la respuesta temporal del sistema con una entrada escalón unitario
t = linspace(0, 10, 1000);
u = ones(size(t));
[y, t, x] = lsim(sys, u, t, x0);
% Graficar la respuesta temporal del sistema
figure;
plot(t, y);
title(‘Respuesta temporal del sistema’);
xlabel(‘Tiempo (s)’);
ylabel(‘Posición (m)’);
Análisis de resultados
La simulación de la respuesta temporal del sistema muestra cómo la posición de la
esfera en la barra evoluciona a lo largo del tiempo en respuesta a una entrada escalón
unitario. La rapidez con la que la posición de la esfera se estabiliza y se mantiene
estable a lo largo del tiempo demuestra la eficacia del controlador de retroalimentación
de estados en el control de la posición de la esfera.
El diagrama de Bode del sistema muestra una ganancia constante a bajas frecuencias, lo
que indica que el sistema es capaz de seguir cambios en la posición de la esfera de
manera efectiva. A altas frecuencias, la ganancia comienza a disminuir, lo que indica
que el sistema es menos capaz de seguir cambios rápidos en la posición de la esfera. La
fase del sistema también cambia a medida que aumenta la frecuencia, lo que indica una
mayor desviación entre la posición deseada y la posición real de la esfera.
En resumen, los resultados obtenidos por el código demuestran que el controlador de
retroalimentación de estados es una técnica eficaz para controlar sistemas complejos y
proporcionar un alto rendimiento y estabilidad en el control de la posición de la esfera
en la barra. La ubicación adecuada de los polos deseados en el plano complejo ha
permitido que el sistema tenga una respuesta rápida y estable, lo que destaca la
importancia de una elección adecuada de los polos deseados en el diseño del
controlador.
Conclusión
Este estudio demuestra que el controlador de retroalimentación de estados es una
técnica robusta de control, y es óptima para sistemas dinámicos complejos como el
analizado. Se debe señal que la cuidadosa selección de los polos para el controlador fue
decisiva para lograr una respuesta rápida y un control preciso de la posición de la esfera,
cumpliendo con los requerimientos de diseño.
Mediante el análisis de Bode se pudo validar el desempeño del controlador ante
perturbaciones en un amplio rango de frecuencias. Así se comprobó la robustez del
controlador para rechazar efectivamente las variaciones y rápidamente regresar la esfera
a la posición de referencia deseada.
La implementación del software de simulación Scilab/Xcos y Matlab en conjunto
resultó ser una herramienta invaluable para realizar el prototipo y afinar el diseño del
compensador de estados. Y se puede decir que el código desarrollado puede ser
tomando como referencia para futuros proyectos en el control de sistemas dinámicos
afines.
En síntesis, este trabajo comprueba las bondades del control por retroalimentación de
estados para dirigir el comportamiento de sistemas complejos de manera precisa. Las
simulaciones realizadas verifican un desempeño óptimo en el seguimiento de la
posición de referencia ante perturbaciones, validando esta técnica como una solución de
vanguardia para aplicaciones de control industrial avanzado.