← Volver al blog

Process Control with Python

Obtener la respuesta al escalón de un sistema de control en lazo cerrado usando la librería control, equivalente al Control System Toolbox de MATLAB. El ejemplo es una función de transferencia tomada de Ogata [1].

\[\frac{C(s)}{R(s)} = \frac{6.3223\,s^2 + 18\,s + 12.8112}{s^4 + 6\,s^3 + 11.3223\,s^2 + 18\,s + 12.8112}\]
import control as ct
import matplotlib.pyplot as plt

#Variable in the Laplace domain
s = ct.TransferFunction.s

#Numerator and denominator of the Transfer Function
num = 6.3223*s**2 + 18*s + 12.8112
den = s**4 + 6*s**3 + 11.3223*s**2 + 18*s + 12.8112

#Transfer Function
TF = num/den

#Step Response
t, y = ct.step_response(TF)

#Plotting the step response
plt.plot(t, y)
plt.title("Step Response")
plt.ylabel("Amplitude")
plt.xlabel("Time [s]")
plt.grid()
plt.show()

Al ejecutarlo obtenemos la respuesta al escalón:

Step response

El sistema es subamortiguado: presenta un sobrepaso inicial cercano a 1.6 y oscilaciones que se atenúan hasta estabilizarse en la unidad. Este tipo de análisis es la base para sintonizar controladores PID, evaluar criterios de estabilidad (Routh-Hurwitz, margen de fase/ganancia) o comparar diseños alternativos antes de implementarlos en hardware.

Instalación:

pip install control

Referencia

[1] K. Ogata, Control Engineering Problems Using Matlab. Prentice Hall, 2000.

← Volver al blog