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:

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.