Projeto de Controladores Digitais

Recuperando dados da aula passada (de 07/04/2025 ), arquivo: [dados.mat]:

Continuando da aula passada. Faltou integrador por "Atraso de Fase", ou simplemente "Lag". Sugere-se ver antes: Projeto de Lag (com teoria) (PDF).

 

Projeto de Controladores DigitaisProjeto do LagProjeto do Lag2Lag Usando Contribuição Angular

 


Projeto do Lag

Para este tipo de controlador, seu pólo "sai" do círculo unitário (). Considerar que quanto maior o afastamento, menor sua ação algo integradora (aumenta o erro de regime permanente), passando a atuar mais como um simples filtro passa-baixa. O zero deste controlador obviamente deve estar localizado no plano-z antes do pólo, mas muito provavelmente antes do pólo mais lento da planta à ser controlada (maior dominânica na resposta). Um esboço rápido no plano-z revela algo como:

 

esboco_Lag.png

 

Lembrando da eq. da planta, para alocar pólos e zeros para o controlador Lag:

Localizando o zero do Lag no mesmo local do zero do PI1a realizado na aula anterior:

rl_Lag1.png

Realizando o zoom na região de interesse:

rl_Lag1_zoom.png

Terminando projeto:

step_PI1a_Lag1.png

Calculando erro:

Realizando o projeto melhorado do "Lag2", usando o App Control System Designer.

Projeto do Lag2

Repare que antes poderiámos ter ampliado o ganho do Lag1 para forçar  (em relação à referência: entrada degrau unitário):

Projeto do controlador até este ponto:

C_Lag1b

Melhorando este controlador...

C_Lag2

Equação do Lag2:

Se o ganho deste controlador for reduzido para , reduzimos o para 3,79 segundos, mas o erro em regime permanente aumenta para quase 20% ().

 

Tentando outro Lag: o "Lag3", mas note que aumenta às custas de erro mais baixo:

C_Lag3

Lag Usando Contribuição Angular

O script find_polo_zero_d.m permite definir um controlador usando contribuição angular para terminar de definir o pólo ou zero que falta num controlador.

Neste caso, primeiro devemos "montar" uma função transferência auxiliar para definir o controlador, no caso um "Lag" onde inicialmente arbitramos o local do seu pólo em , criando a variável C_aux e depois calculamos a variável ftma_aux:

Finalmente executando o script find_polo_zero_d.m, ocorre:

Note que o script find_polo_zero_d.m acaba gerando além das informa~çaoes numéricas, uma primeira janela gráfica mostrando a contribuição angular e uma segunda janela gráfica mostrando o RL final considerando a do sistema com o controlador recém projetado.

contrib_angular_Lag.png

rl_lag_contrib_angular.png

Um zoom no RL anterior permite visualizar:

rl_lag_contrib_angular_zoom.png

O zero ou pólo que este script ajudou a encontrar se encontra na variável polo_c ou zero_c, respectivamente para o caso do pólo ou zero que faltou definir.

No caso acima:

Neste caso, a eq. final deste controlador Lag resultou:

Terminando de fechar a malha e verificando como fica a resposta para entrada degrau:

step_Lag4.png


Encerrando atividades usando MATLAB nesta aula:

Continuando com teoria de controladores com Ação Derivativa, tópicos:

Outros tópicos:


Fernando Passold, em 14/04/2025