Lista de Exercícios 1
1- Obtenha a representação no espaço de estados para os sistemas abaixo. 𝑖𝑅 (𝑡) é a saída, 𝑣𝑖 (𝑡) e
𝑖1 (𝑡) são as entradas
Solução:
𝑣1
Variáveis de estado: 𝑥 = [ 𝑖 ]
4
𝑣𝑖
Entradas: 𝑢 = [ 𝑖 ]
𝑖
Saída: 𝑦 = 𝑖𝑅
𝑖3 = 3𝑣1̇
𝑣1̇ = 𝑖3 /3
𝑣1 − 𝑣2 = 2𝑖4̇
𝑖4̇ = (𝑣1 − 𝑣2 )/2
𝑣𝑖 − 𝑣1 𝑣𝑖 𝑣1
𝑖3 = 𝑖4 − = 𝑖4 − +
3 3 3
𝑣2 = (𝑖4 + 𝑖1 ). 3
𝑦 = 𝑖𝑅 = 𝑖4 + 𝑖1
𝑖4 𝑣𝑖 𝑣1
𝑣1̇ = − +
3 9 9
𝑣1 3𝑖4 3𝑖1
𝑖4̇ = − −
2 2 2
1 1
1
9 3 − 0
𝑥̇ = [ ]𝑥 + [ 9 ]𝑢
1
− 3/2 0 − 3/2
2
𝑦 = [0 1]𝑥 + [0 1]𝑢
Solução:
𝑢1
Entradas: 𝑢 = [𝑢 ]
2
𝑦1
Saídas: 𝑦 = [𝑦 ]
2
𝑚. 𝑎 = Σ𝐹 𝐹 = 𝑘𝑥
Em 𝑚1
𝑥̇ 1 = 𝑥2
𝑥̇ 3 = 𝑥4
−𝑘1 − 𝑘2 𝑘2 𝑘1
𝑥̇ 2 = 𝑥1 + 𝑥3 + 𝑢
𝑚1 𝑚1 𝑚1 1
𝑘2 −𝑘2 − 𝑘3 𝑘3
𝑥̇ 4 = 𝑥1 + 𝑥3 + 𝑢
𝑚2 𝑚2 𝑚2 2
0 1 0 0 0 0
−𝑘1 − 𝑘2 𝑘2 𝑘1
0 0 0
𝑚1 𝑚1 𝑚1
𝒙̇ = 𝒙+ 𝒖
0 0 0 1 0 0
𝑘2 −𝑘2 − 𝑘3 𝑘3
0 0 0
[ 𝑚2 𝑚2 ] [ 𝑚2 ]
1 0 0 0
𝒚=[ ] + 0𝒖
0 0 1 0
Solução:
𝐺 = 𝐶(𝑠𝐼 − 𝐴)−1 𝐵 + 𝐷
Solução:
clear
close all
k1 = 1;
k2 = 1;
k3 = 1;
m1 = 1;
m2 = 1;
s = 0;
Gf = C*inv(s*eye(size(A))-A)*B+D;
RGA = abs(Gf.*pinv(Gf).') %Obtém a Matriz RGA
%%
G = tf(sys);
G11 = G(1,1);
K1 = pidtune(G11,'pid');
G22 = G(2,2);
K2 = pidtune(G22,'pid');
figure;
for i = 1:10
m1 = rand*9+1; %Variação da massa m1
%%
for i = 1:9
m1 = i+0.5;
A = [0 1 0 0; (-k1-k2)/m1 0 k2/m1 0; 0 0 0 1; k2/m2 0 (-k2-k3)/m2 0];
B = [0 0; k1/m1 0; 0 0; 0 k3/m2];
temp_sys = ss(A,B,C,D);
G_temp = tf(temp_sys);
K11 = pidtune(G_temp(1,1),'pid');
K22 = pidtune(G_temp(2,2),'pid');
figure;
for i = 1:10
m1 = rand*9+1; %Variação da massa m1
sysR=feedback(sys*K,eye(size(sys)));
step(sysR) %Verifica resposta do sistema para vários valores da massa m1
hold on
end
5 – Para um sistema cascata com 5 niveis, obtenha a resposta ao degrau e a resposta ao distúrbio. Para
os controladores utilize PIDs sintonizados usando o comando MATLAB pidtune.
1
𝐺2 = 𝐺3 = 𝐺4 = 𝐺5 =
𝑠+1
𝑒 −10𝑠
𝐺1 =
𝑠+1
Solução:
𝑑 𝐺1 (𝐾5 𝐺5 + 𝐾5 𝐾4 𝐺5 𝐺4 + 𝐾5 𝐾4 𝐾3 𝐺5 𝐺4 𝐺3 )
=
𝑦 1 + 𝐾5 𝐺5 + 𝐾5 𝐾4 𝐺5 𝐺4 + 𝐾5 𝐾4 𝐾3 𝐺5 𝐺4 𝐺3 + 𝐾5 𝐾4 𝐾3 𝐾2 𝐺5 𝐺4 𝐺3 𝐺2 + 𝐾5 𝐾4 𝐾3 𝐾2 𝐾1 𝐺5 𝐺4 𝐺3 𝐺2 𝐺1
Script Matlab:
%% Planta de alta ordem - 5 Niveis
clear
s = tf('s');
G1 = exp(-10*s)/(s+1);
G2 = 1/(s+1);
G3 = 1/(s+1);
G4 = 1/(s+1);
G5 = 1/(s+1);
G = G1*G2*G3*G4*G5;
%Controlador laço 4
K4 = pidtune(G4*T5,'pid')
%Fecha laço 4
T4 = feedback(G4*T5*K4,1);
%Controlador laço 3
K3 = pidtune(G3*T4,'pid')
%Fecha laço 3
T3 = feedback(G3*T4*K3,1);
%Controlador laço 2
K2 = pidtune(G2*T3,'pid')
%Fecha laço 2
T2 = feedback(G2*T3*K2,1);
Solução:
clear
close all
A = [-1 0 0; 0 -1 0; 0 0 -1];
B = [1 0 0; 0 1 0; 0 0 1];
C = [0.1 0.3 1; 1 0.1 0.2; 0.5 1 0.4];
D = zeros(3);
K = [0 K1 0; 0 0 K2; K3 0 0];
T = feedback(G*K,eye(size(G)));
figure; step(T)
a) Obtenha a matriz de influência inversa que diagonaliza a planta. Qual será a nova função de
transferência da planta?
b) Projete um controlador PID diagonal para esta planta. Houve melhora em relação ao projeto do
exercício 6? Se houve mudança, descreve o motivo.
Solução:
% Exercicio 7 Parte a
clear;
A = [-1 0 0; 0 -1 0; 0 0 -1];
B = [1 0 0; 0 1 0; 0 0 1];
C = [0.1 0.3 1; 1 0.1 0.2; 0.5 1 0.4];
D = zeros(3);
K = [K1 0 0; 0 K2 0; 0 0 K3];
T = feedback(GM*K,eye(size(GM)));
step(T)