Baixe o app para aproveitar ainda mais
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)
Compartilhar