kalid matlab apostila rev04

Upload: rafael-magalhaes

Post on 14-Jul-2015

534 views

Category:

Documents


5 download

TRANSCRIPT

UFBA Escola Politcnica da UFBA Curso de Extenso: PROGRAMAO EM MATLAB COM APLICAOEMREATORESQUMICOS REAGENTES PRODUTOS REATORTUBULARPFR PRODUTOSREAGENTES CSTR BATELADA Prof. Dr. Ricardo de Arajo Kalid Programa em Engenharia Industrial da UFBA 2 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 PROGRAMAO EM MATLAB COM APLICAOEMREATORESQUMICOS SUMRIO 1INTRODUO ............................................................................................. 3 1.1. Vetorizao ........................................................................................... 5 1.2. Operaes elemento a elemento .......................................................... 8 2EQUAES 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 3SISTEMA 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 4SISTEMA 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 5DEPURADOR DE PROGRAMAS .............................................................. 42 3 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 1INTRODUO OMATLAB(MATrixLABoratory)umambientedeprogramaoadequado pararesolverproblemasqueenvolvamoperaesmatemticascom matrizes. O MATLAB composto por duas ferramentas bsicas e vrias auxiliares. As bsicas,oprprioMATLABeoSIMULINKconstituemoncleomnimoque deveestardisponvelepossibilitamexecutarasferramentasauxiliares, 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 ------------------------------------------------------------------------------------- MATLABVersion 7.4(R2007a) SimulinkVersion 6.6(R2007a) Aerospace BlocksetVersion 2.3(R2007a) Aerospace Toolbox Version 1.1(R2007a) Bioinformatics ToolboxVersion 2.5(R2007a) Communications Blockset Version 3.5(R2007a) Communications ToolboxVersion 3.5(R2007a) Control System ToolboxVersion 8.0(R2007a) Curve Fitting Toolbox Version 1.1.7(R2007a) Database ToolboxVersion 3.3(R2007a) Distributed Computing Toolbox Version 3.1(R2007a) Excel LinkVersion 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 ToolboxVersion 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 ToolboxVersion 5.4(R2007a) MATLAB Builder for .NET Version 2.2(R2007a) MATLAB Builder for ExcelVersion 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 ToolboxVersion 2.2.4(R2007a) Neural Network ToolboxVersion 5.0.2(R2007a) Optimization ToolboxVersion 3.1.1(R2007a) Partial Differential Equation Toolbox Version 1.0.10 (R2007a) RF Blockset Version 2.0(R2007a) RF ToolboxVersion 2.1(R2007a) Real-Time WorkshopVersion 6.6(R2007a) Real-Time Workshop Embedded Coder Version 4.6(R2007a) Robust Control ToolboxVersion 3.2(R2007a) Signal Processing BlocksetVersion 6.5(R2007a) Signal Processing Toolbox Version 6.7(R2007a) SimDrivelineVersion 1.3(R2007a) SimEvents Version 2.0(R2007a) SimHydraulics Version 1.2(R2007a) SimMechanicsVersion 2.6(R2007a) SimPowerSystems Version 4.4(R2007a) SimscapeVersion 1.0(R2007a) Simulink AcceleratorVersion 6.6(R2007a) 4 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 Simulink Control Design Version 2.1(R2007a) Simulink Fixed PointVersion 5.4(R2007a) Simulink Parameter Estimation Version 1.2(R2007a) Simulink Report Generator Version 3.2(R2007a) Simulink Response OptimizationVersion 3.1.1(R2007a) Simulink Verification and ValidationVersion 2.1(R2007a) Spline ToolboxVersion 3.3.2(R2007a) Stateflow Version 6.6(R2007a) Stateflow Coder Version 6.6(R2007a) Statistics ToolboxVersion 6.0(R2007a) System Identification Toolbox Version 7.0(R2007a) SystemTestVersion 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. Podemosobservarqueareadecoberturadostoolboxmuitovasta cobrindo, por exemplo, os temas relacionados com: - finanas, - tratamento de imagem, - tratamento de sinais, - estatstica, - redes neurais, - controle, - otimizao. Masalmdessestoolbox,quesoadquiridosnaMATHWORKS(empresa fornecedoradoMATLAB/SIMULINK),vriosoutrospodemserencontrados 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 altonvel,comoporexemploFORTRANouC,estaplataformatemsido largamente utilizado no meio acadmico e industrial. AfacilidadedaprogramaodoMATLABvemprincipalmentepelamaneira intuitivacomoasoperaescomvetoresematrizessotratadas, dispensando quase+ que completamente o uso de indexadores, loops tipo for oudonasoma,multiplicao,inversoouqualqueroutraoperaocom matrizes e/ou vetores, por exemplo: + A nica situao na qual somos obrigados a utilizar os indexadores para realizar operao commatrizesquandoumelementodeumamatrizouvetordependederesultadodeum elemento anterior dessa mesma matriz ou vetor. 5 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 EX 1:Seja os vetores v1 = [ 1 ; 2 ; 3 ; 4 ]ev2 = [ 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 53 21 mO quadrado dessa matriz escrito porm1^2oum1*m1. O dobro dessa matriz dado por2*m1 evitando,dessaforma,achamadadesubrotinaspararealizarclculos corriqueiros nos problemas de engenharia. OutropontoquefacilitaaprogramaoqueoMATLABumambientede programao que realiza instruo por instruo, o que ajuda muito na etapa de desenvolvimento dos programas. Mas que tambm pode gerar um cdigo compilado,ousejagerarumexecutvel,queexecutadoindependentedo MATLAB. 1.1.Vetorizao OMATLABrealizaosclculosutilizandoorecursodavetorizaodas 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 vetorv1 v1 = ones(10000,1); e o vetorv2 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 [email protected] (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:ostemposacimasodiferentesadependerdacargaqueaCPUest submetida no instante do processamento. Observequeostextosemverdesoexatamenteoscomandosquedevem serdigitadosnopromptdoMATLAB.Enquantoqueostextoseazulo resultado que aparecer na tela. Aindanoscomandoacimaverificamosasintaxedocomandoones(nl,nc), no qual definimos o nmero de linhas nl e colunas ncque o vetor de uns v1 ter. Verificamoscomogerarumnovovetorv2comasmesmasdimensesdo vetor v1. Aindaaprendemosautilizaroscomandosticetoc.Alissemprequetiver dvidas sobre como usar um comando, o MATLAB tem um help on-line, para tantobastadigitarhelposeguidodocomandoqueumaajudanatela aparecer.Porexemplo,sequisersabercomooscomandossupracitados trabalham, basta digitarhelp tic oUmhelpmaiscompletoacionadoatravsdabarraprincipaldoMATLAB,nessehelp voc pode fazer uma pesquisa por nome, ou navegar por todo a documentao do MATLAB. 7 Ricardo Kalid [email protected] (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. Nadefiniodeumamatriz,amudanadecolunacaracterizadapela inserodeumavrgulaeadelinhapelopontoevrgula.Porexemploa matriz identidade 2 por 2 criada pelo seguinte comando matriz_identidade = [ 1 , 0 ; 0 1 ] matriz_identidade = 1 0 01 ou ento usando o comandoeye: mat_ident = eye(2) mat_ident = 1 0 0 1 A inversa de uma matriz calculada utilizando o comandoinv : A = [ 1 2 ; 410 ] A = 1 2 410 iA = inv(A) iA = 5.0000 -1.0000 -2.00000.5000 verificando iA*A ans = 1 0 0 1 8 Ricardo Kalid [email protected] (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 Observequeantesdosinaldemultiplicaocolocamosumponto.dessa formaqueindicadoparaoMATLABseaoperaoaserrealizada,que neste caso foi a multiplicao, elemento a elemento ou segue as regras de multiplicaodeduasmatrizes.Essamesmaregradopontoservepara potncia(.^) e diviso(./). Temosquetercuidadocomamultiplicaodematrizesevetores,poisa operao matricial ou elemento a elemento daro resultados completamente diferentes. Por exemplo, a operaoA*Agera a matriz A = [ 1 2 ; 410 ]; A*A ans = 922 44 108 enquanto que a operaoA.*Agera a matriz A.*A ans = 1 4 16 100 9 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 2EQUAES ALGBRICAS Muitosproblemassorepresentadosporsistemasdeequaesalgbricas 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 Asequaesalgbricaspodemserclassificadascomolinearesouno-lineares. Neste ltimo caso, podemos resolver o sistema atravs da inverso dematrizessemrecorreraprocedimentositerativos,pormnocasono-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 Porexemplo,noclculodacapacidadecalorficadesubstnciasemisturas nohnecessidadedeutilizarmtodosnumricos.Tomemosattulode ilustraoumamisturaformadaporC2H2,C2H4,C2H6,CO,H2eCH4auma certa temperatura (T = 30 C) e a baixas presses, a capacidade calorfica da mistura dada por: ( )==ncii i misturaT Cp C Cp1. (02.01) onde Ci-concentrao da espciei Cpi-capacidade calorfica molar da espciei T-temperatura 10 Ricardo Kalid [email protected] (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.010.80.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/ouconcentraesdiferentes,semteranecessidadededigitarcadalinha novamente. 11 Ricardo Kalid [email protected] (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 , 29 3 22 12 1x xx 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.00003.0000 2.50001.5000 b = 9 7 x = 1.6667 1.8889 2.3.Sistema de equaes algbricas no-lineares (SEANL) Outraclassedeproblemasbastantefrequentequeumengenheiroqumico enfrentaasoluodeproblemasformadoporequaesalgbricasno lineares(SEANL).Porexemplo,aomodelarumreatorCSTRnoisotrmico em estado estacionrio: ConsidereumreatorCSTR,vejaFigura2.01,noqualocorreumareao qumicairreversvelexotrmica,B A .Estereatortemumacamisade resfriamento e encontra-se em estado estacionrio. Figura 2.01: CSTR Fi, Ti CAi, CBi Fci Tci Fc Tc F, T CA, CB 12 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 O modelo matemtico em regime estacionrio que descreve este processo : Balano global: ( ) ( ) t F t Fi = 0 (02.03) Balano de massa para o reagente A: ( ) ( ) ( ) ( ) ( ) ( ) ( ) t V t t C t F t C t FA A Ai i. . . 0 I + = (02.04) Balano de massa para o reagente B: ( ) ( ) ( ) ( ) ( ) ( )( ) t V t t C t F t C t FB B Bi i. . . 0 I + = (02.05) Balano de energia no reator: ( ) ( ) ( ) ( ) ( ) ( ) ( )R A i iH 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 Fci i + = . . . . 0 (02.07) Asequaes(02.03)a(02.07)constituemomodelofenomenolgicono-linear do CSTR. Considerando algumas hipteses adicionais: Hipteses: H1.SeotransversaldotanqueconstanteedereaAt.EntoV(t)= At.L(t) H2.Aspropriedadesdoscomponentesedamisturanovariamcoma temperatura. H3. Energia = Entalpia H4. Os efeitos do calor de mistura so desprezveis H5.Reaodotipo:ABde2aordem,irreversvel.Portantopodemos escrever: ( )( )I IB A A oER TAkT C k e C = = =+|\

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

H6. A camisa est completamente preenchida pelo fluido de refrigerao, ou seja Fc = Fci 13 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 Ento,omitindoaexplicitaodadependnciacomotempo( ) te considerando as hipteses acima, podemos escrever: t tiAFAF = 0 (02.08) ( )( ) 2 15 . 273 .. .10AT REo A AitiC e k C CL AF||.|

\|+ = (02.09) ( )( ) 2 15 . 273 .. .10AT REo B BitiC e k C CL AF||.|

\|++ = (02.10) ( )( )( )ctAT REo RitiT TL A CpA UC eCpk HT TL AF A =||.|

\|+1. ..... 102 15 . 273 . (02.11) ( ) ( )cc c cc ciccT TV CpA UT TVF + =. ..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 comandofsolve . A sintaxe do comandofsolve a seguinte: solucao = fsolve('seanl',estimativa_inicial) onde seanl: -umaM-functionquecontmoSistemadeEquaes Algbricas No Lineares a ser resolvido; -umam-function um arquivo com extenso.mapresenta na primeiralinhaapalavrareservadafunction,nestecasoo nome do arquivo seanl.m Para o CSTR teremos, por exemplo 14 Ricardo Kalid [email protected] (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 arquivoCSTR_estado_estacionario.me mudar para sua pastadetrabalho,paratantouseocomandocdouuseoboto, 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.00751.13031.749787.921850.3117]; 15 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 3SISTEMA DE EQUAES DIFERENCIAIS ORDINRIAS - SEDO Muito frequente tambm so os sistemas de equaes diferenciais ordinrias. PorexemplonocasodoCSTRemregimetransiente,omodelodadopor um SEDO: fdLdtFAFAit t1 = = (03.01) ( )( )fdCdtFA LC C k e CA itAi A oER TA 2273 15 21= = +|\

|.|. .. .(03.02) ( )( )fdCdtFA LC C k e CB itBi B oER TA 3273 15 21= = ++|\

|.|. .. .(03.03) ( )( )( ) fdTdtFA LT TH kCpe CUACpA LT TitiR oER TAtc 4273 15 21 1= = +|\

|.|A ..... .. . (03.04) ( ) ( ) fdTdtFVT TUACp VT Tc ccci cc c cc 5 = = + .. . (03.05) Existem3formasdiferentesderesolveresseproblemautilizandoo 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 [email protected] (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 muitasUso em problemas de simulao simsimsim Uso em problemas de controle nonosim Uso em problemas de otimizao nosimno Exemplo de utilizao digitedeena linha de comandocomandohelp odeXX ou rkXX pasta CSTR_transiente ou pastapHou pastaBATCH Figura 3.01: Problema VDP (Van der Pol) utilizando o dee 17 Ricardo Kalid [email protected] (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 ParaobservarumexemplodousodoSIMULINKpararesolverequaes diferenciaismudeparaapastaCSTR_transienteedigitecstrnalinhade comando. Neste caso o modelo de um reator CSTR formado por 5 equaes diferenciais ordinrias resolvido. Outro exemplo dado na pastapHna qual o sistema de neutralizao em malhafechadadaGRIFFINsimulado.NestecasodigitepHnalinhade comando do MATLAB para executar a simulao. Utilizando o MATLAB podemos, tambm, simular processos a batelada, como podemosobservarnoexemplodapastaBATCH.Nestecasodigitebatchna linha de comando do MATLAB para executar a simulao. 18 Ricardo Kalid [email protected] (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 Ck k1 2 Equao 1 Sistemasreacionaiscomoodaequao1sorelativamentecomunsem processosqumicos,porexemplo,oxidaodehidrocarbonetosouclorao dearomticos.Enessescasosoprodutointermediriosempreomais desejado. O reator pode ser visto na Figura 5.01. Existe uma camisa de refrigerao ou deaquecimentoquegaranteocalornecessrioparaesfriarouaquecera parede at a temperaturaTMdesejada. Figura 3.03: Reator a batelada com camisa de aquecimento/arrefecimento Acinticaesuadependnciacomatemperaturaconhecida.Oobjetivo desteprocessoproduzirasubstnciaB.Otempodebateladafixoe conhecido (200 minutos). |Luyben,W.L.ProcessModeling,SimulationandControlforChemical Engineers. McGraw-Hill, pginas 57-61, 150-157. 1989 . TM TM T CA CB Fluido de aquecimento ou de arrefecimentoTM19 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 Astaxasdeconsumodassubstncias(cinticadasreaes)podemser assim descritas: ( ) IA Ak TC = 1 Equao 2 ( ) ( ) IB A Bk TC k TC = 1 2 Equao 3 onde ( ) k T kERgTii io i= |\

|.| = exp , , 1 2Os dados e valores dos parmetros deste modelo dado abaixo: CAo = 0.80 lb-mol/ft3 CBo = 0 lb-mol/ft3 k1o = 729.55 min-1 k2o = 6567.6 min-1 E1 =15.000 Btu/lb-mol E2 = 20.000 Btu/lb-mol Modelo matemtico A) Balano de massa: ( )dVCdtV Vk TCAA A= = I1 Equao 4 ( ) ( )| |dVCdtV Vk TC k TCBB A B= = I1 2 Equao 5 como o volume do meio reacional constante (reao em fase lquida), obtemos:( ) ( )dCdtk TC C CAA A A Ao= = = I10 ,Equao 6 ( ) ( ) ( )dCdtk TC k TC C CBB A B B Bo= = = I1 20 ,Equao 7 20 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 B) Balano de energia: ( ) ( )dTdtHCp k TCHCp k TCQV CpA BM= + A A1122 Equao 8 onde ( ) Q h A T TM i i M= Equao 9 hi = 160 Btu/(h.oF.ft2) Ai = 56.5 ft2 = 50 lbm/ft3 AH1= -40.000 Btu/lb-mol AH2= -50.000 Btu/lb-mol Utilizando o MATLAB podemos, tambm, simular processos a batelada, como podemosobservarnoexemplodapastaBATCH.Nestecasodigitebatchna linha de comando do MATLAB para executar a simulao. 21 Ricardo Kalid [email protected] (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: [email protected]) % 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 ] ; % Simulaox0 = [ 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 [email protected] (71) 3283.9811 (71) 9188.3316 Oprogramaprincipalchamaarotinadeintegrao(ode45),quetemcomo um de seus argumentos a function que tem o modelo do processo. Ou seja, necessrioescreverosbalanosdemassaeenergiadosistemana 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: [email protected]) % 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 EssafunctionquechamadaporumarotinaqueresolveumSEDO obrigatoriamente deve ter: 23 Ricardo Kalid [email protected] (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)osparmetrosforampassadosparaafunctionatravsdeargumentos adicional na funo ode45; d)paraevitarconfusodenomineonomedafunctionomesmonomedo arquivoqueacontm,poisarelaodoMATLABdadapelonomedo arquivo e no pelo nome da function . 3.2.S-function OsexemplosutilizandooSIMULINKfazemusodeumaestruturade programao denominada S-function. EmborasejapossvelutilizaroSIMULINKcomM-functionaformamais eficientedopontodevistacomputacionalempregandoaS-function,por issonessaseonosconcentraremosnoestudodessaestruturade programao do MATLAB/SIMULINK. Uma S-function comea com a instruofunctione formada por sees: -Seo 0 (zero)paraflag = 0 -inicializaodosistemaformadoporSEDO(Sistemade Equaes Diferenciais Ordinrias) -definio do tamanho do SEDO a ser resolvido -definio da condio inicial do SEDO -Seo 1 (um)paraflag = 1 -definio das equaes do modelo SEDO -utilizada quando temos modelos contnuos -retorna as derivadas das variveis de estado ( )dtt dx -Seo 2 (dois)para flag = 2 -definio das equaes de diferenas -utilizada quando temos modelos discretos -retorna os estados discretosx(n+1) -Seo 3 (trs)para flag = 3 -definio das equaes de sada do sistema -retorna um vetor com as variveis de sada do sistemay(t) -Seo 4 (quatro)para flag = 4 -retornaoprximointervalodetempoparaatualizaodo modelo discreto 24 Ricardo Kalid [email protected] (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 Sejaoseguintemodeloemespaodeestadoslineareseinvariantesno tempo: + =+ =u D x C yu B x A x. .. . onde A,B,C,eDso matrizes. Por exemplo: A=[-0.300 ;2.9-0.62 -2.3 ;02.30 ] B=[ 1 ; 0 ;0] C=[ 1 1 0 ;1-31 ] D=[ 1 ; 0] A = -0.3000 0 0 2.9000 -0.6200 -2.3000 02.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 entradae2 variveis de sada 25 Ricardo Kalid [email protected] (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 00 ;2.9-0.62 -2.3 ;02.30 ] ; B=[ 1 ; 0 ;0] ; C=[ 1 1 0 ;1-31 ] ; 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) ;% Equaodx1/dt sys(2,1) = A(2,1)*x(1) + A(2,2)*x(2) + A(2,3)*x(3) + B(2)*u(1) ;% Equaodx2/dt sys(3,1) = A(3,1)*x(1) + A(3,2)*x(2) + A(3,3)*x(3) + B(3)*u(1) ;% Equaodx3/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) ;% Equaoy1(t) sys(2,1) = C(2,1)*x(1) + C(2,2)*x(2) + C(2,3)*x(3) + D(2)*u(1) ;% Equaoy1(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 ParaeditaroarquivosedoL.mutilizeoeditordeprogramasquevem associado ao MATLAB. Para utilizar aS-function execute o modelosedo.mdl: mude para a pasta SEDO/Sfunction,depoisdigitesedoessenomenalinhadecomandodo MATLAB. Ento aparecer o seguinte sintico: SEDO LinearuY2Y1tempoTo Workspace3uTo Workspace2y2To Workspace1y1To WorkspaceStepsedoLS-Function0Display10DisplaymDemuxClock Figura 3.04: Sistema SEDO linear sem passagem argumentos. S-function26 Ricardo Kalid [email protected] (71) 3283.9811 (71) 9188.3316 Para criar um sintico utilize o comando SIMULINK na linha de comando do MATLAB, ou click no botoOutra forma de resolver sistemas de equaes diferenciais lineares pode ser observadaaodigitarsedoStateSpacenalinhadecomandodoMATLAB, aparecer ento o seguinte sintico SEDO Linear - State-SpaceussY2ssY1sstempossTo Workspace3ussTo Workspace2y2ssTo Workspace1y1ssTo WorkspaceStepx' = Ax+Bu y = Cx+DuState-Space0Display10DisplaymDemuxClock Figura 3.04: Sistema SEDO linear com passagem de argumentos. Se voc executar esse sintico ou o anterior, o resultado ser o mesmo, pois ambosfazemamesmssimacoisa.Apenasamscaradosintico sedoStateSpace mais amigvel: Figura 3.05: Passagem dos argumentos para o SEDO. Boto para executar a simulao 27 Ricardo Kalid [email protected] (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 simulaoS_sedo.m a seguinte: function [sys,x0] = S_sedo(t,x,u,flag) % Planta: CSTR % Autor:Ricardo Kalid % [email protected] % Interface no Simulink paraS_sedo.m% Inputs: % t : tempo em segundos % x : estados do sistema % u : perturbaes externas ou variveis manipuladas % Outputs: sysex0como descritos no manual do SIMULINK %quandoflag 0 , sys contem as dimenses dos vetores e %x0contem as condies iniciais, %quandoflag1 , sys contem as derivadas, %quandoflag3 , 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 galfaL 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 = concentraodo reagente A [=] kmol/m3 sys(3,1) = x(3) * VetorAdim(3) ; % CB = concentraodo produtoB [=] 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 % SeF = F(L)==>F = alfaL * P^0.5 % Findepende 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 perfeitodo 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 [email protected] (71) 3283.9811 (71) 9188.3316 AsequaesdiferenciaisdomodelomatemticodoCSTRestona M-functionM_cstr.mlistada 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 galfaL VetorAdim TipoVazaoDescarga % Estados do sistema L = x(1) * VetorAdim(1) ; % nveldo reator [=] m CA= x(2) * VetorAdim(2) ; % concentrao do reagente A [=] kmol/m3 CB= x(3) * VetorAdim(3) ; % concentrao do produtoB [=] kmol/m3 T = x(4) * VetorAdim(4) ; % temperaturado reator [=] oC Tc= x(5) * VetorAdim(5) ; % temperaturada camisa [=] oC % Entradas do sistema Fi= u(1) ; % vazoda carga [=] m3/s CAi = u(2) ; % concentrao do reagente A na carga [=] kmol/m3 CBi = u(3) ; % concentrao do produtoB na carga [=] kmol/m3 Ti= u(4) ; % temperaturada carga [=] oC Tci = u(5) ; % temperaturado fluido refrigerante [=] oC Fc= u(6) ; % vazodo fluido refrigerante [=] m3/s % Vazo de descarga do reator % SeF = F(L)==>F = alfaL * P^0.5 % Findepende 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 perfeitodo nvel (L) else disp( ' Problemas em M_SEDO.M' ) disp( ' Escolha TipoVazaoDescarga = 1 , 2 ou 3' ) break end if ( L