A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas não-lineares no Simulink

Apresentações semelhantes


Apresentação em tema: "Sistemas não-lineares no Simulink"— Transcrição da apresentação:

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 reator.m - 1ª parte
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 = BTU/(h.ft2.R), coeficiente de troca térmica % A = ft2, área de troca térmica % DeltaH = BTU/lbm, calor de reação % ro = lb/ft3, densidade % Cp = BTU/(lbm.R), calor específico % E = BTU/lbm, energia de ativação % R = 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 = ; %lbm/ft3, concentração inicial no reator T = ; %R, temperatura do reator V = 200; %ft3, volume do reator x0 = [ca T V]'; reator.m - 1ª parte

17 Simulando um CSTR reator.m - 2ª parte 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:


Carregar ppt "Sistemas não-lineares no Simulink"

Apresentações semelhantes


Anúncios Google