Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. %Podgrupa 1
  2. clear;
  3. %Na poczatku przypisuje dana transmitancje do G
  4. s = tf('s');
  5. G = (s+0.5)/((s+0.1)*(s^2+0.2*s+1.01));
  6.  
  7. %uzywam funkcji rlocus i rlocfind aby znalezc K krytyczne
  8. %znajdujace sie na przecieciu linii krytycznej z osia urojona
  9. rlocus(G);
  10. [Kkr, parametry] = rlocfind(G);
  11.  
  12. %Przypisuje parametry
  13. %Tu juz na stale przypisalem to Kkr znalezione za pierwszym razem
  14. Kkr = 1.1334;
  15. Pkr = 5; % 2PI / freq
  16. K = 0.6*Kkr;
  17. Ti = Pkr/2;
  18. Td = Pkr/8;
  19.  
  20. %Tworze regulator
  21. Sys = pidstd(K, Ti, Td);
  22.  
  23. %Rysuje odpowiedz skokowa transmitancji
  24. step(G);
  25. title('Transmitancja - odpowiedz skokowa');
  26.  
  27. %Lacze regulator z transmitancja szeregowo otrzymujac system otwarty
  28. sys_otw = series(G, Sys);
  29.  
  30. %Tworze system zamkniety
  31. sys_zamk = feedback(sys_otw, 1);
  32.  
  33. %Rysuje wykresy odpowiedzi skokowej systemu otwartego
  34. %i zamknietego
  35. figure;
  36. step(sys_otw);
  37. title('System otwarty - odpowiedz skokowa');
  38. figure;
  39. step(sys_zamk);
  40. title('System zamkniety - odpowiedz skokowa');
  41.  
  42. ----------------------------------------------------------------------------------------
  43. %Szymon Sadowski podgrupa 2
  44. clear
  45. %model inercyjny II ma postać: 1/(T^2*s^2+T*ksi*s+1)
  46.  
  47. %załadowanie pomiarów do przestrzeni roboczej - zmienna y
  48. load('obiekt.mat');
  49.  
  50. %tworzę znormalizowany wektor czasowy od 0 do 1 z 700 elementami
  51. t = linspace(0,1,600);
  52.  
  53. %wyrysowanie danych zmierzonych
  54. figure()
  55. plot(t,y)
  56.  
  57. %"Poczatkowe zgadnięte parametry"
  58. T = 0.1;
  59. ksi = 1;
  60. k = 0.2;
  61. theta = 0.1;
  62.  
  63. %Utworzenie systemu o zgadniętych parametrach
  64. s = tf('s');
  65. G = k/(T*T*s*s+T*ksi*s+1);
  66. set(G, 'OutputDelay', theta);
  67.  
  68. %Wyrysowanie odpowiedzi impulsowej systemu ze zgadniętymi parametrami na czerwono
  69. hold on
  70. impulse(G,t,'r')
  71.  
  72. %Optymalizacja funkcji błędu i znalezienie optymalnych parametrów modelu
  73. opt_params = fminsearch('ident', [T ksi k theta])
  74.  
  75. %"Nowe - Optymalne parametry"
  76. T = opt_params(1);
  77. ksi = opt_params(2);
  78. k = opt_params(3);
  79. theta = opt_params(4);
  80.  
  81. %Utworzenie systemu z wyznaczonymi optymalnymi parametrami
  82. s = tf('s');
  83. optimal_sys = k/(T*T*s*s+T*ksi*s+1);
  84. set(optimal_sys, 'OutputDelay', theta);
  85.  
  86. %Wyrysowanie odpowiedzi impulsowej systemu z wyznaczonymi optymalnymi
  87. %parametrami na zielono
  88. impulse(optimal_sys, t, 'g')
  89.  
  90. title('Odp. impulsowa: niebieski - rzeczywiste pomiary, czerwony - dobrane poczatkowe parametry, zielony - optymalizacja')
  91.  
  92. %Wnioski:
  93. %Odpowiedź impulsowa systemu z parametrami dopasowanymi przez funkcję fminsearch dobrze
  94. %pokrywa wykres rzeczywistych pomiarów.
  95. %Z tego względu możemy przypuszczać, że zmierzony obiekt dynamiczny
  96. %faktycznie jest obiektem inercyjnym II rzędu z opóźnieniem.
  97. %Końcowy błąd zasygnalizowany przez funkcję fminsearch jest rzędu 0.2464 co
  98. %potwierdza, że obiekt został zidentyfikowany dobrze
  99.  
  100. %funkcja obliczajaca blad dla danych parametrow w stosunku do rzeczywistych
  101. %pomiarow
  102. function [error] = ident(params)
  103. %zaladowanie pomiarow
  104. global y
  105. load('obiektA.mat');
  106.  
  107. %wyodrębnienie parametrów z argumentu
  108. param_T = params(1);
  109. param_ksi = params(2);
  110. param_k = params(3);
  111. param_theta = params(4);
  112.  
  113. %utworzenie systemu na podstawie parametrów z argumentu
  114. s = tf('s');
  115. iner_II = param_k/(param_T*param_T*s*s+param_T*param_ksi*s+1);
  116. set(iner_II, 'OutputDelay', param_theta);
  117.  
  118. %zbadanie odpowiedzi impulsowej systemu z dobranymi parametrami
  119. t = linspace(0,1,700);
  120. [Y_model,T] = impulse(iner_II, t);
  121.  
  122. %roznica w odpowiedzi impulsowej miedzy rzeczywistymi pomiarami a
  123. %systemem z dobranymi parametrami
  124. diff = Y_model-y;
  125. %suma kwadratów roznic w odpowiedzi impulsowej miedzy rzeczywistymi pomiarami a
  126. %systemem z dobranymi parametrami
  127. error = sum((Y_model-y).^2)
  128.  
  129. ---------------------------------------------------------------------------------
  130.  
  131. Gdy trzeba usunac opoznienie:
  132.  
  133. s = tf('s');
  134. G_in = (6*(s+5))/((s+1)*(s+2)*(s+3)*(s+4));
  135. sys = exp(-s);
  136. sysx = pade(sys, 3);
  137. G = series(G_in, sysx);
  138.  
  139.  
  140. -------------------------------------------
  141.  
  142. s = tf('s');
  143. K=1;
  144. G = K*(s+0.3)/((s+0.1)*(s^2+0.2*s+1.01));
  145.  
  146. rlocus(G);
  147. sgrid();
  148. axis('equal');
  149. K = 2.98;
  150. G = K*(s+0.3)/((s+0.1)*(s^2+0.2*s+1.01));
  151.  
  152. % step(G);
  153. % figure();
  154. % impulse(G);
  155.  
  156.  
  157. -------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement