Sunteți pe pagina 1din 43

UFBA

Escola Politcnica da UFBA




Curso de Extenso:

PROGRAMAO EM MATLAB COM
APLICAO EM
REATORES QUMICOS

REAGENTES PRODUTOS

REATOR TUBULAR PFR

PRODUTOS
REAGENTES

CSTR BATELADA

Prof. Dr. Ricardo de Arajo Kalid
Programa em Engenharia Industrial da UFBA
2

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316

PROGRAMAO EM MATLAB COM
APLICAO EM
REATORES QUMICOS

SUMRIO

1 INTRODUO ............................................................................................. 3
1.1. Vetorizao ........................................................................................... 5
1.2. Operaes elemento a elemento .......................................................... 8
2 EQUAES ALGBRICAS ........................................................................ 9
2.1. Sistemas de equaes algbricas no-lineares que
no necessitam de procedimentos iterativos ........................................ 9
2.2. Sistema de equaes algbricas lineares .......................................... 11
2.3. Sistema de equaes algbricas no-lineares (SEANL) .................... 11
3 SISTEMA DE EQUAES DIFERENCIAIS ORDINRIAS - SEDO ......... 15
3.1. Uso de M-function Exemplo: Reator a Batelada .............................. 18
3.2. S-function ........................................................................................... 23
3.2.1. S-function: Exemplo 1:
SEDOL - Espao de estados lineares ....................................................... 24
3.2.2. S-function: Exemplo 2: Espao de estados no-lineares
SEDONL : CSTR em regime transiente .......................................... 27
3.2.3. S-function: Exemplo 3: Espao de estados no-lineares
SEDONL : neutralizao de pH em malha fechada ......................... 30
3.2.4. S-function: Exemplo 4: Espao de estados no-lineares
SEDONL : reator PFR em estado estacionrio ................................ 32
4 SISTEMA DE EQUAES DIFERENCIAIS PARCIAIS ............................ 34
4.1. Soluo pelo mtodo das linhas para 1 (uma) EDP ........................... 34
4.2. Soluo pelo mtodo das linhas para 2 (duas) EDPs ......................... 35
4.3. S-function: Exemplo 4: Espao de estados no-lineares SEDONL :
reator PFR em estado estacionrio .................................................... 39
5 DEPURADOR DE PROGRAMAS .............................................................. 42
3

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
1 INTRODUO
O MATLAB (MATrix LABoratory) um ambiente de programao adequado
para resolver problemas que envolvam operaes matemticas com
matrizes.
O MATLAB composto por duas ferramentas bsicas e vrias auxiliares. As
bsicas, o prprio MATLAB e o SIMULINK constituem o ncleo mnimo que
deve estar disponvel e possibilitam executar as ferramentas auxiliares,
denominadas toolbox.
Os toolbox disponveis na verso 7.4.0.287 (R2007a) so os seguintes:

-------------------------------------------------------------------------------------
MATLAB Version 7.4.0.287 (R2007a)
MATLAB License Number: 161051
Operating System: Microsoft Windows XP Version 5.2 (Build 3790: Service Pack 2)
Java VM Version: Java 1.5.0_05 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit
Server VM mixed mode
-------------------------------------------------------------------------------------
MATLAB Version 7.4 (R2007a)
Simulink Version 6.6 (R2007a)
Aerospace Blockset Version 2.3 (R2007a)
Aerospace Toolbox Version 1.1 (R2007a)
Bioinformatics Toolbox Version 2.5 (R2007a)
Communications Blockset Version 3.5 (R2007a)
Communications Toolbox Version 3.5 (R2007a)
Control System Toolbox Version 8.0 (R2007a)
Curve Fitting Toolbox Version 1.1.7 (R2007a)
Database Toolbox Version 3.3 (R2007a)
Distributed Computing Toolbox Version 3.1 (R2007a)
Excel Link Version 2.5 (R2007a)
Filter Design HDL Coder Version 2.0 (R2007a)
Filter Design Toolbox Version 4.1 (R2007a)
Financial Derivatives Toolbox Version 5.0 (R2007a)
Financial Toolbox Version 3.2 (R2007a)
Fixed-Income Toolbox Version 1.3 (R2007a)
Fixed-Point Toolbox Version 2.0 (R2007a)
Fuzzy Logic Toolbox Version 2.2.5 (R2007a)
GARCH Toolbox Version 2.3.1 (R2007a)
Genetic Algorithm and Direct Search Toolbox Version 2.1 (R2007a)
Image Processing Toolbox Version 5.4 (R2007a)
MATLAB Builder for .NET Version 2.2 (R2007a)
MATLAB Builder for Excel Version 1.2.8 (R2007a)
MATLAB Builder for Java Version 1.1 (R2007a)
MATLAB Compiler Version 4.6 (R2007a)
MATLAB Distributed Computing Engine Version 3.1 (R2007a)
MATLAB Report Generator Version 3.2 (R2007a)
Mapping Toolbox Version 2.5 (R2007a)
Model Predictive Control Toolbox Version 2.2.4 (R2007a)
Neural Network Toolbox Version 5.0.2 (R2007a)
Optimization Toolbox Version 3.1.1 (R2007a)
Partial Differential Equation Toolbox Version 1.0.10 (R2007a)
RF Blockset Version 2.0 (R2007a)
RF Toolbox Version 2.1 (R2007a)
Real-Time Workshop Version 6.6 (R2007a)
Real-Time Workshop Embedded Coder Version 4.6 (R2007a)
Robust Control Toolbox Version 3.2 (R2007a)
Signal Processing Blockset Version 6.5 (R2007a)
Signal Processing Toolbox Version 6.7 (R2007a)
SimDriveline Version 1.3 (R2007a)
SimEvents Version 2.0 (R2007a)
SimHydraulics Version 1.2 (R2007a)
SimMechanics Version 2.6 (R2007a)
SimPowerSystems Version 4.4 (R2007a)
Simscape Version 1.0 (R2007a)
Simulink Accelerator Version 6.6 (R2007a)
4

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Simulink Control Design Version 2.1 (R2007a)
Simulink Fixed Point Version 5.4 (R2007a)
Simulink Parameter Estimation Version 1.2 (R2007a)
Simulink Report Generator Version 3.2 (R2007a)
Simulink Response Optimization Version 3.1.1 (R2007a)
Simulink Verification and Validation Version 2.1 (R2007a)
Spline Toolbox Version 3.3.2 (R2007a)
Stateflow Version 6.6 (R2007a)
Stateflow Coder Version 6.6 (R2007a)
Statistics Toolbox Version 6.0 (R2007a)
System Identification Toolbox Version 7.0 (R2007a)
SystemTest Version 1.1 (R2007a)
Video and Image Processing Blockset Version 2.3 (R2007a)
Virtual Reality Toolbox Version 4.5 (R2007a)
Wavelet Toolbox Version 4.0 (R2007a)

Trademarks
------------------
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, and xPC TargetBox
are registered trademarks and SimBiology, SimEvents, and SimHydraulics are trademarks
of The MathWorks, Inc. Other product or brand names are trademarks or registered
trademarks of their respective holders.

Podemos observar que a rea de cobertura dos toolbox muito vasta
cobrindo, por exemplo, os temas relacionados com:
- finanas,
- tratamento de imagem,
- tratamento de sinais,
- estatstica,
- redes neurais,
- controle,
- otimizao.
Mas alm desses toolbox, que so adquiridos na MATHWORKS (empresa
fornecedora do MATLAB/SIMULINK), vrios outros podem ser encontrados
gratuitamente na internet.
Devido o MATLAB cobrir vrias reas do conhecimento da engenharia e pela
forma mais fcil de programar, quando comparado com outras linguagens de
alto nvel, como por exemplo FORTRAN ou C, esta plataforma tem sido
largamente utilizado no meio acadmico e industrial.
A facilidade da programao do MATLAB vem principalmente pela maneira
intuitiva como as operaes com vetores e matrizes so tratadas,
dispensando quase
+
que completamente o uso de indexadores, loops tipo for
ou do na soma, multiplicao, inverso ou qualquer outra operao com
matrizes e/ou vetores, por exemplo:


+
A nica situao na qual somos obrigados a utilizar os indexadores para realizar operao
com matrizes quando um elemento de uma matriz ou vetor depende de resultado de um
elemento anterior dessa mesma matriz ou vetor.
5

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
EX 1: Seja os vetores v1 = [ 1 ; 2 ; 3 ; 4 ] e v2 = [ 2 ; 3 ; 4 ; 5 ].
A soma v3 = v1 + v2 no MATLAB realizada exatamente da maneira
como escrevemos na linguagem matemtica usual.
EX 2: Seja a matriz
(

=
1 5
3 2
1 m
O quadrado dessa matriz escrito por m1^2 ou m1*m1.
O dobro dessa matriz dado por 2*m1

evitando, dessa forma, a chamada de subrotinas para realizar clculos
corriqueiros nos problemas de engenharia.
Outro ponto que facilita a programao que o MATLAB um ambiente de
programao que realiza instruo por instruo, o que ajuda muito na etapa
de desenvolvimento dos programas. Mas que tambm pode gerar um cdigo
compilado, ou seja gerar um executvel, que executado independente do
MATLAB.
1.1. Vetorizao
O MATLAB realiza os clculos utilizando o recurso da vetorizao das
matrizes e vetores automaticamente e de forma transparente para o usurio,
desta forma o tempo computacional minimizado sem necessitar de esforos
adicionais do programador. Por exemplo, definindo o vetor v1

v1 = ones(10000,1);
e o vetor v2
v2= 2*ones(size(v1)) ;

a soma utilizando a vetorizao dada por
tic
v3 = v1 + v2;
toc

elapsed_time =
0

enquanto que utilizando a estrutura por indexadores, temos:
6

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
tic
for i = 1:length(v2)
v4(i) = v1(i) + v2(i);
end
toc

elapsed_time =
0.4300 ]
Obs: os tempos acima so diferentes a depender da carga que a CPU est
submetida no instante do processamento.
Observe que os textos em verde so exatamente os comandos que devem
ser digitados no prompt do MATLAB. Enquanto que os textos e azul o
resultado que aparecer na tela.
Ainda nos comando acima verificamos a sintaxe do comando ones(nl,nc) ,
no qual definimos o nmero de linhas nl e colunas nc que o vetor de uns v1
ter.
Verificamos como gerar um novo vetor v2 com as mesmas dimenses do
vetor v1.
Ainda aprendemos a utilizar os comandos tic e toc. Alis sempre que tiver
dvidas sobre como usar um comando, o MATLAB tem um help on-line, para
tanto basta digitar help
o
seguido do comando que uma ajuda na tela
aparecer. Por exemplo, se quiser saber como os comandos supracitados
trabalham, basta digitar help tic


o
Um help mais completo acionado atravs da barra principal do MATLAB, nesse help
voc pode fazer uma pesquisa por nome, ou navegar por todo a documentao do MATLAB.

7

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
help tic
TIC Start a stopwatch timer.
The sequence of commands
TIC, operation, TOC
prints the number of seconds required for the operation.

See also TOC, CLOCK, ETIME, CPUTIME.

Na definio de uma matriz, a mudana de coluna caracterizada pela
insero de uma vrgula e a de linha pelo ponto e vrgula. Por exemplo a
matriz identidade 2 por 2 criada pelo seguinte comando
matriz_identidade = [ 1 , 0 ; 0 1 ]
matriz_identidade =
1 0
0 1

ou ento usando o comando eye:
mat_ident = eye(2)
mat_ident =
1 0
0 1
A inversa de uma matriz calculada utilizando o comando inv :

A = [ 1 2 ; 4 10 ]
A =
1 2
4 10

iA = inv(A)
iA =
5.0000 -1.0000
-2.0000 0.5000

verificando
iA*A
ans =
1 0
0 1
8

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
1.2. Operaes elemento a elemento
Podemos operar a multiplicao de duas matrizes elemento a elemento:

iA.*A
ans =
5 -2
-8 5
Observe que antes do sinal de multiplicao colocamos um ponto. dessa
forma que indicado para o MATLAB se a operao a ser realizada, que
neste caso foi a multiplicao, elemento a elemento ou segue as regras de
multiplicao de duas matrizes. Essa mesma regra do ponto serve para
potncia(.^) e diviso(./).

Temos que ter cuidado com a multiplicao de matrizes e vetores, pois a
operao matricial ou elemento a elemento daro resultados completamente
diferentes.

Por exemplo, a operao A*A gera a matriz
A = [ 1 2 ; 4 10 ];
A*A
ans =
9 22
44 108

enquanto que a operao A.*A gera a matriz
A.*A
ans =
1 4
16 100
9

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
2 EQUAES ALGBRICAS
Muitos problemas so representados por sistemas de equaes algbricas
lineares ou no lineares. Como por exemplo
- clculo da capacidade calorfica de substncias e misturas
- obteno dos coeficientes estequiomtricos de um sistema reacional
- modelagem de um reator CSTR em estado estacionrio

As equaes algbricas podem ser classificadas como lineares ou no-
lineares. Neste ltimo caso, podemos resolver o sistema atravs da inverso
de matrizes sem recorrer a procedimentos iterativos, porm no caso no-
linear s vezes temos que utilizar de algoritmos numricos mais sofisticados,
como mtodo de Newton, secante, etc.
2.1. Sistemas de equaes algbricas no-lineares que no
necessitam de procedimentos iterativos
Por exemplo, no clculo da capacidade calorfica de substncias e misturas
no h necessidade de utilizar mtodos numricos. Tomemos a ttulo de
ilustrao uma mistura formada por C
2
H
2
, C
2
H
4
, C
2
H
6
, CO, H
2
e CH
4
a uma
certa temperatura (T = 30 C) e a baixas presses, a capacidade calorfica da
mistura dada por:

( )

=
=
nc
i
i i mistura
T Cp C Cp
1
. (02.01)
onde
C
i
- concentrao da espcie i
Cp
i
- capacidade calorfica molar da espcie i
T - temperatura


10

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
% Definio dos ndices das substncias
C2H2 = 1 ;
C2H4 = 2 ;
C2H6 = 3 ;
CO = 4 ;
H2 = 5 ;
CH4 = 6 ;
% Condies da mistura
T = 30 + 273.15 ; % [=] K
ConcMol = [ 0.01 0.8 0.18 0.001 0.008 0.001 ] ;
% Coeficientes das capacidades calorficas
Cp(C2H2,1) = 2.682e+1 ; % [=] J/(mol.K)
Cp(C2H2,2) = 7.578e-2 ; % [=] J/(mol.K)
Cp(C2H2,3) = -5.007e-5 ; % [=] J/(mol.K)
Cp(C2H2,4) = 1.412e-8 ; % [=] J/(mol.K)
Cp(C2H4,1) = 3.806e+0 ; % [=] J/(mol.K)
Cp(C2H4,2) = 1.566e-1 ; % [=] J/(mol.K)
Cp(C2H4,3) = -8.348e-5 ; % [=] J/(mol.K)
Cp(C2H4,4) = 1.755e-8 ; % [=] J/(mol.K)
Cp(C2H6,1) = 5.409e+0 ; % [=] J/(mol.K)
Cp(C2H6,2) = 1.781e-1 ; % [=] J/(mol.K)
Cp(C2H6,3) = -6.938e-5 ; % [=] J/(mol.K)
Cp(C2H6,4) = 8.713e-9 ; % [=] J/(mol.K)
Cp(CO,1) = 3.087e+1 ; % [=] J/(mol.K)
Cp(CO,2) = -1.285e-2 ; % [=] J/(mol.K)
Cp(CO,3) = 2.789e-5 ; % [=] J/(mol.K)
Cp(CO,4) = -1.272e-8 ; % [=] J/(mol.K)
Cp(H2,1) = 2.714e+1 ; % [=] J/(mol.K)
Cp(H2,2) = 9.274e-3 ; % [=] J/(mol.K)
Cp(H2,3) = -1.381e-5 ; % [=] J/(mol.K)
Cp(H2,4) = 7.645e-9 ; % [=] J/(mol.K)
Cp(CH4,1) = 1.925e+1 ; % [=] J/(mol.K)
Cp(CH4,2) = 5.213e-2 ; % [=] J/(mol.K)
Cp(CH4,3) = 1.197e-5 ; % [=] J/(mol.K)
Cp(CH4,4) = -1.132e-8 ; % [=] J/(mol.K)
% Capacidade calorfica mdia
T2 = T * T ;
T3 = T2 * T ;
T4 = T3 * T ;
Cpaux = Cp(:,1) + Cp(:,2)*T + Cp(:,3)*T2 + Cp(:,4)*T3 ;
CCpi = ConcMol * Cpaux

CCpi =
45.6172

Esses comandos podem todos estar contidos num arquivo texto, que deve ter
a extenso .m . Dessa forma podemos calcular a propriedade temperatura
e/ou concentraes diferentes, sem ter a necessidade de digitar cada linha
novamente.
11

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
2.2. Sistema de equaes algbricas lineares
Por exemplo queremos resolver o seguinte sistema de equaes:

= +
= +
7 5 , 1 5 , 2
9 3 2
2 1
2 1
x x
x x
(02.02)
Soluo: B A x b x A . .
1
= =
No MATLAB
A = [ 2 3 ; 2.5 1.5]
b = [ 9 ; 7]
x = inv(A) * b

A =
2.0000 3.0000
2.5000 1.5000
b =
9
7
x =
1.6667
1.8889
2.3. Sistema de equaes algbricas no-lineares (SEANL)
Outra classe de problemas bastante frequente que um engenheiro qumico
enfrenta a soluo de problemas formado por equaes algbricas no
lineares (SEANL). Por exemplo, ao modelar um reator CSTR no isotrmico
em estado estacionrio:
Considere um reator CSTR, veja Figura 2.01, no qual ocorre uma reao
qumica irreversvel exotrmica, B A . Este reator tem uma camisa de
resfriamento e encontra-se em estado estacionrio.






Figura 2.01: CSTR
Fi, Ti
CAi, CBi
Fc
i

Tc
i

Fc
Tc
F, T
CA, CB
12

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
O modelo matemtico em regime estacionrio que descreve este processo :

Balano global:
( ) ( ) t F t F
i
= 0 (02.03)

Balano de massa para o reagente A:
( ) ( ) ( ) ( ) ( ) ( ) ( ) t V t t C t F t C t F
A A Ai i
. . . 0 I + = (02.04)

Balano de massa para o reagente B:
( ) ( ) ( ) ( ) ( ) ( ) ( ) t V t t C t F t C t F
B B Bi i
. . . 0 I + = (02.05)

Balano de energia no reator:
( ) ( ) ( ) ( ) ( ) ( ) ( )
R A i i
H t t V t H t F t H t F A I + = . . . . 0 (02.06)

Balano de energia na camisa do reator:
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) t Tc t T A U t Hc t Fc t Hc t Fc
i i
+ = . . . . 0 (02.07)

As equaes (02.03) a (02.07) constituem o modelo fenomenolgico no-
linear do CSTR. Considerando algumas hipteses adicionais:
Hipteses:
H1. Seo transversal do tanque constante e de rea A
t
. Ento V(t) =
A
t
.L(t)
H2. As propriedades dos componentes e da mistura no variam com a
temperatura.
H3. Energia = Entalpia
H4. Os efeitos do calor de mistura so desprezveis
H5. Reao do tipo: A B de 2
a
ordem, irreversvel. Portanto podemos
escrever:
( )
( )
I I
B A A o
E
R T
A
k T C k e C = = =

+
|
\

|
.
|
. . .
. . 2 273 15 2

H6. A camisa est completamente preenchida pelo fluido de refrigerao, ou
seja
F
c
= F
ci


13

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Ento, omitindo a explicitao da dependncia com o tempo ( ) t e
considerando as hipteses acima, podemos escrever:

t t
i
A
F
A
F
= 0 (02.08)
( )
( ) 2 15 . 273 .
. .
1
0
A
T R
E
o A Ai
t
i
C e k C C
L A
F
|
|
.
|

\
|
+

= (02.09)
( )
( ) 2 15 . 273 .
. .
1
0
A
T R
E
o B Bi
t
i
C e k C C
L A
F
|
|
.
|

\
|
+

+ = (02.10)
( )
( )
( )
c
t
A
T R
E
o R
i
t
i
T T
L A Cp
A U
C e
Cp
k H
T T
L A
F

A
=
|
|
.
|

\
|
+

1
. .
.
.
.
. 1
0
2 15 . 273 .

(02.11)
( ) ( )
c
c c c
c ci
c
c
T T
V Cp
A U
T T
V
F
+ =
. .
.
0

(02.12)

Portanto o modelo formado por um sistema de 5 equaes algbricas no
lineares.

Para resolver esse sistema de equaes vamos utilizar o comando fsolve .
A sintaxe do comando fsolve a seguinte:
solucao = fsolve('seanl',estimativa_inicial)

onde seanl :
- uma M-function que contm o Sistema de Equaes
Algbricas No Lineares a ser resolvido;
- uma m-function um arquivo com extenso .m apresenta na
primeira linha a palavra reservada function , neste caso o
nome do arquivo seanl.m

Para o CSTR teremos, por exemplo

14

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
nome do arquivo: CSTR_estado_estacionario.m

function [f] = CSTR_estado_estacionario(x)

V = 7.08 ; % volume do reator [=] m3
ro = 19.20 ; % [=] kmol/m3
Cp = 1.815e5 ; % [=] J/(kmol.oC)
A = 5.40 ; % rea de troca trmica [=] m2
roc = 1000.00 ; % [=] kg/m3
ko = 0.0744 ; % [=] m3/(s.kmol)
dHR = -9.86e7 ; % [=] J/kmol
U = 3550.00 ; % [=] J/(s.m2.oC)
Vc = 1.82 ; % [=] m3
Cpc = 4184.00 ; % [=] K/(kg.oC)
E = 1.182e7 ; % [=] J/kmol
Fcmax = 0.02 ; % [=] m3/s
Rg = 8314.39 ; % [=]
g = 9.81 ; % [=] m/s2
Rt = ( 2 * V / ( 2 * pi ) ) ^ (1/3) ; % Lmax = 2R , e L = 50% Lmax
At = pi * Rt ^ 2 ; % rea transversal do tanque (L=2R) [=] m2
Lt = V / At ; % nvel de projeto [=] m
Ft = 7.5e-3 ; % vazo de descarga de projeto [=] m3/s
alfaL = Ft / sqrt( ro * g * Lt ) ; % constante de proporcionalidade para F
L = V / At ; % [=] m
CAi = 2.88 ; % [=] kmol/m3
CBi = 0 ; % [=] kmol/m3
Ti = 66 ; % [=] oC
Tci = 27 ; % [=] oC
Fi = 7.5e-3 ; % [=] m3/h
Fci = 7.392e-3 ; % [=] m3/h
Fc = Fci ;
F = x(1) ;
CA = x(2) ;
CB = x(3) ;
T = x(4) ;
Tc = x(5) ;
V = At * L ;
ex = exp( - E / ( Rg * ( T + 273.15 ) ) ) ;
k = ko * ex ;
kCA = k * CA ;
G = kCA * CA ;
UA = U * A ;
roCp = ro * Cp ;
VroCp = V * roCp ;
FiV = Fi / V ;
FiVL = FiV * L ;
FcVc = Fc / Vc ;
VcrocCpc = Vc * roc * Cpc ;

f(1) = ( Fi - F ) / At ;
f(2) = FiV * ( CAi - CA ) - G ;
f(3) = FiV * ( CBi - CB ) + G ;
f(4) = FiV * ( Ti - T ) - dHR * G / roCp - UA * ( T - Tc ) / VroCp ;
f(5) = FcVc * ( Tci - Tc ) + UA * ( T - Tc ) / VcrocCpc ;

Ento, aps criar o arquivo CSTR_estado_estacionario.m e mudar para sua
pasta de trabalho, para tanto use o comando cd ou use o boto ,
execute as seguintes instrues:
estimativa_inicial = [0.0067 1.0173 1.5747 79.1296 45.2805];
x = fsolve('CSTR_estado_estacionario',estimativa_inicial);
disp(x)
Voc deverr obter a soluo do SEANL:
x = [ 0.0075 1.1303 1.7497 87.9218 50.3117];
15

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
3 SISTEMA DE EQUAES DIFERENCIAIS
ORDINRIAS - SEDO
Muito frequente tambm so os sistemas de equaes diferenciais ordinrias.
Por exemplo no caso do CSTR em regime transiente, o modelo dado por
um SEDO:
f
dL
dt
F
A
F
A
i
t t
1
= =
(03.01)
( )
( )
f
dC
dt
F
A L
C C k e C
A i
t
Ai A o
E
R T
A 2
273 15 2
1
= =

+
|
\

|
.
|
. .
. .
(03.02)
( )
( )
f
dC
dt
F
A L
C C k e C
B i
t
Bi B o
E
R T
A 3
273 15 2
1
= = +

+
|
\

|
.
|
. .
. .
(03.03)
( )
( )
( ) f
dT
dt
F
A L
T T
H k
Cp
e C
U A
Cp A L
T T
i
t
i
R o
E
R T
A
t
c 4
273 15 2
1 1
= =

+
|
\

|
.
|
A .
.
.
.
. .
. .

(03.04)
( ) ( ) f
dT
dt
F
V
T T
U A
Cp V
T T
c c
c
ci c
c c c
c 5
= = +
.
. .
(03.05)

Existem 3 formas diferentes de resolver esse problema utilizando o
MATLAB/SIMULINK:
1. Atravs do uso do Differential Equation Editor;
2. Atravs do uso do SIMULINK e S-FUNCTIONS;
3. Atravs do uso dos comandos ode23, ode45, ode113, ode15s, ode23s,
ode23t, ode23tb, rk45, rk23 e M-FUNCTIONS;

Na Tabela 3.01 observamos em que situaes cada alternativa de soluo de
SEDOs a mais recomendada.
16

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Tabela 3.01: Alternativas para resoluo de SEDOs e recomendaes
Situao
Differential
Equation Editor
odeXX ou rkXX e
M-FUNCTIONS
SIMULINK e
S-FUNCTIONS
Nmero de
equaes
diferenciais
poucas (at 2) poucas ou muitas poucas ou muitas
Uso em
problemas de
simulao
sim sim sim
Uso em
problemas de
controle
no no sim
Uso em
problemas de
otimizao
no sim no
Exemplo de
utilizao
digite dee na
linha de comando
comando help
odeXX ou rkXX
pasta
CSTR_transiente
ou pasta pH
ou pasta BATCH


Figura 3.01: Problema VDP (Van der Pol) utilizando o dee
17

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Resolvendo o VDP por ode45:
a) Crie uma M-FUNCTION denominada de vdp.m:
function [ derivada ] = vdp(t,x,u)
derivada(1) = x(1) .* (1 - x(2).^2) - x(2) ;
derivada(2) = x(1) ;
derivada = derivada' ; % criando vetor coluna

b) Digite o seguinte comando [t,y] = ode45('vdp',[0;20],[1;1]) ;
c) Plote o grfico y versus t: plot(t,y); xlabel('t (s)'); ylabel('Y (u.e.)')

Figura 3.02: Variveis de sada da equao de Van der Pol
Para observar um exemplo do uso do SIMULINK para resolver equaes
diferenciais mude para a pasta CSTR_transiente e digite cstr na linha de
comando. Neste caso o modelo de um reator CSTR formado por 5 equaes
diferenciais ordinrias resolvido.
Outro exemplo dado na pasta pH na qual o sistema de neutralizao em
malha fechada da GRIFFIN simulado. Neste caso digite pH na linha de
comando do MATLAB para executar a simulao.
Utilizando o MATLAB podemos, tambm, simular processos a batelada, como
podemos observar no exemplo da pasta BATCH. Neste caso digite batch
na linha de comando do MATLAB para executar a simulao.
18

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
3.1. Uso de M-FUNCTION Exemplo: Reator a Batelada
Para ilustrar um exemplo de uso da instruo ode45 considere um processo
a batelada. Utilizaremos o reator descrito por Luyben
|
.
Considere um reator qumico a batelada no qual a temperatura da parede do
reator pode ser controlada com perfeio e no qual ocorre a seguinte reao
em fase lquida:
A B C
k k
1 2

Equao 1
Sistemas reacionais como o da equao 1 so relativamente comuns em
processos qumicos, por exemplo, oxidao de hidrocarbonetos ou clorao
de aromticos. E nesses casos o produto intermedirio sempre o mais
desejado.

O reator pode ser visto na Figura 5.01. Existe uma camisa de refrigerao ou
de aquecimento que garante o calor necessrio para esfriar ou aquecer a
parede at a temperatura T
M
desejada.










Figura 3.03: Reator a batelada com camisa de
aquecimento/arrefecimento

A cintica e sua dependncia com a temperatura conhecida. O objetivo
deste processo produzir a substncia B . O tempo de batelada fixo e
conhecido (200 minutos).


|
Luyben, W. L. Process Modeling, Simulation and Control for Chemical
Engineers. McGraw-Hill, pginas 57-61, 150-157. 1989 .
T
M
T
M

T
C
A

C
B

Fluido de
aquecimento ou
de arrefecimento
T
M
19

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
As taxas de consumo das substncias (cintica das reaes) podem ser
assim descritas:
( ) I
A A
k T C =
1

Equao 2
( ) ( ) I
B A B
k T C k T C =
1 2

Equao 3
onde ( ) k T k
E
RgT
i
i i
o i
=
|
\

|
.
| = exp , , 1 2
Os dados e valores dos parmetros deste modelo dado abaixo:
C
A
o
= 0.80 lb-mol/ft
3
C
B
o
= 0 lb-mol/ft
3

k
1
o
= 729.55 min
-1
k
2
o
= 6567.6 min
-1

E
1
= 15.000 Btu/lb-mol E
2
= 20.000 Btu/lb-mol

Modelo matemtico

A) Balano de massa:
( )
dVC
dt
V Vk T C
A
A A
= = I
1

Equao 4
( ) ( )
| |
dVC
dt
V V k T C k T C
B
B A B
= = I
1 2

Equao 5
como o volume do meio reacional constante (reao em
fase lquida), obtemos:
( ) ( )
dC
dt
k T C C C
A
A A A A
o
= = = I
1
0 ,
Equao 6
( ) ( ) ( )
dC
dt
k T C k T C C C
B
B A B B B
o
= = = I
1 2
0 ,
Equao 7

20

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
B) Balano de energia:

( ) ( )
dT
dt
H
Cp
k T C
H
Cp
k T C
Q
V Cp
A B
M
= +
A A
1
1
2
2


Equao 8

onde
( ) Q h A T T
M i i M
=
Equao 9

h
i
= 160 Btu/(h.
o
F.ft
2
)
A
i
= 56.5 ft
2

= 50 lb
m
/ft
3
AH
1
= -40.000 Btu/lb-mol

AH
2
= -50.000 Btu/lb-mol



Utilizando o MATLAB podemos, tambm, simular processos a batelada, como
podemos observar no exemplo da pasta BATCH. Neste caso digite batch
na linha de comando do MATLAB para executar a simulao.

21

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
O cdigo do programa principal (batch.m) o seguinte:
clear all; clc; close all
% Universidade Federal da Bahia
% Escola Politcnica
% Departamento de Engenharia Qumica
% Professor: Ricardo de Araujo Kalid (e-mail: kalid@ufba.br)
% Data: 31 de janeiro de 2001
% Reator a Batelada
% 3 Equaes diferenciais
% Exerccio Luyben pg151
% Temperatura do fluido refrigerante
TM = 50 ;
% Tempo de simulao
tempo = 40 ;
% Condies iniciais
CAo = 0.8 ;
CBo = 0.0 ;
To = 80.0 ;
% Constantes cinticas e outras constantes
A1 = 729.55 ;
A2 = 6567.60 ;
En1 = 15000 ;
En2 = 20000 ;
dHr1 = -40000 ;
dHr2 = -50000 ;
ro = 50 ;
Cp = 1 ;
V = 42.5 ;
hi = 160.0 ;
Area = 56.5 ;
Rg = 1.987 ;
parametros = [A1 A2 En1 En2 dHr1 dHr2 ro Cp V hi Area Rg TM ] ;
% Simulao
x0 = [ CAo CBo To ] ;
% Integrao balanos de massa e energia
opcoes = [ ] ;
[time,x] = ode45(@balancos,[0,tempo],x0,opcoes,parametros) ;
CA = x(:,1) ;
CB = x(:,2) ;
T = x(:,3) ;
% Grficos
figure(1)
set(1,'Name','Perfil Temp. no Tempo')
plot(time,T,'r',time,TM,'b')
title('Perfil da Temperatura ao Longo do Tempo')
ylabel('Temperat. (oF)')
xlabel('T (verm) TM (azul) tempo (min)')
figure(2)
set(2,'Name','Perfil da Concetrao de CA')
plot(time,CA,'b')
title('Perfil de CA ao Longo do Tempo')
ylabel('CA (lb-mol/ft3)')
xlabel('CA (azul) - tempo (min)')
figure(3)
set(2,'Name','Perfil da Concetrao de CB')
plot(time,CB,'r')
title('Perfil de CB ao Longo do Tempo')
ylabel('CB (lb-mol/ft3)')
xlabel('CB (verm) - tempo (min)')
% Salvamento
save simulacao
% Fim deste arquivo

22

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
O programa principal chama a rotina de integrao (ode45), que tem como
um de seus argumentos a function que tem o modelo do processo. Ou seja,
necessrio escrever os balanos de massa e energia do sistema na
function denominada balancos.m .

function [ dxdt ] = balancos( time , x , parametros)

% Universidade Federal da Bahia
% Escola Politcnica
% Departamento de Engenharia Qumica
% Professor: Ricardo de Araujo Kalid (e-mail: kalid@ufba.br)
% Data: 31 de janeiro de 2001

% Reator a Batelada
% 3 Equaes diferenciais
% Exerccio Luyben pg151

% Function que define os balanos de massa

i = 1 ;
A1 = parametros(i); i = i + 1 ;
A2 = parametros(i); i = i + 1 ;
En1 = parametros(i); i = i + 1 ;
En2 = parametros(i); i = i + 1 ;
dHr1 = parametros(i); i = i + 1 ;
dHr2 = parametros(i); i = i + 1 ;
ro = parametros(i); i = i + 1 ;
Cp = parametros(i); i = i + 1 ;
V = parametros(i); i = i + 1 ;
hi = parametros(i); i = i + 1 ;
Area = parametros(i); i = i + 1 ;
Rg = parametros(i); i = i + 1 ;
TM = parametros(i); i = i + 1 ;

CA = x(1) ;
CB = x(2) ;
T = x(3) ;

k1 = A1 * exp( - En1/(Rg*(T+460)) ) ;
k2 = A2 * exp( - En2/(Rg*(T+460)) ) ;
QM = hi * Area * ( T - TM ) ;

dC1dt = - k1 * CA ;
dC2dt = + k1 * CA - k2 * CB ;
dTdt = - dHr1*k1*CA/(ro*Cp) + dHr2*k2*CB/(ro*Cp) - QM/(V*ro*Cp) ;

dxdt = [ dC1dt
dC2dt
dTdt ] ;

% Fim deste arquivo

Essa function que chamada por uma rotina que resolve um SEDO
obrigatoriamente deve ter:
23

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
a) dois argumentos de entrada, o tempo e a varivel de estado, no mnimo;
b) um argumento de sada, as equaes diferenciais;
c) os parmetros foram passados para a function atravs de argumentos
adicional na funo ode45;
d) para evitar confuso denomine o nome da function o mesmo nome do
arquivo que a contm, pois a relao do MATLAB dada pelo nome do
arquivo e no pelo nome da function .
3.2. S-function
Os exemplos utilizando o SIMULINK fazem uso de uma estrutura de
programao denominada S-function.
Embora seja possvel utilizar o SIMULINK com M-function a forma mais
eficiente do ponto de vista computacional empregando a S-function, por
isso nessa seo nos concentraremos no estudo dessa estrutura de
programao do MATLAB/SIMULINK.

Uma S-function comea com a instruo function e formada por sees:

- Seo 0 (zero) para flag = 0
- inicializao do sistema formado por SEDO (Sistema de
Equaes Diferenciais Ordinrias)
- definio do tamanho do SEDO a ser resolvido
- definio da condio inicial do SEDO

- Seo 1 (um) para flag = 1
- definio das equaes do modelo SEDO
- utilizada quando temos modelos contnuos
- retorna as derivadas das variveis de estado
( )
dt
t dx


- Seo 2 (dois) para flag = 2
- definio das equaes de diferenas
- utilizada quando temos modelos discretos
- retorna os estados discretos x(n+1)

- Seo 3 (trs) para flag = 3
- definio das equaes de sada do sistema
- retorna um vetor com as variveis de sada do sistema y(t)

- Seo 4 (quatro) para flag = 4
- retorna o prximo intervalo de tempo para atualizao do
modelo discreto
24

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Nos exemplos que estudaremos utilizaremos modelo contnuos.

3.2.1 S-function: Exemplo 1:
SEDOL - Espao de estados lineares

Seja o seguinte modelo em espao de estados lineares e invariantes no
tempo:

+ =
+ =
u D x C y
u B x A x
. .
. .

onde A, B, C, e D so matrizes. Por exemplo:
A = [ -0.3 0 0 ; 2.9 -0.62 -2.3 ; 0 2.3 0 ]
B = [ 1 ; 0 ; 0 ]
C = [ 1 1 0 ; 1 -3 1 ]
D = [ 1 ; 0 ]
A =
-0.3000 0 0
2.9000 -0.6200 -2.3000
0 2.3000 0
B =
1
0
0
C =
1 1 0
1 -3 1
D =
1
0
Para resolver esse SEDO-L tambm precisamos de uma condio inicial:
xInicial = [ 1 ; 1 ; 1 ]
xInicial =
1
1
1
Este problema tem 3 estados , 1 entrada e 2 variveis de sada
25

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Escrevendo a S-function : sedoL.m :

function [sys,x0] = sedoL(t,x,u,flag)

% Definio das constantes
A = [ -0.3 0 0 ; 2.9 -0.62 -2.3 ; 0 2.3 0 ] ;
B = [ 1 ; 0 ; 0 ] ;
C = [ 1 1 0 ; 1 -3 1 ] ;
D = [ 1 ; 0 ] ;

if abs(flag) == 1
% Clculo das derivadas dos estados
sys(1,1) = A(1,1)*x(1) + A(1,2)*x(2) + A(1,3)*x(3) + B(1)*u(1) ; % Equao dx1/dt
sys(2,1) = A(2,1)*x(1) + A(2,2)*x(2) + A(2,3)*x(3) + B(2)*u(1) ; % Equao dx2/dt
sys(3,1) = A(3,1)*x(1) + A(3,2)*x(2) + A(3,3)*x(3) + B(3)*u(1) ; % Equao dx3/dt
% Ou poderia ser: sys = A*x + B*u ;

elseif abs(flag) == 3
% Transformando as variveis de estado em variveis de sada
sys(1,1) = C(1,1)*x(1) + C(1,2)*x(2) + C(1,3)*x(3) + D(1)*u(1) ; % Equao y1(t)
sys(2,1) = C(2,1)*x(1) + C(2,2)*x(2) + C(2,3)*x(3) + D(2)*u(1) ; % Equao y1(t)
% Ou poderia ser: sys = C*x + D*u ;

elseif flag == 0
% Inicializao do sistema
x0 = [ 1 ; 1 ; 1 ] ; % Condies inciais
sys(1,1) = 3 ; % Nmero de estados contnuos
sys(2,1) = 0 ; % Nmero de estados discretos
sys(3,1) = 2 ; % Nmero de sadas
sys(4,1) = 1 ; % Nmero de entradas
sys(5,1) = 0 ; % Nmero de raizes discretas
sys(6,1) = 1 ; % Usado em sistemas de sistemas, use sempre 1
else
sys = [];
end

Para editar o arquivo sedoL.m utilize o editor de programas que vem
associado ao MATLAB.
Para utilizar a S-function execute o modelo sedo.mdl: mude para a pasta
SEDO/Sfunction, depois digite sedo esse nome na linha de comando do
MATLAB. Ento aparecer o seguinte sintico:
SEDO Linear
u
Y2
Y1
tempo
To Workspace3
u
To Workspace2
y2
To Workspace1
y1
To Workspace
Step
sedoL
S-Function
0
Display1
0
Display
m
Demux
Clock

Figura 3.04: Sistema SEDO linear sem passagem argumentos.
S-function
26

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Para criar um sintico utilize o comando SIMULINK na linha de comando do
MATLAB, ou click no boto
Outra forma de resolver sistemas de equaes diferenciais lineares pode ser
observada ao digitar sedoStateSpace na linha de comando do MATLAB,
aparecer ento o seguinte sintico
SEDO Linear - State-Space
uss
Y2ss
Y1ss
temposs
To Workspace3
uss
To Workspace2
y2ss
To Workspace1
y1ss
To Workspace
Step
x' = Ax+Bu
y = Cx+Du
State-Space
0
Display1
0
Display
m
Demux
Clock

Figura 3.04: Sistema SEDO linear com passagem de argumentos.
Se voc executar esse sintico ou o anterior, o resultado ser o mesmo, pois
ambos fazem a mesmssima coisa. Apenas a mscara do sintico
sedoStateSpace mais amigvel:

Figura 3.05: Passagem dos argumentos para o SEDO.
Boto para
executar a
simulao
27

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
3.2.2 S-function: Exemplo 2: Espao de estados no-lineares
SEDONL : CSTR em regime transiente
Aps mudar para pasta CSTR_transiente digite CSTR na linha de comando
do MATLAB. A S-function dessa simulao S_sedo.m a seguinte:
function [sys,x0] = S_sedo(t,x,u,flag)
% Planta: CSTR
% Autor: Ricardo Kalid
% kalid@ufba.br
% Interface no Simulink para S_sedo.m
% Inputs:
% t : tempo em segundos
% x : estados do sistema
% u : perturbaes externas ou variveis manipuladas
% Outputs: sys e x0 como descritos no manual do SIMULINK
% quando flag 0 , sys contem as dimenses dos vetores e
% x0 contem as condies iniciais,
% quando flag 1 , sys contem as derivadas,
% quando flag 3 , sys contem as sadas:
global VetorAdim
global CondicoesIniciais
global NumEstados NumVarManip NumVarDistMed
global ro Cp A roc ko dHR U Vc Cpc E Rg
global At g alfaL VetorAdim TipoVazaoDescarga
if abs(flag) == 1
% Clculo das derivadas dos estados
x = x .* [ x > 0 ] ;
sys = M_cstr(t,x,u) ;
elseif abs(flag) == 3
% Transformando as variveis de estado em variveis de sada
sys(1,1) = x(1) * VetorAdim(1) ; % L = nvel do reator [=] m
sys(2,1) = x(2) * VetorAdim(2) ; % CA = concentrao do reagente A [=] kmol/m3
sys(3,1) = x(3) * VetorAdim(3) ; % CB = concentrao do produto B [=] kmol/m3
sys(4,1) = x(4) * VetorAdim(4) ; % T = temperatura do reator [=] oC
sys(5,1) = x(5) * VetorAdim(5) ; % Tc = temperatura da camisa [=] oC
% Vazo de descarga do reator
% Se F = F(L) ==> F = alfaL * P^0.5
% F independe de L e no existe controle de nvel ==> F = ve(12)
% Controle de nvel perfeito ==> F = Fi
L = sys(1,1) ; % nvel [=] m
Fi = u(1) ; % vazo da alimentao [=] m3/s
if TipoVazaoDescarga == 1
P = ro * g * L ; % presso na tubulao de descarga
F = alfaL * sqrt ( P ) ; % vazo proporcional ao nvel (L)
elseif TipoVazaoDescarga == 2
F = u(7) ; % vazo da descarga fornecida,
% fixada pelo usurio ou pelo sistema de controle [=] m3/s
elseif TipoVazaoDescarga == 3
F = Fi ; % controle perfeito do nvel (L)
else
disp( ' Problemas em S_SEDO.M' )
disp( ' Escolha TipoVazaoDescarga = 1 , 2 ou 3' )
break
end
sys(6,1) = F ; % F = vazo de descarga do reator [=] m3/s
elseif flag == 0
% Inicializao do sistema
x0 = CondicoesIniciais ;
sys(1,1) = NumEstados ; % Nmero de estados contnuos
sys(2,1) = 0 ; % Nmero de estados discretos
sys(3,1) = NumEstados + 1 ; % Nmero de sadas
sys(4,1) = NumVarManip + NumVarDistMed - 1 ; % Nmero de entradas
sys(5,1) = 0 ; % Nmero de raizes discretas
sys(6,1) = 1 ; % Usado em sistemas de sistemas, use 1
else
sys = [];
end
% Fim deste arquivo
28

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
As equaes diferenciais do modelo matemtico do CSTR esto na
M-function M_cstr.m listada abaixo.

function Derivadas = M_cstr(t,x,u)

% Funo para clculo do Sistema de Equaes Diferenciais Ordinrias
% que representa a PLANTA do CSTR

% Dados passados
global ro Cp A roc ko dHR U Vc Cpc E Rg
global At g alfaL VetorAdim TipoVazaoDescarga

% Estados do sistema
L = x(1) * VetorAdim(1) ; % nvel do reator [=] m
CA = x(2) * VetorAdim(2) ; % concentrao do reagente A [=] kmol/m3
CB = x(3) * VetorAdim(3) ; % concentrao do produto B [=] kmol/m3
T = x(4) * VetorAdim(4) ; % temperatura do reator [=] oC
Tc = x(5) * VetorAdim(5) ; % temperatura da camisa [=] oC

% Entradas do sistema
Fi = u(1) ; % vazo da carga [=] m3/s
CAi = u(2) ; % concentrao do reagente A na carga [=] kmol/m3
CBi = u(3) ; % concentrao do produto B na carga [=] kmol/m3
Ti = u(4) ; % temperatura da carga [=] oC
Tci = u(5) ; % temperatura do fluido refrigerante [=] oC
Fc = u(6) ; % vazo do fluido refrigerante [=] m3/s

% Vazo de descarga do reator
% Se F = F(L) ==> F = alfaL * P^0.5
% F independe de L e no existe controle de nvel ==> F = ve(12)
% Controle de nvel perfeito ==> F = Fi

if TipoVazaoDescarga == 1
P = ro * g * L ; % presso na tubulao de descarga
F = alfaL * sqrt ( P ) ; % vazo proporcional ao nvel (L)
elseif TipoVazaoDescarga == 2
F = u(7) ; % vazo da descarga fornecida,
% fixada pelo usurio ou pelo sistema de controle [=] m3/s
elseif TipoVazaoDescarga == 3
F = Fi ; % controle perfeito do nvel (L)
else
disp( ' Problemas em M_SEDO.M' )
disp( ' Escolha TipoVazaoDescarga = 1 , 2 ou 3' )
break
end

if ( L <= eps | CA <= eps | CB <= eps | T <= eps | Tc <= eps )
disp( ' F Fc L CA CB T Tc ' )
disp( [ F Fc L CA CB T Tc ] )
disp( ' Problemas em SEDO.M' )
break
end

% Sistema de Equaes Diferenciais Ordinrias (SEDO)
sedo ;

% Adimensionalizao, quando for o caso
Derivadas = Derivadas ./ VetorAdim ;

% Fim deste arquivo



29

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
M-file sedo.m :
% SEDO

V = At * L ;
ex = exp( - E / ( Rg * ( T + 273.15 ) ) ) ;
k = ko * ex ;
kCA = k * CA ;
G = kCA * CA ;
UA = U * A ;
roCp = ro * Cp ;
VroCp = V * roCp ;
FiV = Fi / V ;
FiVL = FiV * L ;
FcVc = Fc / Vc ;
VcrocCpc = Vc * roc * Cpc ;

dLdt = ( Fi - F ) / At ;
dCAdt = FiV * ( CAi - CA ) - G ;
dCBdt = FiV * ( CBi - CB ) + G ;
dTdt = FiV * ( Ti - T ) - dHR * G / roCp - UA * ( T - Tc ) / VroCp ;
dTcdt = FcVc * ( Tci - Tc ) + UA * ( T - Tc ) / VcrocCpc ;

Derivadas = [ dLdt
dCAdt
dCBdt
dTdt
dTcdt ] ;

Portanto, de maneira clarssima(?!) observamos que
sedo.m um M-file que ser includo na M-function M_cstr.m que, por
sua vez, uma subrotina da S-function S_sedo.m, chamada pelo sintico
cstr1sim.mdl (ou cstr2sim.mdl ou cstr3sim.mdl )
ou melhor
sedo.m um M-file que ser includo na M-function M_cstr.m
M_cstr.m uma M-function, subrotina da S-function S_sedo.m
S_sedo.m uma S-function, executada pelo sintico cstr1sim.mdl
ou ainda
cstr1sim.mdl chama S_sedo.m que chama M_cstr.m que inclui sedo.m
ou seja
cstr1sim.mdl manda em S_sedo.m, que manda M_cstr.m, que manda em
sedo.m, que calcula as derivadas ( o peo).

Figura 3.06: Conexo entre arquivos .m, function,
s-function e arquivos .mdl.
30

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
3.2.3 S-function: Exemplo 3: Espao de estados no-lineares
SEDONL : neutralizao de pH em malha fechada

Abaixo vemos o sintico de um sistema de controle de neutralizao de
correntes alcalinas.

Neutralizao de correntes alcalinas Cl i que duas vezes sobre "?"
para obter mai ores i nformaes
L/h
PV
ci do
pH's
pH3
pH sada do
3 tanque
pH1
pH sada do
1 tanque
pH2
pH sada do
2 tanque
30
Vazo para
tanque reserva
Vazo para
CETREL
Vazo de descarga
Vazo de carga
Freciclo
Vazo de
reciclo (m/h)
Fcetrel
Freserva
Fdescarga
Vazo de
descarga (m/h)
U 91: vazo (m/h)
U 16: vazo (m/h)
U 15: vazo (m/h)
U 13: vazo (m/h)
U 11: vazo (m/h)
tempo
Setpoint do
Efluente
<=
>=
>=
B
A
C
I
A
2
L
Nvel do tanque 3 (m)
Mux
Mux
?
NOR
Sal var
Dados
Carregar
Rei ni ci al i zar
Dados
5.5
Limites inferior
9.5
Limite superior
90*2.3/100
LHH para mandar para
tanque reserva
50*2.3/100
L set point (m)
Out2
Out1
Acido
U91
U16
U15
U13
U11
FVC2
NF
FVC1
NF
eng=>mA
mA=>eng
mA=>eng
mA=>eng
Conversor
pH 3
mA=>eng
Conversor
pH 2
mA=>eng
Conversor
pH 1
mA=>eng
Conversor
L 1
eng=>mA
Conversor
AC1
AR
LC1
AC2
AD

Figura 3.07: Sintico de sistema de controle de pH
O sistema tm duas malhas de controle, uma de nvel (LC1) e uma de pH
(AC1 controlador mestre do AC2).
Os controladores so do tipo PID (Proporcional + Integral + Derivativo).
Alm do sistema de controle tambm est simulado o sistema de
intertravamento, que atua se o pH estiver fora da faixa e/ou se o nvel do 3
compartimento estiver muito alto ou muito baixo.
Esta simulao demonstra a grande versatilidade do MATLAB/SIMULINK
para representar processos. Alm disso essa plataforma computacional
muito mais fcil de programar que as tradicionais linguagens de alto nvel,
tipo FORTRAN, C etc. Mesmo quando comparada com o Visual C++ ou
Visual Basic, o MATLAB leva grande vantagens no desenvolvimento de
simuladores para a processos contnuos e/ou discretos.
O corao do modelo desenvolvido para representar o pH da mistura a partir
do pH das correntes individuais:
31

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316

% pH de entrada para o 1 tanque de neuralizao
% Mdia ponderada com as vazes das correntes de alimentao (alcalinas e cido)
% Considero que a mistura perfeita xxk
pH_mistura = ( vaz_U11 / (vaz_ent_base + eps) - Us_na_mist_01(1) ) * pH_U_11_12i + ...
( vaz_U13 / (vaz_ent_base + eps) - Us_na_mist_01(2) ) * pH_U_13_14i + ...
( vaz_U15 / (vaz_ent_base + eps) - Us_na_mist_01(3) ) * pH_U_15i + ...
( vaz_U16 / (vaz_ent_base + eps) - Us_na_mist_01(4) ) * pH_U_16i + ...
( vaz_U91 / (vaz_ent_base + eps) - Us_na_mist_01(5) ) * pH_U_91labi + ...
pH_U_mist_01i ;
vol_mistura = (vaz_U11/(vaz_ent_base+eps) - Us_na_mist_01(1)) * vol_PSA_U_11_12i + ...
(vaz_U13/(vaz_ent_base+eps) - Us_na_mist_01(2)) * vol_PSA_U_13_14i + ...
(vaz_U15/(vaz_ent_base+eps) - Us_na_mist_01(3)) * vol_PSA_U_15i + ...
(vaz_U16/(vaz_ent_base+eps) - Us_na_mist_01(4)) * vol_PSA_U_16i + ...
(vaz_U91/(vaz_ent_base+eps) - Us_na_mist_01(5)) * vol_PSA_U_91labi + ...
vol_PSA_mist_01i ;
% interpolao linear para considerar o reciclo xxk
pH_mistura = ( pH_mistura * vaz_ent_base + pH_reciclo * vaz_rec ) / ...
vaz_ent_base_reciclo ;
vol_mistura = ( vol_mistura * vaz_ent_base + vol_reciclo * vaz_rec ) / ...
vaz_ent_base_reciclo ;
% o pH do reciclo acho mais correto considerar como sendo o pH da sada do 3 tanque
% na iterao anterior xxk
pH_reciclo = pH_mistura ;
vol_reciclo = vol_mistura ;
pH_mistura_matriz = [ pH_mistura_matriz ; pH_mistura' ] ;
vol_mistura_matriz = [ vol_mistura_matriz ; vol_mistura' ] ;

% Clculo da cuuva de neutralizao (ganho do processo) do 1 tanque
% falta considerar o efeito da variao da vazo e qualidade das alimentaes e do
% cido no pH da mistura
x = vol_mistura ;
y = pH_mistura ;
metodo = 'linear' ;
vaz_aux = vaz_A / fator_de_escala ; % correo da diferena de conc. do cido
pH_tq_ent(1) = interp1(x,y,vaz_aux,metodo) ;
% pH de entrada para os demais tanques de neuralizao
pH_tq_ent(2) = pH_tq(1) ;
pH_tq_ent(3) = pH_tq(2) ;
% Sistema de Equaes Diferenciais Ordinrias (SEDO)
tal(1) = vol_util(1) / vaz_ent ;
tal(2) = vol_util(2) / vaz_ent ;

% existe um certo erro,
% mas se o controle de nvel for perfeito ento o tal(3) est correto
tal(3) = vol_util(3) / vaz_sai ;
dnivel_tq3dt = ( vaz_ent - vaz_sai ) / area_total(3) ;
dpH_tqdt(1) = ( pH_tq_ent(1) - pH_tq(1) ) / tal(1) ;
dpH_tqdt(2) = ( pH_tq_ent(2) - pH_tq(2) ) / tal(2) ;
dpH_tqdt(3) = ( pH_tq_ent(3) - pH_tq(3) ) / tal(3) ; % xxk
Derivadas = [ dnivel_tq3dt ; dpH_tqdt(1) ; dpH_tqdt(2) ; dpH_tqdt(3) ] ;
% Fim deste arquivo

Na pasta SEDO/pH tem uma prtica para operao em malha aberta do
sistema de controle de pH: pH_ma.mdl .

Exerccio: Implemente no sistema de controle de pH controladores conforme
o sintico.
32

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
3.2.4 S-function: Exemplo 4: Espao de estados no-lineares
SEDONL : reator PFR em estado estacionrio
Considere um reator tubular em estado estacionrio, no qual ocorrem as
seguintes reaes qumicas:

(R1) Hidrogenao do acetileno a etileno: C H H C H
2 2 2 2 4
+
( )( )
I
1
1
1 1
=
+ + +
k K P K P
K P K P K P
H H C H C H
C H C H CO CO H H
2 2 2 2 2 2
2 2 2 2 2 2


(R2) Hidrogenao do etileno a etano: C H H C H
2 4 2 2 6
+
( )( )
2 2 4 2 4 2
4 2 4 2 2 2
H H CO CO H C H C
H C H C H H 2
2
1 1 P K P K P K
P K P K k
+ + +
= I

O reator cataltico, adiabtico cuja carga composta por C
2
H
2
, C
2
H
4
, C
2
H
6
,
CO, H
2
e CH
4
. O C
2
H
2
a substncia que deve ser convertida a C
2
H
4
,
contudo parte desta subtncia convertida em C
2
H
6
(reao indesejada). O
monxido de carbono um agente que aumenta a seletividade do
catalisador. O metano inerte.
O modelo em regime estacionrio para esse processo dado por
1
2
2 2
2 2
tR
dF
dz
C H
G
C H
= I
( ) v C Cp
dT
dz
H H
i i
i
nc
=

|
\

|
.
|
= +
1
1 1 1 2 2 2
A I A I o o
( )
F F F F F F
C H C H
o
H
o
H C H
o
C H
2 6 2 6 2 2 2 2 2 2
= +
( ) ( )
F F F F F F
C H C H
o
C H
o
C H C H C H
o
2 4 2 4 2 2 2 2 2 6 2 6
= +
1
2
2
2
tR
dF
dz
H
G
H
= I


Na prxima pgina observamos o sintico co reator tubular. Para executar o
simulador, mude para a pasta SEDO/Conversor de acetileno e digite
pfr_estacionario na linha de comando do MATLAB.
33

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316

Figura 3.08: Sintico da simulao em estado estacionrio do conversor de acetileno
34

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
4 SISTEMA DE EQUAES DIFERENCIAIS PARCIAIS
4.1. Soluo pelo mtodo das linhas para 1 (uma) EDP
Considere uma equao diferencial parcial conforme (4.01):
( ) ( )
( )
( )
( )
( )
, ,
,
. . : 0 1
0 1
. . : 0 :
0 0
x t z x t z
x t z
t z
C C z x t
x z
C I t reator vazio
x z
c c
|
c c
=
= =
= =

=

= =

(4.01)
Aproximanda a derivada parcial em relao a dimenso espacial por
diferenas finitas para trs em 4 pontos, conforme a Figura 4.01, obtm-se o
sistema de equaes diferenciais ordinrias (4.02).
0 1 2 3 4 j

=

Figura 4.01: Discretizao na dimenso espacial (z)
( )
1
1 0
1 1
1
2 1
2 2
2
3 2
3 3
3
4 3
4 4
4
,
1:
2:
3:
4:
j j
x x x t z
x
z z z
x x dx
j x f
dt z
x x dx
j x f
dt z
x x dx
j x f
dt z
x x dx
j x f
dt z
c
c
|
|
|
|

A
=
A A

= = =
A

= = =
A

= = =
A

= = =
A

(4.02)
Em linguagem matricial:
1
0
1
2
1
2
2
3 3
3
4
4
4
1 1 0 0 0
0 1 1 0 0
1
0 0 1 1 0
0 0 0 1 1
dx
dt
x
x
dx
x
x
dt
x
x dx z
x
dt x
x
dx
dt
|
(
(
(
(
+ ( (
(
(
( (
(
+ (
( (
( =
(
( ( + A
(
(
( (
(
(
+

(
(

(

(4.03)
Esse exemplo est programado na pasta SEDP/SEDP 1. Para executar o
programa digite SEDP na linha de comando do MATLAB.
35

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Programa SEDP para 1 equao diferencial parcial:
clear all
close all
clc
% SEDP
% dx/dt = - dx/dz - phi.x
comprimento_reator = 1 ; % [=] m
% Mdulo de Thiele
phi = 0.5 ; % [=] adimensional
% Condio de contorno (z = 0)
x_contorno = 1 ; % a qualquer instante de tempo [=] adimensional
% Nmero de intervalos
Nint = 4 ;
dz = comprimento_reator / Nint ;
Mat_1a = zeros(Nint,Nint+1) ;
for i = 1 : Nint
Mat_1a(i,i) = -1 ;
Mat_1a(i,i+1) = +1 ;
end
% Condio inicial (t = 0)
x_inicial = zeros(Nint,1) ; % Reator vazio
% Soluo do SEDP
tempo = [ 0 : 0.1 : 4 ] ; % tempo [=] s
opcoes = [ ] ;
parametros(1) = x_contorno ;
parametros(2) = phi ;
parametros(3) = dz ;
[t,x] = ode45( @SEDO , tempo , x_inicial , opcoes , Mat_1a ,
parametros ) ;
% Grficos
for i = 1 : Nint
figure(i)
plot(t,x(:,i),'o-')
xlabel('t (s)')
ylabel(sprintf('x_%i',i))
end
figure(i+1)
plot(t,x)
xlabel('t (s)')
ylabel('x_s (adimensional)')

Sub-rotina (function) que contm as equaes diferenciais ordinrias para o
sistema formado por uma equao diferencial parcial:
function [ dxdt ] = SEDO( t , x , Mat_1a , parametros )

x0 = parametros(1) ;
fhi = parametros(2) ;
dz = parametros(3) ;

x1 = [ x0
x ] ;

dxdt = - Mat_1a * x1 / dz - fhi * x ;

36

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
4.2. Soluo pelo mtodo das linhas para 2 (duas) EDPs
Considere o sistema de equaes diferenciais parciais conforme (4.04):
( ) ( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( ) ( )
( )
( )
( )
0,2
,
0,2
,
, ,
,
, , ,
, , 0,1 ,
. . : 0 1 1
0 1
. . : 0 : 1
0 0
T t z
T t z
x t z x t z
e x t z
t z
T t z x t z T t z
T t z x t z e x t z
t z z
C C z x t e T t
x z
C I t reator vazio e T z
x z
c c
|
c c
c c c
|
c c c
| |
|
|
\ .
| |
|
|
\ .
=
= +
= = =
= =

= =

= =

(4.04)
Aproximanda as derivadas parciais em relao a dimenso espacial por
diferenas finitas para trs em 4 pontos, conforme a Figura 4.01, obtm-se o
sistema de equaes diferenciais ordinrias (4.05).
( ) ( )
( )
( ) ( )
1 1
0,2
1
0,2
1 1
, ,
j
j
j j j j
T j j
j j
j
T j j j j
j j j j
j
x x T T x t z T t z
x T
e
z z z z z z
x x
dx
e x f
dt z
x x T T
dT
T x e x g
dt z z
c c
c c
|
|

| |
|
|

\ .
| |
|
|

\ .

A A
= =
A A A A

= =


= =
A A


(4.05)
Em linguagem matricial:
1
2
3
4
0,2
1
0
0,2 1
2
1
2
2
0,2
3 3
3
0,2 4
4
1 1 0 0 0
0 1 1 0 0
1
0 0 1 1 0
0 0 0 1 1
T
T
T
T
dx
e
dt
x
x
dx
x
x e
dt
x
x dx z
x
e
dt x
x
dx
e
dt
|
| |

|
\ .
| |

|
\ .
| |

|
\ .
| |

|
\ .
(
(
(
(
(
(
(
+ (
(
(
(
(
(
+ (
(
(
( =
(
(
( + A
(
(
(
(
(
(
+ (

(
(
(
(
(


4
(
(
(
(
(

(4.06)
1
2
3
0,2
1
0
0,2 1
2
1
2
2
0,2
3 3
3
4
4
4
1 1 0 0 0
0 1 1 0 0
1
0,1
0 0 1 1 0
0 0 0 1 1
T
T
T
dT
e
dt
x
T
dT
x
T e
dt
x
T dT z
x
e
dt T
x
dT
e
dt
|
| |

|
\ .
| |

|
\ .
| |

|
\ .

(
(
| | (
(
+ ( ( |
(
(
( ( |
(
+ (
( ( |
( = +
(
( ( + A |
(
(
( ( |
(
(
+

|
(
(
\ .
(

4
1
2
3
4
0,2
T
x
x
x
x
| |
|
\ .
(
(
(
(
(
(
(
(

(
(
(
(
(

(
(

(4.07)
37

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Esse exemplo est programado na pasta SEDP/SEDP 2. Para executar o
programa digite SEDP na linha de comando do MATLAB.
Programa SEDP para 2 equaes diferenciais parciais:
clear all ; close all ; clc
% SEDP
% dx/dt = - dx/dz - phi.x
comprimento_reator = 1 ; % [=] m
% Mdulo de Thiele
phi = 0.5 ; % [=] adimensional
% Condio de contorno (z = 0)
x_contorno = 1 ; % a qualquer instante de tempo [=] adimensional
T_contorno = 1 ; % a qualquer instante de tempo [=] adimensional
% Nmero de intervalos
Nint = 4 ;
dz = comprimento_reator / Nint ;
Mat_1a = zeros(Nint,Nint+1) ;
for i = 1 : Nint
Mat_1a(i,i) = -1 ;
Mat_1a(i,i+1) = +1 ;
end
% Condio inicial (t = 0)
x_inicial = zeros(Nint,1) ; % Reator vazio
T_inicial = ones(Nint,1) ; % Reator vazio
% Soluo do SEDP
tempo = [ 0 : 0.1 : 6 ] ; % tempo [=] s
opcoes = [ ] ;
parametros(1) = x_contorno ;
parametros(2) = T_contorno ;
parametros(3) = phi ;
parametros(4) = dz ;
[t,y] = ode45( @SEDO , tempo , [ x_inicial ; T_inicial ] , opcoes ,
Mat_1a , parametros ) ;
x = y(:,1:Nint) ;
T = y(:,1+Nint:end) ;
% Grficos
for i = 1 : Nint
figure(i)

subplot(1,2,1)
plot(t,x(:,i),'o-')
xlabel('t (s)')
ylabel(sprintf('x_%i',i))
subplot(1,2,2)
plot(t,T(:,i),'o-')
xlabel('t (s)')
ylabel(sprintf('T_%i',i))
end
figure(i+1)
subplot(1,2,1)
plot(t,x)
xlabel('t (s)')
ylabel('x_s (adimensional)')
subplot(1,2,2)
plot(t,T)
xlabel('t (s)')
ylabel('T_s (adimensional)')

38

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Sub-rotina (function) que contm as equaes diferenciais ordinrias para o
sistema formado por duas equaes diferenciais parciais:
function [ dydt ] = SEDO( t , y , Mat_1a , parametros )

x0 = parametros(1) ;
T0 = parametros(2) ;
fhi = parametros(3) ;
dz = parametros(4) ;

Nint = size(Mat_1a,1) ;

x = y(1:Nint) ;
T = y(1+Nint:end) ;

x1 = [ x0
x ] ;

T1 = [ T0
T ] ;

dxdt = - Mat_1a * x1 / dz - fhi * exp(-0.2./T) .* x ;
dTdt = - x .* ( Mat_1a * T1 ) / dz - ...
T .* ( Mat_1a * x1 ) / dz + 0.1 * fhi * exp(-0.2./T) .* x;

dydt = [ dxdt
dTdt ] ;

39

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
4.3. S-function: Exemplo 4: Espao de estados no-lineares
SEDONL : reator PFR em estado estacionrio
Considere um reator tubular em regime dinmico, no qual ocorrem as
seguintes reaes qumicas:
(R1) Hidrogenao do acetileno a etileno: C H H C H
2 2 2 2 4
+
(R2) Hidrogenao do etileno a etano: C H H C H
2 4 2 2 6
+
O reator cataltico, adiabtico cuja carga composta por C
2
H
2
, C
2
H
4
, C
2
H
6
,
CO, H
2
e CH
4
. O C
2
H
2
a substncia que deve ser convertida a C
2
H
4
,
contudo parte desta subtncia convertida em C
2
H
6
(reao indesejada). O
monxido de carbono um agente que aumenta a seletividade do
catalisador. O metano inerte.
O modelo em regime transitrio para esse processo dado por 7 equaes
diferenciais parciais no-lineares:
c
c
c t
c
c
t
C
t R
F
z
C H C H
G
2 2 2 2
C
2
H
2
=
1
2
I

c
c
c t
c
c
t
C
t R
F
z
C H C H
G
2 4 2 4
C
2
H
4
=
1
2
I

c
c
c t
c
c
t
C
t R
F
z
C H C H
G
2 6 2 6
C
2
H
6
=
1
2
I

c
c
c t
c
c
t
C
t R
F
z
CO CO
=
1
2

c
c
c t
c
c
t
z
C
t R
F
H H
G
2 2
H
2
=
1
2
I

c
c
c t
c
c
t
C
t R
F
z
CH CH
4 4
=
1
2

( )

= = =
I A |
.
|

\
|
=
(

+
nr
j
j j j j
nc
i
i i p p L
nc
i
i i t
H
z
T
Cp C v
t
T
Cp Cp C
1 1 1
1 q u
c
c
c
c
c c
onde
i
G
I - taxa de consumo efetivo do componente i
j
I - taxa intrnseca da reao j
j
u - funo atividade cataltica
j
q - fator de efetividade
( )
c
t i i
i
nc
C Cp
=

1
- termo referente ao acmulo de energia no fluido
( ) 1 c
L p p
Cp - termo referente ao acmulo de energia no catalisador
40

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
|
.
|

\
|
=
T
E
k k
o 1
1 1
exp
|
.
|

\
|
=
T
E
k k
o 2
2 2
exp
|
|
.
|

\
|
=
T
Q
k K
o 2 2
2 2 2 2
H C
H C H C
exp
|
|
.
|

\
|
=
T
Q
k K
o 4 2
4 2 4 2
H C
H C H C
exp
|
|
.
|

\
|
=
T
Q
k K
o 2
2 2
H
H H
exp
|
.
|

\
|
=
T
Q
k K
o CO
CO CO
exp
Os valores dos parmetros apresentados por Bos (1993) so os seguintes:
K Q
kPa K
K Q
kPa K
K Q
kPa K
K Q
kPa K
K E
s kg kmol
K E
s kg kmol
CO
x
CO
H
x
H
H C
x
o
H C
H C
x
o
H C
s
x
o
s
x
o
8963
10 0 , 4
1861
10 28 , 1
1810
10 33 , 5
1508
10 97 , 1
8479
/ 10 16 , 3
7517
/ 10 74 , 2
1 9
1 6
1 6
1 1
2
8
2
1
6
1
2
2
4 2
4 2
2 2
2 2
=
=
=
=
=
=
=
=
=
=
=
=




k
k

As condies inicial e de contorno para as equaes (2.II.01-07) so as
seguintes:
condio inicial: para t = 0 C
i
(0,z)= C
i
o
(z)
T(0,z) = T(z)
condio de contorno: para z = 0 F
i
(t,0)= F
i
(t)
T(t,0) = T(t)
41

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
Nesta pgina observamos o sintico do reator tubular. Para executar o simulador, mude para a pasta
SEDP/Conversor de acetileno e digite pfr_transiente na linha de comando do MATLAB.

Figura 3.09: Sintico da simulao em regime transiente do conversor de acetileno.
42

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316
5 DEPURADOR DE PROGRAMAS
O MATLAB possui um depurador de programas que auxilia na deteco de
erros de programao, sintaxe, diviso por zero, et.

Para saber suas opes digite help debug na linha de comando do
MATLAB. O depurador tambm pode ser ativado a partir do editor de
programas do MATLAB.

help debug
Debugging commands.
dbstop - Set breakpoint.
dbclear - Remove breakpoint.
dbcont - Resume execution.
dbdown - Change local workspace context.
dbmex - Enable MEX-file debugging.
dbstack - List who called whom.
dbstatus - List all breakpoints.
dbstep - Execute one or more lines.
dbtype - List M-file with line numbers.
dbup - Change local workspace context.
dbquit - Quit debug mode.
When a breakpoint is hit, MATLAB goes into debug mode, the
debugger window becomes active, and the prompt changes to a K>. Any
MATLAB command is allowed at the prompt.
To resume M-file function execution, use DBCONT or DBSTEP.
To exit from the debugger use DBQUIT.
Reference page in Help browser
doc debug
43

Ricardo Kalid kalid@ufba.br (71) 3283.9811 (71) 9188.3316

O depurador de programas do MATLAB tambm pode ser utilizado atravs
do editor/depurador associado ao mesmo.




importante destacar que numa function, seja ela M-function ou
S-function as variveis so todas definidas apenas localmente. Assim se
uma equao utiliza um parmetro, o mesmo deve ser, preferencialmente,
passado como argumento da function. Programas nas verses mais antigas
do MATLAB tinham que utilizar a instruo global ou ento o parmetro era
definido dentro da prpria function. Porm a instruo global deve ser
evitada.
Para visualizar o valor de uma varivel ou parmetro que pertence a uma
function a varivel deve ser impressa ou utiliza-se o depurador. Neste ltimo
caso, um "breakpoint" deve ser acionado na linha imediatamente posterior ao
aparecimento da varivel, pois quando o MATLAB executar essa linha o
processamento ser suspenso, possibilitando a visualizao do valor do
parmetro, atravs da colocao da seta do mouse sobre o parmetro em
questo.
Boto limpar
todos os
depurador
Boto para
ativar/desativar
um breakpoint
Boto
continuar a
simulao

S-ar putea să vă placă și