Baseado no examplo 9.5 de "Nise, Norman S., Control System Engineering, 6th ed. 2011, John Wiley & Sons, Inc.”:
Examplo 9.5: Projetar um controlador PID para que o sistema abaixo opere com tempo de pico 2/3 menor que o sistema não compensado (K=?) com 20% de sobresinal e erro nulo para entrada degrau. Seja o sistema:
Solução: NISE segue a seguinte abordagem para projetos de PID usando Root Locus:
Usando o script example_9_5.m proposto pelo mesmo, temos:
x
>> help example_9_5
Example 9.4 (pag. 483)
Este script resolve o exemplo 9.5:
PID Controller Design, do livro:
Nise, Norman S., Control System Engineering,
6th ed. 2011, John Wiley & Sons, Inc.
Exige que o usuario edite as primeiras linhas
contendo as variaveis 'num' e 'den' referentes
a funcao transferencia da planta para a qual
esta' sendo projetado o PID
Note que seguindo o exemplo 9.5; primeiro e' realizado
o projeto do Controlador Proporcional para ter
acesso ao tempo de pico do mesmo. Este valor e'
reduzido entao em 2/3 para o projeto do PID
O restante do programa com excessao das variaveis
'num' e 'den' e' interativo.
Varias janela graficas de RL serao abertas, o usuario
deve realizar o zoom na regiao de interesse, orientado
pelas mensagens geradas por este script durante sua
execucao.
>> example_9_5
Este script resolve o exemplo 9.5:
PID Controller Design, do livro:
Nise, Norman S., Control System Engineering,
6th ed. 2011, John Wiley & Sons, Inc.
Planta a ser compensada:
ans =
(s+8)
------------------
(s+10) (s+6) (s+3)
Continuous-time zero/pole/gain model.
Maximo percentual overshoot tolerado (%OS): ? 20
Fator de amortecimento (zeta): 0.4559
Observe o RL da FTMA(s) do Contr. Prop. + Planta...
Realize um zoom sobre a area de interesse e
pressione qualquer tecla para continuar
O script realiza uma pausa no RL mostrando o RL da planta para sintonia (determinação do ganho) do Controlador Proporcional:
A idéia neste ponto é selecionar o ponto de intersecção da linha guia do () com o RL traçado para esta planta (conforme ressaltado pelas linhas tracejadas acima). Na sequência temos:
x
Select a point in the graphics window
selected_point =
-5.4149 +10.5227i
k =
120.5291
poles =
-5.4148 +10.5227i
-5.4148 -10.5227i
-8.1703 + 0.0000i
Estimando tempo de assentamento, t_s: 0.7387
Estimando tempo do pico, t_p: 0.2986
Novo tempo de tipo (desejado), t_p: 0.1990
theta (cos(zeta)): 62.8739^o
180^o-theta: 117.1261^o
Polos de MF desejados em: s = -8.0861 +j15.7840
Contribuicoes angulares dos polos do sistema em malha-aberta:
p(1) = -10 --> 83.0865^o
p(2) = -6 --> 97.5291^o
p(3) = -3 --> 107.8607^o
Soma das contribuicoes dos polos: 288.4763^o
Contribuicoes angulares dos zero do sistema em malha-aberta:
z(1) = -8 --> 90.3127^o
Somatorio total das contribuicoes angulares (polos e zeros): 198.1636^o
Angulo resultante para o zero do PD: 18.1636^o
Posicao do zero do PD: em s = -40.0243
Equacao do PD (variavel "c"):
ans =
(s+40.02)
Continuous-time zero/pole/gain model.
Levantando RL da FTMA(s) do sistema com o PD...
Observe o RL da FTMA(s) do PD + planta (Figure 4)...
Realize um zoom sobre a area de interesse e
pressione qualquer tecla para continuar
E temos neste ponto as seguintes janelas gráficas:
Figura 2: | Figura 3: |
---|---|
Aumentando a região mostrada neste RL percebemos: |
E mais a última janela aberta: "RL da FTMA(s) do PD + planta (Figure 4)...”:
Onde a idéia é concentrar o zoom na região de interesse para definir o ganho do PD:
Continuando a execução do script temos:
xxxxxxxxxx
Select a point in the graphics window
selected_point =
-9.4724 +15.7973i
K_pd =
7.9981
poles_pd =
-9.4593 +15.8042i
-9.4593 -15.8042i
-8.0794 + 0.0000i
Equacao do PD:
ans =
7.9981 (s+40.02)
Continuous-time zero/pole/gain model.
Selecione uma posicao para o zero do PI (em: -3 <= s < 0) [-0.5]: ?
Colocando zero do PI o mais próximo possível do pólo mais lento do sistema (em ), teremos:
x
Selecione uma posicao para o zero do PI (em: -3 <= s < 0) [-0.5]: ? -2.5
Equacao final do PID (ainda sem ganho):
ans =
(s+40.02) (s+2.5)
-----------------
s
Continuous-time zero/pole/gain model.
FTMA(s) do PID + Planta (variavel "PIDg"):
ans =
(s+40.02) (s+8) (s+2.5)
-----------------------
s (s+10) (s+6) (s+3)
Continuous-time zero/pole/gain model.
Observe o RL da FTMA(s) do PID + planta (Figure 6)...
Realize um zoom sobre a area de interesse e
pressione qualquer tecla para continuar
Até este ponto é gerada a janela gráfica (Figure 5):
Notamos que o PD permitiu alcançar (e o objetivo era: ).
E ficamos parados na seguinte janela gráfica (Figure 6):
Onde o script espera que se realize um zoom a fim de “sintoniar” (determinar) o ganho que será adotado para o PID:
Continuando a execução do script temos:
x
Select a point in the graphics window
selected_point =
-8.1251 +15.7104i
k_PIDg =
7.8645
poles_PIDg =
-8.1340 +15.7060i
-8.1340 -15.7060i
-8.1175 + 0.0000i
-2.4790 + 0.0000i
Equacao final (completa) do PID (variaval "PID2"):
PID2 =
7.864 s^2 + 334.4 s + 786.9
---------------------------
s
Continuous-time transfer function.
Kp =
334.4315
Ki =
786.9258
Kd =
7.8645
>>
E ainda é gerada a última figura (Figure 7):
Notamos que o PID final ultrapassou um pouco o desejado (), mas atendeu ao . Uma redução conveniente no ganho geral do PD(*) permite manter o dentro do patamar desejado:
x
>> zpk(PID)
ans =
(s+40.02) (s+2.5)
-----------------
s
Continuous-time zero/pole/gain model.
>> k_PIDg
k_PIDg =
7.8645
>> ftmf_PID=feedback(5*PID*g, 1);
>> figure; step(ftmf_PID)
>> stepinfo(ftmf_PID)
ans =
struct with fields:
RiseTime: 0.1029
SettlingTime: 0.5742
SettlingMin: 0.9285
SettlingMax: 1.1964
Overshoot: 19.6357
Undershoot: 0
Peak: 1.1964
PeakTime: 0.2208
>>
(*) Note que este ganho está diretamente associado com o ganho da ação Derivativa ().
E temos a figura final:
Fim.
Fernando Passold, em 14.06.2021