Vous êtes sur la page 1sur 18

Para começarmos a analisar o problema primeiro precisamos descobrir

qual a estrutura completa do mesmo. E para isso precisamos encontrar a


equação do controlador Gc e das constantes ξ e ωn.

Temos que para a resposta ao degrau unitário a saída y(t) é :

Aplicando a transformada de laplace temos que y(s) é:

ωn 2
1) y ( s )= 2 2
s∗(s +2∗ξ∗ωn∗s +ωn )

Agora multiplicaremos a transformada do degral unitário pelo ganho de


malha fechada para encontrarmos a trasformada da saída y(s):

1 Gc∗Gp Gc
2) * = =y(s)
s 1+ Gc∗Gp s (s ¿¿ 2+s +Gc)¿

Então podemos igualar a equação 1 com a equação 2 .

ωn 2 Gc
2 2
= 2
(s +2∗ξ∗ωn∗s+ ωn ) s +s +Gc

Agora igualando os termos do denominador de ambas as equações chegamos


a conclusão de que :

50 10
ωn= =
N +40 11

Gc=ωn2=¿

Assim descobrimos que o controlador Gc e um controlador proporcional de


constante 0,8264.Agora para descobrir o ξtemos que :

1
ξ= =0.5500
2∗ωn
Agora temos a estrutura completa do nosso sistema.O diagrama de blocos
desde segue abaixo.

A função transferência do sistema e dado pela equação .

ωn 2 0.8264
H ( s )= 2 2
= 2
( s +2∗ξ∗ωn∗s +ωn ) s + s+0.8264
Agora podemos começar a resolver os problemas propostos.Porem antes
falaremos um pouco sobre o algoritmo criado para resolver os problemas.

O algoritmo criado para a resolução do problema chama-se projeto.m ,e é


dividido em vários scripts para facilitar o entendimento e desenvolvimento
.Todos os scripts serão explicados no decorrer desde relatório.

O script projeto.m e dividido em 2 sub scriprs o primeira.m e o segunda.m


O primeira.m resolve a primeira questão do trabalho e pode ser visto abaixo.

%Rodando subrotinas do programa primeira


clear;
ini1;%Inicia parametros do sistema
Polos;%Calcula polos do sistema
graficos1b;%Plotagem dos graficos da questão 1b
Interpolyc;%Interpolando resposta ao impulso
clc;
disp('Respostas da primeira questão.')
disp('A) A função transferencia é:')
hs
disp('A) Os polos do sistema são:')
polos
polos2
disp('B e C)Os graficos das letras B,C e D estão plotados na primeira
linha da janela Figure1. ')
disp(' ')
disp(' ')
disp('D) Os coeficiente do polinomio que interpola a resposta ao
impulso são:')
coeficientes
disp('D) Como visto na segunda linha do grafico da janela Figure1 a
resposta ao impulso da função transferencia, ')
disp('e a interpolação da respolsta ao impulso possuem graficos
semelhantes confirmando a validade da interpolação.')
disp(' ')
disp(' ')
disp('E)Para visualizar a simulação click em simul1.mdl.')
disp('Aperte start para iniciar a simulação.')
disp('Agora abra o grafico da resposta ao impulso clicando em Scope.')
disp('Podemos comparar o grafico gerado na simulação com o grafico
gerado na janela Figure1.')
disp('Como visto os graficos são identicos o que comprova que a
simulação esta correta.')
O script ini1 calcula e inicia alguns parametros que serão utilizados durante o
resto do algoritimo como wn,Gc ksi,num,den e hs.

wn=(10/11);%Inicia constantes
gc=wn^2;%Calcula Gc
ksi=1/(2*wn);%Calcula ksi
num=[wn^2];%Monta vetores da funcao transferencia
den=[1 (2*ksi*wn) (wn^2)];
hs=tf(num,den);%Cria funcao transferencia

A função tf utilizada para montar a função


trasferencia funciona da seguinte forma.Ao entrar com os
vetores num e dem que representar os coeficientes do
numerador e do denominador a função retorna um equação de
função trasferencia e guarda em hs.
Ao final do algoritimo temos uma parte responsável em
apresentar as respostar de uma forma eficiente e clara ao
utilizador.
As outras funções serão explicadas no decorrer das
respostas
O segunda.m resolve a segunda questão do trabalho e
pode ser visto abaixo:
%Rodando subrotinas do programa segunda
ini2;%Inicia parametros do sistema
equilibrio;%Calcula posição de equilibrio
dif;%Encontra representação linear em variáveis de estado
Transformacao;%Transforma variáveis de estado em função transferencia
disp('Respostas da segunda questão.')
disp(' ')
disp('A) O algortmo que determina o ponto de operação do sistema
chama-se equilibrio.m.')
disp(' Vejamos os pontos de operação calculados pelo algoritmo:')
h10
h20
h30
h40
disp('B) O algoritmo que calcula a representação linear em variaveis
de estado do sistema chama-se dif.m')
disp(' Vejamos a representação em variavies de estado calculados
pelo algoritmo:')
disp(' ')
disp(' ')
disp('Hº = H0 + A*Delta.h +B*Delta.v')
disp(' ')
disp('Saida=H= C*Delta.h +D*Delta.v ')
disp('Onde:')
A
B
C
D
disp(' ')
disp(' ')
disp('C) A simulação do sistema linear chama-se TanquesL.m e a
simulação do sistema não linear chama-se TanquesS.m ')
disp(' Abra as simulações e aperte start para simula-las.Agora você
pode clicar nos graficos relacionados as estradas.')
disp(' Como exemplo abra H1S e H1L e verifique que a resposta ao
degral de ambas representações do sistema são parecidas')
disp(' comporvando a validade dos calculos feitos. ')

Como na primeira.m aqui também temos um script para inicializar valores que
serão utilizados no decorrer do programa que se chama ini2.m e segue abaixo:

a1=2.3;%Inicializando os parâmetros do sistema


a2=2.3;
a3=2.3;
a4=2.3;
A1=730;
A2=730;
A3=730;
A4=730;
v10=60;
v20=60;
k1=5.51;
k2=6.58;
g=981;
y1=0.333;
y2=0.307;
Tambem podemos observa que ao final do código que temos uma parte
dedicada a apresentar as respostar de uma forma eficiente e
clara ao utilizador.
As outras funções serão explicadas no decorrer
das respostas.

A)Determine os pólos do sistema em malha fechada usando os comandos


roots e pole .

O script que obtém a os pólos do sistema chama-se pólos.m e segue abaixo:

polos=roots(den);%Encontra os polos do sistema


polos2=pole(hs);%Encontra os polos do sistema

Os pólos foram calculados de duas maneira diferentes.A primeira utiliza


a função roots que funciona da seguinte forma.

Ao se colocar um vetor com os termos do denominador ela retorna suas


raízes e guarda em pólos.

A função pole funciona da seguinte maneira ao se colocar um fração que


no caso foi a função transferência Hs ela retorna os pólos e guarda em polos2.

Ao rodarmos o script primeira.m todas as respostar da primeira questão do


trabalho será dada ao utilizado.A resposta dada para a primeira eustão letra A
segue abaixo:

Como visto os pólos foram calculado corretamente utilizando ambas as funções


roots e pole.
As quetões B e C serão explicadas juntas

B)Trace o gráfico da função y(t) utilizando os comando plot e grid.

C)Determine a resposta ao degral unitário deste sistema de controle usando o


comando step.trace o gráfico dessa resposta e compare com o do item 1b
mostrando as duas respostas em uma mesma figura.

O scrip que soluciona as questões B e C chama –se grafico1b.m e segue


abaixo:

t=0.1:0.1:20;%Criando o vetor tempo


yt=y(t);%Avaliando a yt no tempo
subplot(2,1,1);
step(hs);%Plotando a resposta ou degral
grid on;
hold on;
plot(t,yt,'o');%Plotando o grafico de yt
Aqui temos tambem uma função y(t):

function y=y(t)
for n=1:1:200
y(n)=1-(( exp(-(0.5000*t(n)))/(0.8352))*sin(0.8352*0.9091*t(n)
+0.9884));
end
Na primeira linha criamos um vetor tempo que será usado para avaliara a
função y(t).

Na função y(t) geramos os valores da resposta ao degral unitário avaliada no


tempo e salva em yt.

Utilizamos o camando subplot para representar 2 graficos distinto em uma


única janela do matlab para melhor visualização dos resultados.

A função step plota a resposta ao degrau de uma função trasferencia hs.

Os comando grid on e hold on servem para gradear o gráfico para uma melhor
visualização dos valores e segura a tela de plotagem para um outro gráfico
sobreposto,respectivamente.

Ao final utilizamos a função plot que ao receber os vetores da ordenada e a


abssiça e plotar um gráfico dos respectivos pontos.Utilizamos t como abssiça e
yt como ordenada.

A função step plotarar um gráfico com linha continua e a plot plotarar em


gráfico em pequenos círculos.
Vejamos o que o algoritimo retorna como respostar para a questão B e C :

B e C)Os graficos das letras B,C e D estão plotados na primeira linha da janela
Figure1.

O valor esperado para a estabilização do sistema é 1 de acordo com o teorema


do valor final.
2
lim n∗Y ( s )=¿ ¿ ωn =1
n→ 0
ωn2

E como pode ser visto ambos os gráficos tiveram o mesmo comportamento


durante o transiente e estabilizaram na amplitude 1apartir de aproximadamente
11 segundos
D) Determine um polinômio que interpole satisfatoriamente a resposta ao
impulso deste sistema de controle usando os comandos polyfit e polyval.

O scrip que soluciona a esta letra chama-se interpolyc.m segue abaixo:

n=7;%Grau do polinomio de interpolacao


[y x]=impulse(hs);%Gera ordenada e abissica da funcao
coeficientes=polyfit(x,y,n);%Gera coeficientes da interpolacao
t=0.1:0.1:13;%Criando o vetor tempo
for s=1:1:130%Avalia a funcao no tempo
impulso(s)=polyval(coeficientes,t(s));
end
subplot(2,1,2);
impulse(hs,'b');%Plota resposta ao impulso função
hold on;
grid on;
plot(t,impulso,'or');%Plota resposta ao impulso interpolada
O grau escolido para o polinômio interpolador foi n=7 .

Na segunda linha do código estamos usando a função impulse que recebe uma
função trasferencia hs e salva os valores de x e y em vetores.Esses valores de
x e y e n são usados pela função polyfit para gerar os ceficientes do polinômio
interpolador e guarda em coeficientes.

Na quinta linha geramos um vetor tempo para ser usado pela função polyval no
loop finito gerado pela função for.A cada ciclo do loop a função polyval avalia o
polinômio formado pelo vetor coeficientes no tempo determinado pelo vetor t e
guardando no vetor impulso.

Utilizamos o comando subplot para utilizarmos a segunda linha da pagina de


plotagem do matlab para plotar os gráficos de resposta ao impulso

A função impulse(hs,'b') plota o gráfico da resposta ao impulso da


função trasferencia hs como uma linha continua azul.

Os comando grid on e hold on servem para gradear o gráfico para uma melhor
visualização dos valores e segura a tela de plotagem para um outro gráfico
sobreposto,respectivamente.

Ao final utilizamos a função plot que ao receber os vetores da ordenada e a


abssiça e plotar um gráfico dos respectivos pontos.Utilizamos t como abssiça e
impulso como ordenada.
Vejamos o que e dado como resposta para a questão D:

O polinômio gerado pode ser considerado satisfatório pois após plotado


sobreposto a função original apresenta comportamento extremamente parecido
como visto no gráfico

E) Monte um simulador deste sistema de controle no Simulink®

destacando os elementos deste sistema de controle: comparador,

controlador e planta. Mostre alguns resultados de simulação

que evidencie que este simulador está correto.

A simulação desse sistema e feita no Simulink® e chama-se simul1.m

O programa retorna um pequeno texto ensinando o usuário a visualizara


asimulação.
O ambiente de visualização do simulador e dado a seguir:

Ao rodarmos a simulação termos acesso ao seguinte gráfico aprtir do scope:


Porem para uma melhor visualização podemos jogar os dados para o
workspace como ScopeData e usar a função plot para plotar um gráfico com
fundo branco.

Como podemos observar o gráfico de resposta ao degrau unitário gerado pela


simulação é idêntico os gerados nas questões B e C validando a simulação.
Respostas da segunda questão.

2.O sistema consiste em um conjunto de 4 tanques interligados tendo como entrada as


velocidade V1 e V2 geradas por bombas B1 e B2,e saída as alturas h1 ,h2, h3, h4.

Uma figura do sistema físico pode ser observada no sistema abaixo:

A resolução do problema será dado pelo método das equações de estado em conjunto
com as técnicas de linearização de equações.

A representação em variáveis de estado representa de maneira simplificada as


equações diferencias de ordem N que fazem a modelagem de um sistema.Utilizando N
equações de ordem 1.

O numero de variáveis de estado de um sistema e igual a sua ordem.Apos escolhidas


as variáveis de estado partimos para formulação das equações de estado que são equações
que representam a derivada das variáveis de estado em função do tempo.

Após todas as equações serem obtidas elas são representadas em uma forma matricial
com os fatores A B C e D como segue abaixo:
Porem como podemos observar as raízes existentes nas equações que regem os tanques
introduzem uma não linearidade no sistema. Portanto temos que aplicar a técnica de
linearização das equações para obter as equações de estado.

O primeiro passo da linearização de um sistema consiste em encontrar o ponto de


operação do sistema. A partir das equações acima basta igualar as derivadas a zero e resolver
o sistema linear para. Obtendo assim h10, h20, h30, h40, que são as alturas do ponto de
operação.
O segundo passo da linearização consiste em obter a matriz de linearização do sistema.

Onde :

Onde Xi são as variáveis de estado e Ri as entradas do sistema.

A terceira e ultima etapa da linearização e obter o resultado final da equção para isso
basta somar o ponto de operação a variação proporcionada por uma mudanção na entrada.

E importante ressaltar que a linearização representa o sistema em pontos próximos ao


ponto de equilíbrio e que grandes variações na entrada podem torna os resultados da
linearização inválidos.

X ´ =X 0+ Δ X ´
Y =Y 0+ C∗Δ X + D∗ΔU

Agora com um embasamento teórico apropriado vejamos as respostas da questão 2.

A) Faça um algoritmo que determine o ponto de operação do sistema para as condições


da tabela 2.

O algoritimo que determina o ponto de operação chama-se equilíbrio.m e segue


abaixo:

%Calculando a posição de equilíbrio do sistema


h30=(((1-y2)*k2*v20/a3)^2)/(2*g);
h10=(((a3*sqrt(2*g*h30))+(y1*k1*v10))^2)/(2*a1*a1*g);
h40=(((1-y1)*k1*v10/a4)^2)/(2*g);
h20=(((a4*sqrt(2*g*h40))+(y2*k2*v20))^2)/(2*a2*a2*g);

Ao invés de utilizar a função fsover o algoritmo resolve o sistema de uma forma


analítica como que se estivesse sendo resolvido na mão.Vejamos a resposta dada pelo
programa para a questão:
Como visto o algoritmo calcula com precisão e eficiência os pontos de operação do sistema.

B) Faça um algoritmo que determine a representação linear deste sistema em variáveis de


estados.
A função que resolve esta questão chama-se dif.m e pode ser vista abaixo:

%Gerando as variáveis simbólicas


syms h1 h2 h3 h4 v1 v2;
%Gerando matriz A e B
H1=(-a1*sqrt(2*g*h1)/A1)+(a3*sqrt(2*g*h3)/A1)+(y1*k1*v1/A1);%Gerando
linha 1 matriz A e B
H(1,1)=diff(H1,h1);
A(1,1)=subs(H(1,1),h1,h10);
A(1,2)=0;
H(1,3)=diff(H1,h3);
A(1,3)=subs(H(1,3),h3,h30);
A(1,4)=0;
V(1,1)=diff(H1,v1);
B(1,1)=subs(V(1,1),v1,60);
B(1,2)=0;
H2=(-a2*sqrt(2*g*h2)/A2)+(a4*sqrt(2*g*h4)/A2)+(y2*k2*v2/A2);

A(2,1)=0;%Gerando linha 2 da matriz A e B


H(2,2)=diff(H2,h2);
A(2,2)=subs(H(2,2),h2,h20);
A(2,3)=0;
H(2,4)=diff(H2,h4);
A(2,4)=subs(H(2,4),h4,h40);
B(2,1)=0;
V(2,2)=diff(H2,v2);
B(2,2)=subs(V(2,2),v2,60);

H3=(-a3*sqrt(2*g*h3)/A3)+((1-y2)*k2*v2/A3);%Gerando linha 3 da matriz


A e B
A(3,1)=0;
A(3,2)=0;
H(3,3)=diff(H3,h3);
A(3,3)=subs(H(3,3),h3,h30);
A(3,4)=0;
B(3,1)=0;
V(3,2)=diff(H3,v2);
B(3,2)=subs(V(3,2),v2,60);

H4=(-a4*sqrt(2*g*h4)/A4)+((1-y1)*k1*v1/A4);%Gerando linha 3 da matriz


A e B
A(4,1)=0;
A(4,2)=0;
A(4,3)=0;
H(4,4)=diff(H4,h4);
A(4,4)=subs(H(4,4),h4,h40);
V(4,1)=diff(H4,v1);
B(4,1)=subs(V(4,1),v1,60);
B(4,2)=0;
%Gerando matriz C e D
C=[1 0 0 0;
0 1 0 0;
0 0 1 0;
0 0 0 1];
D=[0 0 ;
0 0 ;
0 0 ;
0 0 ];
Nesse scrip utilizamos a função syms para tornar as alturas h1, h2, h3 e h4
variáveis simbolicas que podem ser manipuladas por funções algebricas.
Em seguida com a função diff realizamos a segunda etapa da linearizaão em
que devemos realizar derivas parciais em relção as variaveis de estado e as
entradas.Para que a função funcione devemos dar como entrada a função a ser
derivada e em relação a qual variavel será derivado.A função derivada e guardada em
uma linha e coluna das matrizes H se for variável de estado ou V se for entrada do
sistema.
Após a derivação devemos substituir os valores iniciais ou de equilibrio do
sistema.Para isso utilizamos a função subs que funciona da seguinte forma.Ao receber
como entrada a função a ser manipulada a variável a ser modificada e o valor que
devemos substituir ,a função substitui o valor dado na função e salva o resultado na
matriz A se for variavel de estado ou na matriz B se for entrada do sistema .
As matrizes C eD da que representam a saida do sistema foram formada
manualmente pois sabemos que as variaveis de estado são tambem as saidas do
sistema nesse caso específico.
Dessa forma criamos a representação matricial em variáveis de estado do
sistema como pedido na questão.Vejamos é a resposta para a questão dada pelo
algoritimo.
Como visto o algoritimo funciona bem e realiza a representação perfeitamente.

C) Simular o sistema linear e o não linear no Simulink® mostrando

que as respostas ao degrau dos mesmos são razoavelmente

próximas no ponto de operação.

Vous aimerez peut-être aussi