faith-quotes-8.png

Projeto Controladores usando RL

Projeto Controladores usando RLProjeto de PIDBase teóricaExemplo 9.5 (NISE)Problema Proposto 1Projeto do PID Planta Estudo de CasoRevisando Requisitos de Controle1a-Etapa: Projeto do PD2a-Etapa: Projeto do PIRefazendo o PDRefazendo o PIFinalizandoConsiderações FinaisProblema Proposto 2

🎵

Projeto de PID

Base teórica

Um PID ou controlador por Avanço-Atraso de fase ("Lead-Lag") implica acrescentar um sistema de 2a-ordem ao que se deseja controlar. A equação genétrica do controlador fica:

que representa o caso de um PID teórico, com implementação analógica de uma ação derivativa pura (impossível na prática: implica ganho conforme a frequência ). Para revisar questões sobre ação derivativa, clique em: (1) Ação Derivativa na presença de sinal ruidoso e (2) Teoria à respeito de Compensador por Avanço de Fase (Lead). Caso seja considerado um PID com Ação Derivativa filtrada (realizável na prática), teremos algo como:

onde o pólo do PD, , corresponde ao pólo do filtro passa-baixa usado para limitar o ganho de uma ação derivativa pura. Note: PD FPB Lead.

Já a eq. de um controlador "Lead-Lag" fica como:

Note que estes controladores possuem muitas incógnitas além do ganho geral que pode ser definido com auxílio do RL. Em alguns casos necessitamos definir: 2 zeros e 1 pólo (considerando PID com ação Integral "pura", isto é, com 1 pólo na origem). E então fica complicado tentar imaginar diferentes combinações de posições de zeros e pólos destes controladores (mesmo garantindo ação "PI" "PD" -- a "ordem" dos pólos e zeros importa).

Uma abordagem mais fácil adotada para resolver esta questão é dividir o projeto em 2 estapas. Primeiramente realizamos o projeto de um PD/Lead para atender requisitos temporais e depois executamos o projeto do PI/Lag (para atender critérios de erro), levando em conta o PD/Lead projetado na etapa anterior. Isto é possível porque na prática estaríamos como que "cascateando" um controlador PD/Lead com um controlador PI/Lag.

Em resumo, a idéia é fazer algo do tipo:

Resumo_Projeto_PID

 

Exemplo 9.5 (NISE)

Ver: Exemplo de projeto de PID, baseado no exemplo 9.5 (seção PID Controller Design), do livro: Nise, Norman S., Control System Engineering, 6th ed. 2011, John Wiley & Sons, Inc.

Planta deste exemplo:

Requisitos de controle:

Executando o script: example_9_5.m.

Obs.: Ingressado o valor 20 (para ). O script prossegue com:

Neste instante é aberta a primeira figura com o RL para completar o projeto o Controlador Proporcional. Necessária esta etapa porque no exemplo, não foi informado o ganho adodato para o sistema. O script espera que o usuário realize um "zoom" sobre a região de interesse para posterirmente definir o ganho do controlador (proporcional):

Neste caso, o RL para este controlador, já com o ganho escolhido fica como mostra a figura abaixo (Figure 1):

RL_K_ini_example_9_5.png

Em seguida o script continua estimando o e em função do par de pólos complexos encontrados com este valor de ganho. Note que esta estimativa (equações) não consideram a ordem real deste sistema (3a-ordem, contra as equações definidas para sistemes de 2a-ordem; haverá uma certa "imprecisão").

Além disso o scriptcalcula o novo necessário (2/3 do valor do encontrado para o controlador Proporcional) e segue os cálculos para 1a-etapa do projeto de um PID: projeto do PD, usando contribuição angular para definir o local necessário para o zero do PD. Lembrando da eq. do PD:

Note que o script se detêm monstrando o resultado do cálculo das contribuições angulares:

Segue RL ainda do Controlador Proporcional, mas mostrando onde deveriam ficar os pólos de MF desejados em função do requerido (Figure 2):

RL_PD_example_9_5-fig2.png

Note que o local desejado para os pólos de MF, "sobe" em diagonal no plano-s em relação ao ponto escolhido antes para o controlador proporcinal. Note que: quando (parte imaginária do pólo aumenta, ou "sobe"), e que quando ; onde se refere a certa posiçao para pólo de MF no plano-s.

Segue Figure 3 com resultado dos cálculos da contribuição angular) usados para determinação do local do zero do PD:

contrib_angular_PD_example_9_5.png

Confira com os valores calculados e mostrados pelo script (ver acima).

Em seguinda o script se detêm no RL do PD esperando que o usuário realize um "zoom" na região de interesse para posteriormente definir o ganho do PD:

O RL já com "zoom" e ponto de ganho escolhido para este PD aparece abaixo (Figure 4):

RL_PD_example_9_5.png

O script mostra ainda como ficaria a resposta ao degrau unitário para este PD (Figure 5):

step_PD_example_9_5.png

Percebe-se que este PD alcançou um menor que o desejado e calculado (). E é bom que tenha sido encontrado um valor menor, já que na 2a-etapa do projeto do PID, quando for acrescentada a ação integral, a tendência é que o aumente em função do atraso introduzido pela ação integral.

O script segue informando a eq. final do PD (incluindo seu ganho) e parte para 2a-etapa: Projeto do PI. Neste caso, poderia ter sido feito um novo cálculo de contribuição angular, mas NISE optou por simplesmente arbitrar uma posição para o zero do PI (no código original ele simplesmente fixa este zero em ; mas estas versão foi modifica para permitir que o usuário indique outro local para o zero do PI, além de acrescentar gráficos extras).

Lembrando a eq. do PI:

Percebe-se que justamente falta definir a posição do zero do PI. Note que nesta execução optamos por colocar o zero do PI em , mais próximo do pólo mais lento da planta localizado em (isto vai resultar num traçado de RL que fará o pólo mais dominante real, se afastar da origem do plano-s (onde está o pólo do integrador) e "caminhar" na direção de , neste caso, encontrando o zero do próprio controlador -- repare isto no próximo RL que será apresentado).

O script continua com:

Mais uma vez o script se detêm mostrando o RL final do PID completo (Figure 6), esperando que o usuário realize um "zoom" sobre a região de interesse para que em seguinda, possa ser definido o ganho genérico do PID. Lembrando que:

Segue RL já mostrando o ganho adotado para o PID (Figure 6):

RL_PID_example_9_5.png

O script então finaliza os cálculos mostrando os últimos resultados e a resposta ao defrau btida para o PID (Figure 7).

Segue resposta ao degrau do PID recém projetado (Figure 7):

step_PID_example_9_5.png

Considerações finais: Este PID provavelmente pode ficar ainda melhor, se o zero do PI for propositalmente colocado sobre o pólo mais lento da planta em . Isto vai acabar resultando numa redução de complexidade do sistema. Isto é, em MF, com o acréscimo do PID, ao invés de ficarmos um sistema em MF de 4a-ordem, vamos acabar com um sistema de 3a-ordem (consequentemente um RL com menos traçados, mais simples e com pólos dominantes mais afastados do eixo e portanto, mais rápidos):

Antes:

Depois, com o zero do PI em :

 

Problema Proposto 1

Refaça o projeto anterior, definindo como nova posição para o zero do PI, o valor: , propositalmente cancelando o pólo mais lento da planta. Comente/justifique o que acontece apresentando e explicando os resultados obtidos.


Projeto do PID Planta Estudo de Caso

A idéia agora é testar a abordagem de NISE mas não necessariamente usando script de NISE, mas usando outro script para facilitar cálculos de contribuição angular (find_polo_zero.m), para realizar a etapa 1: projeto do PD e etapa 2: projeto do PI, finalizando então com o controlador PID.

Revisando Requisitos de Controle

De todas as formas, necessitamos revisar requisitos de controle que serão adotados para o projeto do PID para a planta do estudo de caso, até como um "fator baliza" necessário para definir o projeto do PID.

Revisando valores obtidos anteriormente (principalmente nos projetos envolvendo ação derivativa), notamos que:

 

1a-Etapa: Projeto do PD

Usando script: find_polo_zero.m:

Notamos que necessitamos definir a variável ftma_aux em função do tipo do controlador desejado, no caso, um PD:

onde a incógnita é o zero do PD ().

A variável ftma_aux deve considerar parte da eq. do controlador menos a parcela que envolve a incógnita. Neste caso, resulta simplesmente em:

Preparando esta variável e executando o script:

A figura mostrando os cálculos da contribuição angular para este PD, aparece abaixo:

contrib_angular_PD1a_etapa_1a_tentativa.png

Note o zero do PD calculador em .

O script finaliza mostrando outros dados e o RL da (variável ftma) já incluindo o zero do controlador recém calculado, para que o usuário "sintonize" (defina o ganho do controlador):

RL_PD1a_etapa_1a_tentativa.png

Note que não é necessário definir o ganho do PD, umaz vez que na 2a-etapa, vamos cascatear ao PD recém definido, um controle PI, culminando no PID final desejado. E neste caso, novos RLs podem ser visualizados enquanto se finaliza o projeto, mas apenas o RL final do PID completo é que será usado para definir o ganho geral do PID, não importando se foram definidos ganhos para o PD (da 1a-etapa) ou PI (da 2a-etapa).

Porém, é de bom tom, "guardar" em alguma variável a função transferência do PD recém projetado:

2a-Etapa: Projeto do PI

Agora partimos para a 2a-etapa, lembrando da eq. do PI:

Como vamos seguir usando o script find_polo_zero.m, necessitamos definir um novo conteúdo para variável ftma_auxpara poder realizar o projeto deste controlador. Neste caso, temos que fazer algo como:

onde a incógnita à ser determinada com o auxílio do script é o local do zero do PI. Note que estamos continuando o projeto do controlador, então o PD recém determinado (com excessão do seu ganho), deve ser considerado na sequência dos cálculos (sim, a complexidade do sistema vai aumentando).

Continuando o projeto:

Segue figura com resultado da contribuição angular associado com o projeto deste PI:

contrib_angular_PID1_1a_tentativa.png

E segue o gráfico do RL final obtido, ou seja, do RL para o PID:

RL_PID1_1a_tentativa.png

Note o resultado interessante... O zero calculado do PI coincidiu om o próprio pólo do PI, ou seja, não existe mais ação "PI". restou apenas ação "PD". Isto é, este controlador, não é mais um PID e acabou sendo um simples PD. Compare este RL com o RL do controlador PD calculado antes:

RL do PDRL do PID
RL_PD1a_etapa_1a_tentativa.pngRL_PID1_1a_tentativa.png

Provavelmente isto ocorreu porque o especificado e adotado para o projeto deste PI é algo reduzido ("ousado"), fazendo com o zero do PI acabasse por ser colocado sobre o próprio pólo integrador.

Provavelmente se o especificado tivesse sido ainda menor, teria resultado num zero para o PI na parte real positiva do plano-s (zero de MA "instável"), o que implicaria num RL final para o PID onde o pólo integrador caminharia na direção deste zero (parte real positiva do plano-s), inevitavelmente levando a um pólo de MF real positivo ou sistema instável.

Este resultado indica que o valor especificado: segundos é algo exagerado (e provavelmente impossível de ser obtido) colocando um PID para esta planta.

Solução: refazer projeto do PD usando mais baixo que o especificado. Até porque no momento de acrescentar o PI, o obtido para o PD vai ser ampliado em função do atraso causado pela ação integral. E se isto não resolver, aumentar o valor originalmente proposto.

 

Refazendo o PD

Nesta 2a-tentativa, vamos fazer o especificado para o projeto do PD, menor que o especificado para o PID completo. Esperemos que segundos ainda possa ser obtido para um PID para esta planta. Este novo projeto vai permitir confirmar se isto é possível ou não.

Neste caso, vamos definir segundos para o projeto do PD:

Segue gráfico mostrando resultados do cálculo da contribuição angular associados com o projeto desta 2a-versão do PD:

contrib_angular_PD1a_etapa_2.png

Note que o zero deste PD mudou de lugar em comparação com o primeiro PD proposto!

Segue o RL para este PD:

RL_PD1a_etapa_2.png

 

Refazendo o PI

Terminando 2a-etapa do projeto do PID.

Neste caso, ao executar novamento o script find_polo_zero.m para o projeto do PI, vamos voltar a usar ; valor especificado para o PID:

Desta vez, o zero do PI não cancelou seu próprio pólo integrador, indicativo de que este projeto é viável e que resultará num PID.

Segue figura mostrando o gráfico dos cálculos da contribuição angular e local do novo zero para PI:

contrib_angular_PID1.png

Continuando...

Finalizando

RL do PID já mostrando o ganho definido para o mesmo:

RL_PID1.png

Note no RL anterior, que a "complexidade" deste sistema aumentou: são 4 pólos de MF (4 traçados de RL), com 2 pares de pólos complexos, cada par interagindo com o outro, já que estão relativamente próximos. Terminamos com um sistema de 4a-ordem:

Note que o zero do PI acabou ficando próximo do zero do PD. Mas eles continuam compondo um PD e um PI colocados em cascata para resultar no PID.

Fechando a malha...

Segue figura com resposta ao degrau obtida para o PID:

step_PID1.png

Considerações Finais

Não conseguimos atender os requisitos de controle. Tanto foi ultrapassado e resultou maior que o desejado (quase o dobro).

Para melhorar este PID teríamos que "arrastar" o zero do PD e o zero do PI para a direção . Mais fácil fazer isto usando o App Control System Designer. Tema para próxima aula...

 

Problema Proposto 2

Melhore o projeto do PID anterior a fim de tentar satisfazer os requisitos de controle. Dica: use o App Control System Designer para realocar novas posições para os zeros do PD e do PI. Comente/justifique sua estratégia, apresente e explique os novos resultados obtidos.

 

😅 Ufa, esta aula (21/10/2024) terminou com "apenas" 16 janelas gráficas abertas...


Finalizando os trabalhos desta aula:

Arquivo disponível: planta.mat.


🌊 Fernando Passold 📬 ,