ue4_alt.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. % streckenübertragungsfunktion
  2. s = tf('s');
  3. % stabil (hurwitzpolynom, 2 grad, selbes vorzeichen und reell kleiner 0)
  4. zG = (3);
  5. nG = (s*(1+1/150*s+1/900*s^2));
  6. G = zG/nG
  7. %bode(G)
  8. % anforderungen
  9. % doppelintegratorvorgabe (keine bleib. regelabweichung auf rampenf.
  10. % referenzsignal) e_inf|d(t)=t = 0
  11. % doppelintegrator bereits vorhanden
  12. di = 1;
  13. tr = 0.9; % anstiegszeit
  14. ue = 20; % erlaubtes überschwingen
  15. % durchtrittsfrequenz 20*log(abs(L(I*omega))) = 0 => abs(L(I*omega)) = 1
  16. % und wc*tr approx 1.5 => 1.5/tr = wc
  17. wc = 1.5/tr;
  18. % phasenreserve phi [grad] + ue [%] approx 70 => phi [grad] = 70 - ue [%]
  19. % = 70 - 100 * ue
  20. % phi [rad] = phi [grad] / 180 * pi
  21. phi = 70-ue;
  22. % TODO: change this
  23. R1 = 1+1/150*s+1/900*s^2;
  24. L1 = R1*G;
  25. figure(1);
  26. bode(L1);
  27. grid on;
  28. % Betrags- und Phasenkorrektur
  29. L1_wc = freqresp(L1, wc);
  30. L1_phig = angle(L1_wc)*180/pi
  31. dphi = -(180-phi)*pi/180-(angle(L1_wc));
  32. dphig = dphi*180/pi
  33. % TODO: change this
  34. Tr1 = tan(40/180*pi)/wc;
  35. Tr2 = tan((80/180*pi)/3)/wc;
  36. % TODO: change this
  37. R2 = (1+s*Tr1)/((1+s*Tr2)^3);
  38. L2 = R2*L1;
  39. L2_wc = freqresp(L2, wc);
  40. Vr = 1/abs(L2_wc);
  41. % Bodediagramm des offenen Regelkreises
  42. L = Vr*L2;
  43. figure(2);
  44. bode(L1, L2, L);
  45. legend('L1', 'L2', 'L');
  46. grid on;
  47. % Test, dass Betrag und Phase an der Durchtrittsfrequenz korrekt sind
  48. disp(['Phase bei Durchtrittsfrequenz: ', num2str(angle(freqresp(L,wc))*180/pi)]);
  49. disp(['Amplitude bei Durchtrittsfrequenz: ', num2str(abs(freqresp(L,wc)))]);
  50. % Sprungantwort des geschlossenen Regelkreises
  51. T = feedback(L,1);
  52. figure(3);
  53. step(T,5);
  54. grid on;
  55. R = minreal(Vr*R1*R2)
  56. % Sprungantwort der Stellgrößenübertragungsfunktion
  57. Tu = R/(1+R*G);
  58. figure(4);
  59. step(100*Tu,3);
  60. grid on;