Funci贸n transferencia#

Modelos de sistemas lineales e invariantes en el tiempo#

La forma t铆pica de representar un sistema lineal e invariante en el tiempo (LTI) SISO, es mediante el uso de la transformada de Laplace.

Sea un sistema con condiciones iniciales nulas, entonces el sistema se puede expresar matem谩ticamente como:

\[\frac{Y(s)}{U(s)}=H(s)\]

donde \(Y(s)\) es la transformada de Laplace de la salida \(y(t)\) para una entrada arbitraria \(u(t)\), cuya transformada de Laplace es \(U(s)\).

Notar que con esta definici贸n, lo que se transforma al dominio de Laplace son las se帽ales de entrada y salida. No es un sistema.

Importante

  • Se puede demostrar que \(H(s)\) es la respuesta del sistema a una se帽al de entrada impulso unitario \(\delta(t)\).

  • Para sistemas Lineales Invariantes en el Tiempo (LTI), la relaci贸n \(\dfrac{Y(s)}{U(s)}\) se mantiene constante para todo \(U(s)\).

Obtenci贸n de la funci贸n transferencia de un sistema:#

La funci贸n transferencia de un sistema se puede obtener de varias formas:

  1. Aplicando la definici贸n, es decir, aplicando \(u(t)\) para medir \(y(t)\), transformar ambas se帽ales al dominio de Laplace y luego obtener \(H(s)=\dfrac{Y(s)}{U(s)}\). Esto no es pr谩ctico.

  2. Aplicar un impulso \(u(t)=\rho(t)\) y hacer las transformada de Laplace de la respuesta. Es un caso particular del m茅todo anterior haciendo que \(U(s)=1\).

  3. A partir de las ecuaciones temporales que dominan la din谩mica del sistema se resuelve \(\dfrac{Y(s)}{U(s)}\). Esta es la forma en que por lo general se obtienen las funciones transferencias de los sistemas en forma anal铆tica.

Ejemplo general:#

En general un sistema din谩mico se representa como una ecuaci贸n diferencial de orden \(n\), Es decir:

\[\begin{split} \begin{aligned} & a_n\frac{d^ny(t)}{dt^n}+a_{n-1}\frac{d^{n-1}y(t)}{dt^{n-1}}+\cdots+a_{1}\frac{dy(t)}{dt}+a_0y(t) = \dots \\ &\dots b_p\frac{d^pu(t)}{dt^p}+b_{p-1}\frac{d^{p-1}u(t)}{dt^{p-1}}+\cdots+b_{1}\frac{du(t)}{dt}+b_0u(t) \end{aligned} \end{split}\]

Donde \(y(t)\) es la salida del sistema y \(u(t)\) es la entrada del sistema, haciendo la transformando por Laplace sabiendo que \(\mathcal{L}\{u(t)\}=U(s)\) y que \(\mathcal{L}\{y(t)\}=Y(s)\), tenemos:

\[\begin{split} \begin{aligned} & a_ns^nY(s)+a_{n-1}s^{n-1}Y(s)+\cdots+a_1sY(s)+a_0Y(s)+ \mbox{term. cond. iniciales de y(t)} = \cdots \\ \dots & b_ps^pU(s)+b_{p-1}s^{p-1}U(s)+\cdots+b_1sU(s)+b_0U(s)+ \mbox{term. cond. iniciales de u(t)} \end{aligned} \end{split}\]

si asumimos que las condiciones iniciales para \(y(t)\) y \(u(t)\) son nulas, se reduce a:

\[\begin{split} \begin{aligned} & a_ns^nY(s)+a_{n-1}s^{n-1}Y(s)+\cdots+a_1sY(s)+a_0Y(s) = \cdots \\ \cdots & b_ps^nU(s)+b_{p-1}s^{p-1}U(s)+\cdots+b_1sU(s)+b_0U(s) \end{aligned} \end{split}\]

Despejando podemos obtener:

\[H(s)=\frac{Y(s)}{U(s)}=\frac{b_ps^p+b_{p-1}s^{p-1}+\cdots+b_1s+b_0}{a_ns^n+a_{n-1}s^{n-1}+\cdots+a_1s+a_0}\]

Importante

En general los sistemas din谩micos en el dominio temporal se describen matem谩ticamente a partir de ecuaciones diferenciales. Es importante notar, que en el dominio transformado de Laplace estas ecuaciones diferenciales se transforman en ecuaciones algebraicas, resultando en un tratamiento matem谩tico m谩s sencillo.

Ejemplo #1: Sistema electromec谩nico (motor el茅ctrico)#

Desarrollo#

Supongamos CI nulas, es decir \(i_a(t=0)=0\) y \((\theta_m(t=0)=0)\) entonces de las ecuaciones del motor obtenidas en ejemplos anteriores y aplicando la transformada de Laplace, tenemos:

\[\begin{split} \left\{\begin{array}{c} s~I_a(s) = \frac{1}{L_a} E_a(s) -\frac{ R_a}{L_a} I_a(s) - \frac{K_b}{L_a} s~\Theta_m(s) \\ s^2~\Theta_m(s) = \frac{K_t}{J_m} I_a(s) - \frac{D_m}{J_m}s~\Theta_m(s) - \frac{1}{J_m} T_r(s) \end{array}\right. \end{split}\]

agrupando las variables y despejando de la segunda ecuaci贸n la corriente \(I_a(s)\):

\[\begin{split} \begin{aligned} \left(s+ \frac{ R_a}{L_a}\right)I_a(s) &= \frac{1}{L_a} E_a(s) - \frac{K_b}{L_a} s~\Theta_m(s) \\ I_a(s) &= \frac{J_m}{K_t}\left(s^2+ \frac{D_m}{J_m}s\right)~\Theta_m(s) + \frac{1}{K_t} T_r(s) \end{aligned} \end{split}\]

Este sistema tiene 2 entradas, la entrada que podemos controlar \(E_a(s)\) y la entrada de perturbaci贸n \(T_r(s)\), por ser un sistema LTI podemos hallar las FTs de la siguiente forma:

\[ \left(s+ \frac{ R_a}{L_a}\right)\frac{J_m}{K_t}\left(s^2+ \frac{D_m}{J_m}s\right)\Theta_m(s) + \left(s+ \frac{ R_a}{L_a}\right)\frac{1}{K_t} T_r(s) = \frac{1}{L_a} E_a(s) - \frac{K_b}{L_a} s\Theta_m(s) \]

luego,

\[ \left(\left(s+ \frac{ R_a}{L_a}\right)~\frac{J_m}{K_t}\left(s^2+ \frac{D_m}{J_m}s\right)+\frac{K_b}{L_a} s\right)\Theta_m(s) = \frac{1}{L_a} E_a(s) - \left(s+ \frac{ R_a}{L_a}\right)\frac{1}{K_t} T_r(s) \]

luego considerando \(T_r=0\), hallamos la FT desde la entrada \(E_a\) a la salida \(\Theta_m\):

\[ \frac{\Theta_m(s)} {E_a(s)} = \frac{\frac{1}{L_a}}{\left(s+ \frac{ R_a}{L_a}\right)\frac{J_m}{K_t}\left(s^2+ \frac{D_m}{J_m}s\right)+\frac{K_b}{L_a} s} \]

finalmente si consideramos que \(E_a=0\), hallamos la FT desde la entrada de perturbaci贸n \(T_r\) a la salida \(\Theta_m\):

\[ \frac{\Theta_m(s)} {T_r(s)} =- \frac{\left(s+ \frac{ R_a}{L_a}\right)\frac{1}{K_t} }{\left(s+ \frac{ R_a}{L_a}\right)\frac{J_m}{K_t}\left(s^2+ \frac{D_m}{J_m}s\right)+\frac{K_b}{L_a} s} \]

Ejemplo #2: masa resorte#

Resoluci贸n de las ecuaciones#

Ejemplo sistema mec谩nico#

Ejemplo sistema mec谩nico

Las ecuaciones que dominan este sistema son:

\[\begin{split} \begin{eqnarray} F(t)-bv(t)-kx(t)&= Ma(t)\\ F(t)-b\dot{x}(t)-kx(t)&=M\ddot{x}(t)\\ u(t)&=F(t)\\ y(t)&=x(t) \end{eqnarray} \end{split}\]

Podemos obtener la funci贸n transferencia de este sistema mediante reemplazando \(x\) por \(y\) y \(F\) por \(u\) y transformando por Laplace, usando la propiedad de la derivada de la transformada de Laplace. Esto es:

\[F(s)-bsX(s)-kX(s)=Ms^2X(s)\]
\[U(s)-bsY(s)-kY(s)=Ms^2Y(s)\]

Despejando se tiene:

\[H(s)=\frac{Y(s)}{U(s)}=\frac{1}{Ms^2+bs+k}\]

Vamos a definir el sistema seg煤n el ejemplo anterior con valores de \(M=1\), \(b=0.1\) y \(k = 10\).

import control as ctrl
import numpy as np
import matplotlib.pyplot as plt
# %matplotlib qt5 #descomentar para obtener ventanas emergentes de las figuras

Definamos primero las constantes del sistema

M=1
b=0.01
k=1

Ahora deinamos la funci贸n transferencia

G=ctrl.tf([1],[M,b,k])

Obtengamos los polos (ceros del denominador) de la funci贸n transfrencia \(G\)

G.pole()
array([-0.005+0.9999875j, -0.005-0.9999875j])

Ahora vamos a ver la respuesta al escal贸n.

T1=np.linspace(0,1000,101)
t1,y1=ctrl.step_response(G, T=T1) # cantidad de puntos por defecto
Hide code cell source
fig, ax =  plt.subplots(1, 1, figsize=(10,4))
ax.plot(t1,y1,label="101 puntos de sim")
ax.grid()
ax.set_xlabel('Tiempo [s]')
ax.set_ylabel('$x$')
ax.legend();
../../../../_images/34d683d1c0dee2907944b4c7c76ddef42fc70df5128f39ee87dfa6e5a922b8fd.png

Vemos que esto no se ve del todo razonable. Esas lineas cortadas no se lucen muy arm贸nicas. Vamos a agregar m谩s puntos a la simulaci贸n.

T2=np.linspace(0,1000,1001)
t2,y2=ctrl.step_response(G,T=T2)
Hide code cell source
fig, ax =  plt.subplots(1, 2, figsize=(12,4))
ax[0].plot(t1,y1,label="101 puntos de sim")
ax[0].plot(t2,y2,alpha=0.6, label="1001 puntos de sim")
ax[0].grid()
ax[0].set_xlabel('Tiempo [s]')
ax[0].set_ylabel('$x$')
ax[0].set_title('Evoluci贸n completa')
ax[1].plot(t1, y1)
ax[1].plot(t2, y2, alpha=0.6)
ax[1].set_xlim([0,30])
ax[1].grid()
ax[1].set_xlabel('Tiempo [s]')
ax[1].set_ylabel('$x$')
ax[1].set_title('Primeros segundos de la evoluci贸n')
fig.tight_layout()
../../../../_images/290d85eb54e2d34b4f01bd78bbe705d33c911445c0b9e8717bfa482cf981cb46.png

En estas figuras podemos ver como la simulaci贸n que devuelve solo 100 puntos no nos muestra de forma correcta la evoluci贸n del sistema. Sin embargo, los puntos donde est谩 calculado los valores de la respuesta al escal贸n si son correctos.

Con 1001 puntos ya podemos ver una evoluci贸n mucho m谩s prolija. Sin embargo, para no ver las puntas triangulares que vemos en la figura, debemos agregar algunos puntos m谩s a la simulaci贸n.

T3=np.linspace(0,1400,5001)
t3,y3=ctrl.step_response(G,T=T3)
fig, ax =  plt.subplots(1, 2, figsize=(12,4))
ax[0].plot(t3,y3,label="5001 puntos de sim")
ax[0].grid()
ax[0].set_xlabel('Tiempo [s]')
ax[0].set_ylabel('$x$')
ax[0].set_title('Evoluci贸n completa')
ax[1].plot(t3, y3)
ax[1].set_xlim([0,30])
ax[1].grid()
ax[1].set_xlabel('Tiempo [s]')
ax[1].set_ylabel('$x$')
ax[1].set_title('Primeros segundos de la evoluci贸n');
fig.tight_layout()
../../../../_images/00b10d3e60d60144e11f47b334a8963775366d6574894ddbd17cd1ecec67b583.png

En los primeros segundos vemos una din谩mica que produce r谩pidas oscilaciones, y se va que muy lentamente el sistema empieza a disminuir esas oscilaciones. En la figura de la izquierda vemos que esta oscilaciones tienden a 0, en un tiempo suficientemente grande. Estos sistemas que tienen din谩micas tan diferentes, por un lado la 芦lentas禄 como la que produce la extinci贸n de las oscilaciones en un tiempo grande, y por otro lado las r谩pidas que se manifiestan en las oscilaciones se los conoce como sistemas r铆gidos o sistemas stiff.

Sistemas stiff

Son aquellos sistemas que contienen din谩micas muy r谩pidas y muy lentas actuando a la vez.