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, dmt FE F dt (2) dmt dht A dt dt (3) dht 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, dht 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 ht 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, dht 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 dht 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 UTFh 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!