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.17Kp = 4.8824>> >> dcgain(G) % resultado de lim_{s \to 0} G(s)ans = 0.5>> K=Kp/dcgain(G)K = 9.7647Traç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.5ans = 10.5>> 10.5+5 % acrescentando mais 5 graus em função do acréscimo do Lead...ans = 15.5O 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/alphaans = 1.7294Agora 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)*wmzero = 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.57824Temos que definir o ganho do controlador para garantir o inicialmente definido:
xxxxxxxxxx>> Kc=K/alphaKc = 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)*100erro = 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 📬 ,