¿Qué relación existe entre un sistema y su modelo?
Recordemos que el modelo representa el sistema, por lo que un análisis temporral del modelo, nos dará muchas ideas de cómo se comporta el sistema.
Clásicamente la respuesta temporal se encontraba solucionando la ecuación diferencial, siguiendo estos pasos.
Este análisis nos permite entender el comportamiento dinámico de los sistemas a traves de simulaciones de sus modelos matemáticos. Esto modelos idealmente deben ser representados como una función de transferencia.
Los sistemas pueden ser representados de diferentes forma, dependiendo de la dimension donde se representen, en la siguiente tabla se presentan las represtaciones más comunes.
en el tiempo $(t)$ | en el dominio de Laplace $(s)$ |
---|---|
ecuación diferencial | transformada de Laplace |
respuesta en función del tiempo | función de transferencia |
forma estándar |
Para entender el funcionamiento de los parametros de los modelos estándar analicemos dos sistemas:
Orden | Sistema |
---|---|
1 | Tanque con salida atmosferica |
2 | Masa-resorte-amortiguador con entrada en fuerza |
Empecemos analizando el tanque, el cual posee la siguiente ecuacion diferencial lineazada:
$$A \frac{dh(t)}{dt} = q(t) - \frac{h(t)}{R}$$donde $A$ es el area del tanque y $R$ es la resistencia hidraúlica de la salida del tanque. A esta ecuación le aplicamos transformada de Laplace y obtenemos:
$$ As\,H(s) = Q(s)-\frac{H(s)}{R}$$De aquí podemos encontrar la función de transferencia del sistema:
$$\frac{H(s)}{Q(s)} = \frac{R}{AR\,s+1}$$Modifiquemos los valoes de $A$ y $R$ para comprender cuales son los efectos de cada parámetros en la respuesta temporal del tanque.
## Parametros del modelo
A = widgets.FloatSlider(value=1,min=0.1,max=10,step=0.1,description='A')
R = widgets.FloatSlider(value=1,min=0.1,max=10,step=0.1,description='R')
## Definicion de la simulacion
def simulacion_tanque(A,R):
tanque = tf([R],[R*A,1])
tiempo, amplitud = step_response(tanque)
plt.plot(tiempo,amplitud)
plt.title('Simulación Tanque')
plt.xlabel('tiempo (t)')
plt.ylabel('amplitud')
plot_tanque = widgets.interactive_output(simulacion_tanque,{'A':A,'R':R})
widgets.HBox([widgets.VBox([A, R]),plot_tanque])
¿Qué podemos concluir de los dos parámetros usados en el modelo del tanque?
La función de transferencia del tanque es :
$$\frac{H(s)}{Q(s)} = \frac{R}{AR\,s+1}$$La función de transferencia estándar para un sistema de primer orden es :
$$\frac{\text{salida}}{\text{entrada}} = \frac{\gamma}{\tau\,s+1}$$De aquí tenemos que:
$$\gamma = R \qquad\text{y}\qquad \tau = AR$$Por lo que $R$ afecta tanto la amplitud de la respuesta, representada por la ganancia $\gamma$, como tambien el tiempo de respuesta, representado por la constante de tiempo $\tau$.
Para este sistema tenemos la siguiente ecuación diferencial
$$f(t) = m \frac{d^2\, x(t)}{dt^2} + c \frac{d\,x(t)}{dt} + k x(t)$$donde $m$ es la masa, $c$ es el coefficiente de amortiguamiento y $k$ es la constante de resorte. De aquí podemos igualmente construir la función de transferencia.
$$\frac{X(s)}{F(s)}=\frac{1}{m\,s^2+c\,s+k}$$Modifiquemos los valores de $m$, $c$ y $k$ para comprender cuales son los efectos de cada parámetros en la respuesta temporal del tanque.
## Parametros del modelo
m = widgets.FloatSlider(value=1,min=0.1,max=10,step=0.1,description='m')
c = widgets.FloatSlider(value=1,min=0.1,max=3,step=0.1,description='c')
k = widgets.FloatSlider(value=1,min=0.1,max=10,step=0.1,description='k')
## Definicion de la simulacion
def simulacion(m,c,k):
sistema = tf([1],[m,c,k])
tiempo, amplitud = step_response(sistema)
plt.plot(tiempo,amplitud)
plt.title('Simulación masa-resorte-amortiguador')
plt.xlabel('tiempo (t)')
plt.ylabel('amplitud')
plot_sistema = widgets.interactive_output(simulacion,{'m':m,'c':c,'k':k})
widgets.HBox([widgets.VBox([m,c,k]),plot_sistema])
¿Qué podemos concluir de los tres parámetros usados en el modelo de la masa-resorte-amortiguador?
Respondamos a como afecta cada parámetro el desempeño de la respuesta temporal en diferentes aspectos:
masa $m$ | amortiguamiento $c$ | resorte $k$ | |
---|---|---|---|
La amplitud de la respuesta temporal | |||
El número de oscilaciones visibles | |||
La frequencia de las oscilaciones | |||
El periodo de las oscilaciones | |||
La rapidez con que desaparecen las oscilaciones |
Recordemos las funciones de transferencia en su forma estándar:
$$G_1(s) = \frac{\gamma}{\tau\,s+1} \qquad\text{y}\qquad G_2(s) = \frac{\gamma}{1+\frac{2\xi}{\omega_n}\,s+\frac{s^2}{\omega_n^2}}$$La salida de un sistema se puede escribir como $y(t) = y_t(t)+y_ss$, donde:
La respuesta trasitoria se desvanecera transcurrido un tiempo luego: $\lim_{t\to\infty} y_t(t) = 0$
Para encontrar la respuesta estacionaria o valor final de un sistema podemos aplicar el siguiente teorema:
$$y_{ss} = \lim_{t\to\infty} y(t) = \lim_{s\to 0} s\,Y(s)$$Dada la siguiente función de transferencia y señal de entrada encontrar el valor final:
$$\frac{F(s)}{X(s)}=\frac{5}{s+3} \qquad\text{y}\qquad X(s)=\frac{3}{s}$$El valor final será
$$f(\infty) = \lim_{s\to 0} s\, F(s) = \lim_{s\to 0} s\frac{5}{s+3}\frac{3}{s}= 5$$Los sistemas responden a los estímulos de entrada, dichas señales pueden ser:
existen otras como:
t = sp.Symbol('t')
A = sp.Symbol('A')
f = sp.Piecewise((A,t>=0),(0,True))
f
simulacion_escalon(5)
t = sp.Symbol('t')
A = sp.Symbol('A')
f = sp.Piecewise((A*t,t>=0),(0,True))
f
simulacion_rampa(6)
t = sp.Symbol('t')
t0= sp.Symbol('t0')
A = sp.Symbol('A')
f = sp.Piecewise((0,t>t0),(A/t0,t>=0),(0,t<0))
f
simulacion_pulso(4,0.5)
La siguiente tabla resume las transformadas de Laplace de las señales de entrada.
Escalón | Rampa | Impulso | Señal Pulso | |
---|---|---|---|---|
$F(s)$ | $\frac{A}{s}$ | $\frac{A}{s^2}$ | $A$ | $\frac{A}{st_0}\left(1-e^{-s\,t0}\right)$ |
Para las señales unitaria se remplaza $A$ por uno $A=1$
Para determinar la respuesta temporal, se siguen los pasos:
tiempo | $\tau$ | $3\tau$ | $5\tau$ | $10\tau$ |
---|---|---|---|---|
salida | $63,2\%$ | $95\%$ | $99\%$ | $99.9\%$ |
simulacion_tanque(1,1)
Dependiendo de coefficiente de amortiguamiento $\xi$ tendremos 4 tipos de respuestas.
Respuesta | Oscilatorio | Sub Amortiguado | Amortiguado | Sobre Amortiguado |
---|---|---|---|---|
$\xi$ | $=0$ | $<1$ | $=1$ | $>1$ |
cuando un sistema tiene un $\xi=1$, se conoce también como críticamente amortiguado.
Nombre | Variable | Descripción |
---|---|---|
Tiempo de subida | $t_r$ | Para sistemas sub-amortiguados, es el tiempo en el que se alcanza por primera vez el valor estacionario. Para sistemas sobre-amortiguados, es el tiempo que tarda en ir de un $10\%$ a un $90\%$ del valor estacionario |
Tiempo de pico | $t_p$ | Tiempo que tarda en llegar al primer pico |
Valor Sobrepico | $y_{sp}$ | Distancia entre el valor máximo de la respuesta y su valor estacionario |
Tiempo de establecimiento | $t_s$ | Tiempo que tarda la respuesta para llegar a un valor estacionario y donde la oscilaciones no supera el $\pm5\%$ |
Número de oscilaciones | $n_s$ | Es el número de oscilaciones enteras que ocurren entre el inicio de la respuesta hasta el tiempo de establecimiento |
Si hacemos $y(t_r)=1$ para la respuesta, después de manipulaciones obtendremos:
$$t_r = \frac{1}{\omega_d}\left(\pi-\tan^{-1}\left(\frac{\sqrt{1-\xi^2}}{\xi}\right)\right)$$Por inspección, para un sistema oscilatorio, este tiempo es medio periodo de la respuesta oscilatoria, es decir:
$$t_p = \frac{1}{2}\,\frac{2\pi}{\omega_d} = \frac{\pi}{\omega_d}$$Esto puede ser confirmado encontrando el máximo de la respuesta $y(t)$.
Se usa el tiempo de pico $t_p$ para evaluar la respuesta temporal:
$$y_p= 1-e^{-\xi\omega_n\,t_p}\left(\frac{\xi\omega_n}{\omega_d}\sin\left(\omega_gt_p\right) + \cos\left(\omega_gt_p\right)\right)$$El porcentaje de sobrepico, se calcula:
$$\frac{\text{valor pico}-\text{valor final}}{\text{valor final}} = \frac{y_p-y_{ss}}{y_{ss}} \times 100\%$$El termino de decaimiento exponencial descibribe la envolvente de la oscilación:
$$e^{-\xi\omega_nt}$$si igualamos este termino con el $5\%$, contraremos el tiempo de establecimiento para el $95\%$
$$-\xi\omega_nt_s = \ln(0.05) = -3$$luego,
$$t_s(5\%) = \frac{3}{\xi\omega_n}$$Este número antes del establecimiento se calcula
$$n_s = \frac{t_s}{\tau_d}$$Las siguientes se sugieren como etapas para el diseño de un controlador: