Projeto Controladores

Planta para Estudo de Caso

Suponha que a planta que usaremos para estudo de caso neste semestre seja:

G(s)=400(s+2)(s+5)(s+20)G(s) = \dfrac{400}{(s+2)(s+5)(s+20)}

Questão (inicial): que valor vamos adotar para período de amostragem deste sistema?

Solução:

Lembramos que a frequência angular, ω\omega (em rad/s) é determinada como:

ω=2πf\omega=2\pi f

dai podemos descobrir o valor da frequência ff em Hz:

f=ω2πf=\dfrac{\omega}{2\pi}

A banda passante da planta (pólo de maior frequência), corresponde ao pólo na posição s=20s=-20 ou em 20 rad/s, em Hz resultaria:

f=202π=3.1831f=\dfrac{20}{2\pi}=3.1831 Hz

Amostrando 20 vezes mais rápido:

>> fs=20*ans
fs =
       63.662
>> T=1/fs
T =
     0.015708

Adotando período de amostragem igual à 20 ms:

>> T=20E-3
T =
         0.02

Testando esta freq. de amostragem:

>> G=tf(400,poly([-2 -5 -20]));
>> zpk(G)

ans =
 
         400
  ------------------
  (s+20) (s+5) (s+2)
 
Continuous-time zero/pole/gain model.

>> BoG = c2d(G, T);
>> zpk(BoG)

ans =
 
   0.00046711 (z+3.27) (z+0.2335)
  --------------------------------
  (z-0.9608) (z-0.9048) (z-0.6703)
 
Sample time: 0.02 seconds
Discrete-time zero/pole/gain model.

>> step(BoG)

A resposta ao degrau em MA fica:

Projeto do Controlador Proporcional

Primeiro passo, traçando o RL:

>> figure; rlocus(BoG)

E temos o gráfico:

Realizando um "zoom" na região de interesse:

>> axis([0.4 1.1 -0.5 0.5])

Deste RL concluímos que 7,12<Ku<9,227,12 < K_u < 9,22 (Ku=K_u= Ultimate Gain = ganho máximo que poderia ser adotado).

Controlador Proporcional SEM Overshoot

Supondo que eu queria uma resposta super-amortecida (sem overshoot: só pólos reais em MF):

Então fechando a malha com K=0.08K=0.08:

>> K=0.08;
>> % fechando a malha
>> ftmf_K_super=feedback(K*BoG, 1);
>> pole(ftmf_K_super)
ans =
      0.94298
      0.92453
       0.6684
>> figure; step(ftmf_K_super)
>> stepinfo(ftmf_K_super)
ans = 
  struct with fields:

        RiseTime: 1
    SettlingTime: 1.82
     SettlingMin: 0.12433
     SettlingMax: 0.13788
       Overshoot: 0
      Undershoot: 0
            Peak: 0.13788
        PeakTime: 3.18

Percebemos que se for desejada uma resposta super-amortecida, sem overshoot, conseguimos acelerar a planta em MF em:

>> 2.26/1.82
ans =
       1.2418

Este sistema em MF foi acelerado de quase 25% em relação à planta em MA (lembre-se o ganho adotado aqui foi de apenas K=0.08K=0.08).

Mas ainda apresenta um elevado erro em regime permanente. Repare:

>> dcgain(ftmf_K_super)
ans =
      0.13793
>> erro = (1 - dcgain(ftmf_K_super))/1*100
erro =
       86.207
>> 

Controlador Proporcional com algum Overshoot

E se fosse desejada uma resposta mais acelerada, apenas com overshoot.

Supondo que toleramos um overshoot de 10%:

>> OS=10;
>> zeta=(-log(OS/100))/(sqrt(pi^2+(log(OS/100)^2)))
zeta =
      0.59116
>> % mudar o foco da janela gráfica para o RL
>> figure(2)
>> hold on
>> zgrid(zeta, 0)      

E temos então:

Fixando o ganho em K=0,75K=0,75:

>> K_OS10=0.75;
>> % fechando a malha
>> ftmf_K_OS10=feedback(K_OS10*BoG, 1);
>> figure; step(ftmf_K_OS10)
>> stepinfo(ftmf_K_OS10)
ans = 
  struct with fields:

        RiseTime: 0.38
    SettlingTime: 1.28
     SettlingMin: 0.54387
     SettlingMax: 0.65533
       Overshoot: 9.2212
      Undershoot: 0
            Peak: 0.65533
        PeakTime: 0.86
>> 

E a resposta à entrada degrau unitário neste caso, fica:

Note alguns detalhes que passaram desapercebidos:

Neste caso, o erro de regimente permamente ficou em 40%.

Controle Proporcional com erro limitado

Questão: vamos supor que se queira tentar fechar uma malha para este sistema usando um simples Controlador Proporcional, mas limitando o erro à 10% no máximo.

Projeto finalizado na aula de 22/09/2023

Solução Neste caso, temos que usar a Teoria do Erro para prever que valor de ganho deveria ser adotado para garantir erro limitado ao valor citado.

Neste caso (sistema do tipo 0) submetido à uma entrada degrau, temos o seguinte erro previsto:

eDegrau()=11+Kp=0,1e_{Degrau}(\infty) = \dfrac{1}{1+K_p} = 0,1 \quad \leftarrow \quad que corresponde aos 10%.

isolando o KpK_p na eq. anterior:

Kp=1e()e()K_p = \dfrac{1-e(\infty)}{e(\infty)}

Calculando o KpK_p neste caso:

>> Kp = (1-0.1)/0.1
Kp =
     9
>> 

Agora necessito calcular o lim\lim para esta planta:

Kp=limz1FTMA(z)K_p = \lim_{z \to 1} FTMA(z), que o "ganho de posição".

Kp=limz1[Kd0.00046711(z+3.27)(z+0.2335)(z0.9608)(z0.9048)(z0.6703)]K_p = \lim_{z \to 1} \left[ \dfrac{K_d \cdot 0.00046711 (z+3.27) (z+0.2335)}{(z-0.9608) (z-0.9048) (z-0.6703)} \right]

Kp=Kdlimz1[0.00046711(z+3.27)(z+0.2335)(z0.9608)(z0.9048)(z0.6703)]K_p = K_d \cdot \lim_{z \to 1} \left[ \dfrac{0.00046711 (z+3.27) (z+0.2335)}{(z-0.9608) (z-0.9048) (z-0.6703)} \right]

Calculando o limite usando o Matlab:

>> dcgain(BoG)
ans =
            2
>> [numd,dend]=tfdata(BoG,'v')
numd =
            0   0.00046711    0.0016366   0.00035661
dend =
            1      -2.5359       2.1199     -0.58275
>> lim = polyval(numd, 1)/polyval(dend, 1)
lim =
            2

Então temos:

Kp=Kd2K_p = K_d \cdot 2

Kd=Kp2K_d = \dfrac{K_p}{2}

No nosso caso:

>> Kd=Kp/2
Kd =
          4.5

Questão: este ganho pode ser adotado?

Fechando a malha...

>> ftmf_Kd = feedback(Kd*BoG, 1);
>> pole(ftmf_Kd)
ans =
      0.96399 +    0.17296i
      0.96399 -    0.17296i
      0.60587 +          0i
>> polosMF_Kd=pole(ftmf_Kd)
polosMF_Kd =
      0.96399 +    0.17296i
      0.96399 -    0.17296i
      0.60587 +          0i
>> raio = abs(polosMF_Kd)
raio =
      0.97938
      0.97938
      0.60587
>> figure; rlocus(BoG)
>> hold on;
>> plot(polosMF_Kd, 'rd', 'MarkerSize', 14)
>> axis([-0.6 1.2 -0.4 0.4])

Temos o seguinte RL mostrando onde ficam localizados os pólos de MF para este valor de ganho:

Nota-se que 7,12<Ku<9,227,12 < K_u < 9,22.

Verificando a resposta em MF para entrada degrau.

>> figure; step(ftmf_Kd, ftmf_K_OS10)
>> legend('K_d=4,5 (e(\infty \le 10%)', 'K = 0,75 (%OS \le 10%)')
>> stepinfo(ftmf_Kd)

        RiseTime: 0.14
    SettlingTime: 3.66
     SettlingMin: 0.49679
     SettlingMax: 1.4835
       Overshoot: 64.832
      Undershoot: 0
            Peak: 1.4835
        PeakTime: 0.4
>> 

Resumo

Segue resumo do desempenho obtido à partir de Controladores Proporcionais:

Critério KpK_p %OS\%OS tst_s e()e(\infty)
Resposta Super-amortecida 0,08 0 1,81 86,2%
Overshoot <10% 0,75 9,2% 1,27 40%
Erro <10% 4,5 64,8% 3,7 10%

Efetivamente, com os projetos de controladores Proporcionais já realizamos percebemos que:

🤨 blá-blá-blá...

Encerrando seção de trabalho para 2a-parte da aula... 📝

>> save planta
>> diary off

Continua na próxima aula, do dia 22/09/2023


🎵

Fernando Passold, em 15/09/2023