You are on page 1of 52

Reator CSTR Não-Isotérmico

Felix Farias

http://felixfarias.googlepages.com/

   
Reator CSTR Não-Isotérmico

Baseado no exemplo nonisothermal CSTR:

Process Modeling, Simulation and Control


for Chemical Engineers.
Luyben, W.L. (1990)

   
Reator CSTR Não-Isotérmico

Uma reação exotérmica e irreversível é


realizada em um reator CSTR
perfeitamente agitado. A reação é de
primeira ordem e possui um calor de
reação dado por λ.

k
A B

   
Reator CSTR Não-Isotérmico

Para remover o calor da reação uma


camisa de resfriamento é utilizada. Água
fria entra na camisa a uma vazão
volumétrica FJ e com temperatura TJ0.

A massa das paredes metálicas é


desprezível, sendo assim a inércia
térmica do metal não é considerada.

   
Reator CSTR Não-Isotérmico

Duas variáveis devem ser controladas no


sistema:

● volume de líquido dentro do reator,


através da vazão em uma válvula na
saída
● temperatura do processo, através da
vazão de entrada do fluido refrigerante.

   
Reator CSTR Não-Isotérmico
F0
CA0
T0 FJ
TJ
V
control

control
T

F
FJ CA
TJ0 T

   
Reator CSTR Não-Isotérmico

Assumindo uma temperatura uniforme da


camisa, a transferência de calor entre a
temperatura do processo T e a a
temperatura da água de resfriamento TJ e
coeficiente global U é dada por:

Q=U A H T −T f 

   
Reator CSTR Não-Isotérmico

O Processo pode ser definido pelas


seguintes Equações Diferenciais
Ordinárias:

   
Reator CSTR Não-Isotérmico

Balanços de Massa:

dV
=F 0 −F
dt

d V CA
=F 0 C A0 −F C A −V k C A
dt

   
Reator CSTR Não-Isotérmico

Balanços de Energia:

dV T  V k C A U AH
=F 0 T 0 −F T − − T −T J 
dt CP C P

dTJ F J T J0 −T J  U AH
=  T −T J 
dt VJ J V J C J

   
Reator CSTR Não-Isotérmico

Equações Algébricas:

−E / RT
k= e CINÉTICA

F =40−10 48−V  CONTROLE NIVEL

F J =49.9−K C 600−T  CONTROLE TEMPERATURA

Q=U A H T −T f  TROCA TÉRMICA

   
Reator CSTR Não-Isotérmico

Dados:

%alimentacao
CA0=0.5;
F0=40;
T0=530;
%fluido refrigerante
TJ0=530;

   
Reator CSTR Não-Isotérmico

Condições iniciais:

% variáveis independentes do sistema


V=48;
CA=0.245;
T=600;
TJ=594.59;

   
Reator CSTR Não-Isotérmico

Condições iniciais:

% variaveis manipuladas em malha aberta


FJ=49.9;
F=40;

   
Reator CSTR Não-Isotérmico

Chamar o editor de textos do matlab:

% edit

   
Reator CSTR Não-Isotérmico

Criar função e salvar em arquivo .m do


Matlab (com o mesmo nome):

function saida=cstr_fb

   
Reator CSTR Não-Isotérmico

% Condições iniciais
CA=0.245;
T=600;
TJ=594.59;
V=48;
TIME=0;
VC=V*CA;
VT=V*T;

   
Reator CSTR Não-Isotérmico

% Valores dos parâmetros


TJ0=530;
F0=40;
T0=530;
CA0=0.5;
KC=4;
DELTA=0.01;
TPRINT=0;
linha=1;

   
Reator CSTR Não-Isotérmico

% LOOP principal

while(TIME<16.1)
...
end

   
Reator CSTR Não-Isotérmico

% Malha aberta
FJ=49.9;
F=40;

   
Reator CSTR Não-Isotérmico

% Equacoes algebricas:
% Taxa de reação
K=7.08E10*exp(-30000./(1.99*T));
% Calor trocado entre reator e jaqueta
Q=150.*250.*(T-TJ);

   
Reator CSTR Não-Isotérmico

% Equacoes diferenciais
VDOT=F0-F; dV
=F 0 −F
dt
VCDOT=F0*CA0-F*CA-V*K*CA;
d V CA
=F 0 C A0 −F C A −V k C A
dt

   
Reator CSTR Não-Isotérmico

% Equacoes diferenciais
VTDOT=F0*T0-F*T+(30000.*V*K*CA-
Q)/(0.75*50.);
dV T  V k C A U AH
=F 0 T 0 −F T − − T −T J 
dt CP C P

TJDOT=FJ*(TJ0-TJ)/3.85+Q/240.;
dTJ F J T J0 −T J  U AH
=  T −T J 
dt VJ J V J C J  
 
Reator CSTR Não-Isotérmico

% integração por Euler:


V = V+VDOT*DELTA;
VC = VC+VCDOT*DELTA;
VT = VT+VTDOT*DELTA;
TJ = TJ+TJDOT*DELTA;

   
Reator CSTR Não-Isotérmico

% incremento do tempo
TIME=TIME+DELTA;

% cálculo dos novos valores de CA e T


CA=VC/V;
T=VT/V;

   
Reator CSTR Não-Isotérmico

% armazenando resultados:
if(TIME>=TPRINT)
% disp([TIME,CA,T,V,F,TJ,FJ]);
saida(linha,:) = [TIME CA T V F TJ FJ];
TPRINT = TPRINT + 0.5;
linha=linha+1;
end

   
Reator CSTR Não-Isotérmico

% fim do LOOP
end

   
Reator CSTR Não-Isotérmico

No prompt do Matlab podemos chamar


nossa funcao entao e receber os
resultados em uma variável x qualquer.

>> x=cstr_fb

   
Reator CSTR Não-Isotérmico

Construção da matriz de saída


saida(linha,:) = [TIME CA T V F TJ FJ];

tamanho da matriz x
>> size(x)

ou
>> [NL,NC]=size(x)

   
Reator CSTR Não-Isotérmico

Construção da matriz de saída


saida(linha,:) = [TIME CA T V F TJ FJ];

valores iniciais das variáveis


independentes:
>> x(1,:)

valores finais das variáveis independentes:


>> x(NL,:)

   
Reator CSTR Não-Isotérmico

Construção da matriz de saída


saida(linha,:) = [TIME CA T V F TJ FJ];

gráfico da matriz x (sete colunas):


>> plot(x)

   
Reator CSTR Não-Isotérmico

Construção da matriz de saída


saida(linha,:) = [TIME CA T V F TJ FJ];

gráfico de CA:
>> CA = x(:,2);
>> plot(CA)

ou simplesmente:
>> plot(x(:,2))

   
Reator CSTR Não-Isotérmico

Construção da matriz de saída


saida(linha,:) = [TIME CA T V F TJ FJ];

gráfico de CA versus TIME:


>> CA = x(:,2);
>> TIME = x(:,1);
>> plot(TIME,CA)

ou simplesmente:
>> plot(x(:,1),x(:,2))
   
Malha Aberta

% Malha aberta:
FJ=49.9;
F=40;

   
Controlador Proporcional

% Controlador proporcional:
KC=1.;

FJ = 49.9-KC*(537.161-T);
F = 40.-10.*(48.-V);

   
Controlador Proporcional

% Controlador proporcional:
KC=1.;

FJ = 49.9-KC*(537.161-T);
if (TIME>5)
FJ = 49.9-KC*(570.-T);
end

F = 40.-10.*(48.-V);
   
Controlador PID

% Condições iniciais
CA=0.474;
T=537.16;
TJ=536.6;

   
Controlador PID

% Valores dos parâmetros


ERRORINT=0;
ERROOLD=0;
TRESET=0;

   
Controlador PID

% Controlador PID:
% Constantes do controlador:
KP=10.; % 10
KI=0.02; %0.02
KD=0.2; %0.1

   
Controlador PID

SETPOINT=537.161;
if (TIME>0.5)
SETPOINT=540;
end

ERRO=SETPOINT-T;
ERRORINT=ERRORINT+ERRO;
ERRODEV=(ERRO-ERROOLD)/DELTA;
ERROOLD=ERRO;

   
Controlador PID

FJ = 49.9-
KP*(ERRO+KI*ERRORINT+KD*ERRODEV);

TRESET=TRESET+DELTA;
if (TRESET>1/(KI+0.00001))
ERRORINT=0;
TRESET=0;
end

   
Apêndice

   
Funções Personalizadas

Formato geral:

function [r1,r2,...]=nome_funcao(p1,p2,...)
código que usa p1, p2,...
guarda resultados nas variáveis de saída
p1 = ...
p2 = ...
...
end

   
Funções Personalizadas

Exemplo: uma função fatorial simples

function ans=fatorial(x)
f=1;
if (x>1)
f=x*fatorial(x-1);
end
ans=f;
end

   
Funções Personalizadas
Exemplo: fatorial de uma matriz

function ans=mfatorial(x)
if (min(min(x))<0)
error('A matriz nao pode conter elementos
negativos');
end
[a,b]=size(x);
f=max(x,ones(a,b));
if(sum(sum(f-1))>0)
f=f.*mfatorial(f-1);
end;
  ans=f;  

end
Controle de Fluxo

O comando de decisão IF:

if (condição)
bloco de comandos
else
bloco de comandos
end

   
Controle de Fluxo

O comando de decisão IF:

if (x>0)
y=1;
else
y=0;
end

   
Controle de Fluxo

O comando de loop WHILE:

while (condição)
bloco de comandos
end

   
Controle de Fluxo

O comando de loop WHILE:

t=1.1;
while (t<10)
t=t*t;
end

   
Controle de Fluxo

O comando de loop FOR:

for variável = expressão


bloco de comandos
end

   
Controle de Fluxo

O comando de loop FOR:

for t = 1:1:10
y(t)=0.2*t^2;
end

   
Referências

http://www.mathworks.com/access/helpdesk/h

http://www.octave.org/

http://www.math.ubc.ca/~feldman/demos/dem

   

You might also like