Aula ministrada em 30/09/2024. Continuação da aula de 23/09/2024.
Recuperando seção de trabalho anterior:
xxxxxxxxxx
>> pwd % verificando pasta atual onde dados estão gravados
ans =
'/Volumes/DADOS/Users/fpassold/Documents/UPF/Controle_2/2024_2'
>> load planta % carregando dados da seção de trabalho anterior
>> diary aula_30092024.txt % iniciando registro desta aula
Lembrando da eq. da planta:
xxxxxxxxxx
>> zpk(G)
20
------------------
(s+10) (s+4) (s+1)
Continuous-time zero/pole/gain model.
Eq. genérica do PD:
onde: ganho genérico do controlador (definido com auxílio do RL); zero do controlador PD -- incógnita atual.
Seguem esboços de RL para diferentes opções de locais para o zero do PD. Para ver opções (casos semelhantes, recomenda-se verificar o item "Projeto de PD (Aula de 03/10/2019").
Opções:
Neste caso: . Arbitrando um local gemétrico intermediário:
xxxxxxxxxx
>> (1+4)/2
ans =
2.5
>> PD2 = tf( [1 2.5], 1)
PD2 =
s + 2.5
Continuous-time transfer function.
>> ftma_PD2 = PD2*G;
>> zpk(ftma_PD2)
20 (s+2.5)
------------------
(s+10) (s+4) (s+1)
Continuous-time zero/pole/gain model.
>> rlocus(ftma_PD2)
>> hold on; sgrid(zeta,0)
>> [K_PD2,polosMF]=rlocfind(ftma_PD2)
Select a point in the graphics window
selected_point =
-6.3768 + 8.6378i
K_PD2 =
4.509
polosMF =
-6.3444 + 8.6372i
-6.3444 - 8.6372i
-2.3112 + 0i
Obtemos o RL abaixo, já ressaltando pontos de sintonia e outros detalhes:
xxxxxxxxxx
ftmf_PD2=feedback(K_PD2*ftma_PD2, 1); % fechando a malha
figure; step(ftmf_PD2, ftmf)
Obtemos a seguinte resposta ao degrau para este PD, comparando sua resposta com controlador Porporcional realizado na aula de 09/09/2024.
Comentários:
O PD mais rápido, em teoria, seria obtido fazendo o zero do PD propositalmente cancelar o pólo mais lento da planta em .
xxxxxxxxxx
>> PD4 = tf( [1 1], 1)
PD4 =
s + 1
Continuous-time transfer function.
>> ftma_PD4=PD4*G;
>> zpk(ftma_PD4)
20 (s+1)
------------------
(s+10) (s+4) (s+1)
Continuous-time zero/pole/gain model.
>> ftma_PD4aux=minreal(ftma_PD4);
>> zpk(ftma_PD4aux)
20
------------
(s+10) (s+4)
Continuous-time zero/pole/gain model.
>> figure; rlocus(ftma_PD4)
>> hold on; sgrid(zeta,0)
>> ylim([-15 15]) % usando mesmos limites que RL obtido anteriormente (para comparação visual)
>> [K_PD4,polosMF]=rlocfind(ftma_PD4)
Select a point in the graphics window
selected_point =
-7.0071 + 9.5666i
K_PD4 =
5.026
polosMF =
-7 + 9.5666i
-7 - 9.5666i
-1 + 0i
RL obtido para este controlador:
xxxxxxxxxx
>> % fechando a malha
>> ftmf_PD4=feedback(K_PD4*ftma_PD4, 1);
>> figure; step(ftmf_PD2, ftmf_PD4)
>> legend('PD2', 'PD4')
Resposta em MF para entrada degrau, comparada com PD da opção 2:
Comentários:
Pode-se aumentar ainda mais o ganho do PD4, neste caso, acompanhando o que aconteceria no RL, vamos perceber que reduzimos o valor de (parte imaginária dos pólos complexos de MF "sobe"), mas se manteria no mesmo valor, já que a parte real dos pólos de MF não varia de valor. Mas o que importa neste caso é que o erro de regime permante deve ser sensivelmente reduzido (é o que normalmente acontece quando se eleva o ganho para sistemas tipo 0 -- ver Teoria do Erro);
Porém note que o erro do PD4 é maior que o erro do PD2. O PD4 pode ser mais rápido que o PD2, mas com o ganho K_PD4
no valor que está, resulta num erro muito maior:
xxxxxxxxxx
>> erro_PD4= ((1-dcgain(ftmf_PD4))/1)*100
erro_PD4 =
28.466
>> erro_PD2= ((1-dcgain(ftmf_PD2))/1)*100
erro_PD2 =
15.069
Observação final:
Para próxima aula, a idéia é usar o "App Control System Desginer" do Matlab, para facilitar e acelerar o projeto de controladores. Neste caso, podemos melhorar o PD2, testando seu zero mais próximo de , para intencionalmente fazer o pólo de MF real dominante se afastar ainda mais do eixo (menor tempo de resposta, menor ) e ainda encontrar um valor de ganho elevado que permita fazer (10% de overshoot em relação à entrada degrau). E assim estaríamos projetando o melhor PD prático para este tipo de sistema.
Encerrando atividades nesta aula:
xxxxxxxxxx
>> save planta
>> diary off
>> quit
🌊 Fernando Passold 📬 ,