Buscar

Lista de Exercicios de Matemática respondidos

Prévia do material em texto

Sistemas de Controle Robusto Multivariável 
Professor Alexandre José Tuoto Silveira Mello 
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: 
 
Variáveis de estado: 𝑥 = [
𝑣1
𝑖4
] 
Entradas: 𝑢 = [
𝑣𝑖
𝑖𝑖
] 
Saída: 𝑦 = 𝑖𝑅 
𝑖3 = 3𝑣1̇ 
𝑣1̇ = 𝑖3/3 
𝑣1 − 𝑣2 = 2𝑖4̇ 
𝑖4̇ = (𝑣1 − 𝑣2)/2 
𝑖3 = 𝑖4 −
𝑣𝑖 − 𝑣1
3
= 𝑖4 −
𝑣𝑖
3
+
𝑣1
3
 
𝑣2 = (𝑖4 + 𝑖1). 3 
𝑦 = 𝑖𝑅 = 𝑖4 + 𝑖1 
𝑣1̇ =
𝑖4
3
−
𝑣𝑖
9
+
𝑣1
9
 
𝑖4̇ =
𝑣1
2
−
3𝑖4
2
−
3𝑖1
2
 
�̇� = [
1
9
 
1
3
1
2
 − 3/2
] 𝑥 + [
−
1
9
 0
0 − 3/2
]𝑢 
𝑦 = [0 1]𝑥 + [0 1]𝑢 
 
2- Para o sistema abaixo, obtenha a representação no espaço de estados. 
 
𝑢1 e 𝑢2 são posicionadores e representam as entradas. As posições das massas 𝑦1 e 𝑦2 são monitoradas 
e representam as saídas. As molas, da esquerda para a direita, possuem constantes elásticas 𝑘1, 𝑘2 e 𝑘3 
Solução: 
Entradas: 𝑢 = [
𝑢1
𝑢2
] 
Saídas: 𝑦 = [
𝑦1
𝑦2
] 
𝑚. 𝑎 = Σ𝐹 𝐹 = 𝑘𝑥 
Em 𝑚1 
𝑚1�̈�1 = −(𝑦1 − 𝑢1)𝑘1 + (𝑦2 − 𝑦1)𝑘2 
Em 𝑚2 
𝑚2�̈�2 = −(𝑦2 − 𝑦1)𝑘2 + (𝑢2 − 𝑦2)𝑘3 
Escolhendo os estados 
 
 
 
 
𝑥 = [
𝑦1
�̇�1
𝑦2
�̇�2
] 
�̇�1 = 𝑥2 
�̇�3 = 𝑥4 
�̇�2 =
−𝑘1 − 𝑘2
𝑚1
𝑥1 +
𝑘2
𝑚1
𝑥3 +
𝑘1
𝑚1
𝑢1 
�̇�4 =
𝑘2
𝑚2
𝑥1 +
−𝑘2 − 𝑘3
𝑚2
𝑥3 +
𝑘3
𝑚2
𝑢2 
�̇� =
[
 
 
 
 
 
0 1
−𝑘1 − 𝑘2
𝑚1
0
0 0
𝑘2
𝑚1
0
0 0
𝑘2
𝑚2
0
0 1
−𝑘2 − 𝑘3
𝑚2
0
]
 
 
 
 
 
𝒙 +
[
 
 
 
 
 
0 0
𝑘1
𝑚1
0
0 0
0
𝑘3
𝑚2]
 
 
 
 
 
𝒖 
𝒚 = [
1 0
0 0
0 0
1 0
] + 0𝒖 
 
3 – O sistema do chuveiro a gás obtido na aula tem a seguinte forma: 
[
𝑥1̇
𝑥2̇
] = [
−2/𝐿𝑞 0
0 −2/𝐿𝑓 
] [
𝑥1
𝑥2
] + [
4𝐶𝑣√∆𝑃/𝐿𝑞 0
0 4𝐶𝑣√∆𝑃/𝐿𝑓
] [
𝑢1
𝑢2
] 
[
𝑦1
𝑦2
] = [
1 1
𝑇𝑞 𝑇𝑓
] [
𝑥1
𝑥2
] + [
−𝐶𝑣√∆𝑃 −𝐶𝑣√∆𝑃
−𝑇𝑞𝐶𝑣√∆𝑃 −𝑇𝑓𝐶𝑣√∆𝑃
] [
𝑢1
𝑢2
] 
Obtenha a função de transferência mulivariável. 
Solução: 
𝐺 = 𝐶(𝑠𝐼 − 𝐴)−1𝐵 + 𝐷 
𝐺 =
[
 
 
 
 −𝐶𝑣√∆𝑃𝐿𝑞𝑠 + 2𝐶𝑣√∆𝑃
𝐿𝑞𝑠 + 2
−𝐶𝑣√∆𝑃𝐿𝑓𝑠 + 2𝐶𝑣√∆𝑃
𝐿𝑓𝑠 + 2
−𝐶𝑣√∆𝑃𝑇𝑞𝐿𝑞𝑠 + 2𝐶𝑣√∆𝑃𝑇𝑞
𝐿𝑞𝑠 + 2
−𝐶𝑣√∆𝑃𝑇𝑓𝐿𝑓𝑠 + 2𝐶𝑣√∆𝑃𝑇𝑓
𝐿𝑓𝑠 + 2 ]
 
 
 
 
 
4 – Para o sistema do exercício 2: 
a) Obtenha a matriz RGA, e crie um controlador descentralizado para o melhor pareamento de 
entradas e saídas. Considere 𝑘1 = 𝑘2 = 𝑘3 = 𝑚1 = 𝑚2 = 1 
b) Considere o caso em que a massa 𝑚1 está conectada a uma carga com peso variável, podendo 
ter valores entre 1 e 9. Projete um sistema que utilize Gain Scheduling para lidar com essa 
variação. 
Solução: 
clear 
close all 
k1 = 1; 
k2 = 1; 
k3 = 1; 
m1 = 1; 
m2 = 1; 
 
 
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]; 
C = [1 0 0 0; 0 0 1 0]; 
D = zeros(2); 
 
sys = ss(A,B,C,D); %Espaço de Estados 
 
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'); 
 
K = [K1 0; 0 K2]; %Cria Controlador Diagonal 
 
figure; 
for i = 1:10 
 m1 = rand*9+1; %Variação da massa m1 
 
 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]; 
 sys = ss(A,B,C,D); 
 sysR=feedback(sys*K,eye(size(sys))); 
 step(sysR) %Verifica resposta do sistema para vários valores da massa m1 
 hold on 
end 
 
%% 
 
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'); 
 
 Kgs{i} = [K11 0; 0 K22]; %Projeta controlador diagonal em vários 
pontos de operação 
end 
 
figure; 
for i = 1:10 
 m1 = rand*9+1; %Variação da massa m1 
 
 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]; 
 sys = ss(A,B,C,D); 
 
 K = Kgs{floor(m1)}; %Escolhe controlador mais próximo 
 
 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. 
𝐺2 = 𝐺3 = 𝐺4 = 𝐺5 =
1
𝑠 + 1
 
𝐺1 =
𝑒−10𝑠
𝑠 + 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 do laço completo 
K = pidtune(G,'pid') 
 
%Cria malha fechada com controlador e processo: 
T = feedback(G*K,1); 
T.name = 'Controle Simples'; 
 
%Controlador laço interno 
K5 = pidtune(G5,'pid') 
 
%Fecha o laço interno 
T5 = feedback(G5*K5,1); 
 
%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); 
 
%Controlador laço externo 
K1 = pidtune(G1*T2,'pid') 
 
%Fecha laço externo 
Tc = feedback(G1*T2*K1,1); 
Tc.name = 'Controle Cascata'; 
 
%Mostra resposta ao degrau 
figure 
step(T,'r',Tc,'b') 
legend('show','location','southeast') 
title('Resposta ao Degrau') 
 
%Laço visto do distúrbio no sistema simples 
Td = feedback(G1,G2*G3*G4*G5*K); 
Td.name = 'Controle Simples'; 
 
%Laço visto do distúrbio no sistema cascata 
Tcd = (G1*(G5*K5 + G4*G5*K4*K5 + G3*G4*G5*K3*K4*K5 + 1))/(G5*K5 + G4*G5*K4*K5 
+ G3*G4*G5*K3*K4*K5 + G2*G3*G4*G5*K2*K3*K4*K5 + G1*G2*G3*G4*G5*K1*K2*K3*K4*K5 
+ 1); 
Tcd.name = 'Controle Cascata'; 
 
%Mostra resposta ao distúrbio 
figure 
step(Td,'r',Tcd,'b') 
legend('show','location','southeast') 
title('Resposta ao Distúrbio') 
 
 
6 – Pretende-se controlar o sistema abaixo por controle decentralizado. 
�̇� = [
−1 0 0
0 −1 0
0 0 −1
]𝒙 + [
1 0 0
0 1 0
0 0 1
]𝒖 
𝒚 = [
0,1 0,3 1
1 0,1 0,2
0,5 1 0,4
] 𝒙 + 0𝒖 
a) Utilizando a matriz de ganho relativo determine o melhor pareamento entre entradas/saídas. 
b) Projete um controlador e analise a resposta. 
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); 
 
%Para steady state 
G0 = C*inv(0*eye(size(A))-A)*B+D; 
rga = G0.*pinv(G0).' 
 
 
%% Parte b 
 
%Função de Transferência do sistema 
s = tf('s'); 
G = C*inv(s*eye(size(A))-A)*B+D; 
 
%Projeto de Controlador entrada 1 para saída 2 
G21 = G(2,1); 
K1 = pidtune(G21,'pid'); 
 
%Projeto de Controlador entrada 2 para saída 3 
G32 = G(3,2); 
K2 = pidtune(G32,'pid'); 
 
%Projeto de Controlador entrada 3 para saída 1 
G13 = G(1,3); 
K3 = pidtune(G13,'pid'); 
 
K = [0 K1 0; 0 0 K2; K3 0 0]; 
T = feedback(G*K,eye(size(G))); 
figure; step(T) 
 
7 - Para o mesmo sistema da questão 6 pretende-se melhorar o controle diagonalizando a planta. 
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); 
 
%Matriz de influência direta 
M_dir = C*inv(0*eye(size(A))-A)*B+D; 
 
%Matriz que diagonalizaa planta 
M = inv(M_dir) 
 
%Função de Transferência Original 
s = tf('s'); 
G = C*inv(s*eye(size(A))-A)*B+D; 
 
%Função de Transferência Diagonalizada 
GM = G*M 
 
%% Parte b 
 
%Projeto de Controlador entrada 1 para saída 1 
G11 = GM(1,1); 
K1 = pidtune(G11,'pid'); 
 
%Projeto de Controlador entrada 2 para saída 2 
G22 = GM(2,2); 
K2 = pidtune(G22,'pid'); 
 
%Projeto de Controlador entrada 3 para saída 3 
G33 = GM(3,3); 
K3 = pidtune(G33,'pid'); 
 
K = [K1 0 0; 0 K2 0; 0 0 K3]; 
T = feedback(GM*K,eye(size(GM))); 
step(T)

Continue navegando