Guest User

Untitled

a guest
Jul 14th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.51 KB | None | 0 0
  1. function ex1(profil, schrittweite, geschwindigkeit, m, l, k, d)
  2. % Implementieren Sie das Modell mit MATLAB, die dazu notwendigen Gleichungen sind
  3. % im Anhang beschrieben. Führen Sie einen Simulationslauf mit den angegebenen
  4. % Parametern durch, plotten Sie die Verläufe sämtlicher Zustandsgrößen über der
  5. % Zeit und interpretieren Sie die Ergebnisse. Die Fahrbahnunebenheiten sind dabei
  6. % in tabellarischer Form mit Höhenangaben an charakteristischen Punkten entlang der
  7. % Fahrbahn gegeben. Dazwischen soll der Verlauf linear interpoliert werden. Sie
  8. % werden auch die Ableitung dieser so definierten Funktion benötigen.
  9.  
  10. % Wie kann diese in einfacher Weise aus den Tabellenwerten errechnet werden?
  11. %  Ableitung = Steigung der Tangente -> (profil[i+1] - profil[i]) / (Distanz zw. i und i+1)
  12.  
  13. % Differenzialgleichungen: RM * z'' = FD + FE - RK * z
  14. %    RM .. Massematrix
  15. %    RK .. Steifigkeitsmatrix
  16. %    FD .. Vektor mit den Dämpfkräften der Federn
  17. %    FE .. Vektor mit den Erregerkräften
  18.  
  19. % Beispiel aus ACSL Programm:
  20. %   >> m1v = 60.0; m1h = 80.0; m2v = 1200.0; m2h = 1200.0; m2k = 1200.0; lv = 1.0; lh = 1.5; lg = lv + lh;
  21. %   >> k1h = 260.e3; k1v = 260.e3; k2h = 50.e3; k2v = 40.e3; d1h = 0.2e3; d1v = 0.2e3; d2h = 0.0; d2v = 0.0;
  22. %   >> ex1(m1v, m1h, m2v, m2h, m2k, lv, lh, lg, k1h, k1v, k2h, k2v, d1h, d1v, d2h, d2v)
  23.  
  24.     m1v = m(1);
  25.     m1h = m(2);
  26.     m2v = m(3);
  27.     m2h = m(4);
  28.     m2k = m(5);
  29.  
  30.     lv = l(1);
  31.     lh = l(2);
  32.     lg = lv + lh;
  33.  
  34.     k1v = k(1, 1);
  35.     k1h = k(1, 2);
  36.     k2v = k(2, 1);
  37.     k2h = k(2, 2);
  38.  
  39.     d1v = d(1, 1);
  40.     d1h = d(1, 2);
  41.     d2v = d(2, 1);
  42.     d2h = d(2, 2);
  43.  
  44.     deltaT = schrittweite / geschwindigkeit;
  45.  
  46.     % Erstelle Vektor mit dem Fahrbanprofil in Abhängigkeit von der Schrittweite -> h
  47.     x = [profil(1 , 1) profil(1 , 2)];
  48.     y = [profil(2 , 1) profil(2 , 2)];
  49.     xi = profil(1 , 1) : schrittweite : profil(1 , 2);
  50.     h = interp1(x, y, xi);
  51.     for i = 2 : (length(profil) - 1)
  52.         x = [profil(1 , i) profil(1 , i + 1)];
  53.         y = [profil(2 , i) profil(2 , i + 1)];
  54.         xi = profil(1 , i) : schrittweite : profil(1 , i + 1);
  55.         hi = interp1(x, y, xi);
  56.         h = [h , hi(2 : length(hi))];
  57.     end;
  58.  
  59.     clear x y xi;
  60.  
  61.     x = 0 : schrittweite : profil(1, length(profil)) + lg;
  62.     hh = [zeros(size(0 : schrittweite : lg)) h];
  63.     hv = [h zeros(size(0 : schrittweite : lg))];
  64.     dhh = diff(hh);
  65.     dhv = diff(hv);
  66.     hv(length(hv)) = []; % Make all arrays equal length
  67.     hh(length(hh)) = []; % Make all arrays equal length
  68.     x(length(x)) = [];
  69.     x(length(x)) = [];
  70.  
  71.     % Plotte Steigung der Fahrbahn (1. Ableitung)
  72. %    plot(x, dhh, '-r', x, hh, '-b');
  73.  
  74.     % Definiere die Matritzen für die systembeschreibenden Diffenrentialgleichungen:  RM * z'' + RK * z = FD + FE
  75.     RM = [m2v+m2k*(lh/lg)*(lh/lg) , m2k*(lv*lh/(lg*lg)) , 0 , 0 ; m2k*(lv*lh/(lg*lg)) , m2h+m2k*(lv/lg)*(lv/lg), 0 , 0 ; 0 , 0 , m1v , 0 ; 0 , 0 , 0 , m1h]
  76.     RK = [k2v , 0 , -k2v , 0 ; 0 , k2h , 0 , -k2h ; -k2v , 0 , k2v , 0 ; 0 , -k2h , 0 , k2h];
  77.     % Modell mit linearen Dämpfern
  78. %    FD = [-d2v*(dz2v-dz1v) , -d2h*(dz2h-dz1h) , -d2v*(dz1v-dz2v)-d1v*(dz1v-dhv) , -d2h*(dz1h-dz2h)-d1h*(dz1h-dhh)]';
  79.     % Modell mit konstanten Dämpfern
  80.     FD = [-d2v , -d2h , -d2v-d1v , -d2h-d1h]';
  81.     FE = [0 , 0 , k1v*hv , k1h*hh]';
  82. %    FE = [0 , 0 , k1v*(z1v-hv) , k1h*(z1h-hh)]';
  83.  
  84. % Umformen: RM * z'' = -RK*z + FD + FE
  85. % Obige Matrixschreibweise in das DGL 1. Ordnung auflösen und in die Funktion unten einfügen.
  86. % u = dz/dt    RM * u' = -RK*z + FD + FE
  87. % Danach mit einem ODE Solver lösen (ode23, ode45, ...)
  88.  
  89. % Löse das DGL mit Schrittweite durch x definiert  
  90. zd2v =0;
  91. zd1v =0;
  92. zd2h = 0;
  93. zd1h = 0;
  94. hdv =0;
  95. hdh=0;
  96. z1h=0;
  97. z1v=0;
  98.  
  99.     tspan = [1 20];
  100.     y0 = [0 ; 0 ; 0 ; 0];
  101.     opt = odeset('Mass', RM);
  102.     [T, Y] = ode45(@diffgl, tspan, y0, opt);
  103.  
  104.     hold on;
  105.     plot(T,Y(:,1));
  106. %    plot(T, Y(:,1), '-r', T, Y(:,2), '-g' T, Y(:,3), '-b' T, Y(:,4), '-');
  107.     grid off;
  108.     xlabel('t');
  109.     ylabel('Auslenkung');
  110.     legend('Aufhängung vorne', 'Aufhängung hinten', 'Radmittelpunkt vorne', 'Radmittelpunkt hinten');
  111.     hold off;
  112.  
  113.  
  114.     function dy = diffgl(t, y,flag)
  115.      
  116.                 dy = zeros(4,1);%-RK+FD+FE
  117.                 dy(1) =  -k2v +k2v  -d2v*(zd2v-zd1v);
  118.                 dy(2) =  -k2h +k2h  -d2h*(zd2h-zd1h);
  119.                 dy(3) =  +k2v -k2v  -d2v*(zd1v-zd2v)-d1v*(zd1v-hdv )+k1v*(z1v-hv(t));
  120.                 dy(4) =   k2h -k2h  -d2h*(zd1h-zd1h)-d1h*(zd1v-hdh)+k1h*(z1h-hh(t));
  121.        
  122.     end
  123.  
  124.     end
Add Comment
Please, Sign In to add comment