Sie sind auf Seite 1von 8

Universidade Federal do Rio Grande do Norte Disciplina: Controle Preditivo Professor: Anderson Luiz de Oliveira Cavalcante Alunos: Camila

Lucena Germano Cinthia Gabriella Pereira Felipe Edgar Rivas Francisco Assis Jnior

Relatrio da Lista 01 Controle Preditivo

Natal, 18 de maro de 2012 Introduo

O presente relatrio tem o objetivo de expor a resoluo da primeira lista de exerccios propostos na disciplina de Controle Preditivo. Foi usado o software Matlab para simulao. Ser discutida a forma de resoluo bem como os resultados obtidos.

Questo 1 . Considere uma planta representada pela seguinte funo de transferncia:

a) Encontre Ns coeficientes da resposta ao degrau desse sistema de forma que se possa representa-lo por um modelo FSR (Finite Step Response). Escolha um perodo de amostragem adequado; b) Aplique uma entrada senoidal a esse sistema e ao modelo FSR obtido no item (a) e compare graficamente os resultados.

Soluo:

a) Aplicamos sada da funo de transferncia da planta G(s), um segurador de ordem zero com perodo de amostragem igual a 0.2s para obter o modelo discreto do sistema G(z). Em seguida aplicamos um degrau para obter Ns coeficientes da resposta ao degrau. Dessa forma obtemos Ns = 1001. Os coeficientes obtidos foram:

FSR = [ 0 0.3578 0.1965 0.1924

0.3361

0.2802 0.1879

0.2406 0.1877

0.2171 0.1876

0.2038 0.1876

0.1902 0.1890 0.1883 0.1875 0.1875 0.1875]

b) Aplicando uma entrada senoidal ao sistema G(s) e ao modelo que obtivemos na questo acima, obtivemos os seguintes resultados:

Figura 1 - Aplicao de Entrada Senoidal

Onde o sinal verde a senoide que foi aplicada. O sinal azul a resposta senoide da planta G(s) e o sinal vermelho a resposta senoide do modelo FSR. Questo 2. Considere uma planta representada pela seguinte funo de transferncia :

Implemente um controlador DMC sem restries para essa planta. Deixe sua implementao flexvel de forma a testar vrios valores diferentes de Ns, N, M e . Utilize perodo de amostragem de 0.2 segundos. Implemente uma trajetria de referncia para que o sistema siga. Soluo: Temos que a sada do controlador DMC .

Ento precisamos implementar uma trajetria R de referncia, obter a resposta livre F e obter K a partir da matriz G. A matriz G obtida a partir dos coeficientes da resposta ao degrau finita (FSR). Essa matriz possui M (horizonte de controle) linhas e N (horizonte de predio) colunas. G=calculateG(N, M, fsr) function
G = zeros(N, M); for i=1:M G(i:N, i) = fsr(1:N - i + 1); end end

O vetor R a trajetria de referncia, que na nossa implementao foi utilizado um degrau unitrio.
function R=generateR(N, lastY, setPointStep) R = setPointStep * ones(N, 1); end

O vetor F calculado da seguinte maneira:


function F=calculateF(N, Ns, fsr, vectorDeltaU, lastY) nVectorDeltaU = length(vectorDeltaU); F = zeros(N, 1); for j=1:N somatorio = 0; for i=1:Ns somatorio = somatorio + (fsr(j + i, 1) - fsr(i, 1)) * vectorDeltaU(nVectorDeltaU - i + 1, 1); end

Assim, temos que K a primeira linha fsr, rho, lambda, setPoint) . function U=dmcmpc(N, M, Ns, Gz, de end
% Inicializaes end function K=calculateK(G, rho, lambda) nump =% get(Gz, 'num'); nump quadrados Soluo por mnimos = nump{:}; denp =fullK = (G' * rho denp + lambda) \ (G' * rho); get(Gz, 'den'); * G = denp{:}; nnump = length(nump) - 1; ndenp % K apenas a primeira linha = length(denp) - 1; lastU K = fullK(1:1, 1:end); = 0; lastY end = 0; simulationSteps = 150; Uinteiro = zeros(simulationSteps,1); vectorDeltaU = zeros(Ns, 1); Finalmente,=calculamos da seguinte forma: vectorU zeros(ndenp, 1); vectorY = zeros(ndenp, 1); % G depende do modelo function deltaU=calculateDeltaU(K, R, F) G = calculateG(N, M, fsr); % Variao tima do sinal de controle % Otimizao pelo mtodo do gradiente deltaU = K * (R - F); K = calculateK(G, rho, lambda); end y = zeros(simulationSteps, 1);

F(j, 1) = lastY + somatorio;

Funoy(i) = lastY; DMC:

for i=1:simulationSteps % Traa a trajetria de referncia R = generateR(N, lastY, setPoint(i)); % F depende do modelo F = calculateF(N, Ns, fsr, vectorDeltaU, lastY); % Otimizao pelo mtodo do gradiente deltaU = calculateDeltaU(K, R, F); % Atualiza o vetor de variaes passadas do sinal de controle vectorDeltaU = updateVectorDeltaU(vectorDeltaU, deltaU); % Obtm o sinal de controle a ser aplicado na planta U = lastU + deltaU; % Atualiza o sinal de controle atual lastU = U; vectorU = [lastU; vectorU(1:end - 1)]; % Calcula a sada atual lastY = calculateY(nump, denp, nnump, ndenp, vectorY, vectorU); vectorY = [lastY; vectorY(1:end - 1)]; end figure(1); plot(y); figure(2); plot(Uinteiro) end

Para a simulao, executamos o seguinte script:


% Funo de Transferncia da planta. G = tf([4.5 4.5], [1 11 24]); % Segurador de Ordem Zero(ZOH) na planta G(s). Gz = c2d(G, 0.2, 'zoh'); % Resposta ao degrau. fsr = step(Gz); L = 1; N = 15; M = 10; %Ns = length(fsr) - N; Ns = 20; setPoint = 15 * ones(1000, 1); rho = 1 * [zeros(L - 1, N); zeros(N - L + 1, L - 1) eye(N L + 1)]; lambda = 1 * eye(M); dmcmpc(N, M, Ns, Gz, fsr, rho, lambda, setPoint);

Resultados:

Figura 2 - Sada da Planta controlada por GPC

Figura 3 - Sinal do Controlador GPC

Concluso Como exposto na resoluo da questo, foi obtido sucesso no controle da planta com o DMC. A implementao ficou flexvel para testar vrios parmetros diferentes, tendo em vista possveis limitaes de valores para alguns parmetros.

Das könnte Ihnen auch gefallen