Saltar la navegación

Ejemplo 2

Ejemplo en Python

Descripción

Ejemplo de Sistema Lineal

Para ilustrar el uso del paquete, presentamos un ejemplo del diseño de un arquitectura de control de bucle interior/exterior para el despegue y aterrizaje vertical planar (PVTOL) ejemplo en FBS2e.

PVTOL

Requisitos de Ejecución

Para la ejecución de este código es necesario instalar lo siguiente:

  • Python
  • Librerías

Instalando Python

Debes descargar el instalador de python desde su página oficial: https://www.python.org/downloads/

Da Click en el botón: Download Python

Python

Busca el archivo que se descargó y da doble click

Python carpeta

Saldrá la siguiente ventana Verifica que la casilla de add python to path esté seleccionada y da click en install now

instalando

Espera a que termine de instalar

Y listo ya está instalado Python.

Listo

Instalando Librerías

Las librerías necesarias para la ejecución de este código son las siguientes:

  • numpy
  • pandas
  • matplotlib
  • pyplob
  • control

Será necesario entrar en CMD, para ello presiona Ver la clave o licencia de tu Windows – sospedia para poder entrar y a continuación escribe cmd en la casilla de abrir como en la imagen de la derecha.

 

CMD

Se abrirá una pantalla color negro y deberás escribir el siguiente comando:

pip install numpy

numpy

A continuación:

pip install pandas

pip install pandas

 

A continuación:

pip install matplotlib

matplotlib

A continuación:

pip install control

 

control

Codificación

#Ejemplo de Sistema Lineal

#Para ilustrar el uso del paquete, presentamos un ejemplo del diseño de un arquitectura de # control de bucle interior/exterior para el despegue y aterrizaje vertical planar (PVTOL) #ejemplo en FBS2e.

import control as ct
import matplotlib.pyplot as plt
import numpy as np
                                                           # Parámetros del Sistema
m = 4                                                  # Masa de la aeronave
J = 0.0475                                           # Inercia alrededor del eje de cabeceo
r = 0.25                                               # Distancia al centro de fuerza
g = 9.8                                                # Constante gravitacional
c = 0.05                                              # Factor de amortiguamiento (estimado)
                                                          # Funciones de transferencia para dinámica


Pi = ct.tf([r], [J, 0, 0])                         # Bucle interior (rollo)
Po = ct.tf([1], [m, c, 0])                      # Bucle exterior (posn)
       

# Diseño de control de bucle interno
                                                         
                                       #Controlador de la dinámica de tono: el objetivo es
                                       #para tener una respuesta rápida para que podamos usar esto
                                       #como un proceso simplificado para la dinámica lateral
                                       #Diseñe un controlador principal simple para el sistema

k_i, a_i, b_i = 200, 2, 50
Ci = k_i * ct.tf([1, a_i], [1, b_i])
Li = Pi * Ci
                                                       # Loop transfer function Bode plot, with margins
plt.figure(); ct.bode_plot(Li, margins=True)
plt.savefig('pvtol-inner-ltf.pdf')
                                                       # Make sure inner loop specification is met
plt.figure(); ct.gangof4_plot(Pi, Ci)
plt.savefig('pvtol-gangof4.pdf')

                                             # Diseño del sistema de control lateral (compensador de plomo)
a_o, b_o, k_o = 0.3, 10, 2
Co = -k_o * ct.tf([1, a_o], [1, b_o])
Lo = -m * g * Po * Co
                                        # Calcule la función de transferencia de bucle de bucle exterior real
L = Co * Pi * Po


                                        # Calcular los márgenes de estabilidad


gm, pm, wgc, wpc = ct.margin(L)


                                        # Verifique que se cumpla la especificación


plt.figure(); ct.gangof4_plot(-m * g * Po, Co)


                                        # Diagrama de Nyquist para un diseño completo


plt.figure(); ct.nyquist_plot(L)
plt.savefig('pvtol-nyquist.pdf')


                                                      # problema
                                                      # Step response

plt.savefig('pvtol-step.pdf')

plt.show()

Ejecución

Este es el resultado de la ejecución

Resultado de la ejecución

fig1

fig2

fig3fig4