Verfasst am: 19.08.2024, 15:40
Titel: Lösung der DGL mit ode-solver ungenau
Hallo,
ich versuche ein Modell zu validieren, mit dem ich die Wankbewegung von Fahrzeugen näherungsweise darstellen kann.
Das Modell besteht aus 2 DGLs 2. Ordnung (siehe angehängtes Bild).
Ich habe mittels einer Fahrzeugsimulation die 'Ground Truth Daten' erzeugt und möchte nun mit den Werten aus der Simulation mein Modell validieren.
Dazu gehören, die Fahrwerksparameter, die abhängig vom Lenkwinkel unterschiedliche Werte annehmen. Der Einfachheit sind Feder- und Dämpferkonstanten idealisiert. Die Bewegungen und Radlaständerungen sind aus der Simulation und auch vereinfacht dargestellt von -20° bis +20° Radlenkwinkel.
Mein Problem ist, dass ich bisher mit keinem ode-solver auf kein vernünftiges Ergebnis gekommen bin. Bei nicht steifen ode-solvern war der Wertebereich der Lösung bei 10^105. Das bisher beste Ergebnis ergibt der ode15s mit einer maximalen Schrittweite von 0.05. Aber das Ergebnis ist immer noch weit von dem Erwartungswert entfernt.
Bisher habe ich Folgendes ausprobiert:
- Verwendung der verschiedenen ode-solver
- Änderung der Zeitschrittweite
- Änderung meiner Eingangsdaten auf eine Lenkbewegung von 0° auf 20° (t = 800:1300) Radlenkwinkel, um zu schauen, ob das System generell auf die Eingangsgrößen reagiert.
Ich verstehe auch nicht so ganz wieso ein ode45 hier nicht korrekt arbeitet, da hier keine extremen Sprünge in den Daten vorhanden sind.
Kann mir jemand das erklären und eventuell noch helfen, meinen Fehler zu finden? Habe ich etwas Entscheidendes übersehen/falsch?
Danke schon mal für die Hilfe!
Code:
%% Berechnung Wankwinkel mit Wankmodell load("SimDaten.mat") load("Fahrwerkdaten.mat")
Time = SimDaten(1,:);
Steerangle = SimDaten(2,:);
Wankwinkel = SimDaten(3,:);
McPh_FL_Fz = Fahrwerkdaten(1,:); % in N
McPh_FR_Fz = Fahrwerkdaten(2,:); % in N
McPh_zflo = Fahrwerkdaten(3,:); % in m
McPh_zfro = Fahrwerkdaten(4,:); % in m
McPh_z_p_flo = Fahrwerkdaten(5,:); % in m/s
McPh_z_p_fro = Fahrwerkdaten(6,:); % in m/s
% Allgemeine Parameter
g = 9.81; % m/s^2
% Fahrzeugparameter
m = 1785; % Fahrzeugmasse in kg
b_sp = 1.588; % Spurbreite in m
c_sp = 26229; % Federkonstante der Aufbaubfeder in N/m
c_fr = c_sp; % N/m
c_fl = c_sp; % N/m
k_fl = 2500; % Dämpferkonstante in Ns/m
k_fr = 2500; % Dämpferkonstante in Ns/m
c_st = 22537; % Federkonstante des StabilisatorsN/m
Jxx = 282.36; % Rotationsträgheismoment um die Wankachse kgm^2
h = 0.585; % Höhe des Schwerpunkts in m
%Lösung der DGL mit ode-solver
opt = odeset('RelTol',1e10,'AbsTol',1e-12, 'Stats', 'on', MaxStep=0.05, BDF='on');
[t, L] = ode15s(@(t,y) f(t, y, c_st, z_flo, z_fro, z_p_flo, z_p_fro, c_fr, c_fl, k_fl, k_fr,...
b_sp, g, m, F_fl, F_fr, Jxx, h, Lenkwinkel),tRange, initcond, opt);
phi_berechnet = L(:,3);
figure(1) title('Vergleich simulierter und Berechner Wankwinkel') plot(Time, rad2deg(Wankwinkel), 'r', 'DisplayName','Wankwinkel simuliert') hold on
plot(t, rad2deg(phi_berechnet), 'b', 'DisplayName','Wankwinkel berechnet') grid on
legend xlabel('Simulationszeit in s') ylabel('Wankwinkel phi in °')
%% function dy = f(t, y, c_st, z_flo, z_fro, z_p_flo, z_p_fro, c_fr, c_fl, k_fl, k_fr, b_sp, g, m, F_fl, F_fr, J_xx, h, Lenkwinkel)
ein Problem dürfte sein, dass du mit RelTol auf 1e10 die Schrittweitenkontrolle praktisch ausschaltest. Mit RelTol auf 1e-10 bekomme ich für ode45 und ode15s vergleichbare Ergebnisse, die allerdings trotzdem weit weg von den von dir erwarteten sind.
Woran das nun liegt ist schwer zu sagen. Ich kann da leider nur dazu raten das zu tun, was ich selbst tun würde: alle Gleichungen und Parameter (nochmal) genau überprüfen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.