Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.05 KB | None | 0 0
  1. % Universidade Federal do Rio Grande do Sul
  2. % Escola de Engenharia
  3. % Departamento de Engenharia Elétrica
  4. % ENG04006 - Sistemas e Sinais
  5. %
  6. % Aluno: Alisson Claudino de Jesus (00246796)
  7. % Aluno: Bernardo Brandão Pandolfo (00230340)
  8. % % Turma: C
  9. %
  10. % Laboratório 5 - Questão 1
  11. %
  12. % Considere um sistema representado pela seguinte equação diferencial:
  13. % y'''+41*y''+360*y'+900*y=600*x'+1200*x
  14. % onde y(0)=2, y'(0)=1 e y''(0)=-0.05. Baseado nesse sistema, pede-se:
  15. %
  16. % (a) Calcular a solução dessa equação diferencial, ou seja, calcular a
  17. % resposta natural, a resposta forçada a um degrau unitário e a resposta
  18. % completa, como visto na área 1 da disciplina.
  19. % (b) Determinar a transformada de Laplace do sistema (realizar os cálculos
  20. % à mão ou usando a função 'laplace').
  21. % (c) Através da transformada de Laplace inversa (função 'residue' para
  22. % frações parciais), obter as respostas natural, forçada e completa do
  23. % sistema. Simular e comparar com as respostas obtidas no item (a).
  24. % (d) Usando a transformada de Laplace, simular as resposta natural,
  25. % forçada e completa usando os comandos 'step', 'impulse' ou 'lsim'.
  26. % Comparar com as respostas obtidas anteriormente.
  27. % (e) Implementar um diagrama de blocos que representa a equação
  28. % diferencial dada no simulink (usando blocos somadores, integradores e
  29. % ganhos) e simule as respostas natural, forçada e completa. Obtenha as
  30. % mesmas respostas usando blocos de funções de transferência.
  31. %
  32. % Conclusão: analisando os gráficos correspondentes a cada etapa deste
  33. % trabalho, temos resultados consistentes com aquilo que se é esperado.
  34. %%
  35.  
  36. clear all; %limpa todas as variáveis
  37. close all; %fecha todas as janelas
  38.  
  39. t=0:0.01:10; %cria o vetor tempo
  40.  
  41. %(a):
  42. yn1=(0.118.*exp(-30.*t)-13.956.*exp(-6.*t)+15.838.*exp(-5.*t)).*(t>=0); %resposta natural calculada
  43. yf1=(0.933.*exp(-30.*t)-16.667.*exp(-6.*t)+14.4.*exp(-5.*t)+4/3).*(t>=0); %resposta forçada calculada
  44. yc1=yn1+yf1; %resposta completa calculada
  45.  
  46. figure; %abre a janela gráfica 1
  47. subplot(5,1,1); %formata a janela gráfica com 3 linhas e 1 colunas
  48. plot(t,yn1,'r','linewidth',2); %plota yn em função de t
  49. hold on; %mantém o gráfico anterior afim de plotar os gráficos seguintes
  50. plot(t,yf1,'g','linewidth',2); %plota yf em função de t
  51. plot(t,yc1,'b','linewidth',2); %plota yc em função de t
  52. hold off;
  53. axis([0 2 -0.2 3.5]); %determina os limites do gráfico
  54. ylabel('y(t)'); %nomeia o eixo y
  55. title('Solução calculada'); %nomeia a janela gráfica
  56. legend('Resposta natural','Resposta forçada','Resposta completa'); %nomeia os gráficos
  57. grid on;
  58.  
  59. %(b):
  60. % Y=((2*s^2+83*s+760.95)+(600*s+1200)*X)/(s^3+41*s^2+360*s+900)
  61. % cálculo feito à mão
  62.  
  63. %(c):
  64. % Resposta natural (x(t)=0, cond. iniciais não-nulas):
  65. % Y=(2*s^2+83*s+760.95)/(s^3+41*s^2+360*s+900)
  66. yn_lap_num=[2 83 760.95]; %coeficientes do numerador de Yn(s)
  67. yn_lap_den=[1 41 360 900]; %coeficientes do denominador de Yn(s)
  68. [an,pn]=residue(yn_lap_num,yn_lap_den); %obtém os coeficientes 'an' e os polos 'pn' das frações parciais
  69.  
  70. % Resposta forçada (entrada x(t) não-nula, x(0)=0 e cond. iniciais nulas):
  71. % Y=(600*s+1200)/s*(s^3+41*s^2+360*s+900)
  72. yf_lap_num=[600 1200]; %coeficientes do numerador de Yf(s)
  73. yf_lap_den=[1 41 360 900 0]; %coeficientes do denominador de Yf(s)
  74. [af,pf]=residue(yf_lap_num,yf_lap_den); %obtém os coeficientes 'af' e os polos 'pf' das frações parciais
  75.  
  76. % Utilizando os coeficientes encontrados, montamos as respostas natural,
  77. % forçada e completa:
  78. yn2=(an(1).*exp(pn(1).*t)+an(2).*exp(pn(2).*t)+an(3).*exp(pn(3).*t)).*(t>=0);
  79. yf2=(af(1).*exp(pf(1).*t)+af(2).*exp(pf(2).*t)+af(3).*exp(pf(3).*t)+af(4)).*(t>=0);
  80. yc2=yn2+yf2;
  81.  
  82. subplot(5,1,2); %formata a janela gráfica com 3 linhas e 1 colunas
  83. plot(t,yn2,'r','linewidth',2); %plota yn em função de t
  84. hold on; %mantém o gráfico anterior afim de plotar os gráficos seguintes
  85. plot(t,yf2,'g','linewidth',2); %plota yf em função de t
  86. plot(t,yc2,'b','linewidth',2); %plota yc em função de t
  87. hold off;
  88. axis([0 2 -0.2 3.5]); %determina os limites do gráfico
  89. ylabel('y(t)'); %nomeia o eixo y
  90. title('Laplace inversa'); %nomeia a janela gráfica
  91. legend('Resposta natural','Resposta forçada','Resposta completa'); %nomeia os gráficos
  92. grid on;
  93.  
  94. %(d):
  95. % Resposta ao impulso:
  96. num_imp=[2 83 760.95]; %coeficientes do numerador
  97. den_imp=[1 41 360 900]; %coeficientes do denominador
  98. tf1=tf(num_imp,den_imp); %cria uma função de transferência utilizando os coeficientes listados
  99. yn3=impulse(tf1,t); %resposta ao impulso da função de transferência criada
  100.  
  101. % Resposta ao degrau:
  102. num_deg=[600 1200]; %coeficientes do numerador
  103. den_deg=[1 41 360 900]; %coeficientes do denomindador
  104. tf2=tf(num_deg,den_deg); %cria uma função de transferência utilizando os coeficientes listados
  105. yf3=step(tf2,t); %resposta ao degrau da função de transferência criada
  106.  
  107. yc3=yn3+yf3; %resposta completa utilizando-se os comandos step e impulse
  108.  
  109. subplot(5,1,3); %formata a janela gráfica com 3 linhas e 1 colunas
  110. plot(t,yn3,'r','linewidth',2); %plota yn em função de t
  111. hold on; %mantém o gráfico anterior afim de plotar os gráficos seguintes
  112. plot(t,yf3,'g','linewidth',2); %plota yf em função de t
  113. plot(t,yc3,'b','linewidth',2); %plota yc em função de t
  114. hold off;
  115. axis([0 2 -0.2 3.5]); %determina os limites do gráfico
  116. ylabel('y(t)'); %nomeia o eixo y
  117. title('Comandos step e impulse'); %nomeia a janela gráfica
  118. legend('Resposta natural','Resposta forçada','Resposta completa'); %nomeia os gráficos
  119. grid on;
  120.  
  121. %(e):
  122. % Diagramas de blocos:
  123. sim('simulink_q1');
  124.  
  125. subplot(5,1,4);
  126. plot(tout,yns(:,2),'r','linewidth',2); %tout é o vetor tempo do arquivo simulink
  127. hold on;
  128. plot(tout,yfs(:,2),'g','linewidth',2);
  129. plot(tout,ycs(:,2),'b','linewidth',2);
  130. hold off;
  131. axis([0 2 -0.2 3.5]); %determina os limites do gráfico
  132. ylabel('y(t)'); %nomeia o eixo y
  133. title('Diagrama de blocos'); %nomeia a janela gráfica
  134. legend('Resposta natural','Resposta forçada','Resposta completa'); %nomeia os gráficos
  135. grid on;
  136.  
  137. % Blocos de função de transferência:
  138. subplot(5,1,5);
  139. plot(tout,yns2(:,2),'r','linewidth',2);
  140. hold on;
  141. plot(tout,yfs2(:,2),'g','linewidth',2);
  142. plot(tout,ycs2(:,2),'b','linewidth',2);
  143. hold off;
  144. axis([0 2 -0.2 3.5]); %determina os limites do gráfico
  145. ylabel('y(t)'); %nomeia o eixo y
  146. title('Blocos de função de transferência'); %nomeia a janela gráfica
  147. legend('Resposta natural','Resposta forçada','Resposta completa'); %nomeia os gráficos
  148. grid on;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement