Transcript
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA DEPARTAMENTO DE ENGENHARIA ELÉTRICA ENGC54 - LABORATÓRIO INTEGRADO VI
Alunos: Lucas Marins Batista,
[email protected] Ueslei Reis dos Santos Júnior,
[email protected] Wellington Passos,
[email protected] Turma: T01 Professor: Bernardo Ordonez
PROJETO DE SISTEMA DE CONTROLE DE TANQUES NÃO LINEARES TEORIA
Salvador – BA, 06 de Janeiro de 2013
1/17
1. Objetivos Realizar a modelagem de um sistema de tanques acoplados de dinâmica não linear e projeto de controlador PI capaz de levar em simulação o nível da água a valores previamente estabelecidos mantendo em malha fechada um tempo de acomodação com critério de 2% menor que 150s e sobressinal máximo de 20%, como avaliação parcial para a disciplina ENGC54 - Laboratório integrado 6 da graduação em Engenharia Elétrica da UFBA.
2. Introdução Este trabalho apresenta os processos de modelagem e projeto de controlador proporcional e integrativo (PI) para estabelecer os níveis desejados de água em um sistema de tanques acoplados. Dividido em duas partes, o segundo trabalho “Projeto de Sistema de Controle de Tanques não Lineares - Prática“, propõe uma implementação prática do projeto desenvolvido. No item três (3) é realizada a modelagem dos tanques e são desenvolvidas as equações dinâmicas. O item quatro (4) aborda as técnicas de linearização e projeto do controlador PI. O item cinco (5) conclui o trabalho. O apêndice ou item sete (7) apresenta o conjunto de códigos feitos em Matlab usados para auxiliar nas tarefas.
3. Modelagem e dinâmica dos tanques Possuir um ou mais modelos para um sistema permite que se possam realizar previsões matemáticas sobre o seu comportamento sob qualquer tipo de entrada e possibilita o projeto dos controladores. Os primeiros itens são dedicados a obter um modelo matemático para os tanques. Logo após, é verificado o seu comportamento para variações em torno do ponto de operação. Com esse teste, é possível verificar o tempo de acomodação e a existência de sobressinal na resposta em malha aberta.
2/17
3.1. Geometria do tanque em trapézio Uma representação em duas dimensões do tanque em trapézio é mostrada na figura 1. Enquanto a profundidade é constante, o comprimento varia com a altura na dependência do ângulo teta.
Figura 1 – Tranque trapezoidal
A área da seção transversal é dada por:
Utilizando a relação trigonométrica no triangulo ABC:
portanto,
onde: d1 é o comprimento da base inferior do trapézio; d2 é o comprimento adicional da base do trapézio dependente do nível da água; d3 é o valor da profundidade do tanque h é o nível da água; é a inclinação do lado do trapézio em relação à sua base inferior. A1 é a área da seção transversal do tanque.
3/17
3.2. Geometria do tanque circular Uma representação em duas dimensões do tanque circular é mostrada na figura 2. Enquanto a profundidade é constante, o comprimento varia com a altura na dependência do raio da circunferência.
Figura 2 – Tanque circular.
Aplicando o Teorema de Pitágoras ao triângulo ABC, obtemos:
Encontrando também a área da seção transversal:
onde: R é o valor do raio da circunferência; h é o valor do nível da água em relação à base da circunferência; d3 é o valor da profundidade; x é o valor da metade do comprimento do tanque ao nível h. A2 é a área da secção transversal do tanque.
4/17
3.3. Dinâmica dos tanques acoplados Esta análise, que se aplica a ambos os tanques da figura 3, visa encontrar as equações diferenciais que descrevem o sistema. Partindo do princípio da conservação das massas:
Sendo q a taxa de água armazenada no tanque e qout as vazões de saída. Logo,
Figura 3 – Tanques acoplados
As vazões de saída podem ser escritas na forma:
Substituindo na relação anterior, isolando a derivada:
Para os dois tanques, temos as equações que descrevem o fenômeno:
5/17
3.4. Pontos de equilíbrio No equilíbrio, ou em regime estacionário, a variação de água no tanque é zero, ou seja,
A solução desse sistema são as vazões de entrada de regime estacionário em função das alturas desejadas:
3.5. Resultados de simulação Com o auxílio do Simulink e do código em Matlab do Apêndice, o conjunto de tanques foi simulado para o conjunto de constantes fornecidas na tabela 1: Grandeza
Valor
Nível desejado no tanque 1 (H1)
7cm
Nível desejado no tanque 2 (H2)
2,5cm
Nível inicial no tanque 1 (h01)
9cm
Nível inicial no tanque 2 (h02)
5cm
K1
2,5cm/s
Kac
2cm/s
Profundidade dos tanques (d3)
9,5cm
Base do trapézio (d1)
9,1cm
Inclinação do lado do trapézio (
)
1,92344
Raio da circunferência
9,2cm
Vazão de equilíbrio no tanque 1 (Qin1)
23,5cm/s
Vazão de equilíbrio no tanque 2 (Qin2)
4cm/s
Tabela 1 – Constantes fornecidas para as simulações.
Os gráficos obtidos através da simulação estão representados na figura 4. Os degraus foram obtidos variando-se a condição inicial de cada tanque em 2 cm com relação ao nível final enquanto a entrada dos tanques foi alimentada com a vazão que levaria os níveis dos tanques até os valores desejados. É possível observar que a resposta a um degrau positivo é mais rápida que a resposta a um degrau negativo, evidenciando a natureza não linear do sistema. Como não há sobressinal nas respostas, a característica importante obtida é o período máximo de 200 segundos até a estabilização, que é aproximadamente igual para ambos os tanques.
6/17
Figura 4 – Respostas ao degrau dos tanques em malha aberta
Figura 5 – Diagrama de blocos do sistema não linear de tanques acoplados
4. Projeto do controlador PI O projeto do controlador consiste em alocar os polos de malha fechada de modo que se satisfaçam alguns requisitos de desempenho desejados. Para as técnicas de projeto clássicas para a obtenção de um controlador PI possam ser aplicadas, é preciso antes linearizar as equações e desacoplar as variáveis do modelo através do projeto de um compensador. O controlador deve manter em malha fechada um tempo de acomodação com critério de 2% menor que 250s e sobressinal máximo de 20%.
7/17
4.1. Linearização A linearização aproxima a dinâmica do sistema por uma reta em torno do ponto de operação, como o apresentado na tabela 1. Utilizando a série de Taylor, pode-se aproximar uma função por:
onde x0 é o conjunto das grandezas do sistema no ponto de operação, ou seja, é ndimensional. Partindo do modelo não linear do problema em questão:
Definindo o ponto de equilíbrio como
calculados anteriormente na tabela 1, pode-se aproximar F(x) no ponto de equilíbrio por:
Como
, podemos definir:
Considerando
,
e definindo a saída desejada como
, encontra-se:
Na posse das matrizes A, B, C e D, têm-se o espaço de estados:
4.2. Desacoplamento de variáveis Para a sintonia do controlador através de métodos clássicos de controle, pode-se utilizar uma técnica de desacoplamento ideal, como na figura 6. Para sintonizar C(s), considera-se um sistema desacoplado T(s)=Y(s)/V(s). A ideia é que a relação
8/17
entrada/saída da planta torne-se uma matriz diagonal T(s) com o acréscimo de um compensador, e para isso calculamos uma matriz de transferência D(s):
Figura 6 – Diagrama de blocos de controlador com compensador de desacoplamento.
então:
Relembrando que T(s) deve ser diagonal e pode ser uma matriz qualquer, pode fazer:
e como T(s)=G(s)*D(s), um conjunto de manipulações matriciais levam à relação:
Com o sistema desacoplado pode-se proceder a sintonia do controlador como um problema monovariável e depois incorporar D(s) ao controlador. Neste caso:
e o controlador final:
4.3. Sintonia do controlador PI Um controlador PI possui a função de transferência na forma:
onde: Kp é a constante de proporcionalidade; Ki é a constante de integração; Ta é o pólo de malha aberta adicionado pelo controlador PID.
A sintonia do controlador consiste então em posicionar o zero do controlador PID e escolher um valor para o ganho proporcional. Para tanto, podemos escolher alguns 9/17
requerimentos desejáveis do regime transitório ou usar alguma das várias regras para sintonia existentes na literatura. Neste trabalho, optou-se por obter em malha fechada um tempo de acomodação com critério de 2% menor 150s e sobressinal máximo de 20%,. Levando em consideração que as funções de transferência de T(s) são da forma:
Um bom critério é tornar o zero Ta do controlador entre 1,5 e 3 vezes o zero Z da planta. Com isso, o valor da constante KP pode ser escolhido comparando a equação característica do sistema em malha fechada:
com a equação característica desejada:
encontrando como solução:
4.4. Resultados O processo de linearização fornece um modelo no espaço de estados. Após o desacoplamento, as funções de transferência independentes para cada tanque são extraídas. Utilizando o mesmo procedimento do item 3.5, foram obtidas as respostas ao degrau da figura 7.
Figura 7 – Respostas ao degrau dos modelos linearizados dos tanques.
10/17
Uma rápida observação é que o tempo de acomodação é idêntico não apenas entre os dois tanques, mas também entre as respostas aos degraus positivo e negativo, mantendo-se igual a 200s. A fim de verificar a validade da linearização, os gráficos do item 3.5 e os da figura 5 foram postos na figura 8. Podem-se observar poucas diferenças entre as curvas, de modo que o resultado da linearização é confiável e pode ser usado no lugar das equações reais para o projeto do controlador.
Figura 8 – Validação dos resultados da linearização
Do projeto do controlador PI, foram obtidas as funções de transferência:
O desempenho dos controladores pode ser observado na figura 9, obtida utilizando os mesmos critérios do item 3.5, utilizando o modelo não linear durante a simulação. Lembrando que Ctotal = D(s)*C(s).
11/17
Figura 9 – Resposta ao degrau do sistema controlado em malha fechada.
As principais características do sistema final são um sobressinal máximo igual a 10% e um tempo de acomodação de aproximadamente 60s, atingido os objetivos definidos no início do trabalho. São evidentes as diferenças nas respostas aos degraus positivo e negativo dadas as não linearidades. Um último gráfico de interesse são os sinais de controle usados para a obtenção da resposta do controlador, apresentados na figura 10. Como esperado, as respostas convergem para a mesma vazão de regime estacionário. As vazões negativas significam drenagem, enquanto que a positivas indicam suprimento de água.
Figura 10 – Vazões de entrada para o sistema de tanques.
12/17
Figura 11 – Diagrama de blocos do controle em malha fechada simulado no Simulink
5. Conclusão O estudo realizado proporcionou conhecimento e entendimento sobre o projeto básico de controladores e o uso de ferramentas como o Matlab para tal. O controlador desenvolvido se mostrou eficiente em simulação, de modo que próximos trabalhos podem ser voltados para a sua realização prática em um conjunto de tanques reais, ou que os procedimentos aqui usados sejam aplicados em outros problemas de controle.
6. Referências [1] Notas de aula do Prof. Dr. Bernardo Ordonez [2] Ibrahim, D., “Microcontroller Based Applied Dgital Control”, © 2006, Jonh Wiley & Sons, Ltd. ISBN: 0-470-86335-8 [3] Fontes, Fernando Maia Neto, “Modelagem e controle de nível em um sistema de tanques acoplados – comparação entre controladores”, 2009, Trabalhalho de final de graduação pela UFBA, disponível em http://www.tcc.eng.ufba.br/busca.php [4] Ogata, katsuhiko, “Engenharia de controle moderno”, edição 4, editora Prentice Hall, 2003
13/17
7. Apêndice 1 – Código em Matlab 7.1. Alocação das variáveis. %%Variáveis definidas %%rodar este em primeiro lugar
%constantes k1=2.5;%cm2/s kac=2;%cm2/s %alturas fixas, não precisa delas. hfixo1 = 7; %cm hfixo2 = 7; %cm hfixo1 = 0; %m hfixo2 = 0; %m %alturas iniciais do tanque h01 = 5; %cm h02 = 0.5;%cm %dimensões tanque 1 profundidade1 = 9.5; %cm d3 = profundidade1; d1 = 9.1; %cm tgteta=1.92344;
%dimensões tanque 2 profundidade2 = 9.5;%cm raio = 9.2;%cm %referências h1=7; %em cm e ponto de operação 1 h2=2.5; % em cm e ponto de operação 2 %vazões de entrada qin1 = h1*(k1+kac)- h2*kac; %cm3/s qin2 = h2*(k1+kac)- h1*kac; %cm3/s
7.2. Linearização %%Linearização %%rodar este em segundo lugar % Célula Real %defie variáveis syms h1f h2f q1f q2f %equações diferenciais h1fun = (q1f-(k1*h1f)-(kac*(h1f-h2f)))/((d1+(h1f/(tgteta)))*profundidade1); h2fun = (q2f-(k1*h2f)-(kac*(h2f-h1f)))/(2*profundidade2*(sqrt((2*h2f*raio)((h2f)^2)))); 14/17
F1 = h1fun; F2 = h2fun; %ponto de operação H1=h1; H2=h2; Q1= qin1; Q2= qin2;
%calculo derF11 = derF12 = derF21 = derF22 =
da matriz A diff(F1,h1f); diff(F1,h2f); diff(F2,h1f); diff(F2,h2f);
derF11=subs(derF11,[h1f, derF12=subs(derF12,[h1f, derF21=subs(derF21,[h1f, derF22=subs(derF22,[h1f,
h2f, h2f, h2f, h2f,
q1f, q1f, q1f, q1f,
q2f],[h1, q2f],[h1, q2f],[h1, q2f],[h1,
h2, h2, h2, h2,
Q1, Q1, Q1, Q1,
Q2]); Q2]); Q2]); Q2]);
A = [ derF11 derF12 ;derF21 derF22];
%calculo da matriz B derF11B=diff(F1,q1f); derF12B=diff(F1,q2f); derF21B=diff(F2,q1f); derF22B=diff(F2,q2f); derF11B=subs(derF11B,[h1f, derF12B=subs(derF12B,[h1f, derF21B=subs(derF21B,[h1f, derF22B=subs(derF22B,[h1f,
h2f, h2f, h2f, h2f,
q1f, q1f, q1f, q1f,
q2f],[h1, q2f],[h1, q2f],[h1, q2f],[h1,
h2, h2, h2, h2,
Q1, Q1, Q1, Q1,
Q2]); Q2]); Q2]); Q2]);
B = [ derF11B derF12B ;derF21B derF22B];
C=[ 1 0 ; 0 1]; D=[0 0; 0 0];
7.3. Projeto controlador
%%Projeto do controlador %rodar este em terceiro lugar %calculo do compensador %o compensador faz com que o controlador enxergue as variáveis %de estado da planta como variáveis independentes, ou seja, %com funções de transferência distintas. Isso permite o uso %dos métodos clássicos de projeto de controlador.
15/17
sssis=ss(A,B,C,D); %modelo no espaço de estados do sistema linearizado zpksis = zpk(sssis); %modelo na forma zero-polo-ganho polos = pole(sssis);%polos do sistema T = [zpksis(1,1) 0; 0 zpksis(2,2)];%Planta com ft compensada Dk = (zpksis^-1)*T;%compensador Dks = ss(Dk,'min');%modelo no espaço de estados do compensador [DkA,DkB,DkC,DkD]=ssdata(Dks); %funções de transferência independentes da planta FTh1 = zpksis(1,1); [FTh1z,FTh1p,FTh1k] = zpkdata(FTh1,'v'); FTh2 = zpksis(2,2); [FTh2z,FTh2p,FTh2k] = zpkdata(FTh2,'v'); %lugar das raizes com controlador %os zeros foram escolhidos sem critério C1 = zpk(1.5*zero(FTh1),0,1) [C1z,C1p,C1k] = zpkdata(C1,'v'); C2 = zpk(2*zero(FTh2),0,1) [C2z,C2p,C2k] = zpkdata(C2,'v'); %rlocus(FTh1*C1,FTh2*C2)
7.4. Gráficos
%gráficos e resultados %rodar após configurar os scopes do simulink %resposta ao degrau do sistema completo em malha aberta t1 = ScopeData(:,1)'; h1graf = ScopeData(:,2)'; h2graf = ScopeData(:,3)'; t11 = ScopeData11(:,1)'; h1graf1 = ScopeData11(:,2)'; h2graf1 = ScopeData11(:,3)'; figure(1) plot(t1,h1graf,t1,h2graf,t11,h1graf1,t11,h2graf1) grid title('Resposta do sistema ao degrau'); legend('Resposta do tanque 1 a degrau negativo','Resposta do tanque 2 a degrau negativo','Resposta do tanque 1 a degrau positivo','Resposta do tanque 2 a degrau positivo'); XLabel('Tempo (s)'); YLabel('Nível (cm)'); %resposta ao degrau do sistema linearizado em malha aberta t2 = ScopeData2(:,1)'; h1graf2 = ScopeData2(:,2)'; h2graf2 = ScopeData2(:,3)'; t22 = ScopeData22(:,1)'; h1graf22 = ScopeData22(:,2)'; h2graf22 = ScopeData22(:,3)'; figure(2) plot(t2,h1graf2,t2,h2graf2,t22,h1graf22,t22,h2graf22) grid title('Resposta do sistema linearizado ao degrau');
16/17
legend('Resposta do tanque 1 a degrau negativo','Resposta do tanque 2 a degrau negativo','Resposta do tanque 1 a degrau positivo','Resposta do tanque 2 a degrau positivo'); XLabel('Tempo (s)'); YLabel('Nível (cm)'); %avaliação da validade da linearização figure(3) plot(t1,h1graf,'b',t1,h2graf,'g',t2,h1graf2,'r',t2,h2graf2,'m',t11,h1graf1,'b',t 11,h2graf1,'g',t22,h1graf22,'r',t22,h2graf22,'m') grid title('Comparação entre o sistema real e a sua linearização'); legend('Resposta do tanque 1','Resposta do tanque 2','Resposta do tanque 1 linearizado','Resposta do tanque 2 linearizado'); XLabel('Tempo (s)'); YLabel('Nível (cm)'); %resposta ao degrau do sistema com controlador t3 = ScopeData3(:,1)'; h1graf3 = ScopeData3(:,2)'; h2graf3 = ScopeData3(:,3)'; t33 = ScopeData33(:,1)'; h1graf33 = ScopeData33(:,2)'; h2graf33 = ScopeData33(:,3)'; figure(4) plot(t3,h1graf3,t3,h2graf3,t33,h1graf33,t33,h2graf33) grid title('Resposta do sistema controlado em malha fechda'); legend('Resposta do tanque 1 a degrau negativo','Resposta do tanque 2 a degrau negativo','Resposta do tanque 1 a degrau positivo','Resposta do tanque 2 a degrau positivo'); XLabel('Tempo (s)'); YLabel('Nível (cm)');
%sinais de controle t4 = controle1(:,1)'; t44 = controle11(:,1)'; u1 = controle1(:,2)'; u2 = controle1(:,3)'; u11 = controle11(:,2)'; u22 = controle11(:,3)'; figure(5) plot(t4,u1,t4,u2,t44,u11,t44,u22) grid title('Sinais de controle'); legend('Sinal de controle para tanque 1 a degrau negativo','Sinal de controle para tanque 2 a degrau negativo','Sinal de controle para tanque 1 a degrau positivo','Sinal de controle para tanque 2 a degrau positivo'); XLabel('Tempo (s)'); YLabel('Vazão (litros/s)');
17/17