Вы находитесь на странице: 1из 25

Sistemas no-lineares no Simulink

Objetivos:

esta aula ir introduzir a codificao de S-functions no Simulink 4, para a simulao de sistemas no-lineares.

Simulando um CSTR
O terceiro exemplo mostra como simular um modelo de processo qumico usando as equaes diferenciais ordinrias que o compem. O modelo o de um CSTR (j deduzido em sala de aula).

dV = FA F dt

dC A FA A = C A C A k0e RT C A dt V

dT F ACP T A T + HVk0e = dt VC P

E RT C

UA(T Tc )

Simulando um CSTR
Para construir o diagrama Simulink deste modelo, alm dos blocos j utilizados, sero necessrios os seguintes: Simulink/Signals & Systems/Mux: concatena (ou empilha) escalares em um vetor (ou vetores em um vetor maior) Simulink/Signals & Systems/Demux: extrai (ou desempilha) constantes de um vetor (ou vetores de um vetor maior) Simulink/Continuous/Transport Delay: aplica um atraso a uma entrada Simulink/Functions & Tables/S-Function: executa uma funo de usurio, escrita em cdigo-M, de acordo com as regras para criao de S-Functions

Simulando um CSTR
O diagrama do modelo do CSTR encontra-se abaixo.

Simulando um CSTR
O bloco Mux (u) do modelo concatena as 5 entradas em um vetor de 5 elementos. Este vetor ser passado para a funo-S que contm o modelo. importante garantir que a funo-S espera um vetor de tamanho igual ao desenhado no diagrama. A configurao do bloco Mux trivial: basta informar o nmero de constantes que sero empilhadas.

Simulando um CSTR
O bloco Demux (Sada) extrai do vetor que recebe da funo-S as sadas do modelo. Novamente, deve-se assegurar que o tamanho do vetor retornado pela funo-S est de acordo com a configurao do bloco Demux, que tambm trivial: basta informar o nmero de sadas (ou seja, neste caso, o tamanho do vetor recebido pelo bloco).

Simulando um CSTR
O bloco Transport Delay aplica um atraso na entrada que recebe. Para configur-lo, basta informar (i) o valor do (tempo de) atraso (Time Delay) e (ii) o valor inicial da sada do bloco, ou seja, o valor que o bloco Transport Delay ir gerar, at que o tempo de simulao iguale o atraso (Initial input).

Simulando um CSTR
O que h de realmente diferente neste modelo a funo-S (reator.m), que calcula as equaes diferenciais do CSTR. Esta funo similar a uma das funes mostradas nas 2 primeiras aulas, que eram chamadas por ode45 para simular um modelo atravs de cdigo-M (dhdt.m, dydt.m, etc). Entretanto, agora no voc que escreve um programa que usa um integrador para calcular as derivadas e resolver o modelo. o Simulink que chama o integrador, mandando-o executar a funo-S que voc criar.

Simulando um CSTR
Portanto, preciso seguir algumas regras especficas das funes-S. Quando escrevemos programas para simular modelos contnuos, nas duas primeiras aulas, usvamos sintaxes (dentro do programa principal) do tipo ... [T, Y] = ode45(arq,TEMPO,Y0,[],PAR1,...,PARN) ... E a funo que calculava as derivadas era declarada como function saida = arq(t,y,flag,PAR1,...,PARN) onde o vetor vazio ([]) na chamada a ode45 era um marcador de lugar para o vetor de opes, que no foi usado.

Simulando um CSTR
No caso do Simulink, voc no escrever a chamada a ode45, precisando se importar apenas com a declarao da funo que calcula as derivadas e com as regras de chamada desta funo. Esta funo no apenas calcular as derivadas do modelo, como tambm ir informar ao integrador as condies iniciais (lembre que, usando funes de transferncia, voc est trabalhando com variveis-desvio - o Simulink no pede condies iniciais para a simulao) e calvular as sadas. Uma funo-S deve ser declarada da seguinte forma: function [sys, x0] = model(t,x,u,flag,PAR1,...,PARN)

Simulando um CSTR
Onde sys a sada de model, cujo significado depende de flag x0 o vetor de condies iniciais t o tempo de simulao x o vetor de estados do modelo u o vetor de entradas do modelo flag um parmetro que informa a model o tipo de informao que o integrador espera receber PAR1,...,PARN so os parmetros adicionais que podem ser passados funo model

Simulando um CSTR
Vamos agora tentar entender como funciona a simulao de um modelo usando uma funo-S. Ao contrrio do que acontecia com as funes de transferncia, usando uma funo-S, voc pode trabalhar com valores absolutos das suas derivadas. Para isso, preciso conhecer as condies iniciais da integrao (o que no pedido em nenhuma parte da configurao da simulao). Alm disso, o Simulink precisa de informaes sobre o modelo, se as variveis so contnuas ou discretas, quantas entradas, sadas e estados o modelo possui, etc.

Simulando um CSTR
Antes de comear a simulao, o Simulink instruir o integrador a chamar a funo model com um valor de flag igual a 0. Isso significa que model deve retornar em sys um vetor de configurao do modelo e em x0 o vetor de condies iniciais dos estados. Assim, para flag = 0, o vetor sys deve conter 6 elementos: sys = [ nmero de estados contnuos nmero de estados discretos nmero de sadas nmero de entradas marcador de alimentao direta tempo de amostragem ]

Simulando um CSTR
Como ns sempre estaremos simulando modelos

contnuos simples, apenas os elementos 1, 3 e 4 do vetor sys nos interessam. Os elementos referentes a modelos discretos e alimentao direta de entradas devem ter valor zero. preciso ter muito cuidado ao inicializar o modelo. Assegure-se que o nmero de entradas e sadas correpondem s entradas e sadas do diagrama do Simulink, e que todos os estados tm sua condio inicial corretamente atribuda no vetor x0.

Simulando um CSTR
Ao longo da integrao, o Simulinik instruir o integrador a chamar model com vrios valores de flag, dois dos quais de nosso interesse. Quando model for chamado com flag = 1, o integrador espera dele os valores das derivadas dos estados contnuos. Ou seja, para flag = 1, sys deve conter os valores das derivadas. ondies iniciais dos estados. Por fim, para flag = 3, o integrador espera em sys o valor das sadas. Nos casos de modelos simples (como o do CSTR), as sadas correspondem aos estados. Leia com ateno o cdigo de reator.m, a seguir.

Simulando um CSTR
function [sys,x0] = reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0) % % Simula um reator CSTR (mistura perfeita) no qual se conduz uma % reao exotrmica (A->B), resfriado por serpentina % % U = 150 BTU/(h.ft2.R), coeficiente de troca trmica % A = 250 ft2, rea de troca trmica % DeltaH = -30000 BTU/lbm, calor de reao % ro = 50 lb/ft3, densidade % Cp = 0.75 BTU/(lbm.R), calor especfico % E = 30000 BTU/lbm, energia de ativao % R = 1.99 BTU/(lbm.R), constante dos gases % k0 = 7.08e10 1/h, termo pr-exponencial da constante de reao % switch flag case 0 % Dimensiona o sistema e inicializa os estados % sys=[estados,0,sadas,entradas,0,0] sys = [3,0,3,5,0,0]; % Condies iniciais ca = 0.1315; %lbm/ft3, concentrao inicial no reator T = 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]';

reator.m - 1 parte

Simulando um CSTR
case 1 % Calcula as derivadas % Atualiza entradas cai = u(1); %lbm/ft3, concentrao da alimentao Fi = u(2); %ft3/hr, vazo de alimentao F = u(3); %vazo de retirada Tc = u(4); %R, temperatura do fluido de refrigerao Ti = u(5); %R, temperatura da alimentao % Clculo das derivadas Ca = 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 sadas sys = [x(1) x(2) x(3)]; otherwise sys = []; end

reator.m - 2 parte

Simulando um CSTR
O cdigo de reator.m introduz uma nova estrutura de controle de fluxo de execuo, a estrutura CASO. A sintaxe da estrutura CASO a seguinte: AVALIE expresso CASO valor 1 bloco de cdigo 1 CASO 2 bloco de cdigo 2 ... DE OUTRA FORMA bloco de cdigo de tratamento de excees FIM

Simulando um CSTR
Em cdigo M, esta sintaxe escrita como abaixo:

switch <expresso> case <valor 1> <bloco de cdigo 1> case <valor 2> <bloco de cdigo 2> ... otherwise <bloco de cdigo de tratamento de excees> end

Simulando um CSTR
Aps escrever o cdigo-M da funo-S, basta inserir um bloco S-Function e configur-lo. A configurao exige apenas o nome do arquivo-M e a lista de parmetros opcionais (caso a funo os possua).

Simulando um CSTR
Aps inserir e configurar o bloco, pode-se criar uma mscara para ele. A mscara do bloco ir gerar uma janela para entrada dos parmetros opcionais pelo usurio. Para criar uma mscara, selecione o bloco S-Function e, no menu Edit, escolha a opo Edit Mask. Na aba Icon, pode-se entrar o nome do bloco que aparecer no diagrama. Na aba Initialization, edita-se a lista de parmetros que o usurio dever entrar, antes da simulao.

Simulando um CSTR

Simulando um CSTR

Simulando um CSTR

Simulando um CSTR
O modelo j pode ser simulado. As sadas so:

Вам также может понравиться