Main Content

Control de temperatura en un intercambiador de calor

Este ejemplo muestra cómo diseñar compensadores de feedback y feedforward para regular la temperatura de un reactor químico por medio de un intercambiador de calor.

Proceso del intercambiador de calor

A continuación, se muestra un reactor químico denominado "stirring tank" (tanque de agitación). La entrada superior suministra el líquido al tanque. El líquido en el tanque se debe mantener a una temperatura constante, variando la cantidad de vapor suministrada al intercambiador de calor (tubería inferior) a través de una válvula de regulación. Las variaciones de temperatura del caudal de entrada son la fuente principal de perturbaciones en este proceso.

Figura 1: Reactor de agitación con intercambiador de calor.

Usar los datos medidos para modelar las dinámicas del intercambiador de calor

Para derivar un modelo de primer orden más tiempo muerto de las características del intercambiador de calor, inyecte una perturbación de paso en el voltaje de la válvula V y registre su efecto en la temperatura del tanque T a lo largo del tiempo. La respuesta medida en unidades normalizadas figura a continuación:

heatex_plotdata
title('Measured response to step change in steam valve voltage');

Los valores t1 y t2 son las unidades de tiempo en que la respuesta alcanza el 28,3% y 63,2% de su valor final. Puede utilizar estos valores para calcular la constante de tiempo tau y el tiempo muerto theta del intercambiador de calor:

t1 = 21.8; t2 = 36.0;
tau = 3/2 * ( t2 - t1 )
theta = t2 - tau
tau =

   21.3000


theta =

   14.7000

Verifique estos cálculos comparando la respuesta de primer orden más tiempo muerto con la respuesta medida:

s = tf('s');
Gp = exp(-theta*s)/(1+tau*s)
Gp =
 
                     1
  exp(-14.7*s) * ----------
                 21.3 s + 1
 
Continuous-time transfer function.
hold on, step(Gp), hold off
title('Experimental vs. simulated response to step change');

La respuesta del modelo y los datos experimentales coinciden. Se podría realizar un experimento de prueba de impacto similar para calcular la respuesta de primer orden con respecto a una perturbación de paso en la temperatura del caudal de entrada. Como ya disponemos de modelos para el intercambiador de calor y la perturbación del caudal de entrada, ya podemos diseñar el algoritmo de control.

Control de feedback

A continuación, se muestra una representación del diagrama de bloques del proceso de lazo abierto.

Figura 2: Proceso de lazo abierto.

La función de transferencia

$$ G_p(s) = {e^{-14.7 s} \over 21.3s+1} $$

modela cómo un cambio en el voltaje V que controla la apertura de la válvula de vapor afecta a la temperatura del tanque T, mientras que la función de transferencia

$$ G_d(s) = {e^{-35 s} \over 25s+1} $$

modela cómo un cambio d en la temperatura del caudal de entrada afecta a T. Para regular la temperatura del tanque T alrededor de un valor de consigna determinado Tsp, se puede usar la siguiente arquitectura de feedback para controlar la apertura de la válvula (voltaje V):

Figura 3: Control de feedback.

En esta configuración, el controlador proporcional integral (PI)

$$ C(s) = K_c (1 + {1 \over \tau_c s} ) $$

calcula el voltaje V en función de la diferencia Tsp-T entre la temperatura deseada y la temperatura medida. Puede utilizar las fórmulas ITAE para elegir valores adecuados para los parámetros del controlador:

$$ K_c = 0.859 (\theta / \tau)^{-0.977} , \;\;\; \tau_c = ( \theta / \tau )^{0.680} \tau / 0.674 $$

Kc = 0.859 * (theta / tau)^(-0.977)
tauc = ( tau / 0.674 ) * ( theta / tau )^0.680
C = Kc * (1 + 1/(tauc*s));
Kc =

    1.2341


tauc =

   24.5582

Para saber cuán bien funciona el controlador ITAE, cierre el lazo de feedback y simule la respuesta a un cambio de valor de consigna:

Tfb = feedback(ss(Gp*C),1);
step(Tfb), grid on
title('Response to step change in temperature setpoint T_{sp}')
ylabel('Tank temperature')

La respuesta es bastante rápida con cierto sobreimpulso. Si observamos los márgenes de estabilidad, se confirma que el margen de ganancia es débil:

margin(Gp*C), grid

Cuando se reduce la ganancia proporcional Kc se fortalece la estabilidad a expensas del rendimiento:

C1 = 0.9 * (1 + 1/(tauc*s));  % reduce Kc from 1.23 to 0.9
margin(Gp*C1), grid

step(Tfb,'b', feedback(ss(Gp*C1),1),'r')
legend('Kc = 1.23','Kc = 0.9')

Control de feedforward

Recuerde que los cambios en la temperatura del caudal de entrada son la principal fuente de las fluctuaciones de temperatura en el tanque. Para anular estas perturbaciones, una alternativa al control por feedback es la arquitectura de feedforward que se muestra a continuación:

Figura 4: Control de feedforward.

En esta configuración, el controlador de feedforward F utiliza medidas de la temperatura del caudal de entrada para ajustar la apertura de la válvula de vapor (voltaje V). Así, el control de feedforward anticipa y neutraliza el efecto de los cambios en la temperatura del caudal de entrada.

El cálculo directo muestra que la transferencia total de la perturbación de temperatura d a la temperatura del tanque T es

$$ T = (G_p F + G_d) d $$

La anulación perfecta de perturbaciones requiere

$$ G_p F + G_d = 0 \rightarrow F = -{G_d \over G_p} = - {21.3s+1 \over 25s+1} e^{-20.3 s}$$

En realidad, las imprecisiones en el modelado evitan una anulación exacta de perturbaciones, pero el control de feedforward ayuda a reducir las fluctuaciones de temperatura debido a perturbaciones en el caudal de entrada. Para tener una mejor idea de cómo funcionaría el esquema de feedforward, aumente el retardo de feedforward ideal en 5 segundos y simule la respuesta a un cambio de escalón en la temperatura del caudal de entrada:

Gd = exp(-35*s)/(25*s+1);
F = -(21.3*s+1)/(25*s+1) * exp(-25*s);
Tff = Gp * ss(F) + Gd;   % d->T transfer with feedforward control

step(Tff), grid
title('Effect of a step disturbance in inflow temperature')
ylabel('Tank temperature')

Control de feedforward-feedback combinado

El control por feedback es adecuado para el seguimiento de valores de consigna en general, mientras que el control de feedforward puede ayudar con la anulación de perturbaciones medidas. A continuación, analizamos las ventajas de combinar ambos esquemas. La arquitectura de control correspondiente se muestra a continuación:

Figura 5: Control de feedforward-feedback.

Utilice connect para crear el modelo de lazo cerrado correspondiente de Tsp,d a T. En primer lugar, asigne un nombre a los canales de entrada y salida de cada bloque y, después, permita que connect restablezca automáticamente el diagrama:

Gd.u = 'd';  Gd.y = 'Td';
Gp.u = 'V';  Gp.y = 'Tp';
F.u = 'd';  F.y = 'Vf';
C.u = 'e';  C.y = 'Vc';
Sum1 = sumblk('e = Tsp - T');
Sum2 = sumblk('V = Vf + Vc');
Sum3 = sumblk('T = Tp + Td');
Tffb = connect(Gp,Gd,C,F,Sum1,Sum2,Sum3,{'Tsp','d'},'T');

Para comparar las respuestas en lazo cerrado con y sin control de feedforward, calcule la función de transferencia de lazo cerrado correspondiente para la configuración de solo feedback:

C.u = 'e';  C.y = 'V';
Tfb = connect(Gp,Gd,C,Sum1,Sum3,{'Tsp','d'},'T');

Ahora compare los dos diseños:

step(Tfb,'b',Tffb,'r--'), grid
title('Closed-loop response to setpoint and disturbance step change')
ylabel('Tank temperature')
legend('Feedback only','Feedforward + feedback')

Los dos diseños muestran un rendimiento idéntico para el seguimiento del valor de consigna, aunque la incorporación del control de feedforward claramente beneficia a la anulación de perturbaciones. Esto también se ve en el diagrama de Bode de lazo cerrado.

bodemag(Tfb,'b',Tffb,'r--',{1e-3,1e1})
legend('Feedback only','Feedforward + feedback','Location','SouthEast')

Simulación interactiva

Para comprender mejor y ajustar interactivamente las ganancias de feedforward y feedback, utilice la interfaz gráfica complementaria y el modelo de Simulink®. Ejecute el comando siguiente para iniciar la interfaz gráfica.

heatex