ue4.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. % streckenübertragungsfunktion
  2. s = tf('s');
  3. % stabil (hurwitzpolynom, 2 grad, selbes vorzeichen und reell kleiner 0)
  4. zG = (800*(1+s/6));
  5. nG = (s^2*(1+s/3)*(1+0.005363258140*s+1/10000*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.1; % anstiegszeit
  14. ue = 30; % 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. R1 = di*(1+0.005363258140*s+1/10000*s^2)/(1+s/6)*(1+s/3);
  23. L1 = R1*G;
  24. figure(1);
  25. bode(L1);
  26. grid on;
  27. % Betrags- und Phasenkorrektur
  28. L1_wc = freqresp(L1, wc);
  29. L1_phig = angle(L1_wc)*180/pi
  30. dphi = -(180-phi)*pi/180-(angle(L1_wc));
  31. dphig = dphi*180/pi
  32. Tr1 = tan(80/180*pi)/wc;
  33. Tr2 = tan((40/180*pi)/3)/wc;
  34. R2 = (1+s*Tr1)/((1+s*Tr2)^3);
  35. L2 = R2*L1;
  36. L2_wc = freqresp(L2, wc);
  37. Vr = 1/abs(L2_wc);
  38. % Bodediagramm des offenen Regelkreises
  39. L = Vr*L2;
  40. figure(2);
  41. bode(L1, L2, L);
  42. legend('L1', 'L2', 'L');
  43. grid on;
  44. % Test, dass Betrag und Phase an der Durchtrittsfrequenz korrekt sind
  45. disp(['Phase bei Durchtrittsfrequenz: ', num2str(angle(freqresp(L,wc))*180/pi)]);
  46. disp(['Amplitude bei Durchtrittsfrequenz: ', num2str(abs(freqresp(L,wc)))]);
  47. % Sprungantwort des geschlossenen Regelkreises
  48. T = feedback(L,1);
  49. figure(3);
  50. step(T,5);
  51. grid on;
  52. R = minreal(Vr*R1*R2)
  53. % Sprungantwort der Stellgrößenübertragungsfunktion
  54. Tu = R/(1+R*G);
  55. figure(4);
  56. step(100*Tu,3);
  57. grid on;