Curso MATLAB 6
Instrutor: Marcelo Escobar
Simulink
Curso MATLAB 6
Exemplo: Simulação de um Reator
Simulink:
Referências:
Apresentando o Simulink:
O simulink é um aplicativo do matlab que permite analisar o
comportamento dinâmico de sistemas a partir da construção de
um modelo matemático.
Como Acessar:
>>simulink na Comand Window.
Ou no ícone colorido na barra de ferramentas.
Ao abrir o simulink temos acesso ao Simulink Library Browser,
no qual ficam exibidos os ícones dos diagramas de blocos
disponíveis para a composição do modelo.
No menu file, temos a opção new model, no qual podemos criar
um modelo matemático para o nosso sistema.
Os ícones são inseridos no modelo com uma seleção seguida de
arraste.
Criando Modelos:
O tópico Sources nos fornece uma série de possíveis entradas
dos modelos.
O tópico Sink nos fornece uma série de possíveis retornos de
saídas dos modelos.
Um clique com o
mouse na fronteira
do bloco, nos permite
ligar os blocos entre si.
Criando Modelos:
Na barra de ferramentas do modelo, possui um ícone de play
que simula o modelo.
Na barra de ferramentas, no menu Simulation, podemos
acessar e editar os parâmetros da simulação.
Os ícones arrastados para o modelo são genéricos e podem ser
editados com um duplo clique sobre o ícone.
Como exemplo, o ícone
sin wave.
Criando Modelos:
Biblioteca
Sources
Biblioteca
Math
Exemplo: Adição de sinais
Ajuste de Escala:
Um autoscale pode ser acessado para ajustar o gráfico.
Se a curva parecer dentada aumente o fator de refino.
Exemplo: Ajuste de Escala
Plotando Resultados:
Dois ou mais gráficos:
Parâmetros de Simulação:
Tempo inicial
Tempo final
Manipulação de Blocos Simulink:
No tópico Math temos uma série de blocos pelos quais os
sinais podem passar, um dos mais comuns são os blocos de
ganho e o bloco de soma.
Soma de sinais: Math  bloco sum
Multiplicação do sinal por um ganho: Math  bloco gain
Obs: Os ícones inseridos no modelo podem ser editados na
sua aparência, assim como no Word, podemos ampliar e girar
o ícone como quisermos, um clique com o botão direito sobre
o ícone nos permite a edição e formatação.
Manipulação de Blocos Simulink:
No tópico Signals and Systens temos uma série de blocos
pelos quais os sinais podem passar, um dos mais comuns são
os blocos multiplexador e o demultiplexador.
Multiplexador de sinal: combina entradas fornecendo uma
saída, é como se tivéssemos dois sinais armazenados numa
mesma variável pós passagem no multiplexador.
Signals and Systens  Mux
Demultiplexador de sinal: faz o contrário, pega um sinal
múltiplo e divide em sinais únicos.
Signals and Systens  Demux
Manipulação de Blocos Simulink:
No tópico Functions & Tables temos uma série de blocos
pelos quais os sinais podem passar.Um dos mais importantes é
O matlab function, que permite que usemos qualquer função
do matlab ou mesmo uma que criamos. Com isso somos
capazes de gerar qualquer sinal.
O bloco S-function será visto com mais detalhes mais
adiante.
Por fim temos os tópicos de modelos contínuos e discretos
que podemos utilizar, nada impede que usemos um modelo em
arquivo m do matlab. Além disso temos uma série de outras
ferramentas com ícones que podem ser utilizados, esses
discutidos são os principais.
Exibição de Resultados:
O ícone scope permite que mais de um gráfico seja plotado no
mesmo eixo, basta usar um bloco Mux.
Além disso a barra de ferramentas do scope , permite a
edição de número de eixos por janela, podendo assim plotar
dois gráficos no mesmo scope com eixos diferentes.
Podemos enviar os dados também para o workspace com o
bloco to workspace fornecendo o nome da variável na qual o
sinal vai ser armazenado.
Podemos simular o modelo através da Comand Window:
>>sim(‘nome do modelo’)
Cada bloco permite a chamada de uma função do matlab,é só
fornecer o nome da função em propriedades. A função é
executada com um clique sobre o ícone.
Tipos de Modelos:
Modelos dinâmicos são equações diferencias que nos permitem
avaliar de que forma uma dada propriedade varia com o tempo.
Um vez obtido o modelo do processo, a resolução da equação ou do
sistema de equações diferenciais nos fornece as variáveis de saída
do modelo.
Se usarmos os comandos ode vistos anteriormente estamos
considerando as entradas constantes. Na verdade o que queremos
analisar é o comportamento da variável de saída sujeita a um sinal
de entrada(dinâmica).Podemos fazer isso usando ode, mas isso vai
requerer um Loop, e o cálculo de um ode a cada iteração.
A vantagem do Simulink é que com a adição de blocos no modelo
, podemos analisar facilmente os resultados.
Exemplo de Modelo:
Precisamos saber então como a partir das equações diferenciais
que governam o nosso processo, podemos fornecer esse modelo ao
Simulink.
Exemplo: Balanço de Massa em um tanque.
m  m assa

m taxa

F
h
g
massa específica
vazão volumétrica
altura
gravidade

dm 
 me  m s
dt
m  . A.h
A

mi  .Fi
dh
 Fin  k . h
dt
Saídas: [ variáveis que queremos obter] -h
Estados: [propriedades que variam com tempo nas edif]- h
Entradas: [ propriedades que afetam nossas variáveis de saída]
E variam com o tempo] -Fi
Parâmetros: [ propriedades fixas do modelo] – A e k
Fs  k. h
Modelo do tanque:
Os estados são identificados pela derivada em relação ao tempo.
Em muitas vezes, os estados, são as nossas variáveis de saída.
Os parâmetros são as propriedades que não variam com o tempo, nesse
caso, a área do tanque não varia com o tempo.
A vazão de entrada é uma entrada do sistema, pois esta sujeito a
perturbações externas.
Podemos construir o modelo, usando por exemplo a álgebra de blocos:
Simulando o Modelo:
Precisamos fornecer os valores para as variáveis Fi, k e A.
K=1.2m2/s; A=28m2; Fi=10m3/s;
O bloco utilizado para Fi é um bloco degrau, é uma entrada muito
comum, na qual em um dado instante,a variável de entrada assume um
novo valor.Vamos editar um degrau no instante 2, de 10 para 12 m2.
Fi
h
Linearização do Modelo:
Uma outra forma muito comum de tratar o modelo é linearizando
utilizando a expansão em série de Taylor :
Modelo
dsn
 f n (e, s )
dt
yn  g n (e, s )
 df1

 ds1
ds  df2

dt  ds1
 df
 m
 ds1
n- numero de saídas
m-numero de equações
p-numero de entradas
df1
ds2
df2
ds2
dfm
ds2
A
 df1
df1 


dsn 
 de1
 df
df2 
.s   2
dsn 
 de1

dfm 
 dfm
 de
dsn 
 1
df1
de2
df2
de2
dfm
de2
B
df1 

dep 
df2 
.e

dep 
dfm 
dep 
Representação em Espaço de Estados:
Agora as variáveis são variáveis desvio em relação ao estacionário.
s  s  sest
As matrizes jacobianos, são aplicadas no ponto estacionário de operação,
assim todas os elementos das matrizes são numéricos e o nosso modelo
agora é linear.


 dg1

 ds1
dg
y 2
 ds1
 dg
 m
 ds1
dg1
ds2
dg2
ds2
dgm
ds2
C
dg1
dg1 


dsn 
 de1
 dg
dg2 
.s   2
dsn 
 de1

dgm 
 dgm
 de
dsn 
 1
dg1
de2
dg2
de2
dgm
de2
dg1

dep 
dg2 
.e
dep 
dgm 
dep 
D
As matrizes A,B,C e D formam a chamada representação em espaço de
estados. No exemplo: A=[-k/(2A.sqrt(h)] B=[1/A] C=[1] D=[0]
O simulink possui um bloco no tópico Continuous em que podemos
fornecer as matrizes para simular o modelo.
Representação em Espaço de Estados:
Transformada de Laplace :
Transformada de Laplace:
A propriedade mais importante da transformada de Laplace:
L{ a.Dny/dtn}=sn.Y(s)
Podemos obter a transformada de laplace usando o symbolic toolbox:
>>help laplace
Aplicando a transformada de laplace no nosso exemplo linearizado:
A.s.Y(s)-k.Y(s)=Fi
Fi=U(s)
Y(s)/U(s)= Fi/(A .s –k)
Ou seja a função de transferência relaciona a entrada com a saída do sistema.
O simulink possui um bloco no tópico Continuous em que podemos fornecer
a função de transferência.
Funções de Transferência :
A função de transferência de um sistema é a razão de dois polinômios no domínio de
Laplace.
Podemos criar funções de transferência na Comand Window:
>>help tf
O conceito de função de transferência é muito importante no estudo de controle de
Processos, é uma forma simples de se representar um modelo.
Cada equação diferencial linearizada pode ser representada por uma função de
Transferência.Para um sistema com múltiplas entradas e múltiplas saídas, teremos
uma Função de transferência que relaciona cada uma delas.
Esse curso tem caráter de apenas fornecer as ferramentas necessárias para a analise
de dinâmica de sistemas,com um conhecimento teórico mais aprofundado sobre
controle de processos tudo ficará muito mais claro.
Propriedades das Transformadas:
Representação em Funções de Transferência :
Exemplo Funções de Transferência :
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
Exemplo Funções de Transferência :
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:
dh
h
A  q1  q 2  
dt
R
q3  h / R
Exemplo Funções de Transferência :
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
Exemplo Funções de Transferência :
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).
A = 3.1415 * (0.5/2)^2
A = 0.196
R = 6.37
K p  R  6.37
  AR  1.25
Exemplo Funções de Transferência :
Corrente q1
Corrente q2
Exemplo Funções de Transferência :
Degrau começa
no tempo zero
Degrau começa
No tempo dez
Bloco Função
de Transferência
Exemplo Funções de Transferência :
Resultado obtido:
1º estado
estacionário
2º estado
estacionário
1ª
perturbação
2ª
perturbação
S-functions:
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

E
RT
C A  UAT  Tc 
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);
Exemplo 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)
Exemplo 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
Exemplo S-function:
Biblioteca
Functions & Tables
Parâmetros
freqüentemente
alterados
Parâmetros raramente alterados
(máscara)
Exemplo S-function:
Configurando o bloco S-function:
Nome do arquivo com as
equações
Parâmetros alterados
pela máscara
Exemplo S-function:
Criando uma máscara:
Exemplo 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]';
Exemplo 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)
•
•
•
•
•
•
sys é a saída do modelo, cujo significado depende de flag
x0 é o vetor de condições iniciais (funciona apenas quando flag = 0 )
t é o tempo de simulação
x é o vetor de estados do modelo
u é o vetor de entradas do modelo (recebido do bloco Mux)
flag é um parâmetro que informa o tipo de informação que o integrador
espera receber a cada chamado
• U,...,k0 são os parâmetros adicionais que podem ser passados à função
através de uma mascara (devem estar declarados na configuração
do bloco S-function).
Exemplo S-function:
Criando o arquivo com as equações:
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];
Exemplo S-function:
Criando o arquivo com as equações:
case 3 % Calcula as saídas
sys = [x(1) x(2) x(3)];
otherwise
sys = [];
end
Download

Curso MATLAB 6 smlink