Você está na página 1de 16

Sistemas Realimentados - Trabalho 1

Nome: David Fiorillo

Data limite para entrega:14/9, meia-noite.

Referências para este trabalho além das notas de aula:

• Manual rápido do Matlab


• Resposta transitória e estacionária

Inicialização:

I=7; % Seu valor de I


[Y,G1,G2]=init_t1(I);

Warning: Cannot load an object of class 'string':


Its class cannot be found.
Warning: Cannot load an object of class 'string':
Its class cannot be found.
Warning: Cannot load an object of class 'string':
Its class cannot be found.
Warning: Cannot load an object of class 'string':
Its class cannot be found.
Warning: Cannot load an object of class 'string':
Its class cannot be found.

datetime('now')

ans =
14-Sep-2023 22:41:22

I) Relação entre resposta ao degrau e modelos

Observe nas figura 1,2,3 a resposta ao degrau unitário dos modelos g1, g2, g3.

figure;plot(Y(1).t,Y(1).y);title('Fig1 - Resposta de g1');xlabel('Tempo(s)');


figure;plot(Y(2).t,Y(2).y);title('Fig2 - Resposta de g2');xlabel('Tempo(s)');
figure;plot(Y(3).t,Y(3).y);title('Fig3 - Resposta de g3');xlabel('Tempo(s)');
1) Obtenha os modelos g1,g2,g3 que geraram estas respostas ao degrau, defina-os abaixo e compare
com as curvas fornecidas usando os comandos dados.

Da Fig 1, tem-se uma dinâmica caracterizada por função de primeira ordem com atraso: teta = 4,14 s,
tau = 9,54 s (13,68-4,14), K = 2, assentamento = 5*tau (47,7 s) + teta = 51,8 s

Da Fig 2, tem-se uma dinâmica caracterizada por função de primeira ordem sem atraso: tau = 17,41 s,
K = 1.2, assentamento = 5*tau (87,05 s)

Da Fig 3, tem-se uma dinâmica caracterizada por função de segunda ordem sem atraso: omega_n =
0,773 s e zetta = 0,549 calculados a partir da ultrapassagem e tempo de assentamento (2%)

g1=tf(2,[9.54 1],'InputDelay',4.14);
g2=tf(1.2,[17.41 1]);
g3=tf(.773^2,[1 2*.549*.773 .773^2]);
y1=step(g1,Y(1).t);
y2=step(g2,Y(2).t);
y3=step(g3,Y(3).t);
figure;plot(Y(1).t,Y(1).y,Y(1).t,y1);title('Fig4 - Resposta de g1 e modelo obtido');
figure;plot(Y(2).t,Y(2).y,Y(2).t,y2);title('Fig5 - Resposta de g2 e modelo obtido');
figure;plot(Y(3).t,Y(3).y,Y(3).t,y3);title('Fig6 - Resposta de g3 e modelo obtido');
II) Desempenho em função do ganho K.

Seja a função de transferência G1 já definida.

Os comandos abaixo permitem obter os vários parâmetros de desempenho em malha fechada quando
o ganho K varia. Escolha kmax de modo que todos gráficos mostrem claramente o efeito do ganho em
cada parâmetro. Sugestão: escolha kmax de modo que UP vá de 0 a 60%.

kmax=60; % Escolher valor adequado para kmax


up=[];ts=[];iae=[];erro=[];
K=linspace(0,kmax,20);
for i=1:length(K)
m=feedback(K(i)*G1,1);
S=stepinfo(m);
[y,t]=step(m);
up=[up;S.Overshoot];
ts=[ts;S.SettlingTime];
iae=[iae;trapz(t,abs(1-y))];
erro=[erro;1-y(end)];
end
figure;
subplot(4,1,1);bar(K,up);title('Fig.7 - UP');
subplot(4,1,2);bar(K,ts);title('Tempo de estabelecimento');
subplot(4,1,3);bar(K,iae);title('IAE');
subplot(4,1,4);bar(K,erro);title('Erro em regime');xlabel('Ganho K');
2.1 Escolha o ganho K para o qual considera que houve uma boa resposta, informando o ganho K,
UP, ts, IAE e o erro em regime correspondentes. A escolha considerou o menor IAE e o mínimo de
ultrapassagem para que o sistema seja rápido o suficiente. Portanto, IAE = 47,3, um K = 3,15, UP =
8,7%, ts = 109,8 s e Erro = 0,21

2.2 Feche a malha com este ganho K, obtenha os polos de malha fechada e mostre que a resposta ao
degrau é a especificada.

Os comandos abaixo pemitem gerar uma G22 de malha fechada cujo o ganho K é tal que deixa a
resposta ao degrau dentro da especificação. Como o controlador possui apenas ação proporcional é
esperado observar o erro em regime, conforme a figura. Com a planta em malha fechada extraiu-se o
denominador ou a equação característica para encontrar suas raízes ou pólos da planta. Observou-
se que os pólos são conjugados complexos pertecentes ao semi-plano esquerdo, o que confere
estabilidade.

G22 = feedback(3.15*G1,1) % comandos para mostrar a resposta

G22 =

3.78
-----------------------
1620 s^2 + 108 s + 4.78

Continuous-time transfer function.


figure;step(G22)

ec22=G22.Denominator{1}

ec22 = 1x3 double

1.0e+03 *
1.6200 0.1080 0.0048

roots(ec22)

ans =
-0.0333 + 0.0429i
-0.0333 - 0.0429i

2.3 Calcule à mão o erro em regime usando G1 e o ganho K selecionado em 2.1, e compare com o
valor obtido no gráfico na Fig7.

ess = lim s . E(s) para s -> 0 = s . R(s) / 1 + K . G(s) para s -> 0

ess = 1 / (1 + K) = 0,24

O valor obtido pelo gráfico é de 0,21. Portanto, o valor calculado a mão e o adquirido pela simulação
são próximos.
III) Projeto de controlador PID via métodos de sintonia baseados na resposta ao degrau

Use o método de sintonia Ziegler-Nichols e projete controladores C(s) da forma P, PI e PID para G2 já
definida.

3.1) Compare a resposta ao degrau Y(s)/R(s) de cada controlador em termos de UP, ts, erro em
regime, plotando a resposta de P,PI,PID na mesma figura.

%comandos matlab (ver slides de aula)


[C1, iae1]=pidtuning(G2,'method','zie','type','P')

Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
C1 =

Kp = 1.05

P-only controller.
iae1 = 13.6749

[C2, iae2]=pidtuning(G2,'method','zie','type','PI')

Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
C2 =

1
Kp + Ki * ---
s

with Kp = 0.947, Ki = 0.114

Continuous-time PI controller in parallel form.


iae2 = 5.6867

[C3, iae3]=pidtuning(G2,'method','zie','type','PID')

Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
C3 =

1
Kp + Ki * --- + Kd * s
s

with Kp = 1.26, Ki = 0.253, Kd = 1.58

Continuous-time PID controller in parallel form.


iae3 = 5.5395

G2p=pade(G2)

G2p =

-1.9 s + 1.52
-----------------
5 s^2 + 5 s + 0.8

Continuous-time transfer function.

step(feedback(C1*G2,1),feedback(C2*G2,1),feedback(C3*G2p,1));legend('P','PI','PID');shg

Em termos de ultrapassagem o controlador P apresentou a maior, enquanto o PID apresentou a menor.


Em termos de tempo de assentamento o controlador P apresentou o maior enquanto o PID o menor.
O erro em regime só ocorre no controlador P porque as ações PI e PID possuem ação integral que o
eliminam.

A simulação da resposta anômala do controlador PID é devido a aproximação de Pade sobre o atraso
da planta, necessária para que o solucionador do matlab permita a plotagem.
3.2) Compare a resposta a um distúrbio Y(s)/D(s) de cada controlador, verificando qual faz a melhor
rejeição ao distúrbio, plotando a resposta de P,PI,PID na mesma figura.

%comandos matlab (ver slides de aula)


step((1/C1)*feedback(C1*G2,1),(1/C2)*feedback(C2*G2,1),(1/C3)*feedback(C3*G2p,1));legend('P','

Y(s)/D(s) = G22/(1+G22*C)

Para cada controlador (P, PI e PID) foi aplicado um distúrbio do tipo degrau. A maior rejeição ao
distúrbio foi realizada pelo controlador PID, pois gerou o menor pico e retornou para zero mais rápido.

IV) Projeto de controlador PID via métodos de sintonia baseados em modelo

Projeto com G2:

4.1) Seja o modelo G2(s) já definido. Plote em uma mesma figura a resposta ao degrau de G2(s) e de
um modelo de referência T(s) que dê a resposta desejada em malha fechada para este processo, de
forma que seja mais rápido e sem erro em regime.

%comandos matlab (ver slides de aula)


figure
step(G2,tf(1,[6.3 1],'InputDelay',2.3));legend('G2','T');shg
Para que não haja erro em regime, o controlador deve ter no mínimo ação integral. Portanto, serão
testados controladores PI e PID.

4.2 Explique as escolhas e os cálculos para obter os parâmetros do controlador C(s) pelo método de
síntese direta ou IMC. Obtenha os ganhos do controlador C(s) e plote no mesmo gráfico a resposta ao
degrau do sistema em malha fechada e do modelo de referência T(s), mostrando o atendimento das
especificações.

%comandos matlab (ver slides de aula)


[C41, iae41]=pidtuning(G2,6.3)

Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
Warning: Use the state-space representation for more efficient modeling of discrete-time
delays.
C41 =

1
Kp + Ki * ---
s

with Kp = 0.522, Ki = 0.0835

Continuous-time PI controller in parallel form.


iae41 = 6.1040

step(feedback(C41*G2,1),tf(1,[6.3 1],'InputDelay',2.3));legend('G2MF','T');
Como G2 possui tempo morto de 2,3 s, a especificação de lambda de ser no mínimo 2,3 s. Para este
projeto optou-se por uma constante de tempo em malha fechada de 6,3 s. A função PIDTuning utiliza
o método de síntese direta ou IMC o qual encontrar um controlador capaz compensar zeros e pólos
da função de tranferência da planta de forma que a função de transferência de malha fechada seja de
primeira ordem e com a constante de tempo especificada pelo projetista.

Projeto com G1:

4.3 Projete um controlador PID para G1(s) pelo método de síntese direta ou IMC de modo que seu
tempo de estabelecimento seja reduzido à metade, com UP<5%. Plote a saída Y(s) para malha aberta
e malha fechada, mostrando o atendimento da especificação, e mostre os valores de UP, ts e IAE.

%comandos matlab (ver slides de aula)


[C43, iae43]=pidtuning(G1,'method','lambda','type','PID','param',50) % ou [C43,iae43]=pidtunin

C43 =

1
Kp + Ki * --- + Kd * s
s

with Kp = 1.8, Ki = 0.0167, Kd = 27

Continuous-time PID controller in parallel form.


iae43 = 47.3155
figure
step(G1)
hold on
step(feedback(C43*G1,1));legend('G1MA','G1MF');

O ts da G1 (ordem 2) é de aprox 408 s. Utilizando a função PID tunning projetou-se um PID utilizando o
método de síntese direta (lambda) para gerar uma nova função de transferência de malha fechada com
constante de tempo de aprox 50 s, ts = 200 s, IAE = 47,3 e UP < 5% que atende ao requisitos.

4.4 Repita para um controlador PI, explicando a diferença de projeto para o controlador PID, bem como
a diferença entre os valores de UP, ts e IAE obtidos aqui e em 4.3

%comandos matlab (ver slides de aula)


figure
[C44, iae44]=pidtuning(G1,'method','polealoc','type','PI','param',[.05 200])

C44 =

1
Kp + Ki * ---
s

with Kp = 0.795, Ki = 0.00995

Continuous-time PI controller in parallel form.


iae44 = 85.9227

%[C44, iae44]=pidtuning(G1,'method','lambda','type','PI','param',50)
step(G1,feedback(C44*G1,1),feedback(C43*G1,1));legend('G1','PI','PID')

Para o projeto do PI utilizou-se o método de síntese direta através alocação de pólos ajustando-
se as restrições de ultrapassagem e tempo de assentamento. O controlador PI também atendeu
as especificações de projeto de tempo de assentamento e outros requisitos, mas o controlador PID
apresentou maior velocidade para alcançar o setpoint (melhor de e consequentemente um IAE menor
do que o controlador PI.

Você também pode gostar