Exemplo
1
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
Encontrando a função de transferência do tanque de nível:
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
Encontrando a função de transferência do tanque de nível:
O modelo é descrito por uma equação de balanço transiente de massa no
tanque:
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
Encontrando a função de transferência do tanque de nível:
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
Encontrando a função de transferência do tanque de nível:
Para o exemplo em questão considere um tanque de 1 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.
A = 3.1415 * (1/2)^2
A = 0.785
K p  R  6.37
R = 6.37
  AR  5
Kp
h' (s)
6.37
 G2 (s) 

'
q2 (s)
 s  1 5s  1
Função de transferência do tanque de nível:
Encontrando a função de transferência da válvula:
Considerando uma válvula com a seguinte
função de transferência:
Gv  K v  0.0103m3 / min psi
Válvula:
0.1545 m3/min
Linguagem
de
engenharia
0 m3/min
0
psi
Linguagem
de
máquina
15
psi
Função de transferência da válvula:
Encontrando a função de transferência do sensor
Considerando um medidor com a seguinte
função de transferência:
Gm  Km  5 psi / m
Sensor:
3m
Linguagem
de
engenharia
0m
0
psi
Linguagem
de
máquina
15
psi
Função de transferência do sensor
Malha de Controle
Exemplo 3 – Controlando o tanque de nível
Set-point
Erro:
(sp - valor medido)
Valor medido
Válvula
Controlador
Processo
Medidor
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
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:
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.
Tente:
P=
I =
D=
D
I
C
A
2
0
0
2
25
0
2
1
0
Nem todas as combinações de valores para P, I e D são
possíveis. As vezes o processamento numérico trava.
2
1
5
Exemplo
2
Revisão de fminsearch
Exemplo
3
Modelagem simples de um tanque de nível
Modelagem simples de um tanque de nível
Modelagem & Dinâmica de Processos
Modelos simples - o tanque de nível
pode-se escrever o balanço de massa do sistema
Ainda,
dmt 
  FE  F 
dt
(2)
dmt 
dht 
 A
dt
dt
(3)
dht  1
 FE  F 
dt
A
(4)
e, portanto,
1
Modelagem simples de um tanque de nível
Modelagem & Dinâmica de Processos
Modelos simples - o tanque de nível
Freqüentemente, considera-se a vazão de saída do tanque
proporcional
à
altura
da
coluna
de
líquido
é inversamente
proporcional a uma resistência ao escoamento (R):
F 
h
R
(5)
Logo,
dht  1 
h
  FE  
dt
A
R
(6)
1
Modelagem simples de um tanque de nível
Modelagem & Dinâmica de Processos
Modelos simples - o tanque de nível
Este modelo simples de um tanque de nível, sem balanço de
energia, possui uma solução analítica:
t



ht   RFE 1  e RA 


(7)
Para simular este modelo, basta escolher os valores das
constantes R, A e FE, das condições iniciais h0 e t0.
A simulação da solução analítica do modelo do tanque de
nível é mostrada a seguir.
1
Modelagem simples de um tanque de nível
% Definição das constantes do modelo
R = 1;
% h/m2
A = 2;
% m2
Fe = 10;
% m3/h
% Tempo de simulação
t = 0.0 : 0.01 : 10.0;
%h
% Simulação da altura de líquido
h = R*Fe*(1 - exp(-t/(R*A)));
%m
% Visualização da simulação
plot(t,h);
title('Simulação do tanque de nível');
xlabel('Tempo (h)');
ylabel('Altura (m)');
Modelagem simples de um tanque de nível
Verifique a consistência do calculo: a
matriz “h” gerada também deve ser 1x1000, já que
cada instante “t” gerou um valor “h”. É sempre útil
conferir a dimensão das variáveis, principalmente a
medida que as rotinas forem tornando-se
complexas.
Dica!
Exemplo
4
Modelagem de um tanque de nível via ED
Modelagem & Dinâmica de Processos
Muitas vezes é muito trabalhoso, ou mesmo impossível,
Modelos simples - o tanque de nível
encontrar a solução analítica para o conjunto de
equaçõesFreqüentemente,
diferenciais. Nesse
casoatemos
quesaída
simular
considera-se
vazão de
do tanque
usando
soluçãoà numérica
equações
diferenciais.
proporcional
altura da das
coluna
de líquido
é inversamente
Vamos
assumir aque
modelo ao
doescoamento
exemplo 1
não tivesse
proporcional
umaoresistência
(R):
solução analítica, e então usar o Matlab para estudar o
comportamento da altura dohnível com o tempo. A
F 
(5)
equação diferencial
será:
R
Logo,
dht  1 
h
  FE  
dt
A
R
(6)
1
Modelagem de um tanque de nível via ED
% Definição das constantes do modelo
R = 1;
% h/m2
A = 2;
% m2
Fe = 10; % m3/h
% Tempo de simulação
t = 0.0 : 0.01 : 10.0; % h
% Simulação da altura de líquido
[t,h] = ode45('dhdt',t, 0,[],[R A Fe]);
% Visualização da simulação
plot(t,h);
title('Simulação do tanque de nível');
xlabel('Tempo (h)');
ylabel('Altura (m)');
function dh = dhdt(t,h,flag,par)
R = par(1);
A = par(2);
Fe = par(3);
dh = (Fe-(h/R))/A;
Modelagem de um tanque de nível via ED
Nesse caso temos uma equação diferencial, então deveremos
usar uma função Matlab específica para a resolução de eq.
diferenciais. No caso temos a ODE45. A função ODE45
implementa um esquema de solução de sistemas de EDO’s por
método de Runge-Kutta de ordem média (consulte o help sobre
ODE45 para maiores detalhes).
[t,h] = ode45('dhdt',t, 0,[],[R A Fe]);
Modelagem de um tanque de nível via ED
Os parâmetros enviados entre parênteses são aqueles que
devemos passar para a ODE45:
-1º argumento de ode45 é uma string contendo o nome do arquivo .m
com as equações diferenciais. Neste caso, o arquivo chama-se dhdt.m.
-2º argumento é um vetor que pode conter (i) dois elementos: os
tempos inicial e final da integração, ou (ii) todos os valores de tempo para
os quais deseja-se conhecer o valor da variável integrada.
-3º argumento é o vetor contendo as condições iniciais das variáveis
dependentes das EDO’s. Os valores dos elementos do vetor de condições
iniciais precisam estar na mesma ordem em que as variáveis
correspondentes são calculadas na função passada como 1º argumento
para ode45 (neste caso, dhdt.m). Nesse caso em particular só temos uma
variável dependente, assim temos uma única condição inicial.
Modelagem de um tanque de nível via ED
-4º argumento é o vetor de opções de ode45. Há várias opções do
método que podem ser ajustadas. Entretanto, não deseja-se alterar
os valores-padrão. Neste caso, é passado um vetor vazio, apenas para
marcar o lugar das opções.
-5º argumento é um vetor contendo parâmetros de entrada para a
função dhdt.m. Observe que a função .m deve ler esses parâmetros
na ordem correta (recebe como variável local “par”).
Os resultados da simulação são obtidos nos dois parâmetros
entre colchetes (t , h).
Modelagem de um tanque de nível via ED
A codificação do arquivo .m segue o mesmo formato já explicado para
funções porém com algumas particularidades.
No caso específico de um arquivo .m que deve ser chamado por uma
função de solução EDO’s (todas as ODExx), a declaração deste arquivo
deve seguir a sintaxe:
function dy = nomefun(t, y, flag, arg1, ..., argN)
onde
•dy é o valor da(s) derivada(s) retornadas
•t e y são as variáveis independente e dependente, respectivamente.
•Opcional: caso deseje-se receber outros parâmetros, a função deve
receber um argumento marcador de lugar chamado flag. Após este,
ela recebe quaisquer outros parâmetros.
Exemplo
5
Modelagem de um tanque de aquecimento
Modelagem de um tanque de aquecimento
Modelagem & Dinâmica de Processos
Modelagem & Dinâmica de Processos
Modelos simples - tanque de aquecimento
Modelos simples - tanque de aquecimento
Como no caso anterior, o balanço de massa pode ser escrito
   V dT
d :VT
como
dt
dt
T
dV
dh 
 dT
 A h
T

dt
dt 
 h dt
1
dht 
  FE  
dt
A
R
 dT T 
h 
C p A  h
  FE     FE HE  FH   Q
dt
A
R

 como:
O
balanço de energia
é escrito
 UTFh H FH
dT C1 d FVT
FE   Q
U 
E TE  
 p


E 
E T
 A

dt
h  dtA
C p 

C
p 


(9)
(6)
(10)
(8)
(11)
1
1
Modelagem de um tanque de aquecimento
Traduzindo as equações diferenciais para o Matlab:
Matlab
Real
dy(1)
dh/dt
y(1)
h
dy(2)
dT/dt
y(2)
T
Modelagem de um tanque de aquecimento
% Definição das constantes do modelo
R = 1;
% h/m2
A = 2;
% m2
Fe = 10;
% m3/h
Cp = 0.75; % kJ/(kg . K)
Ro = 1000; % kg/m3
U = 150;
% kJ/(m2 . s . K)
Te = 530;
%K
Th = 540;
%K
% Tempo de simulação
t = 0.0 : 0.01 : 10.0; % h
% Simulação do modelo
[t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);
Modelagem de um tanque de aquecimento
% Visualização da simulação
figure(1);
plot(t,y(:,1));
title('Tanque de aquecimento');
xlabel('Tempo (h)');
ylabel('Altura (m)');
figure(2);
plot(t,y(:,2));
title('Tanque de aquecimento');
xlabel('Tempo (h)');
ylabel('Temperatura (K)');
Modelagem de um tanque de aquecimento
A única modificação em relação ao exemplo anterior é que
estamos passando duas condições iniciais (pois existem duas
variáveis dependentes):
[t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);
Modelagem de um tanque de aquecimento
A função .m tem o código apresentado a seguir:
function dy = dydt(t,y,flag,par);
U = par(1);
A = par(2);
Ro = par(3);
Cp = par(4);
Fe = par(5);
R = par(6);
Te = par(7);
Th = par(8);
dy(1) = (Fe-(y(1)/R))/A;
dy(2) = (1/y(1))* ( ((Fe*Te/A)+(U*Th/(Ro*Cp)))...
- ( y(2)*((Fe/A)+(U/(Ro*Cp)))) );
dy = dy(:);
Modelagem de um tanque de aquecimento
O vetor dy é criado como vetor linha (dy(1)) e
(dy(2)). Porém temos que retornar como vetor coluna.
Use o comando:
matriz coluna = matriz linha (:)
Dica!
Modelagem de um tanque de aquecimento
Quando for fazer os gráficos no programa principal
lembre-se que a primeira coluna de “dy” refere-se a “h” e a
segunda a “T”. Então para graficar h vs. tempo faça:
figure(1);
plot(t,y(:,1));
title('Tanque de aquecimento');
xlabel('Tempo (h)');
ylabel('Altura (m)');
Dica!
Download

Usando fminsearch, ode45 e bloco Transfer Function