Continuação da aula de 05/05/2025.
Repetindo projeto de um controlador deadbeat simples (aula de 08/10/2019):
Voltando para nossa planta, arquivo: dados.mat:
x>> clear all; close all;
>> load dados
>> zpk(BoG)
ans =
0.00012224 (z+2.747) (z+0.1903)
--------------------------------
(z-0.9048) (z-0.8187) (z-0.3679)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
>> polos_BoG=pole(BoG) % isolando os pólos de BoG(z)
polos_BoG =
0.90484
0.81873
0.36788
>> zeros_BoG=zero(BoG) % isolando os zeros de BoG(z)
zeros_BoG =
-2.7471
-0.19031
Lembrar que o controlador não pode incluir pólos e zeros "instáveis" (sobre ou fora do círculo unitário).
xxxxxxxxxx
>> C_dead=tf(poly(polos_BoG), poly([zeros_BoG(2) 1]), T); % montando C(z)
>> zpk(C_dead)
ans =
(z-0.9048) (z-0.8187) (z-0.3679)
--------------------------------
(z-1) (z+0.1903)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
Da forma como está, o grau do numerador está maior que o grau do denominador o que implica num sistema "antecipativo", impossível de realizar na prática. Necessitamos acrescentar um pólo à eq. do controlador acima.
Acrescentando um pólo extra em prevendo o resultado à ser obtido no RL deste sistema:
xxxxxxxxxx
>> C_dead=tf(poly(polos_BoG), poly([zeros_BoG(2) 1 -0.5]), T);
>> zpk(C_dead)
ans =
(z-0.9048) (z-0.8187) (z-0.3679)
--------------------------------
(z-1) (z+0.5) (z+0.1903)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
>> ftma_dead=C_dead*BoG;
>> zpk(ftma_dead)
ans =
0.00012224 (z+2.747) (z-0.9048) (z-0.8187) (z-0.3679) (z+0.1903)
----------------------------------------------------------------
(z-1) (z-0.9048) (z-0.8187) (z-0.3679) (z+0.5) (z+0.1903)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
>> ftma_dead_r=minreal(ftma_dead, 1E-4); % cancelando termos comuns
>> zpk(ftma_dead_r)
ans =
0.00012224 (z+2.747)
--------------------
(z-1) (z+0.5)
Sample time: 0.1 seconds
Discrete-time zero/pole/gain model.
>> rlocus(ftma_dead)
E então temos o RL:
Note que foi arbitrado o pólo extra do controlador em . Notamos pelo RL anterior que seria melhor que este pólo "extra" estivesse em . A idéia é obter algo como:
Finalizando na próxima aula, em 19/05/2025.
Finalizando esta seção de trabalho:
xxxxxxxxxx
>> save dados
>> diary off
>> quit
Fernando Passold, em 05/05/2025