Carlos André Vaz Junior
[email protected]
http://www.eq.ufrj.br/links/h2cin/carlosandre
EQ/UFRJ
Mundo Simulink
Mais de 150 mil resultados
EQ/UFRJ
Ajuda
http://newsreader.mathworks.com
?
EQ/UFRJ
Acessando o Simulink
EQ/UFRJ
Ambiente Simulink
A programação no Simulink segue uma interface
gráfica muito mais intuitiva e fácil de usar:
EQ/UFRJ
Ambiente Simulink
Ambiente de Trabalho Simulink
EQ/UFRJ
Exemplos
EQ/UFRJ
Exemplo
1
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Biblioteca
Sources
EQ/UFRJ
Biblioteca
Math
Exemplo 1 – Comportamento Senoidal
Ajuste automático da escala do gráfico:
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Ajuste manual da escala do gráfico:
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Agora quero multiplicar o resultado por -1:
Biblioteca
Math
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Configuração do bloco Product:
Número de termos
da multiplicação.
Multiplicação
de matrizes ou
termo a termo.
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Alterando os parâmetros de simulação:
Tempo inicial
Tempo final
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Criando um sub-sistema:
Sub-sistema
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Editando um sub-sistema:
Sub-sistema
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Algumas vezes é mais fácil tratar os dados gerados no
ambiente Matlab.
Usamos o bloco “to workspace”:
Biblioteca
Sinks
Cria a variável
A no workspace
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Configuração do bloco “To Workspace”:
Cria a variável
A no workspace
Formato da variável
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
No Workspace...
>> plot(tout,A)
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Rodando um bloco:
CTRL R
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Combinando dois sinais:
Entre outras aplicações, permite exibir duas
ou mais curvas no mesmo gráfico.
EQ/UFRJ
Bloco MUX
Biblioteca Signals & Sys.
Exemplo 1 – Comportamento Senoidal
Dois ou mais gráficos:
EQ/UFRJ
Exemplo 1 – Comportamento Senoidal
Dois ou mais gráficos:
Configurando...
EQ/UFRJ
Exemplo
2
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
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.
q1
q2
h
q3
A
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
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.
- a relação entre a vazão e a carga é linear:
q3  h / R
m
min
m2
EQ/UFRJ
=
m3
min
Exemplo 2 – Simulação de um modelo dinâmico
O modelo é descrito por uma equação de balanço transiente de massa no
tanque:
g
m3
m2
m
min
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
EQ/UFRJ
g
m3
m3
min
Exemplo 2 – Simulação de um modelo dinâmico
Introduzindo as variáveis-desvio e aplicando a Transformada
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
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
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
partir do tempo igual a 10 min(step1).
EQ/UFRJ
A = 3.1415 * (0.5/2)^2
A = 0.196
K p  R  6.37
R = 6.37
  AR  1.25
Exemplo 2 – Simulação de um modelo dinâmico
Corrente q1
Corrente q2
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
Biblioteca
Source
Biblioteca
Continuous
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
Degrau começa
no tempo zero
Degrau começa
no tempo dez
Bloco Função
de Transferência
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
A amplitude do
degrau é 1
EQ/UFRJ
Exemplo 2 – Simulação de um modelo dinâmico
Resultado obtido:
1º estado
estacionário
2º estado
estacionário
1ª
perturbação
EQ/UFRJ
2ª
perturbação
Exemplo
3
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
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
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
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:
Gm  K m  24 psi / m
3,60 m
Linguagem
de
engenharia
0m
0
psi
EQ/UFRJ
Linguagem
de
máquina
15
psi
Exemplo 3 – Controlando o tanque de nível
Erro:
(sp - valor medido)
Set-point
Valor medido
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
Válvula
Controlador
Processo
Medidor
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
Bloco Ganho:
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
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
Bloco PID:
O controlador é representado pelo bloco
PID Controller. Podemos regular a sua ação proporcional,
integral e derivativa.
EQ/UFRJ
Exemplo 3 – Controlando o tanque de nível
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
EQ/UFRJ
Nem todas as combinações de valores para P, I e D são
possíveis. As vezes o processamento numérico trava.
Exemplo 3 – Controlando o tanque de nível
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
EQ/UFRJ
Nem todas as combinações de valores para P, I e D são
possíveis. As vezes o processamento numérico trava.
Revisão de
fminsearch
EQ/UFRJ
EQ/UFRJ
Exemplo 4
Exemplo 4
EQ/UFRJ
Exemplo 4
A seguinte malha de controle foi elaborada no Simulink.
Usar o Matlab para ajustar o controlador.
degrau unitário
no instante 5
EQ/UFRJ
P
I
D
Exemplo 4
Programa principal:
clear all
close all
warning off
options = optimset('display','iter');
global P I D erro
Pmin = fminsearch('custo', [1 5 1],options)
EQ/UFRJ
Exemplo 4
Função “custo”:
function [erro] = custo(x)
global P I D erro
P=x(1);
I=x(2);
D=x(3);
[T]=sim('malha',[0 65]);
erro=sum(erro.^2);
EQ/UFRJ
Exemplo 4
Solução encontrada para degrau unitário no SP:
Pmin = 4.5075 2.6329 -0.0000
EQ/UFRJ
Exemplo 4
Arquitetura Simulink usada para gerar o gráfico
do slide anterior:
EQ/UFRJ
Exemplo 4b
Exemplo 4b
EQ/UFRJ
Exemplo 4b
Ao invés de minimizar o somatório quadrático do erro,
posso minimizar o somatório quadrático ponderado com
o tempo. Ou seja, erros em tempos mais elevados são mais
significativos.
EQ/UFRJ
Exemplo 4b
EQ/UFRJ
Exemplo 4b
Programa principal:
clear all
close all
warning off
options = optimset('display','iter');
global P I D erro tempo
Pmin = fminsearch('custo', [10 5 1],options)
EQ/UFRJ
Exemplo 4b
Função custo:
function [erro] = custo(x)
global P I D erro tempo
P=x(1);
I=x(2);
D=x(3);
[T]=sim('malha',[0 65]);
%erro=sum(erro.^2); % somatorio quadratico do erro
erro=sum((erro.*tempo).^2); % somatorio quadratico
do erro ponderado com o tempo
EQ/UFRJ
Exemplo 4b
Resultado obtido:
Pmin = 25.8333
5.3333 -0.0000
Chute inicial usado:
10 5 1
EQ/UFRJ
Ajuste de TF
EQ/UFRJ
?
EQ/UFRJ
EQ/UFRJ
EQ/UFRJ
Ferramenta completa para treinamento...
EQ/UFRJ
Passando dados para o Simulink
EQ/UFRJ
Gerador de dados experimentais:
EQ/UFRJ
EQ/UFRJ
Usando os dados experimentais:
EQ/UFRJ
EQ/UFRJ
Exemplo
5
EQ/UFRJ
Exemplo 5 – Bloco S-function
Equações para modelar um CSTR:
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
EQ/UFRJ

E
RT
C A  UAT  Tc 
Exemplo 5 – Bloco S-function
Passando as equações para o formato Matlab:
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);
EQ/UFRJ
Exemplo 5 – Bloco S-function
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)
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)
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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
Legenda:
parâmetros freqüentemente alterados
parâmetros raramente alterados
parâmetros calculados
EQ/UFRJ
Exemplo 5 – Bloco S-function
EQ/UFRJ
Exemplo 5 – Bloco S-function
Biblioteca
Functions & Tables
Parâmetros
freqüentemente
alterados
EQ/UFRJ
Parâmetros raramente alterados
(máscara)
Exemplo 5 – Bloco S-function
Parâmetros calculados
EQ/UFRJ
Exemplo 5 – Bloco S-function
Em resumo:
Fi
T
Cai
DeltaH
Ca
U
Ko
A
V
F
Cp
Tc
ro
Ti
EQ/UFRJ
E
R
Exemplo 5 – Bloco S-function
Configurando o bloco S-function:
Nome do arquivo com as
equações
Parâmetros alterados
pela máscara
EQ/UFRJ
Exemplo 5 – Bloco S-function
Criando uma máscara:
EQ/UFRJ
Exemplo 5 – Bloco S-function
Localização do arquivo com as equações:
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!
EQ/UFRJ
Exemplo 5 – 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
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]';
EQ/UFRJ
continua...
Exemplo 5 – 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
• 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).
EQ/UFRJ
Exemplo 5 – 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
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]';
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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
perfeita) no qual se conduz uma
alimentação
% reaçãotempo
exotérmica
(A->B), resfriado
por serpentina
de amostragem
]
%
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]';
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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]';
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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);
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];
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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);
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];
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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);
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];
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
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);
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];
EQ/UFRJ
continua...
Exemplo 5 – Bloco S-function
case 3 % Calcula as saídas
sys = [x(1) x(2) x(3)];
otherwise
sys = [];
end
EQ/UFRJ
Exemplo 5
Bloco Integrador
EQ/UFRJ
Exemplo 5 – Bloco Integrador
A outra técnica para resolver sistemas de equações diferenciais no
Simulink é utilizando o bloco Integrator. A vantagem dessa técnica
é que podemos construir a equação de modo totalmente intuitivo,
como veremos abaixo.
Por simplicidade vamos trabalhar com uma única equação diferencial,
mas a técnica pode ser estendida para sistemas de equações.
dh
1
 ( Fe  K (h  h*))
dt
A
Exemplo 5 – Bloco Integrador
1/A
EQ/UFRJ
( h-hestrela )
Exemplo 5 – Bloco Integrador
Bloco Fcn
(Functions
&
Tables)
EQ/UFRJ
Exemplo 5 – Bloco Integrador
K ( h - hestrela )
EQ/UFRJ
Exemplo 5 – Bloco Integrador
Fe - K( h - hestrela )
EQ/UFRJ
Exemplo 5 – Bloco Integrador
(1/A) (Fe - K( h - hestrela ))
EQ/UFRJ
Carlos André Vaz Junior
[email protected]
http://www.eq.ufrj.br/links/h2cin/carlosandre
EQ/UFRJ
Download

Desenvolvendo aplicações em Simulink