EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Sistemas não-lineares no Simulink
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
dV
 Fi  F
dt
E

dCA F i i

C A  C A  k0e RT C A
dt
V




dT F CP T  T  HVk0e

dt
VC P
i
i

E
RT
C A  UAT  Tc 
Entradas: F i, T i,TC ,F , C
i
A
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
O diagrama do modelo do CSTR encontra-se abaixo.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
O bloco Mux (u) do modelo concatena as 5 entradas em
um vetor de 5 elementos.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
O bloco Demux (Saída) extrai do vetor que recebe da
função-S as saídas do modelo.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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).
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
É preciso seguir algumas regras específicas das funções-S.
Quando
usamos
integrar
ODE’s
“solvers”
usamos
do
MATLAB
sintaxes
programas
(dentro
do
para
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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)
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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 ]
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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).
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
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.
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
EQE594 – Controle e Instrumentação de Processos
Profa. Ofélia Araújo
Simulando um CSTR
O modelo já pode ser simulado. As saídas são:
Download

AULA 2: SIMULINK: S