Solucoes+em+Matlab.pdf

Embed Size (px)

Citation preview

  • Mecatron Projetos e Consultoria Jnior

    Soluo de problemasusando Matlab

    Daniel Augusto PereiraAlysson Fernandes Mazoni

    2006

    1

  • SumrioSistemas lineares.................................................................................................................................. 3

    Problema exemplo........................................................................................................................... 3Espao de estados............................................................................................................................ 4Funo de transferncia................................................................................................................... 8Converso de formas de representao............................................................................................8Plos, zeros, freqncia natural e fator de amortecimento............................................................. 9Reposta a entradas padronizadas................................................................................................... 10Resposta em freqncia................................................................................................................. 13A ferramenta LTIview................................................................................................................... 16Controle linear bsico.................................................................................................................... 17

    Controle proporcional............................................................................................................... 18Outras configuraes de controle..............................................................................................22

    Ferramenta SISOtool (SISO Single input single output)............................................................22Simulao de sistemas de controle no Simulink................................................................................ 25Otimizao..........................................................................................................................................34

    Problema exemplo ........................................................................................................................ 35Otimizao multiobjetivo.............................................................................................................. 36

    Problema exemplo.....................................................................................................................37Computao simblica....................................................................................................................... 39

    Exemplo: sistemas lineares............................................................................................................40Exemplo: equaes diferenciais.....................................................................................................41

    2

  • Sistemas lineares

    Ao chamar um sistema fsico de linear estamos impondo sobre ele a hiptese da validade do princpio da superposio, ou seja, para uma combinao linear das entradas, a sada uma combinao linear das sadas para cada entrada individualmente. Matematicamente, um sistema linear se suas equaes de evoluo dinmica (ao longo do tempo) so difenrenciais lineares e ordinrias.

    Um sem nmero de sistemas de importncia na engenharia so tratados como lineares. A exemplo: circuitos analgicos, motores de corrente contnua, sistema de troca de calor e estruturas flexveis (metlica); outros so considerados lineares por trechos, comportam-se como lineares em uma faixa restrita de operao, como estruturas no lineares, atuadores hidrulicos, entre outros.

    Problema exemplo

    Para utilizar as funes do Matlab apropriadas para simulao e controle de sistemas lineares, utilizaremos o exemplo bastante comum de controle de um motor de corrente contnua. A representao utilizada aqui a usual de um conjunto de equaes diferenciais com o tempo como varivel dependente, o que configura o que se chama de sistema dinmico em tempo contnuo.

    Um esquema da interao entre as partes eltrica e mecnica do motor mostrado na figura abaixo:

    Para esse modelo so escritas as equaes diferenciais:

    J cK i a=0L iaRaRsi aK =V

    =

    em que a posio angular do rotor, , a velocidade; J a inrcia associada; K, a constante eletromecnica; L, a indutncia da armadura, Ra , a resistncia de armadura; Rs , resistncia em srie com a armadura; e ia a corrente de armadura.

    Os valores medidos para um motor em particular so mostrados na tabela:

    3

  • Parmetro ValorJ 3,4E-4 Kg.m2

    L 5,03E-3 HK 1,3E-2 N.m/Ac 6,7E-5 N.s/mRa 4,03 Rs 1

    Espao de estados

    Como discutido em cursos de introduo a sistemas lineares e modelagem, um sistema como esse admite a converso para forma de espao de estados, o que corresponde a escrev-lo na forma de um conjunto de equaes diferenciais de primeira ordem. Para um sistema linear, isso leva, em notao vetorial, a

    x=A xB uy=C xD u

    em que x representa um vetor com as funes no tempo que so solues do sistema de equaes diferenciais e chamado vetor de estado. y o vetor com as funes do tempo que se deseja observar: as sadas. u, o vetor com sinais impostos ao sistema descrito ao longo do tempo de observao, o vetor de entradas. As matrizes A, B, C e D contm a representao do sistema dinmico.

    Um resultado elementar da teoria de sistemas lineares o de que existem infinitas matrizes dessa forma que representam a mesma relao entre entrada e sada (o mesmo sistema), bastando escolher vetores de estado diferentes, ajustados entre um e outro por transformaes lineares.

    No caso particular em que o vetor de estados constitudo de variveis fsicas, diz-se que se possui um modelo fsico nas matrizes citadas.

    Para o caso do motor de corrente contnua citado um modelo fsico pode ser escrito como:

    [ i a ]=[RaR sL KL 0KJ cJ 00 1 0

    ][ ia ][ 1L00 ]Vy=[0 1 0 ][ ia ][0 ]V

    Dessa forma tem-se a entrada representada por V, a sada pela velocidade angular e o vetor de estados dados pela seqncia corrente, velocidade e posio. A sada observada, a velocidade angular, definida pela forma como foi escrita a matriz C.

    No Matlab, sugere-se declarar o modelo como:

    4

  • >> J = 3.4e-4;>> c = 6.7e-5;>> K = 1.3e-2;>> L = 5.03e-3;>> R = 5.03;>> A = [-R/L -K/L 0; K/J -c/J 0; 0 1 0];>> B = [1/L; 0; 0];>> C = [0 1 0];>> D =[0];

    Como j dito, h outras formas possveis de representar a mesma relao matemtica entre a entrada e a sada do sistema, porm com interpretaes diferentes para os estados. Qualquer uma dessas representaes pode ser usada para calcular, a cada instante de tempo desejado, a evoluo dos estados no tempo usando os mtodo usuais de integrao direta. Dadas as matrizes, isso seria conseguido definindo uma funo e usando um mtodo como o ode45. Para tanto, necessrio tambm definir uma entrada, por exemplo senoidal.

    function u=entrada(t)u=sin(t);

    function z = f_motor(t,x);global A Bu = entrada(t);z = A*x+B*u;

    >> tin = 0; % tempo inicial>> tfin = 10; % tempo final>> x0 = [0;0;0]; % condio inicial>> global A B>> [t,y] = ode45('f_motor',[tin tfin],x0);

    Note que as matrizes, usadas recorrentemente dentro e fora da funo, foram definidas como variveis globais. A figura abaixo mostra as respostas temporais do sistema, ou seja, mostra a evoluo no tempo da corrente de armadura, da velocidade angular e da posio angular. Observa-se que foi calculada a evoluo temporal de todos os estados.

    >> u = entrada(t);>> figure, plot(t,y,t,u);>> legend('Corrente de armadura [A]' , 'Velocidade Angular [rad/s]' , 'Posio angular [rad]' , 'Tenso de alimentao [V]');

    5

  • O Matlab contm estruturas de dados especficas para lidar com sistemas lineares representados nesse padro. Um sistema linear declarado numa estrutura de Matlab que mantm a representao em espao de estados com o comando:

    >> p = ss(A,B,C,D)

    em que p passa a ser uma varivel representando um sistema linear.A partir dessa estrutura de dados, existem comandos no Matlab especficos para o clculo da

    resposta temporal de um sistema. No caso da estrutura p definida o seguinte cdigo pode ser utlizado:

    >> t = 0:0.1:10;>> u = sin(t);>> x0 = [0;0;0]; >> figure, lsim(p,u,t,x0)

    Nota-se que visualizada apenas a sada selecionada pela matriz C do modelo no espao de estados. Caso seja de interesse calcular a evoluo temporal de todos os estados, bastaria redefinir a matriz C, criar sua nova representao no espao de estados e ento utilizar novamente o comando lsim.

    >> C2=[1 0 0;0 1 0;0 0 1]; % Clculo de todas as possveis sadas>> p2 = ss(A,B,C2,D);>> figure, lsim(p2,u,t,x0)

    Verifica-se a nova resposta na figura com as trs sadas. Assim, fica evidente a importncia do conhecimento da posio de cada estado dentro do vetor de variveis de estado para a correta observao da sada desejada.

    6

    0 1 2 3 4 5 6 7 8 9 1 0- 1 0

    - 5

    0

    5

    1 0

    1 5

    2 0

    2 5

    3 0

    C o r r e n t e d e a r m a d u r a [ A ]V e l o c i d a d e A n g u l a r [ r a d / s ]P o s i o a n g u l a r [ r a d ]T e n s o d e a l i m e n t a o [ V ]

  • 70 1 2 3 4 5 6 7 8 9 1 0- 8

    - 6

    - 4

    - 2

    0

    2

    4

    6

    8

    1 0

    1 2L i n e a r S i m u l a t i o n R e s u l t s

    T i m e ( s e c )

    Ampli

    tude

    - 1

    - 0 . 5

    0

    0 . 5

    1

    To:

    Ou

    t(1)

    - 1 0

    - 5

    0

    5

    1 0

    1 5

    2 0

    To:

    Ou

    t(2)

    0 1 2 3 4 5 6 7 8 9 1 0- 2 0

    - 1 0

    0

    1 0

    2 0

    3 0

    4 0

    To:

    Ou

    t(3)

    L i n e a r S i m u l a t i o n R e s u l t s

    T i m e ( s e c )

    Ampl

    itude

  • Os grficos gerados a partir do comando lsim podem ser editados clicando-se o boto direito do mouse e selecionando as opes desejadas.

    Caso o interesse seja armazenar os valores no tempo da sada em um vetor, ao invs de traar um grfico, basta fazer o seguinte:

    >> y = lsim(p,u,t,x0);

    Funo de transferncia

    Outra maneira de representar um sistema linear atravs de funes de transferncia. A funo de transferncia definida como a razo entre a transformada de Laplace da funo de sada sobre a transformada de Laplace da funo da entrada. Conforme estudado no cursos elementares de equaes diferenciais, essa razo, para condies iniciais nulas, pode ser facilmente obtida das equaes diferenciais do sistema dinmico representado. H uma funo de transferncia para cada par de entrada e sada do sistema.

    Para o sistema do motor de corrente contnua a funo de transferncia entre a alimentao e a velocidade escrita como

    s V s

    = K /JL

    s RaRsL cJ s c RaR sJL K2

    JL.

    A transformada de Laplace de um sistema linear e invariante no tempo sempre uma razo de polinmios na varivel de Laplace (s). Desse modo, funes de transferncia so especificadas atravs dos coeficientes dos polinmios do numerador e do denominador. A funo de transferncia uma maneira unvoca de representar o sistema. Em cdigo de Matlab:

    >> np = [K/(J*L)];>> dp =[1 ((Ra+Rs)/L+c/J) c*(Ra+Rs)/(J*L)+K^2/(J*L)];>> H = tf(np,dp)

    Alternativamente, pode ser definida da seguinte forma:

    >> s = tf('s');>> H = (K/(J*L))/(s^2 + ((Ra+Rs)/L+c/J)*s + c*(Ra+Rs)/(J*L) + K^2/(J*L))

    A varivel criada (H) tambm um sistema linear, porm representado na forma de funo de transferncia. Os comandos de manipulao, caracterizao e simulao de sistemas lineares que sero vistos a seguir aplicam-se tanto a uma quanto a outra forma de representao.

    Converso de formas de representao

    As formas de representao definidas pelos comandos ss e tf podem ser convertidas de uma para a outra:

    >> [a,b,c,d] = tf2ss(np,dp);>> sys_mat = ss(a,b,c,d);

    8

  • >> sys_fisico = ss(A,B,C,D);>> [num,den]=ss2tf(a,b,c,d);>> H=tf(num,den)>> [num,den]=ss2tf(A,B,C,D);>> H=tf(num,den)

    importante observar que as matrizes a, b, c e d fornecidas pelo comando tf2ss no so iguais quelas deduzidas a partir do modelo fsico (A, B, C e D). Isso ocorre porque a respresentao de um sistema no espao de estados no nica e a representao padro do Matlab no , e nem poderia ser, igual representao baseada no modelo fsico (intuitivamente mais bvia). possvel checar que os sistemas descritos pelas difenentes matrizes no espao de estados so os mesmos. Para isso, basta verificar que os autovalores da matriz A (e consequentemente os plos do sistema) so os mesmos para ambas as representaes:

    >> eig(A)>> eig(a)

    Plos, zeros, freqncia natural e fator de amortecimento

    Os plos e zeros de um sistema linear podem ser obtidos diretamente a partir da funo de transferncia do mesmo, calculando-se as razes dos polinmios do denominador e do numerador, respectivamente:

    >> polos = roots(dp)

    >> zeros = roots(np)

    Os plos podem ser obtidos atravs da matriz A do sistema no espao de estados pois so iguais aos autovalores dessa matriz:

    >> polos = eig(A)

    Existe ainda um comando especfico para verificar os plos de um sistema:

    >> pole(H)>> pole(sys_mat)

    Graficamente possvel verificar a posio dos plos e zeros no plano complexo:

    >> pzmap(H)>> pzmap(sys_mat)

    9

  • Conhecidos os plos e os zeros de um dado sistema, alm de seu ganho esttico (ganho em regime permanente, ou seja, s = 0 na funo de transferncia), pode-se definir um outra forma de representao de sistemas lineares:

    >> k=dcgain(H);>> z=roots(np);>> p=roots(dp);>> zp = zpk (z,p,k)

    Para um sistema definido em uma varivel de uma certa estrutura (funo de transferncia ou espao de estados) possvel calcular a freqncia natural e o fator de amortecimento associados a cada um dos plos:

    >> damp(H) >> damp(sys_fisico) >> [wn,z,polos]=damp(H)

    Reposta a entradas padronizadas

    Uma vez com o sistema definido em uma varivel, as repostas a entradas notveis da teoria de sistemas lineares, usadas para caracterizar o compostamento do sistema, so obtidas imediatamente. Por exemplo, a resposta ao degrau:

    >> step(p)

    10

    - 1 0 0 0 - 9 0 0 - 8 0 0 - 7 0 0 - 6 0 0 - 5 0 0 - 4 0 0 - 3 0 0 - 2 0 0 - 1 0 0 0- 1

    - 0 . 8

    - 0 . 6

    - 0 . 4

    - 0 . 2

    0

    0 . 2

    0 . 4

    0 . 6

    0 . 8

    1P o l e - Z e r o M a p

    R e a l A x i s

    Ima

    gina

    ry

    Axis

  • >> step(H)

    Com esse comando traado o grfico da resposta ao degrau do sistema. Uma das vantagens da utilizao da funo step a possibilidade de avaliar diretamente no grfico os parmetros da resposta ao degrau (sobressinal, tempo de estabilizao, tempo de subida e valor de regime). Para isso, basta pressionar o boto direito do mouse, selecionar a opo characteristics e em seguida selecionar os parmetros desejados (Peak Response, Settling Time, Rise Rime, Steady State).

    Ou ainda, pode-se desejar obter os valores no tempo da resposta e no traar o grfico:

    >> [y,t] = step(p);

    >> [y,t] = step(H);

    Assim possvel armazernar os valores desejados para clculos futuros ou para traar grficos de forma mais conveniente. Outro exemplo clsssico a resposta ao impulso:

    >> impulse(p)

    >> impulse(s)

    >> [y,t] = impulse(p);

    >> [y,t] = impulse(s);

    O grfico gerado pela funo impulse tambm pode ser editado clicando-se o boto direito do mouse.

    11

  • 12

    S t e p R e s p o n s e

    T i m e ( s e c )

    Ampli

    tude

    0 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 00

    5

    1 0

    1 5

    2 0

    2 5

    3 0

    S y s t e m : HF i n a l V a l u e : 2 5 . 7

    S y s t e m : HS e t t l i n g T i m e ( s e c ) : 1 3 . 2

    S y s t e m : HR i s e T i m e ( s e c ) : 7 . 4 3

    Im p u l s e R e s p o n s e

    T i m e ( s e c )

    Ampli

    tude

    0 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 00

    1

    2

    3

    4

    5

    6

    7

    8

    S y s t e m : HP e a k a m p l i t u d e : 7 . 5 2A t t i m e ( s e c ) : 0 . 0 3 7 3

    S y s t e m : HS e t t l i n g T i m e ( s e c ) : 1 3 . 3

  • Resposta em freqncia

    O termo resposta em freqncia significa a resposta em regime permanente de um sistema a uma entrada senoidal. Nos mtodos de resposta em freqncia varia-se a freqncia do sinal de entrada dentro de um certo intervalo e estuda-se a resposta resultante. Uma das vantagens dos mtodos de resposta em freqncia a possibilidade de se utilizar os dados obtidos diretamente a partir das medies em um certo sistema fsico sem necessitar recorrer a modelos matemticos.

    Os mtodos de resposta em freqncia foram desenvolvidos no perodo entre 1930 e 1940 por Nyquist, Bode, Nichols e muitos outros. Esses mtodos so dos mais poderosos na teoria de controle convencional.

    As respostas em regime permanente s entradas senoidais podem ser obtidas diretamente a partir da substituio de s por na j funo de transferncia, onde a freqncia. Dessa forma, a resposta em regime permanente dada por:

    H j=Me j

    onde M o mdulo da funo de transferncia senoidal (ou relao de amplitude entre a entrada e a sada) e a defasagem (ou diferena de fase entre a entrada e a sada). Ressalta-se que qualquer nmero complexo pode ser escrito em funo um mdulo e uma fase.

    O diagrama de Bode constitudo de dois grficos: um o grfico do mdulo em dB (20 log |H(j)|) de uma funo de transferncia senoidal; o outro o grfico do ngulo de fase (em graus). Ambos so traados em relao freqncia em escala logartmica. Ou seja, os grficos so traados a partir do cmputo dos valores do mdulo e da fase para toda uma faixa de freqncias.

    A principal vantagem de se utilizar o diagrama de Bode que a multiplicao dos mdulos pode ser convertida em soma. Alm disso, as curvas podem ser traadas a partir de aproximaes assintticas simples. A expanso da faixa de baixas freqncias pelo uso da escala logartmica de freqncia muito vantajosa, visto que as caractersticas dos sistemas em baixas freqncias, na prtica, so as mais importantes.

    muito simples obter o diagrama de Bode no Matlab. O cdigo em Matlab a seguir mostra duas formas de se obter graficamente o diagrama utilizando a funo bode.

    >> figure, bode(H) >> w = 0:0.01:10e4;>> [mag,phase] = bode(H,w);>> magdb = zeros(1,length(mag)); % ajuste de dimenso>> phase_mod = zeros(1,length(phase)); % ajuste de dimenso>> magdb(1,:) = 20*log10(mag(1,1,:));>> phase_mod(1,:) = phase(1,1,:); >> figure, subplot(2,1,1), semilogx(w,magdb), axis([0 10e4 -150 50])>> subplot(2,1,2), semilogx(w,phase_mod)

    13

  • 14

    - 1 5 0

    - 1 0 0

    - 5 0

    0

    5 0M

    agn

    itude

    (dB

    )

    1 0 - 2 1 0 - 1 1 0 0 1 0 1 1 0 2 1 0 3 1 0 4 1 0 5- 1 8 0

    - 1 3 5

    - 9 0

    - 4 5

    0

    Phas

    e (de

    g)B o d e D i a g r a m

    F r e q u e n c y ( r a d / s e c )

  • Para analisar a estabilidade de um sistema linear pode ser utilizado o diagrama de Nyquist, que o lugar geomtrico de H(j) no plano complexo medida que varia de - a +. o grfico possvel perceber a marcao do ponto -1 no eixo real. Esse ponto fundamental para a anlise da estabilidade do sistema. Sem entrar em detalhes, nesse caso percebe-se que o sistema estvel porque o ponto -1+j0 no envolvido pela curva fechada que representa o lugar geomtrico de H(j).

    15

    1 0 - 2 1 0 0 1 0 2 1 0 4- 1 5 0

    - 1 0 0

    - 5 0

    0

    5 0

    1 0 - 2 1 0 0 1 0 2 1 0 4 1 0 6- 2 0 0

    - 1 5 0

    - 1 0 0

    - 5 0

    0

  • A ferramenta LTIview

    As funcionalidades de anlise de sistemas LIT (lineares invariantes no tempo) so centralizadas na ferramenta LTIview, que permite acessar diversos tipos de grficos j vistos, como dagrama de Bode, de Nyquist, resposta ao degrau, diagrama de lugar das razes e outras como carta de Nichols e diagrama de valor singular. Nada pode ser alterado no sistema, esse apenas um gerenciador grfico para as diversas abordagens de visualizar um sistema LIT.

    acessada por:

    >> ltiview

    Usando o menu Edit Plot configurations escolhe-se quatro grficos por janela e as opes de resposta seguintes na ordem: resposta ao degrau, resposta ao impulso, diagrama de bode em magnitude e diagrama de Nyquist. A configurao e as respostas obtidas so mostradas nas duas figuras abaixo.

    16

    - 5 0 5 1 0 1 5 2 0 2 5 3 0- 1 5

    - 1 0

    - 5

    0

    5

    1 0

    1 5N y q u i s t D i a g r a m

    R e a l A x i s

    Imag

    ina

    ry Ax

    is

  • Controle linear bsico

    Um dos objetivos de se obter um modelo de um sistema linear projetar um controlador ou compensador para que se obtenham algumas caractersticas particulares na sua resposta. O caso mais comum de objetivo de controle o regulador: um sistema que tem o objetivo de levar a resposta do sistema a zero em um tempo finito diante de qualquer entrada, ou to prximo disso quanto possvel. J o controlador chamado rastreador tem a funo de fazer a sada do sistema acompanhar a sua entrada, da forma mais prxima possvel, para qualquer entrada.

    comum denominar o sistema a ser controlado de planta e a configurao com planta e controlador de malha fechada.

    A teoria de controle de sistemas lineares extensa e ainda em desenvolvimento, porm, pode-se dizer que a configurao de controle mais comum, ou seja, a conexo lgica e fsica entre um sistema e o seu controlador mais recorrente, a seguinte:

    17

  • Essa configurao corresponde ao controle em realimentao de sada. O controlador um sistema linear que dispe da informao da sada da planta. A entrada da planta com o controlador passa a ser a diferena entre a entrada original e o sinal de controle.

    H uma infinidade de outras configuraes possveis, por exemplo:

    em que o controlador recebe o sinal de erro, ou seja, a diferena entre a entrada e a sada da planta.

    Controle proporcional

    O primeiro controlador possvel o controlador proporcional, representado por uma constante multiplicativa na segunda configurao mostrada acima. Isto , regula-se o controle como um mltiplo do sinal de erro.

    Para ajustar o sinal o comportamento do sistema controlado pelos plos que ele possui pode-se usar o diagrama no lugar das razes. Esse diagrama traa a localizao dos plos do sistema quando h um controlador proporcional. Variando-se o ganho desse controlador, os plos variam; o grfico resultante o citado diagrama. Ou seja, o ganha proporcional altera a localizao dos plos no plano complexo.

    Para o sistema do motor de corrente contnua que usamos como exemplo, o diagrama de lugar das razes produzido pode ser usado para ajustar um ganho de 32,9 levando a plos de malha fechada complexos e de parte real -500 e imaginria 15,8. Esse valor foi escolhido ao acaso apenas para ilustrao, levando-se em conta obviamente que o ganho deve levar a plos de malha fechada que mantenham o sistema estvel (plos no semiplano esquerdo do plano complexo).

    >> rlocus(p)

    18

    Planta

    Controlador

    SadaEntrada

    PlantaControlador SadaEntrada

  • Para se obter a malha fechada como varivel usa-se o comando:

    >> mf = feedback(p,32.9)

    Nesse caso, a varivel recm criada um sistema linear que representa o motor original com o controlador proporcional. Nota-se que esse controlador est inserido no ramo da realimentao (conforme a primeira figura dos diagramas de controle). Podem ser traados sua resposta ao impulso e mapa de plos e zeros para verificar as caractersticas do novo sistema com a incluso do controlador projetado.

    >> step(mf)>> pzmap(mf)

    19

  • A posio atingida ao final das variaes prxima de 0,03, distante do valor do degrau (1). Esse erro pode ser corrigido multiplicando a entrada do sistema por um valor de ajuste.

    No mapa de plos e zeros, plos so representados por X e zeros por crculos. So visualizados para esse caso, trs plos (um na origem e um par complexo conjugado com parte real -500 e imaginria 16,9) e um zero na origem.

    Verificou-se que h uma difenrena na parte imaginria, que foi definida anteriormente como sendo 15,8. Isso surgiu devido forma do diagrama, que possui uma mudana abrupta nessa

    20

  • regio, ou seja, apenas uma erro devido forma como feita a interpolao dos pontos do grfico.Uma outra abordagem seria utilizar o modelo com a sada em posio e no em velocidade.

    O diagrama para esse caso, depois de aproximado por zoom:

    Usando o ganho de 11,8 o sistema obtido possui o seguinte comportamento de resposta ao degrau.

    21

  • A figura mostra um sistema de elevada freqncia natural (com oscilaes rpidas) comparativamente com o primeiro caso.

    Usando o clique direito pode-se marcar caractersticas padro da resposta do sistema, como o tempo de estabilizao ou o valor de regime permanente.

    Outras configuraes de controle

    Outros tipos de controlador e configuraes so usadas. O primeiro passo nesse sentido supor um controlador que no esttico (um ganho) mas um sistema tambm dinmico. Os mais comuns so os controladores PID e avano-atraso. Seus mdotos de projeto podem ser executados em Matlab usando os comandos citados e testando a resposta.

    Ferramenta SISOtool (SISO Single input single output)

    O projeto de sistemas de controle pode fazer uso da janela de funes acessada por:

    >> sisotool

    Acessa-se o menu File Import para obter a varivel com os dados do sistema. Ou, j informando o sistema a ser analisado:

    >> sisotool(H)

    22

  • Na janela que se abre na parte superior direita h um diagrama de blocos indicando qual a estrutura de controle usada. Clicando sobre o boto FS as posies dos blocos so alteradas. Nota-se que so considerados os seguintes tipos de bloco: a planta (G), o sensor (H caso precise ser levado em conta no modelo), um pr-filtro da entrada (F) e o controlador (C).

    A funo do sensor tem o objetivo de modelar a dinmica do transdutor utilizado para medir a sada do sistema quando da modelagem de uma planta real. O pr-filtro simula a caracterstica de limitao em banda de freqncia do sinal que se pode impor planta e ao controlador. No caso aqui apresentado supe-se que o sensor mede perfeitamente, sem atraso e sem ganho a sada e que a entrada no possuir componentes em freqncia que no possam ser realmente impostas planta e ao controlador. Ou seja, F = H = 1.

    esquerda mostra-se a forma do controlador a ser ajustada (current compensator). Abaixo, os trs grficos padro so o diagrama do lugar das razes e os dois grficos do diagrama de Bode.

    O SISOtool se aplica apenas a sistemas com uma entrada e uma sada (como diz o nome em ingls). Sua operao consiste em escolher uma forma no domnio de Laplace para o controlador e ajustar seus parmetros variando caractersticas requeridas nos grficos de resposta mostrados.

    Usando o modelo do motor com sada em velocidade e a configurao de controle fornecida pela janela inicial, clica-se sobre a caixa de edio do controlador.

    Al pode-se escolher a funo de transferncia desejada acrescentado ou retirando plos e zeros. Para adicionar plos ou zeros reais ou imaginrios basta clicar no boto correspondente e digitar o valor inicial desejado. Para excluir, marca-se a opo delete.

    23

  • Sugere-se incluir um plo e um zero reais e negativos. Essa configurao corresponde aos controladores em avano ou em atraso. Ou seja, um controlador com a seguinte funo de transferncia:

    C s=K s zs p .

    Escolhida a estrutura do controlador (clicando em OK), a ferramenta permite alterar qualquer desses trs parmetros dinamicamente. Nos grficos de resposta mostrados basta clicar e arrastar os elementos que se deseja alterar e observar ar mudanas correspondentes nos outros grficos.

    Plos de malha fechada so representados por quadrados. Plos do controlador por X e zeros do controlador por crculos. Todos esses elementos pode ser arrastados com o mouse e as alteraes correspondentes sero efetuadas. A curva de resposta do diagrama de Bode direita pode ser arrastada para cima ou para baixo, mudando a banda de passagem e o ganho do controlador.

    Um exemplo de teste assim com o sistema exemplo pode levar ao grfico mostrado abaixo:

    24

  • Os plos e zeros do controlador podem ser acrescntados ou retirados tambm usando o clique direito sobre um dos grficos e add pole/zero ou delete pole/zero. Os casos de derivador (differentiator) ou integrador (integrator) presentes por exemplo em um controlador PID podem ser acrescentador diretamente.

    Outros grficos podem ser mostrados na janela do SISOtool usando o menu View e escolhendo o grfico ou dado a ser mostrado. No menu Analysis pode-se acessar a resposta do sistema em malha fechada invocando o LTIview, por exemplo, a resposta ao degrau obtida em uma nova janela em Analysis Rejection of step disturbance.

    Simulao de sistemas de controle no Simulink

    Os sistemas de controle trabalhados anteriormente podem ser simulados atravs do Simulink. Nota-se que os controladores devem ser previamente projetados porque o Simulink uma ferramenta de simulao e de suporte anlise.

    O primeiro caso de simulao a ser abordado o controle proporcional da velocidade angular do mesmo motor de corrente contnua que vem sendo utilizado. Nesse caso, h duas diferentes maneiras de se posicionar o controlador: no ramo direto (amplificando o sinal de erro que entra na planta) ou no ramo inverso (amplificando o sinal de sada enviado para realimentao). As

    25

  • duas hipteses foram simuladas. Para tanto, utilizou-se o mesmo ganho proporcional (Kp) projetado anteriormente, ou seja, um ganho de 32,9.

    A figura a seguir mostra os dois esquemas de controle proporcional utilizados para simulao.

    Para a simulao, utilizada como entrada uma funo do tipo degrau unitrio. Esse tipo de entrada gerada a partir do bloco Step disponvel na opo Sources da biblioteca de blocos. Ao ser inserido na rea de criao, o bloco pode ser editado clicando-se duas vezes sobre o mesmo. Aqui o valor do degrau mantido unitrio, mas caso fosse necessrio poderia ser escolhido uma amplitude diferente de 1 e tambm poderia ser alterado o instante no qual o degrau aplicado.

    26

  • O sistema sob controle (motor CC) definido a partir de seu modelo de estados (matrizes A, B, C e D) utilizando-se o bloco State-Space encontrado na opo Continuous. necessrio duplo clique sobre a caixa inserida para que se defina as matrizes de estado desejadas. Pode-se digitar as matrizes diretamente nos espaos disponveis ou apenas digitar nos espaos adequados as variveis j calculadas e disponveis na rea de comando do Matlab, conforme mostra a figura a seguir.

    O ganho proporcional Kp representado pelo bloco Gain encontrado na opo Commonly Used Blocks. Para alterar o ganho basta clicar no bloco e fazer a alterao.

    A visualizao da resposta feita atravs do bloco Scope retirado da opo Sinks. Clicando-se no bloco aparece uma janela com um grfico bidimensional. Salienta-se que padro do Matla mostrar apenas os ltimos 5000 pontos calculados, o que pode ser alterado clicando-se no segundo cone no canto superior esquerdo (parameters) da janela grfica, conforme mostra a figura abaixo.

    27

  • A simulao das duas configuraes de controle proporcional, Kp no ramo direto e Kp no ramo inverso, so mostradas, respectivamente, nas duas figuras a seguir. Observa-se que os resultados so os mesmos obtidos nas simulaes anteriores, quando no foi utilizado o Simulink.

    28

  • Para realizar o controle de posio, o procedimento o mesmo adotado para o controle de velocidade. Para tanto, basta alterar a matriz C do sistema no espao de estados para [0 0 1], o que pode ser feito diretamente na rea de trabalho ou no prprio bloco State-Space. Utiliza-se o mesmo ganho proporcional projetado anteriormente, ou seja Kp = 11,8. Novamente so utilizadas as configuraes com Kp no ramo direto e Kp no ramo inverso. Os diagramas so mostrados nas figuras a seguir.

    29

  • A simulao dos dois sistemas de controle pode ser vista nas duas figuras a seguir. A primeira figura resultado da aplicao de Kp no ramo direto e a segunda da aplicao de Kp no ramo inverso.

    Outro tipo de controlador projetado anteriormente, com o auxlio da ferramenta SISOtool, foi um controlador em avano (ou em atraso) de fase. Para inserir um controlador desse tipo, basta escolher a estrutura Zero-Pole encontrada na opo Continuous, e ento definir os plos, os zeros e o ganho desejados para realizar o controle em avano (ou atraso). A figura a seguir mostra o esquema desse tipo de controlador.

    A figura a seguir mostra a resposta ao degrau visualizada no bloco Scope.Uma considerao importante a se fazer: possvel alterar o mtodo (solver) utilizado pelo

    Simulink para calcular as respostas temporais que so mostradas nos blocos Scope. Por exemplo, pode-se mudar de passo fixo para passo varivel, o que evita problemas quando h singularidades. Para isso, necessrio clicar na opo Simulation na barra de ferramentas superior e escolher a opo Configuration Parameters... e ento aparecer a janela mostrada a seguir, onde possvel fazer todas as alteraes desejadas.

    30

  • Tambm possvel definir o sistema a ser simulado diretamente a partir de sua funo de transferncia. Para isso basta definir seu diagrama de blocos, o qual pode ser facilmente construdo no Simulink, conforme mostrado na figura abaixo. Nesse caso no so mostrados os valores dos ganhos, os quais so tirados diretamente da funo de transferncia entre alimentao e velocidade (motor CC).

    31

  • Nota-se novamente a existncia de um bloco somador, Sum, o qual est disponvel na opo Commonly Used Blocks. Esse bloco pode ser editado conforme os demais. Assim, possvel alterar o nmero de entradas e os sinais das mesmas.

    H ainda blocos integradores, que so os responsaveis por integrar a derivada da posio para fornecer a posio. Esses blocos esto disponveis na opo Continuous com o nome Integrator.

    possvel criar subsistemas selecionando certos blocos, clicando-se o boto direito e selecionando a opo Create Subsystem. Selecionando todo o subsistema correspondente ao motor de corrente contnua, ser criado um subsistema conforme mostrado na figura a seguir.

    32

  • Tambm possvel fazer um controle proporcional conforme os anteriores, bastando para isso utlizar o subsistema gerado a partir do diagrama de blocos, os ganhos e o somador para a realimentao. Um controlador proporcional (para a velocidade) inserido no ramo direto, com o mesmo Kp j projetado ( Kp = 32,9).

    A figura com o resultado da simulao pode ser observada abaixo. Percebe-se que os

    33

  • resultados so os mesmos j obtidos quando o sistema foi definido com o bloco State-Space.

    Otimizao

    O problema matemtico da otimizao o de encontrar, para uma dada funo, seu valor mnimo (ou mximo) e o ponto ou intervalo em que ele ocorre. Isso pode ser escrito como:

    minx

    f x ou maxxf x .

    Determinar x para o qual f(x) mnimo ou mximo. x potencialmente uma varivel vetorial, ou seja, f pode depender de vrias variveis. Para o caso de valor mnimo tem-se um problema de minimizao; maximizao para o caso contrrio. As funes da Matlab e outros programas e pacotes em geral so escritas de modo a contemplar apenas um dos dois problemas (geralmente o de minimizao). Isso porque eles so intercambiveis: maximizar f(x) o mesmo que minimizar -f(x). A funo f chamada funo objetivo.

    Essa descrio a de um problema de otimizao irrestrita, ou seja, a varivel x pode assumir qualquer valor. O conjunto de problemas mais complexo o da otimizao restrita, dado por:

    minx

    f x sujeito a g x 0h x=0.

    O que quer dizer que a varivel (chamada em teoria de otimizao de varivel de deciso) deve pertencer a um conjunto delimitado por funes na forma de igualdades e desigualdades (f e g so funes vetoriais, podendo haver vrias igualdades e vrias desigualdades, que podem ser estritas ou no). Para o caso de desigualdades no sentido positivo, basta mutilplic-las por -1, pois g(x) < 0 o mesmo que -g(x) > 0.

    Esses dois problemas representam a primeira diviso na otimizao, h mtodos especficos para problemas irrestritos e para problemas restritos (muito mais complicados).

    Outros casos que representam divisores de guas na otimizao so:

    34

  • funo objetivo linear e restries lineares problema de programao linear, resolvido usando o algoritmo simplex ou um mtodo de ponto interior (para muitas variveis, centenas);

    funo objetivo quadrtica e restries lineares algoritmo de programao quadrtica; funo objetivo no linear e restries no lineares programao quadrtica seqncial,

    mtodo da penalidade, lagrangiano aumentado, mtodos de ponto interior; funo objetivo no linear, sem restries mtodo de Newton; funo objetivo descontnua ou caixa preta (sem informao das derivadas nem

    aproximaes) mtodo de Nelder-Mead (busca), algoritmo genticos; varivel de deciso restrita a ser um nmero inteiro programao inteira; no caso de a

    varivel alm de inteira ser binria tem-se a programao inteira binria.O Matlab possui implementaes para todas essas classes de problemas, em alguns casos, as

    funes identificam a ordem de grandeza do problema e trocam de algoritmo ou modo de operao dependendo do tamanho do problema.

    Um problema historicamente anterior ao de otimizao porm que pode ser tratado por algoritmos semelhantes o de resolver um sistema de equaes no lineares, ou seja, encontrar x tal que h(x) = 0. Por essa razo so includos no mesmo pacote de otimizao no Matlab.

    A funes apropriadas para lidar com esses problemas so mostradas na tabela abaixo. Todavia, no esgotam o universo de funes de otimizao do Matlab:

    Classe de problema Funo(es)Minimizao escalar (uma funo e uma varivel)

    fminbnd

    Minimizao irrestrita fminunc, fminsearch

    Programao linear linprogPrograo quadrtica quadprogMinimizao restrita fminconProgramao inteira binria bintprogSoluo de equao no linear fzeroSoluo de sistema no linear fsolve

    As funes de otimizao exigem que sejam passadas a funo objetivo e as funes da restries. Isso pode ser feito de duas formas, definindo cada funo na forma de um arquivo de Matlab (.m), definindo um funo inline ou uma funo annima.

    Problema exemplo

    Como exemplo prope-se o seguinte problema de otimizao restrita:min f x=ex14x1

    22x224x1 x22x21

    sujeito a x1 x2x1 x21,50

    x1 x210.

    Convertendo a segunda restrio para a forma menor do que zero, podem-se definir duas funes no Matlab para representar a funo objetivo e as restries.

    35

  • A funo das restries, pelo padro da mtodo a ser usado (fmincon) deve fornecer tambm restries de igualdade como matriz vazia caso no existam.

    function [c, ceq] = confun(x)% Restries de desigualdade.c = [1.5 + x(1)*x(2) - x(1) - x(2); -x(1)*x(2) - 10];% Restries de igualdade.Ceq = [];

    function z = fobj(x);% Funo objetivo.Z = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

    Esse um problema de duas variveis. Uma chamada possvel para a funo fmincon, supondo um ponto inicial de busca da soluo [-1, 1]

    x0 = [-1,1];options = optimset('LargeScale','off');[x, fval] = ... fmincon(@fobj,x0,[],[],[],[],[],[],@confun,options)

    A varivel options usada para determinar parmetros que controlam a execuo do algorimo. Quase todas as funes do pacote de otimizao admitem a estrutura com tais parmetros. Essa estrutura pode ser criada pela funo optimset informando nome e valor dos parmetros que se deseja fazer diferentes dos padres. Neste caso, escolheu-se usar a forma padro do algoritmo e desativar o modo de problemas de grande porte, que inicializidado por padro e pode inclusive ser trocado automaticamente caso isso seja decidido pela funo de otimizao chamada.

    O valor timo da funo obtido armazenado em fval e a varivel de deciso tima em x.x = -9.5474 1.0474

    fval = 0.0236

    A restries foram quase exatamente satisfeitas (quase nulas), como pode ser verificado avaliando-as:>> [c,ceq] = confun(x)

    c = 1.0e-007 * -0.9032 0.9032

    ceq = []

    Otimizao multiobjetivo

    Todos esses problemas envolvem uma funo objetivo escalar, ou seja, apenas um objetivo de otimizao. Uma extenso da otimizao est em imaginar que vrias funes devem ser otimizadas simultaneamente. Nesse ponto entra a otimizao multiobjetivo. A abordagem mais

    36

  • comum a de definir uma funo que combina de forma monotnica todas as funes envolvidas e minimizar essa funo definida. Outra abordagem a de obter computacionalmente o que se chama se superfcie de Pareto: o conjunto dos pontos para os quais h pelo menos uma das funes objetivos otimizada sem que se possa melhorar outra funo sem piorar alguma que j timo.

    O Matlab no implementa, at a presente verso, mtodos de otimizao que produzem automaticamente superfcies de Pareto, isso precisaria ser programado pelo usurio. No entanto, a primeira maneira citada de lidar com o problema pode ser usada.

    Problema exemplo

    O problema exemplo de minimizao multiobjetivo consiste de encontrar valores timos para um controlador PID para otimizar o erro na resposta no controle de um sistema afetado por no linearidades de atuao.

    Considere o sistema descrito pela funo de transferncia:

    H s= 1,550s343s23s1

    ,

    em cuja entrada existam duas no linearidades: um limite de saturao e um limite no slew rate, que o tempo mnimo para uma rampa de 1 V.

    Coloca-se um controlador PID na entrada com parmetros iniciais provisrios inicializados no espao de trabalho e constri-se o modelo no Simulink.

    Coloca-se um degrau como entrada no sistema e o sinal de erro entre referncia e sada alimentado no controlador. Dentro do bloco do controlador colocam-se variveis como valores dos parmetros: Kp, Kd e Ki.

    O diagrama em Simulink ser ento usado para simular repetidamente e obter a resposta do sistema variando os valores dos parmtros do controlador at atingir valores timos no sentido de minimizar a soma dos quadrados dos erros entre a entrada em degrau e a sada. Aqui entra o conceito de multiobjetivo, pois a idia minimizar todos os erros simultaneamente, o critrio adotador o de minimizar a soma dos quadrados de todos eles.

    Basta definir em Matlab uma funo que invoca o diagrama e o simula dados os parmetros

    37

  • do controlador. A sugesto aqui a de usar uma funo que produzir os parmetros timos pela seqncia: inicializao e chamada da funo de minimizao de quadrados.

    Sugere-se tambm, por organizao, definir a funo que produz o sinal de erro a ser minimiado dentro da funo geral.

    function [Kp,Ki,Kd] = otimizaPID% Otimizao de parmetros de um PID por mnimos quadrados. pid0 = [0.63 0.0504 1.9688]; % valores iniciais

    % Opes do algoritmo de otimizao.options = optimset('LargeScale','off','Display','iter',... 'TolX',0.001,'TolFun',0.001);% minimizao do erro usando a fun definida abaixopid = lsqnonlin(@erro, pid0, [], [], options);Kp = pid(1); Ki = pid(2); Kd = pid(3); function F = erro(pid) % Produz o sinal de erro entre a sada e o degrau unitrio. Kp = pid(1); Ki = pid(2); Kd = pid(3);

    % Parmetros de simulao simopt = simset('solver','ode5','SrcWorkspace','Current'); % Simulao [tout,xout,yout] = sim('optsim',[0 100],simopt); % Erro entre sada e degrau F = yout-1; endend

    O resultado obtido ao se invocar [Kp,Ki,Kd] = otimizaPID

    >> Kp

    Kp =

    0.6300

    >> Kd

    Kd =

    1.9688

    >> Ki

    Ki =

    0.0504

    38

  • Computao simblica

    A manipulao matemtica de smbolos representando variveis chamada computao simblica. uma rea da matemtica ainda de desenvolvimento e cheia de problemas ainda no resolvidos, por exemplo, no h algoritmo definitivo ou mesmo robusto para simplificao de expresses matemticas que opere para um conjunto amplo de tipos de expresses. Teoricamente, os programas de computao simblica usam de estruturas de rvores para armazenam e manipular as expresses.

    O Matlab implementa algumas tcnicas de manipulao simblica atravs do Symbolic Toolbox. bastante conhecido que esse o ponto fraco do programa e h pacotes mais adaptados para manipulao simblica no mercado, como o Mathematica. No entanto a presena desse pacote atende a um requisito de completude do programa.

    Define-se uma varivel simblica atravs de um nome de varivel (como em outros casos) e uma string que a representao escrita na tela desta varivel. Para definir uma varivel chamada

    var escrita na tela como x,

    >> var = sym('x')

    Para definir uma varivel simblica representada por uma string lexicamente idntica ao seu

    nome pode-se usar o atalho (varivel x escrita como x)

    >> syms x

    A utilizada da primeira verso do comando consiste em usar representaes simblicas familiares mesmo quando as letras usadas coincidem com nomes de outras variveis em um programa longo.

    As funes so baseadas em analogias com operaes realizadas quando se realiza manipulao de expresses manualmente. Isto , h funes para fatorar um termo, expandir produtos notveis, entre outras na tabela abaixo:

    Operao FunoAgrupar termos comuns collectExpanso de polinmios expand

    Fatorar factorSeparar numerador e

    denominadornumden

    Procurar forma mais curta de escrever

    simple

    Simplificao simplifyReescrever em termo de sub-

    expressessubexpr

    Ainda, muitas funes numricas so sobrecarregadas no pacote simblico, pode ser aplicadas com a mesma chamada sobre variveis numricas ou simblicas, outras so exclusivar do pacote, algumas mais comuns:

    39

  • Operao FunoDerivada diffIntegral int

    Matriz jacobiana jacobianLimite limit

    Expresso para uma srie symsumSrie de Taylor taylorDeterminante det

    Autovalores e autovetores eigMatriz inversa inv

    Tringularizao superior de matrizes

    triu

    Tringularizao inferior de matrizes

    tril

    Valores singulares svdExponencial matricial expm

    Composio de funes composeSoluo de equaes solve

    Funo inversa finverseSoluo de equao diferencial dsolve

    Grfico de funo simblica ezplot

    Ainda, todos os operadores do Matlab matm sua validade para variveis simblicas, tais como /, *, .*, ./, \,.

    Exemplo: sistemas lineares

    Definindo as variveis simblicas e o sistema:

    >> syms a b c d r s>> A = [a b; c d];>> y = [r; s];>> x = A\yx = -(b*s-r*d)/(a*d-c*b) (a*s-c*r)/(a*d-c*b)

    40

  • Exemplo: equaes diferenciais

    Para esse caso h um comando particular no pacote simblico: dsolve. O operador de derivada denotado por uma letra D seguida de um nmero representando a ordem da derivada. Para esta funo, os argumentos so strings no havendo a necessidade de definir variveis, porm, o resultado produzido uma estrutura contento variveis simblicas.

    >> resp = dsolve('2*Dy+3*y-x=5','Dx+x+(1/2)*y=0','y(0)=0','x(0)=0');>> resp.x ans = -5/7+1/2*exp(-5/4*t)*(50/21*sin(1/4*3^(1/2)*t)*3^(1/2)+10/7*cos(1/4*3^(1/2)*t)) >> resp.y ans = 10/7+exp(-5/4*t)*(20/21*sin(1/4*3^(1/2)*t)*3^(1/2)-10/7*cos(1/4*3^(1/2)*t))

    Argumentos opcionais so as condies iniciais e a varivel independente. Quando no informadas as respostas produzidas dependem de constantes padronizadas C1, C2, etc, e da varivel t. Ou seja, outra maneira de chamar esta funo seria:

    >> resp = dsolve('2*Dy+3*y-x=5','Dx+x+(1/2)*y=0','x');

    O que produziria respostas em funo das constantes e com x como varivel independente.

    41

    Sistemas linearesProblema exemploEspao de estadosFuno de transfernciaConverso de formas de representaoPlos, zeros, freqncia natural e fator de amortecimentoReposta a entradas padronizadasResposta em freqnciaA ferramenta LTIviewControle linear bsicoControle proporcionalOutras configuraes de controle

    Ferramenta SISOtool (SISO Single input single output)

    Simulao de sistemas de controle no SimulinkOtimizaoProblema exemplo Otimizao multiobjetivoProblema exemplo

    Computao simblicaExemplo: sistemas linearesExemplo: equaes diferenciais