Bienvenido a la documentación del Laboratorio Virtual¶
El Laboratorio Virtual de sistemas de control clásicos y difusos es una tesis realizada para la Universidad Nacional Experimental del Táchira como requisito parcial para optar al titulo de ingeniero en electrónica.
Autor: Kleiver J. Carrasco M.
email: kleiver615@gmail.com
Tutor académico: MSc. Ing. Juan R. Vizcaya R.
Como usar¶
Requisitos¶
Como primer paso se debe descargar o clonar el repositorio de la aplicación alojado en github:
https://github.com/ezalorpro/LaboratorioVirtual
La aplicación fue programada en python y es necesario tener instalado una versión de python >= 3.7, adicionalmente, se necesitan los módulos listados a continuación:
matplotlib>=3.1.1
networkx==2.3
numpy>=1.17.3
parse==1.12.1
PySide2==5.13.0
scipy==1.3.1
Para instalar todos los módulos se puede utilizar el administrador de paquetes pip y el archivo requirements.txt ofrecido en el repositorio de la aplicación, el siguiente comando ejecuta la acción de instalación de los módulos:
pip install requirements.txt
Ejecución¶
La aplicación puede ser ejecutada al hacer un llamado de python sobre el archivo main.py, por lo cual se debe estar ubicado al mismo nivel que el archivo main.py:
python main.py
La aplicación¶
Estructura del código¶
El código fue realizado utilizando una combinación de programación estructurada y programación orientada a objetos. En la siguiente imagen se observa un esquema que representa la jerarquía del programa:
En la primera columna se encuentra el archivo main o principal, el cual se encarga de la creación de la ventana gráfica y del llamado de los archivos «handlers», los cuales se observan en la columna dos (Análisis, Entonación, Lógica difusa y Simulación), los archivos «handler» tienen la tarea de manejar la interfaz gráfica y hacer de enlace entre el usuario y las rutinas.
Los archivos de rutinas se observan en la tercera columna, su función es la de realizar los cálculos necesarios que solicite el usuario por medio de la interfaz gráfica.
Interfaz gráfica¶
La interfaz gráfica fue realizada utilizando PySide2, las funciones de Laboratorio Virtual fueron separadas en pestañas. En las siguientes imágenes se señalan cada uno de los componentes que integran cada función.
Función de análisis¶
Pestañas de funciones
Selector de representación
Coeficientes de la función de transferencia
Agregado de Delay
Discretización del proceso
Datos del análisis
Botón para realizar el análisis
Pestañas de gráficas
Gráfica con Matplotlib
Barra de herramientas de la gráfica
Matrices de estados
Función de entonación de controladores PID¶
Función de entonación automática
Resolución de los sliders
Sliders de ganancias
Sliders de tiempo y coeficiente N
Gráfica con PyQtGraph
Carga del archivo CSV
Separador del archivo CSV
SPAN de la variable del proceso
SPAN de la entrada al proceso (EFC)
Slider para ajustar $t_1$
Gráfica de la variable del proceso
Gráfica de la entrada al proceso (EFC)
Función de diseño de controladores difusos¶
Número de entradas y salidas
Selección de esquema de control
Botón para iniciar el diseño
Botón para cargar un diseño
Botones para salvar los diseños
Botón para exportar el diseño a FIS
Pestañas para el diseño
Información general
Estructura de entradas y salidas
Esquema de control
Número de entrada/salida
Nombre de la entrada/salida
Número de etiquetas
Rango de la entrada/salida
Método de defuzzificacion
Número de etiqueta
Nombre de la etiqueta
Tipo de función de membresía
Definición de la función de membresía
Gráfica de las funciones de membresía
Lista de reglas
Lógica de las premisas
Etiquetas de las entradas
Opción para negar la entrada
Etiquetas de las salidas
Peso de la salida
Botón para agregar una regla
Botón para cambiar una regla
Botón para eliminar una regla
Botón para crear el controlador y realizar pruebas
Activación de reglas de forma gráfica para las entradas
Slider para asignar entrada
Valor de entrada
Activación de reglas de forma gráfica para las salidas
Valor de salida
Respuesta del controlador
Barra indicadora de altura (para dos entradas)
Función de simulación de sistemas de control¶
Pestañas de simulación
Esquema de control
Barras de configuración
Botón para simular
Gráfica de respuesta del sistema
Gráfica de la señal de control
Barra de configuración general
Selección del esquema de control
Tiempo de simulación
Valor del setpoint
Setpoint avanzado (variable)
Barra de configuración avanzada
Orden del atraso por PADE
Activación del filtro para la derivada
Selección del método de Runge-Kutta
Tolerancia relativa para el paso variable
Tolerancia absoluta para el paso variable
Máximo incremento del tamaño de paso
Mínimo decremento del tamaño de paso
Factor de seguridad para el paso variable
Botón para reiniciar la configuración
Barra de bloques adicionales
Activación del sensor
Numerador del sensor
Denominador del sensor
Activación del accionador
Numerador del accionador
Denominador del accionador
Activación del saturador
Límite inferior del saturador
Límite superior del saturador
Barra de configuración del controlador
Controlador difuso
Ganancia proporcional del PID
Ganancia integral del PID
Ganancia derivativa del PID
Coeficiente N
Documentación automática¶
Documentación automática generada a partir de los docstring del código fuente, esta documentación sirve como referencia de las clases y funciones empleadas en la aplicación.
Promociones de Widgets¶
focusLineEdit¶
Archivo para definir la clase FocusLineEdit, esta clases permite promocionar un lineEdit y agregar el evento focus con el fin de generar una señal al dar clic en un lineEdit
mlpwidget¶
Archivo para definir las clases MlpWidget, MlpWidgetNoToolbar, MlpWidgetSubplot y MlpWidget3D, estas clases son utilizadas por qtdesigner para promocionar un QGraphicsView a las clases aca definidas en orden de mostrar las gráficas en un QGraphicsView
-
class
mlpwidget.
MlpWidget
(parent=None)[fuente]¶ Clase básica para mostrar gráficas utilizando Matplotlib
- Parámetros
QGraphicsView (objectType) – Clase base del QGraphicsView
-
class
mlpwidget.
MlpWidget3D
(parent=None)[fuente]¶ Clase básica para mostrar gráficas en 3D utilizando Matplotlib
- Parámetros
QGraphicsView (objectType) – Clase base del QGraphicsView
pyqtgraphWidget¶
Archivo para definir las clases PgraphWidget y PgraphWidgetpid, estas clases son utilizadas por qtdesigner para promocionar un QGraphicsView a las clases aca definidas en orden de mostrar las gráficas en un QGraphicsView
-
class
pyqtgraphWidget.
PgraphWidget
(parent=None)[fuente]¶ Clase para las gráficas utilizadas en la prueba de los controladores difusos, PyQtGraph es acto para realizar gráficas en tiempo real
- Parámetros
QGraphicsView (objectType) – Clase base del QGraphicsView
Archivo principal (main)¶
Archivo Handler para la función de análisis¶
Archivo de rutinas para la función de análisis¶
Archivo que contiene todas las rutinas necesarias para la funcionalidad de analisis de sistemas de control
-
rutinas_analisis.
margenes_ganancias
(self, system, mag, phase, omega)[fuente]¶ Función para obtener el margen de ganancia y el margen de fase.
- Parámetros
system (LTI) – Representación del sistema
mag (numpyArray) – Magnitud de la respuesta en frecuencia
phase (numpyArray) – Fase de la respuesta en frecuencia
omega (numpyArray) – Frecuencias utilizadas para la respuesta en frecuencia
- Devuelve
Margenes de ganancia y fase separados en margen de ganancia, margen de fase, frecuencia del margen de ganancia y frecuencia del margen de fase
- Tipo del valor devuelto
tuple(float, float, float, float)
-
rutinas_analisis.
rutina_bode_plot
(self, system)[fuente]¶ Función para obtener la respuesta en frecuencia del sistema y su respectiva graficacion en diagrama de bode.
- Parámetros
system (LTI) – Representacion del sistema
- Devuelve
Respuesta en frecuencia separada en vector de magnitudes, vector de fases y vector de frecuencias
- Tipo del valor devuelto
tuple(numpyArray, numpyArray, numpyArray)
-
rutinas_analisis.
rutina_impulse_plot
(self, system, T)[fuente]¶ Función para obtener la respuesta impulso del sistema y su respectiva graficacion.
- Parámetros
system (LTI) – Representacion del sistema
T (numpyArray) – Vector de tiempo
- Devuelve
Respuesta impulso separada en vector de tiempo y vector de salida
- Tipo del valor devuelto
tuple(numpyArray, numpyArray)
-
rutinas_analisis.
rutina_nichols_plot
(self, system)[fuente]¶ Función para obtener el diagrama de nichols del sistema y su respectiva graficacion, la graficacion se realizo de forma interna en la libreria de control, para esto se modificó la función nichols_plot para poder enviar el axis y la figura, adicionalmente se realizaron algunas modificaciones para una mejor presentación de la gráfica.
- Parámetros
system (LTI) – Representacion del sistema
-
rutinas_analisis.
rutina_nyquist_plot
(self, system)[fuente]¶ Función para obtener la respuesta en frecuencia del sistema y su respectiva graficacion en diagrama de Nyquist.
- Parámetros
system (LTI) – Representacion del sistema
- Devuelve
Respuesta en frecuencia separada en vector de valores reales, vector de valores imaginarios y vector de frecuencias
- Tipo del valor devuelto
tuple(numpyArray, numpyArray, numpyArray)
-
rutinas_analisis.
rutina_root_locus_plot
(self, system)[fuente]¶ Función para obtener el lugar de la raíces del sistema y su respectiva graficacion, la graficacion se realizo de forma interna en la libreria de control, para esto se modificó la función root_locus para poder enviar el axis y la figura.
- Parámetros
system (LTI) – Representacion del sistema
-
rutinas_analisis.
rutina_step_plot
(self, system, T)[fuente]¶ Función para obtener la respuesta escalón del sistema y su respectiva graficacion.
- Parámetros
system (LTI) – Representacion del sistema
T (numpyArray) – Vector de tiempo
- Devuelve
Respuesta escalón separada en vector de tiempo y vector de salida
- Tipo del valor devuelto
tuple(numpyArray, numpyArray)
-
rutinas_analisis.
rutina_system_info
(self, system, T, mag, phase, omega)[fuente]¶ Función para mostrar los resultados obtenidos de los calculos en un TextEdit.
- Parámetros
system (LTI) – Representacion del sistema
T (numpyArray) – Vector de tiempo
mag (numpyArray) – Magnitud de la respuesta en frecuencia
phase (numpyArray) – Fase de la respuesta en frecuencia
omega (numpyArray) – Frecuencias utilizadas para la respuesta en frecuencia
-
rutinas_analisis.
system_creator_ss
(self, A, B, C, D)[fuente]¶ Función para la creación del sistema a partir de la matriz de estado, matriz de entrada, matriz de salida y la matriz de transmisión directa la ecuación de espacio de estados.
- Parámetros
A (list) – Matriz de estados
B (list) – Matriz de entrada
C (list) – Matriz de salida
D (list) – Matriz de transmisión directa
- Devuelve
El sistema, el vector de tiempo, el sistema con delay y el sistema en el espacio de estados, si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI, LTI)
-
rutinas_analisis.
system_creator_tf
(self, numerador, denominador)[fuente]¶ Función para la creación del sistema a partir de los coeficientes del numerador y del denominador de la función de transferencia.
- Parámetros
numerador (list) – Coeficientes del numerador
denominador (list) – Coeficientes del denominador
- Devuelve
El sistema, el vector de tiempo y el sistema con delay, si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI)
Archivo para el manejo de la función de analisis de sistemas de control, sirve de intermediario entre la interfaz gráfica y las rutinas de analisis
-
analisisHandler.
AnalisisHandler
(self)[fuente]¶ Función principal para el manejo de la funcionalida de analisis de sistemas de control, se crean las señales a ejecutar cuando se interactuá con los widgets incluyendo las validaciones de entradas
-
analisisHandler.
analisis_bool_discreto
(self)[fuente]¶ Función para habilitar y deshabilitar el periodo de muestreo
-
analisisHandler.
analisis_stacked_to_ss
(self)[fuente]¶ Función para cambiar de función de transferencia a ecuación de espacio de estados
-
analisisHandler.
analisis_stacked_to_tf
(self)[fuente]¶ Función para cambiar de ecuación de espacio de estados a función de transferencia
-
analisisHandler.
calcular_analisis
(self)[fuente]¶ Función para realizar el los calculos necesarios para la funcionalidad de analisis de sistemas de control, el llamado a esta función se realiza por medio del botón calcular
-
analisisHandler.
ssA_validator
(self)[fuente]¶ Validación de la matriz de estados de la ecuación de espacio de estados
-
analisisHandler.
ssB_validator
(self)[fuente]¶ Validación de la matriz de entrada de la ecuación de espacio de estados
-
analisisHandler.
ssC_validator
(self)[fuente]¶ Validación de la matriz de salida de la ecuación de espacio de estados
-
analisisHandler.
ssD_validator
(self)[fuente]¶ Validación de la matriz de transmisión directa de la ecuación de espacio de estados
-
analisisHandler.
ssdelay_validator
(self)[fuente]¶ Validación del delay de la ecuación de espacio de estados
-
analisisHandler.
ssperiodo_validator
(self)[fuente]¶ Validación del periodo de muestreo de la ecuación de espacio de estados
-
analisisHandler.
tfdelay_validator
(self)[fuente]¶ Validación del delay de la función de transferencia
-
analisisHandler.
tfdem_validator
(self)[fuente]¶ Validación del denominador de la función de transferencia
Archivo Handler para la función de entonación de controladores PID¶
Archivo de rutinas para la función de entonación de PID¶
Archivo que contiene todas las rutinas necesarias para la funcionalidad de tunning de PID
-
rutinas_PID.
auto_tuning_method
(self, k_proceso, tau, alpha, metodo)[fuente]¶ Función para obtener las ganancias del controlador PID a partir de los parametros del modelo de primer orden obtenidos de una respuesta escalón, las formulas son las dadas por Ziegler-Nichols y Cohen-Coon para una respuesta escalón en lazo abierto.
- Parámetros
k_proceso (float) – Ganancia del proceso
tau (float) – Constante de tiempo del proceso
alpha (float) – Tiempo muerto o delay del proceso
metodo (str) – Método a utilizar
- Devuelve
Ganancias kp, ki y kd
- Tipo del valor devuelto
tuple(float, float, float)
-
rutinas_PID.
model_method
(self, t, y, dc_gain)[fuente]¶ Función para obtener los parametros del modelo de primer orden de un sistema a partir de su respuesta escalón.
- Parámetros
t (numpyArray) – Vector de tiempo
y (numpyArray) – Vector de respuesta
dc_gain (float) – Ganancia DC del sistema
- Devuelve
Ganancia, constante de tiempo y tiempo muerto del proceso
- Tipo del valor devuelto
tuple(float, float, float)
-
rutinas_PID.
rutina_step_plot
(self, system, T, kp, ki, kd)[fuente]¶ Función para obtener la respuesta escalón del sistema en lazo cerrado en combinación con un controlador PID y su respectiva graficacion.
- Parámetros
system (LTI) – Representacion del sistema
T (numpyArray) – Vector de tiempo
kp (float) – Ganancia proporcional
ki (float) – Ganancia integral
kd (float) – Ganancia derivativa
- Devuelve
Respuesta escalón separada en vector de tiempo y vector de salida
- Tipo del valor devuelto
tuple(numpyArray, numpyArray)
-
rutinas_PID.
rutina_system_info
(self, system, T, y, kp=0, ki=0, kd=0, autotuning=False)[fuente]¶ Función para mostrar los resultados obtenidos de los calculos en un TextEdit
- Parámetros
system (LTI) – Representacion del sistema
T (numpyArray) – Vector de tiempo
y (numpyArray) – Vector de respuesta
kp (float, opcional) – Ganancia proporcional, defaults to 0
ki (float, opcional) – Ganancia integral, defaults to 0
kd (float, opcional) – Ganancia derivativa, defaults to 0
autotuning (bool, opcional) – Bandera para señalar si es o no una operación con auto tunning, defaults to False
-
rutinas_PID.
system_creator_ss
(self, A, B, C, D)[fuente]¶ Función para la creación del sistema a partir de la matriz de estado, matriz de entrada, matriz de salida y la matriz de transmisión directa.
- Parámetros
A (list) – Matriz de estados
B (list) – Matriz de entrada
C (list) – Matriz de salida
D (list) – Matriz de transmisión directa
- Devuelve
El sistema, el vector de tiempo, el sistema con delay, el sistema en el espacio de estados y las ganancias kp, ki y kd. Si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI, LTI, float, float, float)
-
rutinas_PID.
system_creator_ss_tuning
(self, A, B, C, D)[fuente]¶ Función para la creación del sistema a partir de la matriz de estado, matriz de entrada, matriz de salida y la matriz de transmisión directa, adicionalmente se realiza el auto tuning utilizando el método escogido por el usuario.
- Parámetros
A (list) – Matriz de estados
B (list) – Matriz de entrada
C (list) – Matriz de salida
D (list) – Matriz de transmisión directa
- Devuelve
El sistema, el vector de tiempo, el sistema con delay, el sistema en el espacio de estados y las ganancias kp, ki y kd. Si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI, LTI, float, float, float)
-
rutinas_PID.
system_creator_tf
(self, numerador, denominador)[fuente]¶ Función para la creación del sistema a partir de los coeficientes del numerador y del denominador de la función de transferencia.
- Parámetros
numerador (list) – Coeficientes del numerador
denominador (list) – Coeficientes del denominador
- Devuelve
El sistema, el vector de tiempo, el sistema con delay y las ganancias kp, ki y kd. Si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI, float, float, float)
-
rutinas_PID.
system_creator_tf_tuning
(self, numerador, denominador)[fuente]¶ Función para la creación del sistema a partir de los coeficientes del numerador y del denominador de la función de transferencia, adicionalmente se realiza el auto tuning utilizando el método escogido por el usuario.
- Parámetros
A (list) – Matriz de estados
B (list) – Matriz de entrada
C (list) – Matriz de salida
D (list) – Matriz de transmisión directa
- Devuelve
El sistema, el vector de tiempo, el sistema con delay y las ganancias kp, ki y kd. Si el sistema no tiene delay, ambos son iguales
- Tipo del valor devuelto
tuple(LTI, numpyArray, LTI, float, float, float)
Archivo de rutinas para la función de entonación de PID utilizando data de un CSV¶
Archivo que contiene todas las rutinas necesarias para la funcionalidad de identificación de modelo y tunning con csv
-
rutinas_CSV.
actualizar_Datos
(self, Kc, t0, t1, t2, kp, ki, kd)[fuente]¶ Función para mostrar los resultados obtenidos del modelo en un TextEdit
- Parámetros
Kc (float) – Ganancia del proceso
t0 (float) – Tiempo del inicio del escalón
t1 (float) – Tiempo del inicio de la respuesta del proceso ante el escalón
t2 (float) – Tiempo en el que el proceso alcanza el 63% de su valor final respecto al cambio
kp (float) – Ganancia proporcional
ki (float) – Ganancia integral
kd (float) – Ganancia derivativa
-
rutinas_CSV.
auto_tuning_method_csv
(self, k_proceso, tau, alpha, metodo)[fuente]¶ Función para obtener las ganancias del controlador PID a partir de los parametros del modelo de primer orden obtenidos de una respuesta escalón, las formulas son las dadas por Ziegler-Nichols y Cohen-Coon para una respuesta escalón en lazo abierto
- Parámetros
k_proceso (float) – Ganancia del proceso
tau (float) – Constante de tiempo del proceso
alpha (float) – Tiempo muerto o delay del proceso
metodo (str) – Método a utilizar
- Devuelve
Ganancias kp, ki y kd
- Tipo del valor devuelto
tuple(float, float, float)
-
rutinas_CSV.
calcular_modelo
(self, dict_data, indexTime, indexVp, indexEFC, MinVP, MaxVP, MinEFC, MaxEFC)[fuente]¶ Función para calcular los parametros del modelo de primer orden
- Parámetros
dict_data (dict) – Diccionario con la data procesada del csv
indexTime (int) – Indice que identifica al tiempo
indexVp (int) – Indice que identifica a Vp
indexEFC (int) – Indice que identifica al EFC
MinVP (float) – Limite inferior de Vp
MaxVP (float) – Limite superior de Vp
MinEFC (float) – Limite inferior de EFC
MaxEFC (float) – Limite superior de EFC
- Devuelve
Datos del modelo de primer orden, recta tangente y puntos asociados a la recta
- Tipo del valor devuelto
tuple(float, float, float, float, float, float, float, float, float)
-
rutinas_CSV.
calculos_manual
(self, GraphObjets, Kc, t0, t1, t2, slop, y1)[fuente]¶ Función para recalcular el controlador PID a partir de los datos del modelo de primer orden con el nuevo tiempo t1, ademas, se grafica la data del csv junto con algunos parametros de la identificación del modelo y la nueva recta
- Parámetros
GraphObjets (list) – Lista de objetos de graficacion
Kc (float) – Ganancia del proceso
t0 (float) – Tiempo del inicio del escalón
t1 (float) – Tiempo del inicio de la respuesta del proceso ante el escalón
t2 (float) – Tiempo en el que el proceso alcanza el 63% de su valor final respecto al cambio
slop (float) – Pendiente de la recta de identificación
y1 (float) – Punto y1 de la recta de identificación, en este punto se encuentra el mayor cambio respecto al tiempo
-
rutinas_CSV.
entonar_y_graficar
(self, dict_data, Kc, tau, y1, y2, t0, t1, t2)[fuente]¶ Función para calcular el controlador PID a partir de los datos del modelo de primer orden, ademas, se graficá la data del csv junto con algunos parametros de la identificación del modelo
- Parámetros
dict_data (dict) – Diccionario con la data procesada del csv
Kc (float) – Ganancia del proceso
tau (float) – Constante de tiempo del proceso
y1 (float) – Punto y1 de la recta de identificación, en este punto se encuentra el mayor cambio respecto al tiempo
y2 (float) – Punto y2 de la recta de identificación
t0 (float) – Tiempo del inicio del escalón
t1 (float) – Tiempo del inicio de la respuesta del proceso ante el escalón
t2 (float) – Tiempo en el que el proceso alcanza el 63% de su valor final respecto al cambio
- Devuelve
Lista de objetos de gráficas y lista de parametros de la recta para el modelado
- Tipo del valor devuelto
tuple(list[ObjectType, ObjectType, ObjectType, ObjectType, ObjectType, ObjectType, ObjectType, ObjectType], list[float, float, float, float, float, float])
-
rutinas_CSV.
procesar_csv
(self, csv_data)[fuente]¶ Función para procesar la data del archivo csv, se crea una nueva data en un diccionario, se normalizan las escalas con el span y se transforma el tiempo a segundos. Para la transformación de tiempo a segundos los formatos aceptados son:
hh:mm:ss
mm:ss
ss
En cualquiera de los casos se llevara a segundos y se restara el tiempo inicial para que empiece en cero.
- Parámetros
csv_data (numpyArray) – Data del csv
- Devuelve
Data extraida del archivo CSV asi como indices, máximos y mínimos de la data
- Tipo del valor devuelto
tuple(dict, list[int, int, int, float, float, float, float])
Archivo para el manejo de la función de Tunning, sirve de intermediario entre la interfaz gráfica y las rutinas de entonación de controladores PID y la identificación de modelos a partir de un archivo CSV y entonación de PID para el mismo
-
TuningHandler.
PID_bool_discreto
(self)[fuente]¶ Función para habilitar y deshabilitar el periodo de muestreo
-
TuningHandler.
PID_stacked_to_ss
(self)[fuente]¶ Función para cambiar a ecuación de espacio de estados
-
TuningHandler.
TuningHandler
(self)[fuente]¶ Función principal para el manejo de la funcionalida de Tunning, se crean las señales a ejecutar cuando se interactuá con los widgets incluyendo las validaciones de entradas
-
TuningHandler.
actualizar_sliders_ss
(self)[fuente]¶ Función para ajustar la resolución de los sliders con ecuación de espacio de estados
-
TuningHandler.
actualizar_sliders_tf
(self)[fuente]¶ Función para ajustar la resolución de los sliders con función de transferencia
-
TuningHandler.
ajustar_atraso_manual
(self)[fuente]¶ Función para ajustar el tiempo t1, despues de realizar el calculo para un archivo csv, se utiliza en caso de que la estimación automática no sea lo suficientemente buena
-
TuningHandler.
calcular_PID
(self)[fuente]¶ Función para realizar el los calculos necesarios para la funcionalidad de entonación de controladores PID, el llamado a esta función se realizar por medio del botón calcular o cada vez que se modifique alguno de los sliders
-
TuningHandler.
calcular_autotuning
(self)[fuente]¶ Función para realizar el los calculos necesarios para la funcionalidad de entonación de controladores PID con auto tunning, el llamado a esta función se realizar por medio del botón calcular si previamente se habilito la funcionalidad de auto tunning
-
TuningHandler.
calcular_csv
(self)[fuente]¶ Función para realizar el los calculos necesarios para la funcionalidad de identificación de modelos y entonación de controlador PID, el llamado a esta función se realizar por medio del botón calcular
-
TuningHandler.
chequeo_de_accion
(self)[fuente]¶ Para discriminar entre entonación con función de transferencia, ecuación de espacio de estados o identificación de modelo con archivo csv
-
TuningHandler.
ssA_validator
(self)[fuente]¶ Validación de la matriz de estados de la ecuación de espacio de estados
-
TuningHandler.
ssB_validator
(self)[fuente]¶ Validación de la matriz de entrada de la ecuación de espacio de estados
-
TuningHandler.
ssC_validator
(self)[fuente]¶ Validación de la matriz de salida de la ecuación de espacio de estados
-
TuningHandler.
ssD_validator
(self)[fuente]¶ Validación de la matriz de transmisión directa de la ecuación de espacio de estados
-
TuningHandler.
ss_habilitar_sliders_checkbox
(self)[fuente]¶ Función para habilitar ganancias antes y despues del auto tuning con ecuación de espacio de estados
-
TuningHandler.
ssdelay_validator
(self)[fuente]¶ Validación del delay de la ecuación de espacio de estados
-
TuningHandler.
ssperiodo_validator
(self)[fuente]¶ Validación del periodo de muestreo de la ecuación de espacio de estados
-
TuningHandler.
tf_habilitar_sliders_checkbox
(self)[fuente]¶ Función para habilitar ganancias antes y despues del auto tuning con función de transferencia
-
TuningHandler.
tfdem_validator
(self)[fuente]¶ Validación del denominador de la función de transferencia
-
TuningHandler.
tfnum_validator
(self)[fuente]¶ Validación del numerador de la función de transferencia
-
TuningHandler.
tfperiodo_validator
(self)[fuente]¶ Validación del periodo de muestreo de la función de transferencia
-
TuningHandler.
tiempo_slider_cambio
(self)[fuente]¶ Para discriminar entre entonación e identificación de modelo con archivo csv
-
TuningHandler.
update_gain_labels
(self, kp=0, ki=0, kd=0, autotuning=False, resolution=50)[fuente]¶ Función para actualizar los labels que representan las ganancias, se ejecuta cada vez que un slider de ganancias cambia.
- Parámetros
kp (float, opcional) – Ganancia proporcional, defaults to 0
ki (float, opcional) – Ganancia integral, defaults to 0
kd (float, opcional) – Ganancia derivativa, defaults to 0
autotuning (bool, opcional) – Bandera para señalar si es o no una operación con autotunning, defaults to False
resolution (int, opcional) – Resolución de los sliders, defaults to 50
Archivo Handler para la función de lógica difusa¶
Archivo de rutinas que contiene las clases FuzzyController y FISParser¶
Archivo que contiene las clases FuzzyController y FISParser, para administrar el controlador difuso y cargar y exportar archivos .fis respectivamente
-
class
rutinas_fuzzy.
FISParser
(file, InputList=None, OutputList=None, RuleEtiquetas=None)[fuente]¶ Clase para cargar y exportar archivos .fis, para cargar los archivos FIS las funciones get_system, get_vars,get_var y get_rules fueron tomadas de yapflm:
Yet Another Python Fuzzy Logic Module: https://github.com/sputnick1124/yapflm
Para obtener los datos necesarias del .fis, de allí, se aplica la función fis_to_json para completar el parsin. En el caso de la exportación, se realiza utilizando la función json_to_fis
-
__init__
(file, InputList=None, OutputList=None, RuleEtiquetas=None)[fuente]¶ Constructor de la clase, inicializa las variables a utilizar y selecciona entre cargar el fis o exportarlo dependiendo de las variables con las que se cree el objeto
- Parámetros
file (str) – Dirección del archivo a cargar o exportar
inputlist (list, opcional) – Lista de variables de entrada, defaults to None
OutputList (list, opcional) – Lista de variables de entrada, defaults to None
RuleEtiquetas (list, opcional) – Lista con la información necesaria para crear las reglas, defaults to None
-
fis_to_json
()[fuente]¶ Función para completar la creación del controlador a partir de un archivo .fis
- Devuelve
Conjunto de entradas, salidas y reglas
- Tipo del valor devuelto
tuple(list)
-
-
class
rutinas_fuzzy.
FuzzyController
(inputlist, outputlist, rulelist=[])[fuente]¶ Clase para administrar el controlador difuso, a partir de la misma se puede crear el controlador difuso e ir creandolo de forma programática por medio de la interfaz grafica definida en Ui_VentanaPrincipal.py y manejada en FuzzyHandler.py
-
__init__
(inputlist, outputlist, rulelist=[])[fuente]¶ Se utiliza para inicializar el controlador con las entradas y salidas del mismo, en caso de que se envié el parametro opcional, rulelist, se crea el controlador a partir de las reglas suministradas y queda listo para usar
- Parámetros
inputlist (list) – Lista de variables de entrada
outputlist (list) – Lista de variables de salida
rulelist (list, opcional) – Lista de reglas, defaults to []
-
agregar_regla
(window, Etiquetasin, Etiquetasout, lógica)[fuente]¶ Función para crear una regla a partir de un set
- Parámetros
window (object) – Objeto que contiene a la ventana principal
Etiquetasin (list) – set de entrada
Etiquetasout (list) – set de salida
lógica (bool) – Lógica a utilizar
- Devuelve
Ultima regla agregada
- Tipo del valor devuelto
ObjectType
-
calcular_valor
(inputs, outputs)[fuente]¶ Función para calcular las salidas del controlador dado sus entradas, esta función se utiliza en la funcionalidad de simulación de sistemas de control
- Parámetros
inputs (list) – Lista con los valores de entrada
outputs (list) – Lista vaciá del tamaño del numero de salidas
- Devuelve
Lista de valores de salida del controlador difuso
- Tipo del valor devuelto
list
-
cambiar_metodo
(window, o, metodo)[fuente]¶ Función para cambiar el método defuzzificacion de una salida
- Parámetros
window (object) – Objeto que contiene a la ventana principal
o (str) – Numero de salida
metodo – Nombre del nuevo método de defuzzificacion
-
cambiar_nombre_input
(window, i, nombre)[fuente]¶ Función para cambiar el nombre de una entrada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
i (int) – Numero de entrada
nombre (str) – Nuevo nombre de la entrada
-
cambiar_nombre_output
(window, o, nombre)[fuente]¶ Función para cambiar el nombre de una salida
- Parámetros
window (object) – Objeto que contiene a la ventana principal
o (int) – Numero de salida
nombre (str) – Nuevo nombre de la salida
-
cambiar_regla
(window, Etiquetasin, Etiquetasout, index_rule, lógica)[fuente]¶ Función para cambiar una regla a partir de un nuevo set
- Parámetros
window (object) – Objeto que contiene a la ventana principal
Etiquetasin (list) – set de entrada
Etiquetasout (list) – set de salida
index_rule (int) – Indice indicando la regla a cambiar
lógica (bool) – Lógica a utilizar
- Devuelve
Regla cambiada
- Tipo del valor devuelto
ObjectType
-
cambio_etinombre_input
(window, inputlist, i, n, old_name)[fuente]¶ Función para cambiar el nombre de una etiqueta en la entrada seleccionada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
inputlist (list) – Lista de variables de entrada
i (int) – Numero de entrada
n (int) – Numero de etiqueta
old_name (str) – Nombre anterior
-
cambio_etinombre_output
(window, outputlist, o, n, old_name)[fuente]¶ Función para cambiar el nombre de una etiqueta en la salida seleccionada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
outputlist (list) – Lista de variables de salida
o (int) – Numero de salida
n (int) – Numero de etiqueta
old_name (str) – Nombre anterior
-
cambio_etiquetas_input
(window, inputlist, i)[fuente]¶ Función para actualizar las etiquetas de entrada del controlador
- Parámetros
window (object) – Objeto que contiene a la ventana principal
inputlist (list) – Lista de variables de entrada
i (int) – Numero de entrada
-
cambio_etiquetas_output
(window, outputlist, o)[fuente]¶ Función para actualizar las etiquetas de salida del controlador
- Parámetros
window (object) – Objeto que contiene a la ventana principal
outputlist (list) – Lista de variables de salida
o (int) – Numero de salida
-
crear_controlador
()[fuente]¶ Función para crear el controlador difuso a partir de todas las reglas creadas
-
crear_etiquetas_input
(inputlist)[fuente]¶ Función para crear las etiquetas de una entrada a partir de la lista de variables de entrada
- Parámetros
inputlist (list) – Lista de variables de entrada
-
crear_etiquetas_output
(outputlist)[fuente]¶ Función para crear las etiquetas de una salida a partir de la lista de variables de salida
- Parámetros
outputlist (list) – Lista de variables de salida
-
crear_input
(inputlist)[fuente]¶ Función para crear las variables de entrada a partir de la lista de variables de entrada
- Parámetros
inputlist (list) – Lista de variables de entrada
- Devuelve
Variables de entrada
- Tipo del valor devuelto
list
-
crear_output
(outputlist)[fuente]¶ Función para crear las variables de salida a partir de la lista de variables de salida
- Parámetros
outputlist (list) – Lista de variables de salida
- Devuelve
Variables de de salida
- Tipo del valor devuelto
list
-
crear_plots_in
(window, ni)[fuente]¶ Función para crear los objetos de graficacion de PyQtGraph de la entrada, el código para la obtención de los valores de salida y el graficado es una version altamente modificada de la función .view() de Scikit-Fuzzy. Las modificaciones realizadas fueron necesarias para cambiar matplotlib por PyQtGraph
- Parámetros
window (object) – Objeto que contiene a la ventana principal
ni (int) – Numero de entradas
-
crear_plots_out
(window, no)[fuente]¶ Función para crear los objetos de graficacion de PyQtGraph de la salida, el código para la obtención de los valores de salida y el graficado es una version altamente modificada de la función .view() de Scikit-Fuzzy. Las modificaciones realizadas fueron necesarias para cambiar matplotlib por PyQtGraph
- Parámetros
window (object) – Objeto que contiene a la ventana principal
no (int) – Numero de salidas
-
crear_reglas
(rulelistC)[fuente]¶ Función para crear las reglas a partir de una lista que contiene toda la información necesaria, esta lista es creada en FuzzyHandler.py:
Cada posición en la lista contiene un set de entradas, salidas y la lógica a utilizar (AND o OR), a su vez, cada set es una lista que posee en cada posición otra lista con la etiqueta, el numero de entrada/salida y si esta o no negada para el caso de las entradas, en caso de ser salida contiene el peso asignado
- Parámetros
rulelistC (list) – Lista con la información necesaria para crear las reglas
- Devuelve
Lista de reglas
- Tipo del valor devuelto
list
-
eliminar_regla
(index_rule)[fuente]¶ Función para eliminar una regla
- Parámetros
index_rule (int) – Indice indicando la regla a eliminar
-
graficar_mf_in
(window, i)[fuente]¶ Función para graficar las funciones de membresía de una entrada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
i (int) – Numero de entrada
-
graficar_mf_out
(window, o)[fuente]¶ Función para graficar las funciones de membresía de una salida
- Parámetros
window (object) – Objeto que contiene a la ventana principal
o (int) – Numero de salida
-
graficar_prueba_pyqtgraph
(window, ni, no)[fuente]¶ Función para actualizar la grafica en función de las nuevas entradas, código tomado y modificado de la función .view() de Scikit-Fuzzy y adaptado para su uso con PyQtGraph
- Parámetros
window (object) – Objeto que contiene a la ventana principal
ni (int) – Numero de entradas
no (int) – Numero de salidas
-
graficar_respuesta_2d
(window, inrange, no)[fuente]¶ Función para graficar la respuesta del controlador en caso de poseer una entrada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
inrange (list) – Rango de la variable de entrada
no (int) – Numero de salidas
-
graficar_respuesta_3d
(window, inrange1, inrange2, no)[fuente]¶ Función para graficar la superficie de respuesta del controlador en caso de poseer 2 entradas
- Parámetros
window (object) – Objeto que contiene a la ventana principal
inrange1 (list) – Rango de la variable de entrada uno
inrange2 (list) – Rango de la variable de entrada dos
no (int) – Numero de salidas
-
prueba_de_controlador
(window, values, ni, no)[fuente]¶ Función para realizar la prueba del controlador
- Parámetros
window (object) – Objeto que contiene a la ventana principal
values (list) – Valores de entradas dados por el usuario con los sliders
ni (int) – Numero de entradas
no (int) – Numero de salidas
-
update_definicion_input
(window, inputlist, i, n)[fuente]¶ Función para actualizar la definicion de una función de membresía en la entrada seleccionada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
inputlist (list) – Lista de variables de entrada
i (int) – Numero de entrada
n (int) – Numero de etiqueta
-
update_definicion_output
(window, outputlist, o, n)[fuente]¶ Función para actualizar la definicion de una función de membresía en la salida seleccionada
- Parámetros
window (object) – Objeto que contiene a la ventana principal
outputlist (list) – Lista de variables de salida
o (int) – Numero de salida
n (int) – Numero de etiqueta
-
Archivo para el cambio de definición entre funciones de membresía¶
Archivo para el cambio de definición entre funciones de membresía, los cambios se realizan en dos pasos:
old_mf -> trimf trimf -> new_mf
De este modo se reduce el número de casos a codificar. Por otro lado, también contiene la función para realizar la validación de las definiciones ingresadas por el usuario
-
modificadorMf.
update_definicionmf
(self, old_mf, definicion, new_mf)[fuente]¶ Función para la transformación equivalente entre funciones de membresía
- Parámetros
old_mf (str) – Nombre de la antigua función de membresía
definicion (list) – Lista con los valores correspondiente a la definición de la antigua función de membresía
new_mf (str) – Nombre de la nueva función de membresía
- Devuelve
Definición de la función de membresía y tooltip
- Tipo del valor devuelto
tuple(list[:], str)
Archivo para el manejo de la función de diseño de controladores difusos, sirve de intermediario entre la interfaz grafica y la clase creada para manejar el controlador difuso definida en rutinas_fuzzy.py
-
FuzzyHandler.
EtiquetasDic_creator
(self, j, erange)[fuente]¶ Función para crear etiquetas genéricas
- Parámetros
j (int) – Numero de etiqueta
erange (list) – Definición de la función de membresía
- Devuelve
Diccionario con la información de la etiqueta
- Tipo del valor devuelto
dict
-
FuzzyHandler.
FuzzyHandler
(self)[fuente]¶ Función principal para el manejo de diseño de controladores difusos, se crean las señales a ejecutar cuando se interactuá con los widgets
-
FuzzyHandler.
actualizar_RulesEtiquetas_in
(self, ni, new_name, old_name)[fuente]¶ Función para actualizar el nombre en las reglas previamente creadas con el nuevo nombre de una etiqueta
- Parámetros
ni (int) – Numero de entrada
new_name (str) – Nuevo nombre para la etiqueta a cambiar
old_name (str) – Antiguo nombre de la etiqueta a cambiar
-
FuzzyHandler.
actualizar_RulesEtiquetas_out
(self, no, new_name, old_name)[fuente]¶ Función para actualizar el nombre en las reglas previamente creadas con el nuevo nombre de una etiqueta
- Parámetros
no (int) – Numero de salida
new_name (str) – Nuevo nombre para la etiqueta a cambiar
old_name (str) – Antiguo nombre de la etiqueta a cambiar
-
FuzzyHandler.
cargar_controlador
(self)[fuente]¶ Función manejar el cargado de controladores previamente diseñados, se aceptan formatos .JSON y .FIS
-
FuzzyHandler.
cargar_esquema
(self)[fuente]¶ Función para iniciar el entorno de diseño a partir de un esquema de control seleccionado
-
FuzzyHandler.
cerrar_prueba
(self)[fuente]¶ Función para cerrar las pestañas de pruebas ante cambios en el controlador difuso
-
FuzzyHandler.
check_esquema_show
(self)[fuente]¶ Función para mediar entre entradas y salidas genéricas y esquemas de control
-
FuzzyHandler.
crear_controlador
(self)[fuente]¶ Función para crear el controlador a partir de toda la información recolectada, esta creación se realiza con el fin de realizar la prueba del controlador y observar la superficie de respuesta del controlador en caso de poseer una o dos entradas
-
FuzzyHandler.
crear_tabs
(self)[fuente]¶ Función para iniciar el entorno de diseño para entradas y salidas genéricas
-
FuzzyHandler.
crear_vectores_de_widgets
(self)[fuente]¶ Función para el almacenado de widgets en listas para acceder a ellos por indices
-
FuzzyHandler.
definicion_in
(self)[fuente]¶ Función para manejar el cambio de definicion de la función de membresía correspondiente a la etiqueta actual
-
FuzzyHandler.
definicion_out
(self)[fuente]¶ Función para manejar el cambio de definicion de la función de membresía correspondiente a la etiqueta actual
-
FuzzyHandler.
defuzz_metodo
(self)[fuente]¶ Función para manejar el metodo de defuzzificacion para la salida seleccionada
-
FuzzyHandler.
deinificion_in_validator
(self)[fuente]¶ Función para validar las definiciones de las funciones de membresía
-
FuzzyHandler.
deinificion_out_validator
(self)[fuente]¶ Función para validar las definiciones de las funciones de membresía
-
FuzzyHandler.
exportar_fis
(self)[fuente]¶ Función manejar el exportado del controlador diseñado a formato .FIS
-
FuzzyHandler.
guardar_controlador
(self)[fuente]¶ Función manejar el guardado del controlador diseñado
-
FuzzyHandler.
guardarcomo_controlador
(self)[fuente]¶ Función manejar el guardado en un nuevo archivo del controlador diseñado
-
FuzzyHandler.
imagen_entradas
(self)[fuente]¶ Función para establecer la imagen del numero de entradas
-
FuzzyHandler.
inputDic_creator
(self, i)[fuente]¶ Función para crear entradas genéricas
- Parámetros
i (int) – Numero de entrada
- Devuelve
Diccionario con la información de la entrada
- Tipo del valor devuelto
dict
-
FuzzyHandler.
nombre_entrada
(self)[fuente]¶ Función para manejar el cambio de nombre de la entrada seleccionada
-
FuzzyHandler.
nombre_etiqueta_in
(self)[fuente]¶ Función para manejar el cambio de nombre de la etiqueta seleccionada de la entrada actual
-
FuzzyHandler.
nombre_etiqueta_out
(self)[fuente]¶ Función para manejar el cambio de nombre de la etiqueta seleccionada de la salida actual
-
FuzzyHandler.
nombre_salida
(self)[fuente]¶ Función para manejar el cambio de nombre de la salida seleccionada
-
FuzzyHandler.
numero_de_etiquetas_in
(self)[fuente]¶ Función para manejar el numero de etiquetas para la entrada seleccionada
-
FuzzyHandler.
numero_de_etiquetas_out
(self)[fuente]¶ Función para manejar el numero de etiquetas para la salida seleccionada
-
FuzzyHandler.
outputDic_creator
(self, i)[fuente]¶ Función para crear salidas genéricas
- Parámetros
i (int) – Numero de salida
- Devuelve
Diccionario con la información de la salida
- Tipo del valor devuelto
dict
-
FuzzyHandler.
prueba_input
(self)[fuente]¶ Función para la ejecución del código correspondiente a la prueba del controlador
-
FuzzyHandler.
round_list
(lista)[fuente]¶ Función para redondear los dígitos de una lista
- Parámetros
lista (list) – Lista con valores a redondear
- Devuelve
Lista con valores redondeados
- Tipo del valor devuelto
list
-
FuzzyHandler.
rule_list_agregar
(self)[fuente]¶ Función para crear una nueva regla a partir de las etiquetas seleccionadas para cada entrada y salida
-
FuzzyHandler.
rule_list_visualizacion
(self)[fuente]¶ Función para mostrar las reglas creadas para el controlador actual en un listWidget
-
FuzzyHandler.
seleccion_entrada
(self)[fuente]¶ Función para desplegar la información de la entrada seleccionada
-
FuzzyHandler.
seleccion_etiqueta_in
(self)[fuente]¶ Función para desplegar la información de la etiqueta seleccionada de la entrada actual
-
FuzzyHandler.
seleccion_etiqueta_out
(self)[fuente]¶ Función para desplegar la información de la etiqueta seleccionada de la salida actual
-
FuzzyHandler.
seleccion_mf_in
(self)[fuente]¶ Función para manejar el cambio de función de membresía para la etiqueta seleccionada
-
FuzzyHandler.
seleccion_mf_out
(self)[fuente]¶ Función para manejar el cambio de función de membresía para la etiqueta seleccionada
-
FuzzyHandler.
seleccion_salida
(self)[fuente]¶ Función para desplegar la información de la salida seleccionada
Archivo Handler para la función de simulación de sistemas de control¶
Archivo que contiene las rutinas de simulación y la clase SimpleThread (QtThread)¶
Archivo que contiene la clase SimpleThread la cual ejecuta la simulación de sistemas de control en hilo diferente al principal, esto se realiza de esta forma debido a que la simulación puede tardar en algunos casos varios segundos, de ejecutarse en el hilo principal presentaria un comportamiento de bloqueo en la ventana principal
-
class
rutinas_simulacion.
SimpleThread
(window, regresar, update_bar, error_gui, list_info, parent=None)[fuente]¶ Clase para realizar la simulación de sistemas de control en un hilo diferente al principal
- Parámetros
QThread (ObjectType) – Clase para crear un hilo paralelo al principal
-
__init__
(window, regresar, update_bar, error_gui, list_info, parent=None)[fuente]¶ Constructor para recibir las variables y funciones del hilo principal
- Parámetros
window (object) – Objeto que contiene a la ventana principal
regresar (function) – Función a la que regresa una vez terminada la simulación, plot_final_results de simulacionHandler.py
update_bar (function) – Función para actualizar la barra de progreso, update_progresBar_function de simulacionHandler.py
error_gui (function) – Función para mostrar los errores ocurridos durante la simulación, error_gui de simulacionHandler.py
list_info (list) – Lista con toda la información necesaria
parent (NoneType, opcional) – Sin efecto, defaults to None
-
run_fuzzy
()[fuente]¶ Función para realizar la simulación de sistemas de control de esquemas difusos
- Devuelve
Respuesta obtenida en la simulación dividida en vector de tiempo, vector de salida, vector de la señal de control y vector del setpoint
- Tipo del valor devuelto
tuple(list[float], deque[float], deque[float], list[float])
-
run_pid
()[fuente]¶ Función para realizar la simulación de sistemas de control con controlador PID clásico
- Devuelve
Respuesta obtenida en la simulación dividida en vector de tiempo, vector de salida, vector de la señal de control y vector del setpoint
- Tipo del valor devuelto
tuple(list[float], deque[float], deque[float], list[float])
-
rutinas_simulacion.
controlador_validator
(self, esquema, InputList, OutputList, RuleEtiquetas)[fuente]¶ Función para validar los controladores difusos con respecto al esquema de control seleccionado
- Parámetros
esquema (int) – Esquema de control seleccionado representado por un valor
InputList (list) – Lista de entradas
OutputList (list) – Lista de salidas
RuleEtiquetas (list) – Lista con set de reglas
-
rutinas_simulacion.
system_creator_ss
(self, A, B, C, D)[fuente]¶ Función para la creación del sistema a partir de la matriz de estado, matriz de entrada, matriz de salida y la matriz de transmisión directa.
- Parámetros
A (list) – Matriz de estados
B (list) – Matriz de entrada
C (list) – Matriz de salida
D (list) – Matriz de transmisión directa
- Devuelve
El sistema creado
- Tipo del valor devuelto
LTI
-
rutinas_simulacion.
system_creator_tf
(self, numerador, denominador)[fuente]¶ Función para la creación del sistema a partir de los coeficientes del numerador y del denominador de la función de transferencia.
- Parámetros
numerador (list) – Coeficientes del numerador
denominador (list) – Coeficientes del denominador
- Devuelve
El sistema creado
- Tipo del valor devuelto
LTI
Archivo para definir los algoritmos de ajuste del tamaño de paso para los Runge-kutta explícitos y embebidos¶
Archivo para definir los algoritmos de ajuste del tamaño de paso para los Runge-kutta explícitos y embebidos, en el caso de los métodos explícitos se utiliza el método de doble paso
-
rutinas_rk.
rk_doble_paso_adaptativo
(systema, h_ant, tiempo, tbound, xVectB, entrada, metodo, ordenq, rtol, atol, max_step_increase, min_step_decrease, safety_factor)[fuente]¶ Función para definir y manejar el ajuste del tamaño de paso por el método de doble paso para Runge-kutta’s explícitos, la función está realizada de forma específica para trabajar con sistemas de control representados con ecuaciones de espacio de estados
- Parámetros
systema (LTI) – Representación del sistema de control
h_ant (float) – Tamaño de paso actual
tiempo (float) – Tiempo actual
tbound (float) – Tiempo máximo de simulación
xVectB (numpyArray) – Vector de estado
entrada (float) – Valor de entrada al sistema
metodo (function) – Runge-Kutta a utilizar: RK2, Rk3, etc.
ordenq (int) – Orden del método
rtol (float) – Tolerancia relativa
atol (float) – Tolerancia absoluta
max_step_increase (float) – Máximo incremento del tamaño de paso
min_step_decrease (float) – Mínimo decremento del tamaño de paso
safety_factor (float) – Factor de seguridad
- Devuelve
El tamaño de paso anterior, el nuevo tamaño de paso, la salida y el vector de estado
- Tipo del valor devuelto
tuple(float, float, float, numpyArray)
-
rutinas_rk.
rk_embebido_adaptativo
(systema, h_ant, tiempo, tbound, xVectr, entrada, metodo, ordenq, rtol, atol, max_step_increase, min_step_decrease, safety_factor)[fuente]¶ Función para definir y manejar el ajuste del tamaño de paso para Runge-kutta’s embebidos, la función esta realizada de forma específica para trabajar con sistemas de control representados con ecuaciones de espacio de estados
- Parámetros
systema (LTI) – Representación del sistema de control
h_ant (float) – Tamaño de paso actual
tiempo (float) – Tiempo actual
tbound (float) – Tiempo máximo de simulación
xVectB (numpyArray) – Vector de estado
entrada (float) – Valor de entrada al sistema
metodo (function) – Runge-Kutta a utilizar: DOPRI54, RKF45, etc.
ordenq (int) – Valor del método de menor orden
rtol (float) – Tolerancia relativa
atol (float) – Tolerancia absoluta
max_step_increase (float) – Máximo incremento del tamaño de paso
min_step_decrease (float) – Mínimo decremento del tamaño de paso
safety_factor (float) – Factor de seguridad
- Devuelve
El tamaño de paso anterior, el nuevo tamaño de paso, la salida y el vector de estado
- Tipo del valor devuelto
tuple(float, float, float, numpyArray)
Archivo para compilar los Runge-kutta explicitos y embebidos utilizando numba¶
Archivo para compilar los Runge-kutta explícitos y embebidos utilizando numba, los metodos quedan guardados en el archivo: metodos_RK.cp37-win32.pyd o metodos_RK.cpython-37m-x86_64-linux-gnu.so dependiendo del sistema operativo utilizado y pueden ser importados como un modulo cualquiera y utilizar las funciones allí definidas.
-
rk_generator.
SSPRK3
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta con preservado de estabilidad fuerte de orden 3, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
bogacki_shampine23
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta embebido de Bogacki-Shampine 3(2), la integración se continua con la salida de orden 3, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
cash_karp45
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta embebido de Cash-Karp 4(5), la integración se continua con la salida de orden 4, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
dopri54
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta embebido de Dormand-Prince 5(4), la integración se continua con la salida de orden 5, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
fehlberg45
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta embebido de Fehlberg 4(5), la integración se continua con la salida de orden 4, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
heun3
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta Heun de orden 3, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
norm
(x)[fuente]¶ Función para calcular la norma RMS de un vector. Función tomada de SciPy
- Parámetros
x (numpyArray) – Vector
- Devuelve
Norma rms del vector ingresado
- Tipo del valor devuelto
float
-
rk_generator.
ralston3
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta Ralston de orden 3, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
ralston4
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta Ralston con mínimo error de truncamiento de orden 4, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
runge_kutta2
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta de orden 2, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
runge_kutta3
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta de orden 3, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
runge_kutta4
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta de orden 4, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
runge_kutta5
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta de orden 5, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
-
rk_generator.
tres_octavos4
(A, B, C, D, x, h, inputValue)[fuente]¶ Runge-Kutta 3/8 de orden 4, en el método se asumió entrada constante, por lo que se descarta t + h*cs
- Parámetros
A (float64, 2d, F) – Matriz de estados
B (float64, 2d, C) – Matriz de entrada
C (float64, 2d, C) – Matriz de salida
D (float64, 2d, C) – Matriz de transmisión directa
x (float64, 2d, C) – Vector de estado
h (float64) – Tamaño de paso
inputValue (float64) – Valor de entrada al sistema
Archivo para compilar las funciones encargadas de la simulación en tiempo discreto utilizando numba¶
Archivo para compilar las funciones encargadas de la simulación en tiempo discreto utilizando numba, las funciones quedan guardadas en el archivo: discreto_sim.cp37-win32.pyd y pueden ser importadas desde el archivo como una función de un modulo
-
discreto_generator.
PID_discreto
(error, ts, s_integral, error_anterior, kp, ki, kd)[fuente]¶ Función para calcular el PID en forma discreta
- Parámetros
error (float) – Señal de error
ts (float) – Periodo de muestreo
s_integral (float) – Acumulador de la señal integral
error_anterior (deque Object) – deque con el error anterior
kp (float) – Ganancia proporcional
ki (float) – Ganancia integral
kd (float) – Ganancia derivativa
- Devuelve
La salida del controlador PID discreto y el error actual
- Tipo del valor devuelto
tuple(float, float, deque[float])
-
discreto_generator.
derivadas_discretas
(error, ts, error_anterior)[fuente]¶ Función para calcular la derivada del error y la segunda derivada del error
- Parámetros
error (float) – Señal de error
ts (float) – Periodo de muestreo
error_anterior (deque Object) – deque con el error anterior
- Devuelve
La salida del controlador PID discreto
- Devuelve
La primera y segunda derivada de la señal de error y el error actual
- Tipo del valor devuelto
tuple(float, float, deque[float])
-
discreto_generator.
ss_discreta
(A, B, C, D, x, _, inputValue)[fuente]¶ Función para calcular la respuesta del sistema por medio de la representacion discreta de las ecuaciones de espacio de estados
- Parámetros
ss (LTI) – Representacion del sistema
x (numpyArray) – Vector de estado
_ (float) – No importa
inputValue (float) – Valor de entrada al sistema
- Devuelve
La salida del sistema y el vector de estado
- Tipo del valor devuelto
tuple(float, numpyArray)
Archivo para el manejo de la función de simulación de sistemas de control, sirve de intermediario entre la interfaz grafica y la clase creada para manejar la simulación en una hilo distinto, esto es debido al tiempo que puede llegar a tomar cada simulación
-
simulacionHandler.
SimulacionHandler
(self)[fuente]¶ Función principal para el manejo de la funcionalida de simulación de sistemas de control, se crean las señales a ejecutar cuando se interactúa con los widgets incluyendo las validaciones de entradas
-
simulacionHandler.
accion_esquema_selector
(self)[fuente]¶ Función para mostrar los widgets indicados en función del esquema seleccionado
-
simulacionHandler.
accionadordem_validator
(self)[fuente]¶ Validación del denominador de la función de transferencia correspondiente al accionador
-
simulacionHandler.
accionadornum_validator
(self)[fuente]¶ Validación del numerador de la función de transferencia correspondiente al accionador
-
simulacionHandler.
calcular_simulacion
(self)[fuente]¶ Función para inicializar el QThread y realizar los calculos de la simulación
-
simulacionHandler.
configuration_data
(self)[fuente]¶ Función para cambiar la configuración del solver a utilizar
- Devuelve
Datos necesarios para el solver
- Tipo del valor devuelto
tuple(function, function, list[function, int, float, float, float, float, float])
-
simulacionHandler.
error_gui
(self, error)[fuente]¶ Función para mostrar los errores que pudiesen ocurrir durante la simulación, esta función es utilizada por el QThread
- Parámetros
error (int) – Indicador del error
-
simulacionHandler.
get_pathcontroller1
(self)[fuente]¶ Función para obtener la dirección al archivo del controlador difuso
-
simulacionHandler.
get_pathcontroller2
(self)[fuente]¶ Función para obtener la dirección al archivo del controlador difuso 2 (PD)
-
simulacionHandler.
inferiorSaturador_validator
(self)[fuente]¶ Validación del limite inferior del saturador
-
simulacionHandler.
plot_final_results
(self, result)[fuente]¶ Función para graficar los resultados finales de la simulación
- Parámetros
result (list) – Lista con los resultados obtenidos
-
simulacionHandler.
restablecer_configuracion
(self)[fuente]¶ Función para restablecer la configuración avanzada por defecto
-
simulacionHandler.
sensordem_validator
(self)[fuente]¶ Validación del denominador de la función de transferencia correspondiente al sensor
-
simulacionHandler.
sensornum_validator
(self)[fuente]¶ Validación del numerador de la función de transferencia correspondiente al sensor
-
simulacionHandler.
simulacion_stacked_to_ss
(self)[fuente]¶ Función para cambiar de función de transferencia a ecuación de espacio de estados
-
simulacionHandler.
simulacion_stacked_to_tf
(self)[fuente]¶ Función para cambiar de ecuación de espacio de estados a función de transferencia
-
simulacionHandler.
ssA_validator
(self)[fuente]¶ Validación de la matriz de estados de la ecuación de espacio de estados
-
simulacionHandler.
ssB_validator
(self)[fuente]¶ Validación de la matriz de entrada de la ecuación de espacio de estados
-
simulacionHandler.
ssC_validator
(self)[fuente]¶ Validación de la matriz de salida de la ecuación de espacio de estados
-
simulacionHandler.
ssD_validator
(self)[fuente]¶ Validación de la matriz de transmisión directa de la ecuación de espacio de estados
-
simulacionHandler.
ssdelay_validator
(self)[fuente]¶ Validación del delay de la ecuación de espacio de estados
-
simulacionHandler.
ssperiodo_validator
(self)[fuente]¶ Validación del periodo de muestreo de la ecuación de espacio de estados
-
simulacionHandler.
superiorSaturador_validator
(self)[fuente]¶ Validación del limite superior del saturador
-
simulacionHandler.
tfdelay_validator
(self)[fuente]¶ Validación del delay de la función de transferencia
-
simulacionHandler.
tfdem_validator
(self)[fuente]¶ Validación del denominador de la función de transferencia
-
simulacionHandler.
tfnum_validator
(self)[fuente]¶ Validación del numerador de la función de transferencia
Archivo principal, en orden de ejecutar la aplicación, este es el archivo a ejecutar
-
class
main.
MainWindow
(parent=None)[fuente]¶ Clase principal del programa, esta clase hereda de QMainWindow y Ui_MainWindow, la primera es la clase base de ventanas que ofrece Qt mientras que la segunda es la clase que se crea a partir de qtdesigner y quien posee toda la definición de toda la interfaz gráfica. Desde aca se ejecutan los archivos Handler, quienes representan los enlaces entre las rutinas y la interfaz gráfica de cada una de las funciones del laboratorio virtual, estos Handlers se tratan como si fueran una extension de esta clase, por tanto, se les enviá self y se recibe self y se sigue tratando como si fuera parte de la clase.
- Parámetros
QtWidgets (ObjectType) – Clase base de ventana ofrecida por Qt
Ui_MainWindow (ObjectType) – Clase con la interfaz grafica autogenerada con qtdesigner