1 / 25

Sistemas não-lineares no Simulink

Sistemas não-lineares no Simulink. Simulando um CSTR. Entradas: F i , T i ,T C ,F , C i A. Simulando um CSTR. Para construir o diagrama Simulink deste modelo, além dos blocos já utilizados, serão necessários os seguintes:

abena
Download Presentation

Sistemas não-lineares no Simulink

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemas não-lineares no Simulink

  2. Simulando um CSTR Entradas: F i,T i,TC ,F , C iA

  3. Simulando um CSTR • Para construir o diagrama Simulink deste modelo, além dos blocos já utilizados, serão necessários 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 função de usuário, escrita em código-M, de acordo com as regras para criação de S-Functions

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

  5. Simulando um CSTR O bloco Mux (u) do modelo concatena as 5 entradas em um vetor de 5 elementos.

  6. Simulando um CSTR O bloco Demux (Saída) extrai do vetor que recebe da função-S as saídas do modelo.

  7. 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 saída do bloco, ou seja, o valor que o bloco Transport Delay irá gerar, até que o tempo de simulação iguale o atraso (Initial input).

  8. Simulando um CSTR O que há de diferente neste modelo é a não linearidade que requer a função-S (reator.m), que trabalha diretamente com as equações diferenciais do CSTR.

  9. Simulando um CSTR É preciso seguir algumas regras específicas das funções-S. Quando usamos “solvers” do MATLAB programas para integrar ODE’s usamos sintaxes (dentro do programa principal) do tipo ... [T, Y] = ode45(‘arq’,TEMPO,Y0,[],PAR1,...,PARN) ... A função “arq” calcula as derivadas com a seguinte sintaxe: function saida = arq(t,y,flag,PAR1,...,PARN) onde o vetor vazio ([]) na chamada a ode45 é um marcador de lugar para o vetor de opções, que não está sendo alterado desta forma (i.e.: defaults do MATLAB são assumidos.

  10. Simulando um CSTR No caso do Simulink, você não escreverá a chamada a ode45, precisando se importar apenas com a declaração da função que calcula as derivadas e com as regras de chamada desta função. Esta função não apenas calculará as derivadas do modelo, como também irá informar ao integrador as condições iniciais. Uma função-S deve ser declarada da seguinte forma: function [sys, x0] = model(t,x,u,flag,PAR1,...,PARN)

  11. Simulando um CSTR • Onde • sys é a saída de model, cujo significado depende de flag • x0 é o vetor de condições iniciais • t é o tempo de simulação • x é o vetor de estados do modelo • u é o vetor de entradas do modelo • flag é um parâmetro que informa a model o tipo de informação que o integrador espera receber • PAR1,...,PARN são os parâmetros adicionais que podem ser passados à função model

  12. Simulando um CSTR Vamos agora tentar entender como funciona a simulação de um modelo usando uma função-S. Ao contrário do que acontecia com as funções de transferência, usando uma função-S, você pode trabalhar com valores absolutos das suas derivadas. Para isso, é preciso conhecer as condições iniciais da integração (o que não é pedido em nenhuma parte da configuração da simulação). Além disso, o Simulink precisa de informações sobre o modelo, se as variáveis são contínuas ou discretas, quantas entradas, saídas e estados o modelo possui, etc.

  13. Simulando um CSTR Antes de começar a simulação, o Simulink instruirá o integrador a chamar a função model com um valor de flag igual a 0. Isso significa que model deve retornar em sys um vetor de configuração do modelo e em x0 o vetor de condições iniciais dos estados. Assim, para flag = 0, o vetor sys deve conter 6 elementos: sys = [ número de estados contínuos número de estados discretos número de saídas número de entradas marcador de alimentação direta tempo de amostragem ]

  14. Simulando um CSTR Como nós sempre estaremos simulando modelos contínuos simples, apenas os elementos 1, 3 e 4 do vetor sys nos interessam. Os elementos referentes a modelos discretos e à alimentação direta de entradas devem ter valor zero. É preciso ter muito cuidado ao inicializar o modelo. Assegure-se que o número de entradas e saídas correpondem às entradas e saídas do diagrama do Simulink, e que todos os estados têm sua condição inicial corretamente atribuída no vetor x0.

  15. Simulando um CSTR Ao longo da integração, o Simulinik instruirá o integrador a chamar model com vários 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 contínuos. Ou seja, para flag = 1, sys deve conter os valores das derivadas. ondições iniciais dos estados. Por fim, para flag = 3, o integrador espera em sys o valor das saídas. Nos casos de modelos simples (como o do CSTR), as saídas correspondem aos estados. Leia com atenção o código de reator.m, a seguir.

  16. 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 % reação exotérmica (A->B), resfriado por serpentina % % U = 150 BTU/(h.ft2.R), coeficiente de troca térmica % A = 250 ft2, área de troca térmica % DeltaH = -30000 BTU/lbm, calor de reação % ro = 50 lb/ft3, densidade % Cp = 0.75 BTU/(lbm.R), calor específico % E = 30000 BTU/lbm, energia de ativação % R = 1.99 BTU/(lbm.R), constante dos gases % k0 = 7.08e10 1/h, termo pré-exponencial da constante de reação % switch flag case 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 iniciais ca = 0.1315; %lbm/ft3, concentração inicial no reator T= 584.4115; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; reator.m - 1ª parte

  17. Simulando um CSTR case 1 % Calcula as derivadas % Atualiza entradas cai = u(1);%lbm/ft3, concentração da alimentação Fi = u(2);%ft3/hr, vazão de alimentação F = u(3);%vazão de retirada Tc = u(4); %R, temperatura do fluido de refrigeração Ti = u(5);%R, temperatura da alimentação % Cálculo 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 saídas sys = [x(1) x(2) x(3)]; otherwise sys = []; end reator.m - 2ª parte

  18. Simulando um CSTR O código de reator.m introduz uma nova estrutura de controle de fluxo de execução, a estrutura CASO. A sintaxe da estrutura CASO é a seguinte: AVALIE expressão CASO valor 1 bloco de código 1 CASO 2 bloco de código 2 ... DE OUTRA FORMA bloco de código de tratamento de exceções FIM

  19. Simulando um CSTR Em código M, esta sintaxe é escrita como abaixo: switch <expressão> case <valor 1> <bloco de código 1> case <valor 2> <bloco de código 2> ... otherwise <bloco de código de tratamento de exceções> end

  20. Simulando um CSTR Após escrever o código-M da função-S, basta inserir um bloco S-Function e configurá-lo. A configuração exige apenas o nome do arquivo-M e a lista de parâmetros opcionais (caso a função os possua).

  21. Simulando um CSTR Após inserir e configurar o bloco, pode-se criar uma máscara para ele. A máscara do bloco irá gerar uma janela para entrada dos parâmetros opcionais pelo usuário. Para criar uma máscara, selecione o bloco S-Function e, no menu Edit, escolha a opção Edit Mask. Na aba Icon, pode-se entrar o nome do bloco que aparecerá no diagrama. Na aba Initialization, edita-se a lista de parâmetros que o usuário deverá entrar, antes da simulação.

  22. Simulando um CSTR

  23. Simulando um CSTR

  24. Simulando um CSTR

  25. Simulando um CSTR O modelo já pode ser simulado. As saídas são:

More Related