Vous êtes sur la page 1sur 66

MATLAB Avançado - Simulink

Carlos André Vaz Junior


cavazjunior@gmail.com
http://www.eq.ufrj.br/links/h2cin/carlosandre
MATLAB Avançado - Simulink

Mais de 150 mil resultados


http://newsreader.mathworks.com

?
MATLAB Avançado - Simulink
MATLAB Avançado - Simulink
A programação no Simulink segue uma interface
gráfica muito mais intuitiva e fácil de usar:
MATLAB Avançado - Simulink
Ambiente de Trabalho Simulink
MATLAB Avançado - Simulink
MATLAB Avançado - Simulink

Exemplos
MATLAB Avançado - Simulink

1
Exemplo
MATLAB Avançado - Simulink

Biblioteca Biblioteca
Sources Math
Ajuste automático da escala do gráfico:
MATLAB Avançado - Simulink
Ajuste manual da escala do gráfico:
MATLAB Avançado - Simulink
Agora quero multiplicar o resultado por -1:

Biblioteca
Math
MATLAB Avançado - Simulink
Configuração do bloco Product:

Número de termos
da multiplicação.
MATLAB Avançado - Simulink

Multiplicação
de matrizes ou
termo a termo.
Alterando os parâmetros de simulação:
MATLAB Avançado - Simulink

Tempo inicial

Tempo final
Criando um sub-sistema:

Sub-sistema
MATLAB Avançado - Simulink
Editando um sub-sistema:

Sub-sistema
MATLAB Avançado - Simulink
Algumas vezes é mais fácil tratar os dados gerados no
ambiente Matlab.

Usamos o bloco “to workspace”:

Biblioteca
Sinks
MATLAB Avançado - Simulink

Cria a variável
A no workspace
Configuração do bloco “To Workspace”:

Cria a variável
A no workspace
MATLAB Avançado - Simulink

Formato da variável
No Workspace...

>> plot(tout,A)
MATLAB Avançado - Simulink
MATLAB Avançado - Simulink

Rodando um bloco:

CTRL R
Combinando dois sinais:
Entre outras aplicações, permite exibir duas
ou mais curvas no mesmo gráfico.
MATLAB Avançado - Simulink

Bloco MUX
Biblioteca Signals & Sys.
MATLAB Avançado - Simulink

Dois ou mais gráficos:


Dois ou mais gráficos:
Configurando...
MATLAB Avançado - Simulink
MATLAB Avançado - Simulink

2
Exemplo
Temos a simulação de um tanque de nível sob a influência de uma
perturbação degrau na vazão da alimentação. A figura descreve
o sistema físico que será simulado.
MATLAB Avançado - Simulink

q1 q2

h
q3

A
Deduzindo o modelo matemático que descreve o tanque:

Assumindo que:
- a densidade do líquido e a área da seção transversal do
tanque A são constantes.
MATLAB Avançado - Simulink

- a relação entre a vazão e a carga é linear:

q3  h / R
O modelo é descrito por uma equação de balanço transiente de massa no
tanque:

dh
A  q1  q 2  q3
dt
MATLAB Avançado - Simulink

Substituindo a hipótese ii na equação anterior ficamos com:

dh h
A  q1  q 2  
dt R
Introduzindo as variáveis-desvio e aplicando a Transformada
de Laplace, chegamos as funções de transferência:

h' ( s ) Kp
 G1 ( s) 
'
q1 ( s)  s 1
MATLAB Avançado - Simulink

h' ( s ) Kp
 G2 ( s ) 
'
q 2 ( s)  s 1
onde:
Kp  R
  AR
Para o exemplo em questão considere um tanque de 0.5 m de diâmetro
e uma válvula na saída na linha atuando sob uma resistência
linear (R) de 6.37 min/m2.

Serão simulados um degrau de 1 ft3 na vazão q1 a partir do


tempo igual a 0 min (step) e um degrau de 1 ft3 na vazão q2 a
MATLAB Avançado - Simulink

partir do tempo igual a 10 min(step1).

A = 3.1415 * (0.5/2)^2
A = 0.196 K p  R  6.37
R = 6.37   AR  1.25
MATLAB Avançado - Simulink

Corrente q1

Corrente q2
Biblioteca
Source
MATLAB Avançado - Simulink

Biblioteca
Continuous
Degrau começa
no tempo zero

Degrau começa
no tempo dez
MATLAB Avançado - Simulink

Bloco Função
de Transferência
MATLAB Avançado - Simulink

degrau é 1
A amplitude do
Resultado obtido:

1º estado
MATLAB Avançado - Simulink

estacionário 2º estado
estacionário

1ª 2ª
perturbação perturbação
MATLAB Avançado - Simulink

3
Exemplo
Considerando um sistema de controle de nível mostrado abaixo.
O nível de líquido é medido e a saída do transmissor de nível (LT) é
enviada para um controlador feedback (LC) que controla o nível pelo
ajuste da vazão volumétrica q2. A segunda vazão de fluido, q1, corresponde
à variável perturbação (corrente chegando de outra unidade,
não posso controlar essa corrente).
MATLAB Avançado - Simulink

q1 q2

hm
LT LC

h
q3

A
Considerando uma válvula com a seguinte função de transferência:

Gv  K v  0.0103 m 3 / min psi

Considerando um medidor com a seguinte função de transferência:


Gm  K m  24 psi / m
MATLAB Avançado - Simulink
Erro:
(sp - valor medido)

Set-point
MATLAB Avançado - Simulink

Valor medido
Válvula

Controlador
Processo
MATLAB Avançado - Simulink

Medidor
Bloco Ganho:

Quando a função de transferência é simplesmente


uma constante, como no caso do medidor, podemos
representa-lá pelo bloco Gain.
MATLAB Avançado - Simulink

Gm  K m  24 psi / m
Bloco PID:
O controlador é representado pelo bloco
PID Controller. Podemos regular a sua ação proporcional,
integral e derivativa.
MATLAB Avançado - Simulink
Ajuste de Controladores:

Na prática o melhor ajuste para um controlador


é obtido pela combinação da ação P (proporcional), I (integral),
e D (derivativa). Podemos usar o Simulink para obter uma
MATLAB Avançado - Simulink

estimativa inicial desse ajuste.

D
I Nem todas as combinações de valores para P, I e D são
C possíveis. As vezes o processamento numérico trava.
A
Ajuste de Controladores:

Tente:
P = ajuste
Na prática o melhor 2 para2 um 2controlador
2
I =
é obtido pela combinação da ação 0 25 1 I (integral),
P (proporcional), 1
e D (derivativa). Podemos
D= usar o0 Simulink
0 para0 obter uma
5
MATLAB Avançado - Simulink

estimativa inicial desse ajuste.

D
I Nem todas as combinações de valores para P, I e D são
C possíveis. As vezes o processamento numérico trava.
A
MATLAB Avançado - Simulink

4
Exemplo
Equações para modelar um CSTR:

dV
 FA F
dt
MATLAB Avançado - Simulink

E
dC A
dt

FA A
V
  
C A  C A  k0e RT C A

E
dT

A
F CP T A

 T  HVk0e

RT C
A  UAT  Tc 
dt VC P
Passando as equações para o formato Matlab:

dCa = (Fi*(cai-Ca)/V) - k*Ca;

dV = Fi-F;
MATLAB Avançado - Simulink

dT = (Fi*Cp*ro*(Ti-T) + DeltaH*k*Ca*V - U*A*(T-Tc)) /(V*ro*Cp);


onde:

Fi: vazão de alimentação do reator (ft3/h)


Cai: concentração da alimentação do reator (lbm/ft3)
Ca: concentração no reator (variável)
k: é dado pela equação k = k0*exp(-E/(R*T))
V: volume do reator
F: vazão de saída (ft3/h)
MATLAB Avançado - Simulink

Cp: calor especifico = 0.75 btu/lbm.R


ro: densidade =50 lb/ft3
Ti: temperatura de alimentação (R)
T: temperatura do reator
DeltaH: calor de reação = -30000 BTU/ lbm
U: coeficiente de troca térmica =150 BTU/(h.ft2.R)

continua...
onde:

A: área de troca térmica = 250 ft2


Tc: temperatura do fluido de alimentação (R)
E: energia de ativação = 30000 BTU/lbm
R: constante dos gases = 1.99 BTU/lbm.R
MATLAB Avançado - Simulink

Legenda:
parâmetros freqüentemente alterados

parâmetros raramente alterados

parâmetros calculados
MATLAB Avançado - Simulink
Biblioteca
Functions & Tables

Parâmetros
freqüentemente
alterados
MATLAB Avançado - Simulink

Parâmetros raramente alterados


(máscara)
MATLAB Avançado - Simulink

Parâmetros calculados
Em resumo:

Fi T
Cai DeltaH
Ca U
Ko A
MATLAB Avançado - Simulink

V Tc
F E
Cp R
ro
Ti
Configurando o bloco S-function:

Nome do arquivo com as


MATLAB Avançado - Simulink

equações

Parâmetros alterados
pela máscara
MATLAB Avançado - Simulink

Criando uma máscara:


Localização do arquivo com as equações:

O arquivo com as equações deve estar localizado no mesmo


local dos arquivos Simulink!
MATLAB Avançado - Simulink

O Current Directory do Matlab deve apontar para


esse local!
Criando o arquivo com as equações:

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

%
switch flag
MATLAB Avançado - Simulink

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]';
continua...
Criando o arquivo com as equações:

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

%
switch flag
MATLAB Avançado - Simulink

• sys é a saída do modelo, cujo significado depende de flag


•case
x0 é0 o%vetor
Dimensiona o sistema
de condições e inicializa
iniciais (funcionaosapenas
estadosquando flag = 0 )
• t é o tempo de simulação
• x%é sys=[estados,0,saídas,entradas,0,0]
o vetor de estados do modelo
• usys
é o=vetor
[3,0,3,5,0,0];
de entradas do modelo (recebido do bloco Mux)
% Condições
• flag iniciais que informa o tipo de informação que o integrador
é um parâmetro
ca =espera
0.1315;
receber a cada %lbm/ft3,
chamadoconcentração inicial no reator
T = 584.4115;
• U,...,k0 são os parâmetros%R, adicionais temperatura
que podemdo serreator
passados à função
V =através
200; de uma mascara %ft3, (devem
volume dodeclarados
estar reator na configuração
x0 =do[ca T V]';
bloco S-function).
Criando o arquivo com as equações:

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

%
switch flag
MATLAB Avançado - Simulink

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]';
continua...
sys = [ número de estados contínuos
número de estados discretos
function [sys,x0]
número =dereator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0)
saídas
% número de entradas
% Simulamarcador
um reatordeCSTR (mistura direta
alimentação perfeita) no qual se conduz uma
% reaçãotempo
exotérmica (A->B), resfriado
de amostragem ] por serpentina

%
switch flag
MATLAB Avançado - Simulink

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]';
continua...
function [sys,x0]
Estimativas iniciais= para
reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0)
o cálculo do sistema de equações diferenciais
%
(cálculo numérico)
% Simula um reator CSTR (mistura perfeita) no qual se conduz uma
% reação exotérmica (A->B), resfriado por serpentina

%
switch flag
MATLAB Avançado - Simulink

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]';
continua...
case 1 % Calcula as derivadas

% Atualiza entradas
cai = u(1); %lbm/ft3, concentração da alimentação=0.5;
Fi = u(2); %ft3/hr, vazão de alimentação=40
F = u(3); %vazão de retirada=40
Tc = u(4); %R, temperatura do fluido de refrigeração=594.6
Ti = u(5); %R, temperatura da alimentação=530
% Cálculo das derivadas

Ca = x(1);
MATLAB Avançado - Simulink

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];

continua...
case 1 % Calcula as derivadas

% Atualiza entradas
cai = u(1); %lbm/ft3, concentração da alimentação=0.5;
Fi = u(2); %ft3/hr, vazão de alimentação=40
F = u(3); %vazão de retirada=40
Tc = u(4); %R, temperatura do fluido de refrigeração=594.6
Ti = u(5); %R, temperatura da alimentação=530
% Cálculo das derivadas

Ca = x(1);
MATLAB Avançado - Simulink

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];

continua...
case 1 % Calcula as derivadas

% Atualiza entradas
cai = u(1); %lbm/ft3, concentração da alimentação=0.5;
Fi = u(2); %ft3/hr, vazão de alimentação=40
F = u(3); %vazão de retirada=40
Tc = u(4); %R, temperatura do fluido de refrigeração=594.6
Ti = u(5); %R, temperatura da alimentação=530
% Cálculo das derivadas

Ca = x(1);
MATLAB Avançado - Simulink

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];

continua...
case 1 % Calcula as derivadas

% Atualiza entradas
cai = u(1); %lbm/ft3, concentração da alimentação=0.5;
Fi = u(2); %ft3/hr, vazão de alimentação=40
F = u(3); %vazão de retirada=40
Tc = u(4); %R, temperatura do fluido de refrigeração=594.6
Ti = u(5); %R, temperatura da alimentação=530
% Cálculo das derivadas

Ca = x(1);
MATLAB Avançado - Simulink

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];

continua...
case 3 % Calcula as saídas

sys = [x(1) x(2) x(3)];

otherwise

sys = [];
MATLAB Avançado - Simulink

end
MATLAB Avançado - Simulink

Carlos André Vaz Junior


cavazjunior@gmail.com
http://www.eq.ufrj.br/links/h2cin/carlosandre

Vous aimerez peut-être aussi