Jul 042016
 
Predictor de Smith Filtrado
5 (100%) 1 vote

(NOTA: al final del post encontrarás ejemplos numericos del predictor de Smith Filtrado y tambien los codigos para que los ejecutes en MATLAB)

En esta entrada veremos una modificación de la estructura del Predictor de Smith que vimos en la entrada pasada (Click aqui para ver la clase del Predictor de Smith), dicha modificación se conoce como el Predictor de Smith Filtrado (PSF) que tiene como principal caracteristica corregir las principales limitaciones del Predictor de Smith Original. Las cuales son acelerar la dinámica de rechazo de perturbación y controlar procesos integradores y inestables.

 

Con esta nueva estructura de compensación de retardo es posible acelerar la dinámica de rechazo de perturbación y controlar procesos inestables y integradores.

 

La estructura del predictor de Smith filtrado es representada asi:

Predictor de Smith Filtrado

Sabemos que las relaciones de entrada y salida vienen dadas por las siguientes ecuaciones, las cuales son prácticamente las mismas vistas en la entrada del Predictor de Smith:

H_{yr}(s)=\dfrac{y(t)}{r(t)}=\dfrac{C(s)P_n(s)}{1+C(s)G_n(s)}

 

H_{yq}(s)=\dfrac{y(t)}{q(t)}=P_n(s)\left [ 1-\dfrac{C(s)P_n(s)F_r(s)}{1+C(s)G_n(s)} \right ]

 

H_{yn}(s)=\dfrac{y(t)}{n(t)}=\left [ 1-\dfrac{C(s)P_n(s)F_r(s)}{1+C(s)G_n(s)} \right ]

 

Vemos que la dinámica del Filtro Fr(s) solo aparece en las respuestas de las perturbaciones q(t) y n(t).

 

Si tomamos la respuesta frente a la perturbación de carga (q(t)), notaremos la mejora que el filtro de predicción Fr(s) introduce en la estructura del PSF:

H_{yq}(s)=P_n(s)\left [1-\dfrac{CG_n}{1+CG_n} F_r e^{-L_ns}\right ]

Ejemplo de primer orden

Si tenemos el siguiente sistema:

P_n(s)=\dfrac{K_n}{T_ns+1}e^{-L_ns}

y Tenemos un controlador primario PI

C(s)=\dfrac{K_c(T_is+1)}{T_is}

Si diseñamos un control rápido PI por cancelación de polos osea que T_i=T_n obtendremos la siguiente respuesta en lazo cerrado:

H(s)=\dfrac{CG_n}{1+CG_n}=\dfrac{1}{T_rs+1}

donde T_r es la constante de tiempo en lazo cerrado dado por: T_r=\dfrac{T_n}{K_nK_c}.
H_{yq}=\dfrac{K_n}{T_ns+1}e^{-L_ns}\left [ 1-\dfrac{1}{T_rs+1} F_r e^{-L_ns}\right ]
dividimos el filtro en F_r(s)=\dfrac{N_r(s)}{D_r(s)} y resuelvo

H_{yq}=\dfrac{K_n}{T_ns+1}e^{-L_ns}\left [\dfrac{D_r(s)(T_rs+1)-N_r(s)e^{-L_ns}}{D_r(s)(T_rs+1)}\right ]

 

El objetivo es conseguir que el polinomio D_r(s)(T_rs+1)-N_r(s)e^{-L_ns} cancele los polos lentos de la planta T_ns+1, para eso aplico la propiedad de polinomios que dice que dado un polinomio A(x) y otro polinomio B(x) notamos que para cancelar el polinomio el polinomio B debe tener la misma raiz que el polinomio A A=BQ, osea toda raiz de A es raiz de B.

 

Para cumplir la condición 1 debo imponer que:

D_r(-1/T_n)(T_r(-1/T_n)+1)-N_r(-1/T_n)e^{-L_n(-1/T_n)}=0

Para cumplir la condición 2 debo imponer que:

F_r(0)=\dfrac{N_r(0)}{D_r(0)}=1

 

Como voy a matar una dinámica de primer orden, diseño un filtro de primer orden:

N_r(s)=\beta s+1 este numerador es usado para cumplir la condición 1.

D_r(s)= T_fs+1 el denominador del filtro es usado para determinar el tiempo de respuesta de rechazo de perturbación.

 

Reemplazando D_r y N_r en la ecuación de la condición 1 se tiene que:

(T_f(-1/T_n)+1)(T_r(-1/T_n)+1)-(\beta (-1/T_n)+1)e^{-L_n(-1/T_n)}=0

 

Así, de esta ecuación la única incógnita es \beta, entonces solo bastaría con despejarla y hallar su valor.

\beta= \left [1- \left ( 1-\dfrac{T_f}{T_n}\right )\left ( 1-\dfrac{T_r}{T_n}\right )e^{-L_n/T_n}\right ]T_n

Determinando el valor de \beta note que la ecuación restante daría algo parecido con:

 

D_r(s)(T_rs+1)-N_r(s)e^{-L_ns}=X'(s)(T_ns+1)

 

Daría un polinomio X(s) cualquiera, que dentro de su dinámica va a tener el polo lento de la planta (T_ns+1) y una dinámica X'(s), de esa forma note como quedaría la dinámica de rechazo de perturbación:

 

H_{yq}=\dfrac{K_n}{T_ns+1}e^{-L_ns}\left [\dfrac{X'(s)(T_ns+1)}{(T_fs+1)(T_rs+1)}\right ]

 

note como se cancelan los polos lentos del modelo:

 

H_{yq}=K_ne^{-L_ns}\left [\dfrac{X'(s)}{(T_fs+1)(T_rs+1)}\right ]

 

Puede notarse que ahora la dinámica de rechazo de perturbación está dado por el dominador del filtro y por los polos de lazo cerrado.

 

Segunda opción en Calculo del Filtro

Una segunda opción seria diseñar un filtro de segundo orden que además de cancelar los polos lentos, también cancele la dinámica de lazo cerrado. De esa forma se escogería diseñar un filtro con la siguiente forma:

 

F_r(s)=\dfrac{(T_{r}s+1)(\beta s+1)}{(T_fs+1)^2}

 

Diseñando este filtro mi respuesta de rechazo de perturbación va a tener una velocidad diferente a la velocidad del seguimiento de referencia.

 

H_{yq}=\dfrac{K_n}{T_ns+1}e^{-L_ns}\left [1-\dfrac{1}{T_rs+1}\dfrac{(T_{r}s+1)(\beta s+1)}{(T_fs+1)^2}e^{-L_ns}\right ]

 

H_{yq}=\dfrac{K_n}{T_ns+1}e^{-L_ns}\left [\dfrac{(T_{f}s+1)^2-(\beta s+1)e^{-L_ns}}{(T_fs+1)^2}\right ]

 

Aqui se aplica el mismo concepto, debo hacer con que el numerador (T_{f}s+1)^2-(\beta s+1)e^{-L_ns} cancele los polos lentos de la planta (T_ns+1), para eso evalúo el denominador con la raíz del polinomio (polo) y encuentro el valor de \beta.

 

(T_{f}(-1/T_n)+1)^2-(\beta (-1/T_n)+1)e^{-L_n(-1/T_n)}=0

 

así, se tiene que:

 

\beta= \left [1- \left ( 1-\dfrac{T_f}{T_n}\right )^2e^{-L_n/T_n}\right ]T_n

 

Caso integrador y Caso Inestable

Para un caso integrador o mismo para un caso inestable, para efectos de analisis se puede utilizar la misma estructura del PSF, pero para efectos de implementación práctica, no se puede utilizar la misma estructura del PSF. Debido a que esa estructura es internamente inestable. Ya que si observamos la dinámica de rechazo de perturbaciones, veremos que si la planta (P_n(s)) tiene polos inestables, la estructura será internamente inestable:

H_{yq}(s)=P_n(s)\left [1-\dfrac{CG_n}{1+CG_n} F_r e^{-L_ns}\right ]

Para solucionar este problema, basta con tener una estructura equivalente al PSF, la cual la conoceremos como estructura estable:

FSP

Donde S(z)=G_n(z)-F_r(z)P_n(z)=G_n(z)\left [ 1-z^{-d_n}F_r(z) \right ]

 

Para que la nueva estructura sea internamente estable, hay que asegurarse de que tanto el filtro S(z) y el filtro F_r(z) sean estables. En el caso del filtro de F_r(z) es fácil de asegurar su estabilidad, dado que sus polos son elegidos libremente por el diseñador. Por otra parte, el filtro S(z), se puede observar que si G_n(z) tiene polos integradores o polos inestable, el único grado de libertad que se tiene para cancelar esos polos es por medio del filtro F_r(z), evitando así la inestabilidad interna. Por esta razón, el termino \left[ 1-z^{-d_n}F_r(z) \right ] siempre debe ser calculado con el fin de cancelar las dinámicas inestables o integradoras del modelo rápido de la planta, G_n (z), donde se debe adicionar una raíz en (z-1) para que de esta forma el filtro F_r(z) tenga ganancia unitaria, y el filtro  S (z) tiene que ser implementado con las cancelaciones ya realizados. Por lo tanto, la salida predita y_p(k) será una predicción estable de la salida real y(k). (Todo esto es explicado en detalle en el video del ejemplo 2, a continuación.)

 

Ejemplo 1 (Caso Estable Continuo)

Comencemos con un proceso estable con la siguiente característica (Mismo ejemplo visto en la entrada del predictor de Smith):

P_n(s)=\dfrac{0.12}{6s+1}e^{-3s}

El controlador PI es hecho colocando el parámetro Ti igual al tao de la planta, osea Ti=6. Determinamos entonces que deseamos que la respuesta en lazo cerrado sea un 75% más rápido que la respuesta en lazo abierto asi T_r=0.75*T_i=4.5. De esa forma obtenemos el siguiente controlador PI:

 

C(s)=\dfrac{11.11(6s+1)}{6s}

La respuesta en lazo cerrado viene dado por:

H_{ry}=\dfrac{C(s)P_n(s)}{1+C(s)G_n(s)}=\dfrac{\dfrac{11.11(6s+1)}{6s}\dfrac{0.12}{6s+1}e^{-3s}}{1+\dfrac{11.11(6s+1)}{6s}\dfrac{0.12}{6s+1}}

 

H_{ry}=\dfrac{\dfrac{0.222}{s}e^{-3s}}{1+\dfrac{0.222}{s}}=\dfrac{\dfrac{0.222}{s}e^{-3s}}{\dfrac{s+0.222}{s}}=\dfrac{0.222}{s+0.222}e^{-3s}=\dfrac{1}{4.5s+1}e^{-3s}

Sabemos que la dinámica de rechazo de perturbación viene dada por:

 

H_{yq}(s)=P_n(s)\left [1-\dfrac{CP_n}{1+CG_n} F_r \right ]

 

reemplazamos los valores que conocemos. Ya tenemos el lazo cerrado y tenemos la dinamica de la planta en lazo abierto:

 

H_{yq}(s)=\dfrac{0.12}{6s+1}e^{-3s}\left [1-\dfrac{1}{4.5s+1}F_r e^{-3s} \right ]

 

Ahora diseñamos el filtro cumpliendo las dos condiciones necesarias. Para este caso diseñamos un filtro de segundo orden, para cancelar la dinámica de lazo cerrado.

 

F_r(s)=\dfrac{(T_{r}s+1)(\beta s+1)}{(T_fs+1)^2}

 

Ya tenemos el valor de T_r=4.5 el cual cancela la dinámica de lazo cerrado. Los polos del filtro los definimos como T_f=3, ese parámetro es de libre elección, en este caso yo lo escogí más rápido que la dinámica en lazo cerrado. Con esos valores procedemos a encontrar \beta

 

\beta= \left [1- \left ( 1-\dfrac{T_f}{T_n}\right )^2e^{-L_n/T_n}\right ]T_n= \left [1- \left ( 1-\dfrac{3}{6}\right )^2e^{-3/6}\right ]6=5.0902

 

De esa forma, el filtro del predictor de Smith, viene dado por:

 

F_r(s)=\dfrac{(4.5s+1)(5.0902 s+1)}{(3s+1)^2}

 

Podemos notar como el rechazo de perturbaciones es acelerado gracias a la inclusión del filtro, el cual consigue cancelar la dinámica de la planta en lazo abierto:

 

H_{yq}(s)=\dfrac{0.12}{6s+1}e^{-3s}\left [1-\dfrac{1}{4.5s+1}\dfrac{(4.5s+1)(5.0902 s+1)}{(3s+1)^2} e^{-3s} \right ]

 

H_{yq}(s)=\dfrac{0.12}{6s+1}e^{-3s}\left [1-\dfrac{(5.0902 s+1)}{(3s+1)^2} e^{-3s} \right ]

 

Respuesta del Sistema:

FSP Estable

En la grafica de la salida se compara el comportamiento del Predictor de Smith y el Predictor de Smith Filtrado, puede verse como el PSF acelera la dinámica de rechazo de perturbación. El código de implementación es el siguiente:

 

 Ejemplo caso Integrador (igual para caso Inestable)

Para entender mejor el concepto de sintonia del filtro, se presentará a continuación un ejemplo. Se asume un proceso integrador, propuesto por el siguiente modelo nominal :

P_n(s)=\dfrac{3.5}{s}e^{-1s}

 

Se discretiza el proceso con un retenedor de orden cero (ZOH) y se obtiene el siguiente sistema: P_n(z)=\dfrac{0,7}{z-1}z^{-5}, obtenido con t_s=0.2 s, y se desea diseñar un filtro para rechazar perturbaciones del tipo escalón.

 

Dividimos el modelo del proceso en terminos estables y terminos inestables como:

\\P_n(z)=\dfrac{N_n(z)}{D_n^-(z)D_n^+(z)}z^{-d}=\dfrac{0,7}{z-1}z^{-5}\\
Parte estable= D_n^-(z)=1\\
Parte inestable= D_n^+(z)=(z-1)\\
Numerador= N_n(z)=0,7\\

 

desmembrabdo el bloque S(z) como numeradores y denominadores de cada uno de sus terminos, dicho bloque puede ser reescrito como:

  \\S(z)=G_n(z)\left [ 1-z^{-d_n}F_r(z) \right ]=\dfrac{N_n(z)}{D_n^-(z)D_n^+(z)}\left [ \dfrac{D_f(z)-N_f(z)z^{-d_n}}{D_f(z)} \right ].

 

El ingeniero tiene la libertad de escoger arbitrariamente el denominador del filtro con raíces dentro del circulo unitario con un orden igual o mayor al numero de polos NO deseados del sistema. En este ejemplo dado que tenemos tan solo “1” polo indeseado en el origen, vamos a escoger el  filtro de orden uno. Para eso seleccionamos el polo del filtro igual a o,9. Así, todos los polos de lazo abierto del modelo del proceso que esten fuera del circulo de radio 0,9 serán cancelados por el filtro predictor garantizando con esto la eliminación del polo en el origen.

 

El polo del filtro entonces es seleccionado como D_f(z)=(z-0,9) de manera de no ser mas lento que la dinamica deseada para el rechazo de perturbaciones.

 

La idea es que la parte del numerador, D_f(z)-N_f(z)z^{-d_n}, del bloque S(z) se cancele con la parte del denominador inestable, D_n^+(z), del mismo bloque. Reemplazando valores tenemos que:

 

(z-0,9)-z^{-5}N_f(z)=(z-1)(z-1)p(z).

Reescriviendo la ecuación en terminos de potências positivas, se tiene que
(z-0,9)z^5-N_f(z)=(z-1)^2p(z)\\  z^6-0,9z^5-N_f(z)=(z^2-2z+1)p(z).

 

El polinomio p(z) es un residuo el cual debe ser seleccionado de forma que complete el orden del polinomio de la izquierda. Como el denominador del filtro D_f(z) fue escogido de primer orden, el numerador del filtro también debe ser de primer orden, de forma que el filtro sea propio, osea, N_f(z)=az+b. Eso resulta en la igualdad:

 

\\z^6-0,9z^5-(az+b)=(z^2-2z+1)(cz^4+dz^3+ez^2+fz+g).

Igualando termino a termino y solucionando el sistema de ecuaciones, se llega a que a=1,5; b=-1,4; c=1; d=1,1; e=1,2; f=1,3 e g=1,4. Así, el filtro del preditor es dado por

 

F_r(z)=\dfrac{N_f(z)}{D_f(z)}=\dfrac{az+b}{z-0,9}=\dfrac{1,5z-1,4}{z-0,9}.

Así el bloque S(z) es dado por:

S(z)=G_n(z)\left [ 1-z^{-d_n}F_r(z) \right ] S(z)=\dfrac{0,7}{z-1}\left [1- \dfrac{(1,5z-1,4)z^{-5}}{z-0,9} \right ] S(z)=\dfrac{0,7}{z-1}\left [ \dfrac{(z-0,9)-(1,5z-1,4)z^{-5}}{z-0,9} \right ]

 

S(z)=\dfrac{0.7 z^5 + 0.07 z^4 + 0.07 z^3 + 0.07 z^2 + 0.07 z - 0.98}{z^6 - 0.9 z^5}

 

Para este proceso se sintoniza un controlador PI con los siguientes parametros:

 

K_c=0.14T_i=10 Obteniendo un controlador como:

C(s)=\dfrac{1.4 s + 0.14}{10s} y en su version discreta por tustin

C(z)=\dfrac{0.1414 z - 0.1386}{z-1}

>> Descarga el código del Simulink y de Matlab <<

Esquema en Simulink:
Predictor de Smith Filtrado

Codigo en MATLAB:

Resultado:
PSF

Espero esta información te haya sido de utilidad, no olvides compartir para de esa manera permitir que más personas se beneficien de esta información.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)