Projeto de Controladores usando Root Locus


Reiniciando da Aula anterior

Aula anterior: de 14/05/2026. Aquivo de dados: planta.mat.

🎵.

Projeto de PD

Embasamento Teórico

Para lembrar de conceitos associados com controlador PD, revisar:

  1. Ação Derivativa (Aula de 26/10/2019) que explica porque não se fecha uma malha de controle apenas com ação Derivativa (recomenda-se realizar as simulações sugeridas usando Matlab/Simulink).
  2. Resumo teoria à respeito de Controladores PD e Lead (por Avanço de Fase) (Aula de 02/06/2021): mostra o diagrama em blocos de um controlador PD e Lead (por Avanço de Fase).

Projeto de PD usando "Chute Científico"

A exemplo do que foi realizado no projeto do PI, esboçamos diferentes opções de localização para o zero do PI e esboçamos diagramas de Root Locus associados com cada opção para avaliar teoricamente as melhores opções de posicionamento do mesmo.

Neste instante, estamos realizando o projeto de um PD, cuja equação é:

CPD(s)=Kp+Kds=Kd(s+KpKd)=K(s+zPD)

notamos que as únicas incógnitas agora são a posição do zero do PD (zPD) e seu ganho genérico que pode ser facilmente determinado usando a ferramenta Root Locus.

De modo similar ao que foi realizado na aula de 03/10/2019 (Projeto de PD), podemos prever 4 posições diferentes para o zero do PD:

Casos_zeros_PD_03102019

Como o planta da aula de 03/10/2019 também era um sistema de 3a-ordem, sem zeros, semelhante ao adotado neste semestre, os esboços para os Root Locus nos permitiram concluir que as melhores opções de posicionamento do pólo do PD seriam o caso (2) e (4). O caso (3) corresponde ao PD mais rápido possível de ser realizado para este tipo de sistema.

Mas desta vez não vamos seguir esta abordagem para definição do PD e vamos optar por realizar este projeto usando contribuição angular.

Projeto de PD usando Contribuição Angular

Nesta aula em particular vamos usar o script find_polo_zero.m, para realizar o projeto do PD usando Contribuição Angular.

Verificando se ele já se encontra na pasta (folder) de trabalho atual:

Este script exige a presença da variável ftma_aux previamente preparada no workspace do Matlab para funcionar:

E claro, para poder trabalhar com contribuição angular, necessitamos da definição de algum critério temporal de resposta (tp= tempo no instante do pico do overshoot, tr= tempo de subida ou t= tempo de assentamento). O scipt tal como está codificado só trabalha (e pede) um valor numérico para ts, além do valor máximo tolerado para o overshoot. Desta forma, esta rotina consegue, usando a regra do Root Locus, determinar com presição onde deve ser posicionado o zero do PD.

Regra do Root Locus, estabele que:
Para que alguma curva (traçado) do Root Locus passe por determinado ponto no plano-s, deve ocorrer a seguinte premissa:

(Número ímpar)×180o=θZerosθPólos

Se esta regra for obedecida, o traçado do RL passará sobre este ponto no plano-s.

Este ponto no plano-s corresponde à posição desejado para os pólos de MF de forma a cumprirem os requisitos desejados para %OS e ts (ou outro critério temporal). Lembrar do item 6) Respostas de Sistemas Lineares onde foram estudados diferentes casos de respostas temporais para sistemas de 2a-ordem. Note que neste caso, temos um sistema de 3a-ordem, mas o mesmo possui um pólo real distante do eixo jω o que nos permite aproximar a resposta do nosso sistema, para um de 2a-ordem.

Note que se um sistema em MF (sua FTMF(s)) resultar num sistema de 2a-ordem, do tipo:

FTMF(s)=bs2+as+b=ωn2s2+2ζωn+ωn2=K(s+p1)(s+p2)

se o mesmo for exposto à uma entrada degrau, teremos como resposta sub-amortecida (com overshoot), pólos de MF nas posições: s=σ±jωd, onde σ=ωnζ e ωd=ωn1ζ2.

E neste caso em particular podemos prever certas características temporais de resposta:

tp=πωn1ζ2 ts=ln(0,021ζ2)ζωn4ζωn tr=0,6+2,16ζωn

Note que o valor de ζ pode ser encontrado se o usuário especifica o valor máximo de %OS permitido para o caso:

ζ=ln(%OS/100)π2+ln2(%OS/100)

Então agora só temos que definir a variável ftma_aux que corresponde à:

ftma_aux=C(s)G(s)

onde: C(s)= equação (transfer function) do controlador com todos os dados já conhecidos com exceção do ganho geral K à ser encontrado usando Root Locus com os eventuais pólos e zeros já existentes com exceção o pólo ou zero que se pretende determinar usando o script.

Neste caso, a equação do PD é:

CPD(s)=Kp+Kds=K(s+zPD)

onde: zPD= zero do PD, a incógnita que queremos que seja determinada via contribuição angular usando o script.

Então, neste caso em particular:

ftma_aux=KG(s)

como K é determinado à posteriori usando Root Locus, a equação da FTMA(s) auxiliar equivale a equação da planta simplesmente.

Neste ponto, foram geradas 2 janelas gráficas. A primeira demonstrando os cálculos da contribuição angular e posição final encontrada para o zero do PD e a segunda janela mostrando o RL final com a FTMA(s) já incluindo a equação completa do controlador, bastando então apenas sintonizar o controlador (definir seu ganho).

Gráfico das contribuições angulares com determinação do zero do PD:

contrib_angular_PD.png

RL final do PD:

RL_PD.png

Note que a posição encontrada para o zero do PD coincide com o caso (4) abordado na aula de 03/10/2019. Isto significa que um PD ainda mais rápido é possível para esta planta.

Sintonizando este controlador e verificando resposta final em malha-fechada para entrada degrau unitário:

Resposta final em MF para entrada (referência) degrau unitário:

step_PD.png

Note que o PD acelerou a resposta do sistema, mas o PD não é capaz nem é direcionado para zerar erro em regime permanente:

Note que o overshoot atingido é em relação ao valor final atingido pelo sistema, não em relação à referência. Se percebe que a saída do sistema, mau ultrapassou o valor 1,0 ― isto significa que é possível aumentar ainda mais o ganho do PD para tentar Max{y(t)}1,15. E aumentar o ganho provavelmente deve acelerar um pouco mais a resposta do sistema e mais desejavelmente, reduzir o erro de regime permanente. Mas nesta aula, não vamos proceder a uma "sintonia fina" deste PD, porque demandaria algum tempo e existem ferramentas do próprio Matlab mais apropriadas para este ajuste fino.

Lembrando o ganho usado para este PD:

Tentando um PD mais rápido

O que podemos testar de forma mais rápida é se é possível reduzir ainda mais o tempo de assentamento desta planta com um PD. Digamos, tentar baixar de 0,75 segundos para 0,5 segundos.

Root Locus deste PD:

RL_PD2.png

Note que o zero do PD mudou de local — para o caso (2) se tivéssemos usado o método do "chute cientifico" (aula de 03/10/2019). E note também que o ganho aumentou, o que provavelmente deve implicar num erro de regime permanente menor.

Fechando a malha e verificando resultados obtidos:

Resposta obtida, comparando com outros controladores:

step_K2_PD_PD2.png


Encerrando esta seção de trabalho:

A 2a-parte da aula, continua [aqui] com o projeto de um PID para esta planta.


Fernando Passold, em 30/05/2026