Entendendo Root Locus & Respostas Temporais

Objetivo: A idéia aqui é usar comandos simples do Matlab para entender como o root locus é formado e qual a relação entre os pólos de malha-fechada e respostas temporais de um processo em malha-fechada submetido à uma entrada degrau.

Se sugere fortemente uma eventual revisão do material Respostas Transitórias de Sistemas Lineares.

Neste documento, vamos explorar um root locus formado quando se fecha uma realimentação para uma planta como:

ou na forma de um diagrama de blocos:

fechando_malha_sistema_2a_ordem.png

Esta é a mesma planta que aparece no slide No. 9 de Lugar Geométrico das Raízes (ou root-locus).

Iniciando o Matlab 🎧:

📝 Assim que você entrar no Matlab recomendo que crie um "log" da seção da trabalho. Para tanto, ative a função: diary <arquivo.txt>:

Ingressando uma função transferência no Matlab usando a função tf (num, den), onde num e den se referem aos polinômios (em s) referentes ao numerado e denominador da função transferência:

A idéia agora é compravar as raízes do denominador, que seriam os pólos do sistema. Usaremos a função: roots(<vetor-polinômio>).

Neste caso, obtermos resposta esperada, uma planta com pólos em e .

Mas poderíamos ter isolado diretamente os pólos à partir de uma transfer-function, usando a função pole():

Vamos fechar a malha, através de uma simples realimentação unitária. Usaremos a função: feedback():

A próxima figura exemplifica à que correspondem os atributos de entrada e :

malha_realimentacao_tradicional

Neste caso, (não há funrção transferência associada com um sensor retratando limitações de banda passante do mesmo). A função transferência seria similar a um filtro passa-baixas, com certa freq. de corte (ou largura de banda do sensor). Normalmente, o sensor responde mais rápido que a planta (salvo casos de "retrições orçamentárias").

O terceiro parâmetro de entrada da função feedback, confirma o sinal da realimentação, "" corresponde a uma tradiconal realimentação negativa. Se este terceiro parâmetro não for informado o Matlab subentende que trata-se de realimentação negativa. Se por acaso for "", corresponderia à uma realimentação positiva (menos usual).

Neste caso, , então vamos acabar estabelecendo uma realimentação unitária.

Note ainda que apesar de não estarmos indicando explicitamente nenhum ganho nno comando abaixo, fica implícito (matematicamente) que estaríamos fechando a malha, com ganho unitário:

, se , implica em:

Note que a equação acima corresponde ao que teria ocorrido se tivéssemos fechado a malha de modo analítico (algébrico):

Se , teremos:

Comprovando o local dos pólos de MF, mesmo para K=1 (ganho unitário):

Podemos comprovar que um root-locus inicia à partir dos pólos de MA do sistema adotando explicitamente um ganho muito baixo (no caso, ):

Note que estes pólos de MF para um valor tão baixo de ganho, praticamente coincidem com a posição dos pólos de MA do sistema repassado para o root-locus.

Vamos aumentar o ganho gradualmente para perceber como os pólos de MF "caminham" no plano:

Podemos verificar a nova posição assumida para os pólos de MF se aumentamos mais o ganho:

Aumentando um pouco mais o ganho:

Note os pólos "caminhando", um em direção ao outro (para este caso de sistema).

Mas... Seria mais interessante "graficar" a trajetória dos pólos de MF. Então vamos "plotar" os pólos de MF no plano-z.

Voltando aos pólos de MF, com :

Até este ponto, teremos um gráfico dos plano-s para este sistema, parecido com:

rl_planta_teste_1.png

Mas nós não estamos interessados em apenas em plotar o root-locus.

Queremos entender a relação dos pólos de MF com a resposta temporal de um sistema quando o submetemos à uma malha fechada e o submetemos à uma entrada (referência), do tipo degrau.

Na prática, queremos fazer:

No nosso caso, (também dito "realimentação unitária"), e então a malha-fechada se simplifica para:

Se queremos ter idéia de resposta temporal de um sistema de MF quando submetido à entrada degrau, então ncessitamos realizar algo como:

Mas não queremos e sim , então necessitamos realiar a transformada inversa de Laplace sobre o calculando anteriormente, ou em outras palavaras:

O cálculo anterior pressupõe analiticamente o uso de expansão em frações parciais. Mas, para nossa "sorte", o Matlab facilita numericamente os cálculos anteriores, gerando diretamente o gráfico de , uma vez repassada a à sua função step(<FTMS>):

E você deve ter obtido algo como gráfico:

step_planta_teste_1_K15.png

Ou reunindo informações:

RLStep
rl_planta_teste_1.pngstep_planta_teste_1_K15.png

Podemos complementar melhor nosso entendimento sobre o root-locus e sua relação com a resposta temporal de um sistema, variando o ganho, calculando as posições assumidas pelos pólos de MF para cada novo valor de ganho, e, para cada valor de ganho, usar a função step() para entender o papel dos pólos de MF na resposta temporal do sistema em MF depois que o mesmo é fechado com certo valor de ganho.

Até este ponto, se tudo deu certo, você deve ter obtido algo como:

RLStep
rl_planta_teste_1.pngstep_planta_teste_1_K25.png

Completando a idéia para outros valores mais de ganho. E.. (não menos importante), comprovando que pólos de MF reais geram respostas super-amortecidas (sem sobressinal) e pólos de MF complexos (isto é, com parte imaginária diferente de zero), geram respostas suub-amortecidas, com certo fator de amortecimento () e frequência de oscilação, . Lembre que a amplitude do sobre-sinal (ou overshoot, ) está diretamente associado com o valor de .

Continuando... Falta comprovar a resposta temporal para nossos primeiros pólos de MF com parte imaginária diferente de zero:

Até este ponto você deve ter algo como:

RLStep
rl_planta_teste_1_2.pngstep_planta_teste_1_K40.png

Percebemos que a resposta começou a ficar sub-amortecida, com %OS bem baixo ainda.

Continuando o processo para valores ainda maiores de ganho:

Agora, você deve ter obtido algo como:

RLStep
rl_planta_teste_1_3.pngstep_planta_teste_1_K150.png

Em resumo, o RL deve ter ficado algo como:

rl_planta_teste_1_4

Fim... 🕦 ​para esta aula

Sugere-se tornar hábito que ao final de cada seção de trabalho, você faça ainda:

💾 Arquivos gerados disponíveis: aula_26042024.txt, aula_26042024.mat e aula_26042024.md (já convertido para UTF8).

Sugestões para próxima aula:

Na próxima aula, vamos tentar continuar à partir deste ponto e comprovar mais detalhes sobre respostas temporais de sistemas de 2a-ordem com raízes complexas (ver Respostas Transitórias de Sistemas Lineares):

ou seja, fizemos:

ftmf_sistema_2a_ordem_blocos.png

Caso o sistema possua pólos complexos () , a resposta sub-amortecida para entrada degrau fica:

Pólos de MF:

ou graficamente:

polos_MF_complexos.png

parte real: parte imaginária:

Fator amortecimento:

A resposta em MF para este sistema fica:

A transformada inversa de Laplace para fica:

onde:

Podemos prever o valor do sobresinal, ou overshoot:

Podemos calcular o para o caso do último ganho adotado e comprovar o obtido e correspondente usando as equações anteriores...

Ou resumidamente:

step_ftmf_2a_ordem_sub.png

🎈🎈🎈👋


Fernando Passold, em 26/04/2024