Amostrando à
>> G=tf(1,poly([-1 -2 -10]));>> zpk(G) 1 ------------------ (s+10) (s+2) (s+1) Continuous-time zero/pole/gain model.
>> T=0.1;>> BoG=c2d(G, T);>> zpk(BoG) 0.00012224 (z+2.747) (z+0.1903) -------------------------------- (z-0.9048) (z-0.8187) (z-0.3679) Sample time: 0.1 secondsDiscrete-time zero/pole/gain model.
>> save planta>> rlocus(BoG)
Requisito de controle:
>> OS=10;>> zeta=(-log(OS/100))/(sqrt(pi^2+(log(OS/100)^2)))zeta = 0.59116>> RL com zoom na região de interesse:

Continuando com projeto:
>> axis([-8 2 -5 5])>> hold on;>> zgrid(zeta, 0)>> K=26;>> ftmf = feedback(K*BoG, 1);>> figure; step(ftmf)Resposta ao degrau:

Repare no elevado erro de regime permanente:
>> dcgain(ftmf)ans = 0.56522>> erro_Kp=((1-dcgain(ftmf))/1)*100erro_Kp = 43.478>> E se o requisito de controle fosse:
Lembrando da teoria de erro --> Erro para entrada degrau:

Calcular o
>> Kp=(1-0.1)/0.1Kp = 9>> dcgain(BoG)ans = 0.05>> % Note:>> num = 0.00012224*(1+2.747)*(1+0.1903)num = 0.0005452>> den=(1-0.9048)*(1-0.8187)*(1-0.3679)den = 0.01091>> num/denans = 0.049973>> Knesc=Kp/dcgain(BoG)Knesc = 180Aplicando este ganho:

Provavelmente as especificações de controle aqui seriam:
Novas especificações de controle:
Solução: Acrescentar ação integral (para zerar o erro em regime permanente).
Equação do Controlador com ação integral pura:
Deduzindo a
>> C_I=tf(1, [1 -1], T)
C_I = 1 ----- z - 1 Sample time: 0.1 secondsDiscrete-time transfer function.
>> ftma_I = C_I*BoG;>> zpk(ftma_I)
ans = 0.00012224 (z+2.747) (z+0.1903) -------------------------------------- (z-1) (z-0.9048) (z-0.8187) (z-0.3679) Sample time: 0.1 secondsDiscrete-time zero/pole/gain model.
>> figure; rlocus(ftma_I)>> axis equalRL gerado:
| RL sem zoom | RL com zoom |
|---|---|
![]() | ![]() |
Vamos adotar
>> hold on;>> zgrid(zeta, 0)>> K_I=0.652;>> ftmf_I = feedback(K_I*ftma_I, 1);>> figure; step(ftmf_I)Resposta ao degrau:

Note:
Mas...
Solução para reduzir o
Note que um PI é um controlador onde 2 ações de controle são executadas paralelamente (ao mesmo tempo): a ação Proporcional + a ação Integral.
Resolvendo algebricamente o resultado destas ações paralelas, chegamos a equação:
onde
poderíamos tentar definir o zero do PI usando os valores encontrados anteriormente para
| a) zero em: | b) zero em: |
|---|---|
![]() | ![]() |
| c) zero em: | d) zero exatamente sobre |
![]() | ![]() |
Analisando os RL's anteriores, temos que:
Resta realizar simulações no Matlab para comprovar os raciocínios anteriores.
Avaliando as opções "b" e "c" e considerando a opção "d" como um caso especial já que envolve cancelamento de par pólo-zero.
Até aqui na aula de 23/09/2021
Colocando o zero mais afastando do círculo unitário em
>> C_PIb=tf([1 -0.92], [1 -1], T)
C_PIb = z - 0.92 -------- z - 1 Sample time: 0.1 secondsDiscrete-time transfer function.
>> ftma_PIb=C_PIb*BoG;>> figure; rlocus(ftma_PIb)>> hold on; zgrid(zeta,0)Vamos obter o seguinte RL:
| RL sem zoom | RL com zoom |
|---|---|
![]() | ![]() |
Teria que ser adotado o ganho de
>> K_PIb=23.8;>> ftmf_PIb=feedback(K_PIb*ftma_PIb, 1);>> figure; step(ftmf_PIb)
Note que o tempo de assentamento baixou consideravelmente em relação ao Controlador Integrador Puro, mas é maior que o controlador Proporcional limitado à
Colocando o zero do PI no centro geométrico dos pólos mais internos da planta:
>> za=(0.3679+0.8187)/2za = 0.5933>> C_PIc=tf([1 -0.6], [1 -1], T)
C_PIc = z - 0.6 ------- z - 1 Sample time: 0.1 secondsDiscrete-time transfer function.
>> ftma_PIc=C_PIc*BoG;>> figure; rlocus(ftma_PIc)>> hold on; zgrid(zeta,0)O que gera o seguinte RL:
| RL antes do zoom: | RL com zoom: |
|---|---|
![]() | ![]() |
Adotando o ganho de
>> K_PIc=2.17;>> ftmf_PIc=feedback(K_PIc*ftma_PIc, 1);>> figure; step(ftmf_PIc)
Percebe-se que o
Note a distância dos pólos de MF da origem para o círculo unitário nas 2 opções:
Note que estes resultados já poderiam ter sido previstos, considerando-se a distância dos pólos de MF até o centro do plano-z:
| Opção (b): | Opção (c): |
|---|---|
![]() | ![]() |
| >> polesMF_PIb=pole(ftmf_PIb) polesMF_PIb = 0.9288 + 0i 0.9042 + 0.11532i 0.9042 - 0.11532i 0.35133 + 0i >> R = abs(polesMF_PIb(1)) R = 0.9288 >> plot(polesMF_PIb,'r+') | >> polesMF_PIc=pole(ftmf_PIc) polesMF_PIc = 0.96267 + 0.048173i 0.96267 - 0.048173i 0.79866 + 0i 0.36718 + 0i >> R = abs(polesMF_PIc(1)) R = 0.96387 >> plot(polesMF_PIc,'r+') |
| R = 0,9288 | R = 0,96387 |
Note que na opção (b), a distância (
Falta considerar (numa próxima aula), a opção "d"...
Não esquecendo de salvar os dados para continuação na próxima aula:
>> save plantaArquivo: planta.mat
:🚀🚀🚀🚀🚀
Fernando Passold, em 23/09/2021