12.07.2015 Views

Sistemas não-lineares no Simulink - Escola de Química / UFRJ

Sistemas não-lineares no Simulink - Escola de Química / UFRJ

Sistemas não-lineares no Simulink - Escola de Química / UFRJ

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Sistemas</strong> não-<strong>lineares</strong> <strong>no</strong> <strong>Simulink</strong>Objetivos:esta aula irá introduzir a codificação <strong>de</strong> S-functions<strong>no</strong> <strong>Simulink</strong> 4, para a simulação <strong>de</strong> sistemas não-<strong>lineares</strong>.


Simulando um CSTRO terceiro exemplo mostra como simular um mo<strong>de</strong>lo <strong>de</strong>processo químico usando as equações diferenciais ordináriasque o compõem. O mo<strong>de</strong>lo é o <strong>de</strong> um CSTR (já <strong>de</strong>duzido emsala <strong>de</strong> aula).dVdt=FA −FdCdtAAF= 0VERT( )−AC A − C A − k e C AdTdt=ρFACP( )−AT − T + ∆HVke C − UA( T − T )0ρVCPERTAc


Simulando um CSTRPara construir o diagrama <strong>Simulink</strong> <strong>de</strong>ste mo<strong>de</strong>lo, alémdos blocos já utilizados, serão necessários os seguintes:• <strong>Simulink</strong>/Signals & Systems/Mux: concatena (ou “empilha”)escalares em um vetor (ou vetores em um vetor maior)• <strong>Simulink</strong>/Signals & Systems/Demux: extrai (ou “<strong>de</strong>sempilha”)constantes <strong>de</strong> um vetor (ou vetores <strong>de</strong> um vetor maior)• <strong>Simulink</strong>/Continuous/Transport Delay: aplica um atraso a umaentrada• <strong>Simulink</strong>/Functions & Tables/S-Function: executa uma função<strong>de</strong> usuário, escrita em código-M, <strong>de</strong> acordo com as regras paracriação <strong>de</strong> S-Functions


Simulando um CSTRO diagrama do mo<strong>de</strong>lo do CSTR encontra-se abaixo.


Simulando um CSTRO bloco Mux (u) do mo<strong>de</strong>lo concatena as 5 entradas emum vetor <strong>de</strong> 5 elementos. Este vetor será passado para afunção-S que contém o mo<strong>de</strong>lo. É importante garantir que afunção-S espera um vetor <strong>de</strong> tamanho igual ao <strong>de</strong>senhado<strong>no</strong> diagrama. A configuração do bloco Mux é trivial: bastainformar o número <strong>de</strong> constantes que serão “empilhadas”.


Simulando um CSTRO bloco Demux (Saída) extrai do vetor que recebe dafunção-S as saídas do mo<strong>de</strong>lo. Novamente, <strong>de</strong>ve-seassegurar que o tamanho do vetor retornado pela função-Sestá <strong>de</strong> acordo com a configuração do bloco Demux, quetambém é trivial: basta informar o número <strong>de</strong> saídas (ouseja, neste caso, o tamanho do vetor recebido pelo bloco).


Simulando um CSTRO bloco Transport Delay aplica um atraso na entradaque recebe. Para configurá-lo, basta informar (i) o valor do(tempo <strong>de</strong>) atraso (Time Delay) e (ii) o valor inicial da saídado bloco, ou seja, o valor que o bloco Transport Delay irágerar, até que o tempo <strong>de</strong> simulação iguale o atraso (Initialinput).


Simulando um CSTRO que há <strong>de</strong> realmente diferente neste mo<strong>de</strong>lo é afunção-S (reator.m), que calcula as equações diferenciais doCSTR.Esta função é similar a uma das funções mostradas nas2 primeiras aulas, que eram chamadas por o<strong>de</strong>45 parasimular um mo<strong>de</strong>lo através <strong>de</strong> código-M (dhdt.m, dydt.m,etc). Entretanto, agora não é você que escreve um programaque usa um integrador para calcular as <strong>de</strong>rivadas e resolvero mo<strong>de</strong>lo. É o <strong>Simulink</strong> que chama o integrador, mandando-oexecutar a função-S que você criar.


Simulando um CSTRPortanto, é preciso seguir algumas regras específicasdas funções-S. Quando escrevemos programas para simularmo<strong>de</strong>los contínuos, nas duas primeiras aulas, usávamossintaxes (<strong>de</strong>ntro do programa principal) do tipo...[T, Y] = o<strong>de</strong>45(‘arq’,TEMPO,Y0,[],PAR1,...,PARN)...E a função que calculava as <strong>de</strong>rivadas era <strong>de</strong>clarada comofunction saida = arq(t,y,flag,PAR1,...,PARN)on<strong>de</strong> o vetor vazio ([]) na chamada a o<strong>de</strong>45era ummarcador <strong>de</strong> lugar para o vetor <strong>de</strong> opções, que não foiusado.


Simulando um CSTRNo caso do <strong>Simulink</strong>, você não escreverá a chamada ao<strong>de</strong>45, precisando se importar apenas com a <strong>de</strong>claração dafunção que calcula as <strong>de</strong>rivadas e com as regras <strong>de</strong> chamada<strong>de</strong>sta função.Esta função não apenas calculará as <strong>de</strong>rivadas domo<strong>de</strong>lo, como também irá informar ao integrador as condiçõesiniciais (lembre que, usando funções <strong>de</strong> transferência, vocêestá trabalhando com variáveis-<strong>de</strong>svio - o <strong>Simulink</strong> não pe<strong>de</strong>condições iniciais para a simulação) e calvulará as saídas.Uma função-S <strong>de</strong>ve ser <strong>de</strong>clarada da seguinte forma:function [sys, x0] = mo<strong>de</strong>l(t,x,u,flag,PAR1,...,PARN)


Simulando um CSTROn<strong>de</strong>• sys é a saída <strong>de</strong> mo<strong>de</strong>l, cujo significado <strong>de</strong>pen<strong>de</strong> <strong>de</strong> flag• x0 é o vetor <strong>de</strong> condições iniciais• t é o tempo <strong>de</strong> simulação• x é o vetor <strong>de</strong> estados do mo<strong>de</strong>lo• u é o vetor <strong>de</strong> entradas do mo<strong>de</strong>lo• flag é um parâmetro que informa a mo<strong>de</strong>l o tipo <strong>de</strong>informação que o integrador espera receber• PAR1,...,PARN são os parâmetros adicionais que po<strong>de</strong>m serpassados à função mo<strong>de</strong>l


Simulando um CSTRVamos agora tentar enten<strong>de</strong>r como funciona asimulação <strong>de</strong> um mo<strong>de</strong>lo usando uma função-S.Ao contrário do que acontecia com as funções <strong>de</strong>transferência, usando uma função-S, você po<strong>de</strong> trabalharcom valores absolutos das suas <strong>de</strong>rivadas. Para isso, épreciso conhecer as condições iniciais da integração (o quenão é pedido em nenhuma parte da configuração dasimulação).Além disso, o <strong>Simulink</strong> precisa <strong>de</strong> informações sobre omo<strong>de</strong>lo, se as variáveis são contínuas ou discretas, quantasentradas, saídas e estados o mo<strong>de</strong>lo possui, etc.


⁄⁄ 12⁄⁄ Praxisbeispiel Weiterbildung„on the job“Motivation durch individuelle För<strong>de</strong>rungWenn Mitarbeiter die Bereitschaft erkennenlassen, sich beruflich weiterzuentwickeln,wer<strong>de</strong>n sie von uns gezieltgeför<strong>de</strong>rt. Mit Hilfe einer Weiterbildungsbedarfsanalyseermitteln wir Potenziale.Das nützt selbstverständlich auch unserenKun<strong>de</strong>n. Denn die Ansprüche andie Beschäftigten in <strong>de</strong>r Logistik (elektronischeHilfsmittel, EDV) steigen ständig.Wir verstehen uns als persönlicher BerufsundKarrierebegleiter unserer Mitarbeiter.Die JOB AG bietet sich sowohl beimberuflichen Einstieg als auch beim Aufstiegals Jobmanager an. Auch <strong>de</strong>shalbhaben wir einen so großen Pool an Mitarbeiternund persönlichen Kontakten.Durchgestartet: Vom Helferzum stellvertreten<strong>de</strong>n LagerleiterUli S. hat Schule und Ausbildung abgebrochen,war mehrere Jahre als Produktionshelfereingesetzt und zwischendurchimmer wie<strong>de</strong>r arbeitslos. Er wur<strong>de</strong>Zeitarbeitnehmer bei <strong>de</strong>r JOB AG, erkannteseine Chance, arbeitete immerzuverlässig und zeigte Bereitschaftdazuzulernen. Dann machte er einenPC-Kurs, qualifizierte sich in SachenPersonaldisposition und wur<strong>de</strong> daraufhinerst Gruppenleiter und schließlichstellvertreten<strong>de</strong>r Lagerleiter. Herr S. istheute Vorgesetzter von 17 Lageristen.Hilfsarbeiter wird StaplerfahrerSimone L. war als Packerin und Kommissioniererintätig. Der Kun<strong>de</strong> legteihr <strong>de</strong>n Erwerb eines Staplerscheinsnahe, um sie <strong>no</strong>ch flexibler einsetzenzu können. Sie erwarb <strong>de</strong>n Schein bei<strong>de</strong>r Dekra, und die JOB AG übernahmdie Kosten. Aufgrund <strong>de</strong>r Zusatzqualifikationerhielt sie <strong>de</strong>n Fahrauftrag fürein Flurför<strong>de</strong>rfahrzeug <strong>de</strong>s Kun<strong>de</strong>n.Beruflicher Aufstieg mitGefahrgutscheinFrank B. war als Kraftfahrer im innerbetrieblichenWerksverkehr eingesetztund hatte einen Führerschein Klasse II.Der Kun<strong>de</strong> machte ihm das Angebot,Gefahrgut von Werk A nach Werk B zutransportieren. Die JOB AG unterstützteund finanzierte <strong>de</strong>n Erwerb <strong>de</strong>s benötigtenGefahrgutscheins.Weiterbildung in Warenwirtschaftssystemeneröffnet Aufstieg zumBereichsleiterMario K. wur<strong>de</strong> von <strong>de</strong>r JOB AG alsKommissionierer und Etikettierer vermitteltund erfüllte gewissenhaft dieihm übertragenen Aufgaben. Baldzeigte sich seine Affinität zu elektronischenHilfsmitteln und Datenerfassungsgeräten.Im Gespräch mit seinemVorarbeiter kam heraus, dass Marioeinen großen Teil <strong>de</strong>r Freizeit am Computerverbringt, sich gern mit Software-Details beschäftigt und einem Computerclubangehört.Der Vorarbeiter <strong>de</strong>s Kun<strong>de</strong>nunternehmensschlug eine Weiterbildung zumDatenverarbeitungskaufmann vor, unddie JOB AG übernahm einen Großteil<strong>de</strong>r Kosten. Nach erfolgreich absolvierterPrüfung wur<strong>de</strong> Mario K. in <strong>de</strong>r EDV-Abteilung eingesetzt und übernahmdort nach einigen Monaten die gera<strong>de</strong>frei wer<strong>de</strong>n<strong>de</strong> Planstelle <strong>de</strong>s BereichsleitersEDV-Erfassung.Logistik


Simulando um CSTRComo nós sempre estaremos simulando mo<strong>de</strong>loscontínuos simples, apenas os elementos 1, 3 e 4 do vetor sys<strong>no</strong>s interessam. Os elementos referentes a mo<strong>de</strong>los discretose à alimentação direta <strong>de</strong> entradas <strong>de</strong>vem ter valor zero.É preciso ter muito cuidado ao inicializar o mo<strong>de</strong>lo.Assegure-se que o número <strong>de</strong> entradas e saídascorrepon<strong>de</strong>m às entradas e saídas do diagrama do <strong>Simulink</strong>,e que todos os estados têm sua condição inicial corretamenteatribuída <strong>no</strong> vetor x0.


Simulando um CSTRAo longo da integração, o Simulinik instruirá o integrador achamar mo<strong>de</strong>l com vários valores <strong>de</strong> flag, dois dos quais <strong>de</strong><strong>no</strong>sso interesse.Quando mo<strong>de</strong>l for chamado com flag= 1, o integradorespera <strong>de</strong>le os valores das <strong>de</strong>rivadas dos estados contínuos. Ouseja, para flag = 1, sys <strong>de</strong>ve conter os valores das <strong>de</strong>rivadas.ondições iniciais dos estados.Por fim, para flag = 3, o integrador espera em sys o valordas saídas. Nos casos <strong>de</strong> mo<strong>de</strong>los simples (como o do CSTR), assaídas correspon<strong>de</strong>m aos estados.Leia com atenção o código <strong>de</strong> reator.m, a seguir.


Simulando um CSTRfunction [sys,x0] = reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0)%% Simula um reator CSTR (mistura perfeita) <strong>no</strong> qual se conduz uma% reação exotérmica (A->B), resfriado por serpentina%% U = 150 BTU/(h.ft2.R), coeficiente <strong>de</strong> troca térmica% A = 250 ft2, área <strong>de</strong> troca térmica% DeltaH = -30000 BTU/lbm, calor <strong>de</strong> reação% ro = 50 lb/ft3, <strong>de</strong>nsida<strong>de</strong>% Cp = 0.75 BTU/(lbm.R), calor específico% E = 30000 BTU/lbm, energia <strong>de</strong> ativação% R = 1.99 BTU/(lbm.R), constante dos gases% k0 = 7.08e10 1/h, termo pré-exponencial da constante <strong>de</strong> reação%switch flagcase 0 % Dimensiona o sistema e inicializa os estados% sys=[estados,0,saídas,entradas,0,0]sys = [3,0,3,5,0,0];% Condições iniciaisca= 0.1315; %lbm/ft3, concentração inicial <strong>no</strong> reatorT = 584.4115; %R, temperatura do reatorV = 200; %ft3, volume do reatorx0 = [ca T V]';reator.m - 1ª parte


Simulando um CSTRcase 1 % Calcula as <strong>de</strong>rivadas% Atualiza entradascai = u(1);%lbm/ft3, concentração da alimentaçãoFi = u(2); %ft3/hr, vazão <strong>de</strong> alimentaçãoF = u(3);%vazão <strong>de</strong> retiradaTc = u(4); %R, temperatura do fluido <strong>de</strong> refrigeraçãoTi = u(5);%R, temperatura da alimentação% Cálculo das <strong>de</strong>rivadasCa = x(1);T = x(2);V = x(3);k = k0*exp(-E/(R*T));dCa = (Fi*(cai-Ca)/V) - k*Ca;dV = Fi-F;dT = (Fi*Cp*ro*(Ti-T) + DeltaH*k*Ca*V - U*A*(T-Tc)) /(V*ro*Cp);sys = [dCa; dT; dV];case 3 % Calcula as saídassys = [x(1) x(2) x(3)];otherwisesys = [];endreator.m - 2ª parte


Simulando um CSTRO código <strong>de</strong> reator.m introduz uma <strong>no</strong>va estrutura <strong>de</strong>controle <strong>de</strong> fluxo <strong>de</strong> execução, a estrutura CASO. A sintaxe daestrutura CASO é a seguinte:AVALIE expressãoCASO valor 1bloco <strong>de</strong> código 1CASO 2bloco <strong>de</strong> código 2...DE OUTRA FORMAbloco <strong>de</strong> código <strong>de</strong> tratamento <strong>de</strong> exceçõesFIM


Simulando um CSTREm código M, esta sintaxe é escrita como abaixo:switch case case ...otherwiseend


Simulando um CSTRApós escrever o código-M da função-S, basta inserir umbloco S-Function e configurá-lo. A configuração exige apenas o<strong>no</strong>me do arquivo-M e a lista <strong>de</strong> parâmetros opcionais (caso afunção os possua).


Simulando um CSTRApós inserir e configurar o bloco, po<strong>de</strong>-se criar umamáscara para ele. A máscara do bloco irá gerar uma janela paraentrada dos parâmetros opcionais pelo usuário.Para criar uma máscara, selecione o bloco S-Function e, <strong>no</strong>menu Edit, escolha a opção Edit Mask.Na aba Icon, po<strong>de</strong>-se entrar o <strong>no</strong>me do bloco queaparecerá <strong>no</strong> diagrama.Na aba Initialization, edita-se a lista <strong>de</strong> parâmetros que ousuário <strong>de</strong>verá entrar, antes da simulação.


Simulando um CSTR


Simulando um CSTR


Simulando um CSTR


Simulando um CSTRO mo<strong>de</strong>lo já po<strong>de</strong> ser simulado. As saídas são:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!