MATLAB Avançado - Simulink
Carlos André Vaz Junior
[email protected]
http://www.eq.ufrj.br/links/h2cin/carlosandre
MATLAB Avançado - Simulink
Mais de 150 mil resultados
MATLAB Avançado - Simulink
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
Exemplos
MATLAB Avançado - Simulink
Exemplo
1
MATLAB Avançado - Simulink
Biblioteca
Sources
Biblioteca
Math
MATLAB Avançado - Simulink
Ajuste automático da escala do gráfico:
MATLAB Avançado - Simulink
Ajuste manual da escala do gráfico:
Agora quero multiplicar o resultado por -1:
MATLAB Avançado - Simulink
Biblioteca
Math
MATLAB Avançado - Simulink
Configuração do bloco Product:
Número de termos
da multiplicação.
Multiplicação
de matrizes ou
termo a termo.
MATLAB Avançado - Simulink
Alterando os parâmetros de simulação:
Tempo inicial
Tempo final
Criando um sub-sistema:
MATLAB Avançado - Simulink
Sub-sistema
Editando um sub-sistema:
MATLAB Avançado - Simulink
Sub-sistema
Algumas vezes é mais fácil tratar os dados gerados no
ambiente Matlab.
MATLAB Avançado - Simulink
Usamos o bloco “to workspace”:
Biblioteca
Sinks
Cria a variável
A no workspace
Configuração do bloco “To Workspace”:
MATLAB Avançado - Simulink
Cria a variável
A no workspace
Formato da variável
No Workspace...
MATLAB Avançado - Simulink
>> plot(tout,A)
MATLAB Avançado - Simulink
Rodando um bloco:
CTRL R
Combinando dois sinais:
MATLAB Avançado - Simulink
Entre outras aplicações, permite exibir duas
ou mais curvas no mesmo gráfico.
Bloco MUX
Biblioteca Signals & Sys.
MATLAB Avançado - Simulink
Dois ou mais gráficos:
Dois ou mais gráficos:
MATLAB Avançado - Simulink
Configurando...
MATLAB Avançado - Simulink
Exemplo
2
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
MATLAB Avançado - Simulink
o sistema físico que será simulado.
q1
q2
h
q3
A
Deduzindo o modelo matemático que descreve o tanque:
Assumindo que:
MATLAB Avançado - Simulink
- a densidade do líquido e a área da seção transversal do
tanque A são constantes.
- 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:
MATLAB Avançado - Simulink
dh
A  q1  q 2  q3
dt
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
MATLAB Avançado - Simulink
de Laplace, chegamos as funções de transferência:
Kp
h' ( s )
 G1 ( s) 
'
 s 1
q1 ( s)
Kp
h' (s)
 G2 (s) 
'
 s 1
q 2 ( s)
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.
MATLAB Avançado - Simulink
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
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
MATLAB Avançado - Simulink
Biblioteca
Source
Biblioteca
Continuous
Degrau começa
no tempo zero
MATLAB Avançado - Simulink
Degrau começa
no tempo dez
Bloco Função
de Transferência
MATLAB Avançado - Simulink
A amplitude do
degrau é 1
MATLAB Avançado - Simulink
Resultado obtido:
1º estado
estacionário
2º estado
estacionário
1ª
perturbação
2ª
perturbação
MATLAB Avançado - Simulink
Exemplo
3
MATLAB Avançado - Simulink
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).
q1
q2
hm
LT
LC
h
q3
A
Considerando uma válvula com a seguinte função de transferência:
Gv  K v  0.0103m3 / min psi
Considerando um medidor com a seguinte função de transferência:
MATLAB Avançado - Simulink
Gm  K m  24 psi / m
MATLAB Avançado - Simulink
Erro:
(sp - valor medido)
Set-point
Valor medido
Válvula
MATLAB Avançado - Simulink
Controlador
Processo
Medidor
Bloco Ganho:
MATLAB Avançado - Simulink
Quando a função de transferência é simplesmente
uma constante, como no caso do medidor, podemos
representa-lá pelo bloco Gain.
Gm  K m  24 psi / m
Bloco PID:
MATLAB Avançado - Simulink
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
estimativa inicial desse ajuste.
D
I
C
A
Nem todas as combinações de valores para P, I e D são
possíveis. As vezes o processamento numérico trava.
MATLAB Avançado - Simulink
Ajuste de Controladores:
Tente:
P = ajuste
2 para
2 um 2controlador
2
Na prática o melhor
é obtido pela combinação da
ação 0
P (proporcional),
I =
25
1 I (integral),
1
e D (derivativa). Podemos
usar o0 Simulink
D=
0 para0 obter uma
5
estimativa inicial desse ajuste.
D
I
C
A
Nem todas as combinações de valores para P, I e D são
possíveis. As vezes o processamento numérico trava.
MATLAB Avançado - Simulink
Exemplo
4
Equações para modelar um CSTR:
MATLAB Avançado - Simulink
dV
 FA F
dt

E


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 A  UAT  Tc 
Passando as equações para o formato Matlab:
MATLAB Avançado - Simulink
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);
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))
MATLAB Avançado - Simulink
V: volume do reator
F: vazão de saída (ft3/h)
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
MATLAB Avançado - Simulink
R: constante dos gases = 1.99 BTU/lbm.R
Legenda:
parâmetros freqüentemente alterados
parâmetros raramente alterados
parâmetros calculados
MATLAB Avançado - Simulink
MATLAB Avançado - Simulink
Biblioteca
Functions & Tables
Parâmetros
freqüentemente
alterados
Parâmetros raramente alterados
(máscara)
MATLAB Avançado - Simulink
Parâmetros calculados
MATLAB Avançado - Simulink
Em resumo:
Fi
T
Cai
DeltaH
Ca
U
Ko
A
V
F
Cp
Tc
ro
Ti
E
R
MATLAB Avançado - Simulink
Configurando o bloco S-function:
Nome do arquivo com as
equações
Parâmetros alterados
pela máscara
MATLAB Avançado - Simulink
Criando uma máscara:
Localização do arquivo com as equações:
MATLAB Avançado - Simulink
O arquivo com as equações deve estar localizado no mesmo
local dos arquivos Simulink!
O Current Directory do Matlab deve apontar para
esse local!
Criando o arquivo com as equações:
MATLAB Avançado - Simulink
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
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:
MATLAB Avançado - Simulink
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
• sys é a saída do modelo, cujo significado depende de flag
Dimensiona
o sistema
e inicializa
estadosquando flag = 0 )
•case
x0 é0 o%vetor
de condições
iniciais
(funcionaosapenas
• t é o tempo de simulação
• x%
é sys=[estados,0,saídas,entradas,0,0]
o vetor de estados do modelo
[3,0,3,5,0,0];
• usys
é o=vetor
de entradas do modelo (recebido do bloco Mux)
% Condições
iniciais que informa o tipo de informação que o integrador
• flag
é um parâmetro
ca =espera
0.1315;
%lbm/ft3,
receber a cada
chamadoconcentração inicial no reator
T = 584.4115;
temperatura
• U,...,k0
são os parâmetros%R,
adicionais
que podemdo
serreator
passados à função
V =através
200; de uma mascara
%ft3, (devem
volume
dodeclarados
reator
estar
na configuração
x0 =do[ca
T V]';
bloco
S-function).
Criando o arquivo com as equações:
MATLAB Avançado - Simulink
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
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...
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
perfeita) no qual se conduz uma
alimentação
% reaçãotempo
exotérmica
(A->B), resfriado
por serpentina
de amostragem
]
MATLAB Avançado - Simulink
sys = [
%
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]';
continua...
MATLAB Avançado - Simulink
function [sys,x0]
reator(t,x,u,flag,U,A,DeltaH,ro,Cp,E,R,k0)
Estimativas
iniciais= para
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
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
MATLAB Avançado - Simulink
% 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);
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
MATLAB Avançado - Simulink
% 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);
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
MATLAB Avançado - Simulink
% 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);
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
MATLAB Avançado - Simulink
% 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);
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)];
MATLAB Avançado - Simulink
otherwise
sys = [];
end
MATLAB Avançado - Simulink
Carlos André Vaz Junior
[email protected]
http://www.eq.ufrj.br/links/h2cin/carlosandre
Download

Apresentação (MATLAB Avançado / Simulink)