Aula de 18/11/2024
Neste caso considerando a planta do estudo de caso:
xxxxxxxxxx
>> load planta % carregando dados da planta (e projetos anteriores)
>> zpk(G)
20
------------------
(s+10) (s+4) (s+1)
Continuous-time zero/pole/gain model.
Propondo especificações de controle:
Como trata-se de um sistema tipo 0, neste caso necessitamos calcular o ganho estático de posição, associado com entrada degrau, (rever Teoria do Erro), para inicialmente determinar o ganho que deve ser adotado neste sistema para tentar garantir o erro máximo especificado:
ou isolando necessário em função do especificado:
Mas original do sistema é dado por:
Calculando necessário para especificado:
xxxxxxxxxx
>> % erro de 17%.
>> Kp=(1-0.17)/0.17
Kp =
4.8824
>>
>> dcgain(G) % resultado de lim_{s \to 0} G(s)
ans =
0.5
>> K=Kp/dcgain(G)
K =
9.7647
Traçando Diagrama de Bode para observar margem de fase de :
xxxxxxxxxx
>> G1=K*G;
>> figure; bode(G1)
Notamos que possui Margem de fase de . São desejados , então falta:
xxxxxxxxxx
>> 58-47.5
ans =
10.5
>> 10.5+5 % acrescentando mais 5 graus em função do acréscimo do Lead...
ans =
15.5
O Lead deve contribrui (avançar a fase) em . Podemos prosseguir determinando o fator que define a "distânica" necessária entre o zero e o pólo do Lead:
xxxxxxxxxx
>> % 15,5 graus avanço de fase requerido do Lead
>> aux=sin(15.5*pi/180)
aux =
0.26724
>> alpha=(1-aux)/(1+aux)
alpha =
0.57824
>> % distância entre zero e polo do Lead = 1/alpha
>> 1/alpha
ans =
1.7294
Agora temos que considerar o incremento de ganho provocado pelo Lead com com este fator e "compensar" este acréscimo considerando o Diagrama de Bode de descobrindo em que frequência, ocorre esta compensação:
xxxxxxxxxx
>> % Com este alpha qual o incremente de ganho causado pelo Lead?
>> ganho=1/sqrt(alpha)
ganho =
1.3151
>> 20*log10(ganho)
ans =
2.379
>> % Buscando onde |G1(s)| "cai" 2,379 dB
>> xlim([1 10])
Percebe-se que "cai" 2,379 db em: rad/s. Definindo rad/se e calculando posições dos zero e pólo do controlador, teremos:
xxxxxxxxxx
>> % Frequência do wc ou wm (da contribuição angular):
>> % 3,99 < w_m < 4,67
>> wm=4.25;
>> zero=sqrt(alpha)*wm
zero =
3.2318
>> polo=wm/sqrt(alpha)
polo =
5.589
>> C=tf( [1 zero], [1 polo] );
>> zpk(C)
(s+3.232)
---------
(s+5.589)
Continuous-time zero/pole/gain model.
>> % Por curiosidade, ganho DC deste controlador
>> dcgain(C)
ans =
0.57824
Temos que definir o ganho do controlador para garantir o inicialmente definido:
xxxxxxxxxx
>> Kc=K/alpha
Kc =
16.887
>> C=tf( Kc*[1 zero], [1 polo] );
A eq. final do controlador fica:
Calculando a final e verficando a final obtida:
xxxxxxxxxx
>> % calculando FTMA(s) final com controlador...
>> ftma=C*G;
>> figure; bode(G, C, ftma)
>> xlim([1 10])
>> legend('G(s)', 'Lead', 'FTMA(s)')
Notamos que final (era desejado ).
Confirmando erro de regime permanente:
xxxxxxxxxx
>> ftmf=feedback(ftma, 1);
>> figure; step(ftmf)
>> erro = ((1-dcgain(ftmf))/1)*100
erro =
17
Conclusão: refazer projeto, aumentando fator , aumentando a distância entre o zero e pólo deste controlador. Sugere-se o uso do App Control System Designer para melhorar este projeto.
🌊 Fernando Passold 📬 ,