WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Tempomat 1D

 

ChriPs
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 29.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2012, 17:46     Titel: Tempomat 1D
  Antworten mit Zitat      
Hallo zusammen,

Ich möchte gerne ein Programm mit Matlab schreiben.

Das Programm: Der Benutzer übergibt dem Programm ein
eindimensionales Höhenprofil in Form von zwei
Vektoren. Der eine enthält die x-Koordinaten, der andere
die Höhe in Metern; dazwischen wird linear interpoliert.Die Werte sind alle positiv. Darüber hinaus gibt der Benutzer noch eine Sollgeschwindigkeit und eine
Startgeschwindigkeit an. Entsprechend der Parameter, die unten gegeben sind, soll nun ein Fahrzeug
inklusive seinem Beschleunigungsverhalten simuliert werden. Dieses Fahrzeug soll mittels eines PIDReglers
auf die Sollgeschwindigkeit gebracht und dort gehalten werden.Wir gehen
davon aus, dass das Fahrzeug immer die Simulation mit einer Geschwindigkeit größer Null beginnt
und vernachlässigen die Möglichkeit eines Stillstandes.

Also der PID-Regler bringt das Fahrzeug auf die Sollgeschw. und hält es dort. Mein Problem ist dass der Regler ja die aktuelle Geschw. wissen muss um zu regeln. Die ändert sich ja je nach Steigung. Und genau da liegt mein Problem. Ich brauch die Geschw. über die Zeit. Habe aber nur die Strecke gegeben. Wie stell ich denn die Funktion dann auf?

Meine Ideen:
Ich bin echt ratlos wie ich dass nun machen soll. Ableiten kann ich ja auch nichts oder? Gibt es da etwas bestimmtes von Matlab?

Hier mein bisheriger Code. Allerdings ohne Regelung.
Code:

% Zahlenwerte
m=1600; % kg Fahrzeugmasse
rR=0.291; % m dynamischer Reifenradius
A=1.7; % m² Stirnfläche
cw=0.32; % Luftwiderstandsbeiwert
roh=1.2; % kg/m³ Luftdichte
iA = 4.06;% Achsantrieb
iG = 1.3; % Getriebeübersetzung 5. Gang
eta = 0.9; % Wirkungsgrad Antriebsstrang
g=9.81; % m/s² Erdbeschleunigung
FR=160; % N Rollreibungskraft


% Eingabe des Höhenprofils
a=[100];
% p1=subplot(2,2,3:4)

x=input('Geben Sie den Vektor für den Weg x in metern ein: ');
h=input('Geben Sie den Vektor für die Hoehe h in metern ein: ');

% Eingabe Geschwindigkeit
v0=input('Geben Sie die Startgeschwindigkeit ungleich Null in Km/h ein: ');
v1=input(' Geben Sie die Sollgeschwindigkeit ungleich Null in Km/h ein: ');


% Berechnungen
% Luftwiderstand
v2=v1;
FL=(roh/2)*cw*A*(v2)^2; %v2 v0-v1 im PID-Regler
% Steigkraft
% Funktionen erstellen abhängigkeit von der Zeit

for i=1:length(x)

   
Fsteig=m*g*sin(atan(h(i)/x(i))) % sin(atan(h/x)) liest die Vektoren einzeln ein
% streckenberechnung
strecke=sqrt(x(i)^2+h(i)^2)
% Zeitberechnung mit konstantem v2
t=strecke/(v2/3.6)
% Antriebsleistung
PA=FL*v2+FR*v2+Fsteig*v2
% Motormoment
Mm=((FL+FR+Fsteig)*rR)/(eta*iA*iG)
% Umdrehungen Rad
nrad=(v2*3.6)/(rR*pi)
% Motordrehzahl
nMotor=nrad*eta*iA*iG
% Antriebskraft
FA=FL+FR+Fsteig
% Beschleunigung
a(i)=FA/m
Private Nachricht senden Benutzer-Profile anzeigen


coopers
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 27.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2012, 20:55     Titel:
  Antworten mit Zitat      
Hallo ChriPs,

willst du das Modell wirklich in Matlab aufbauen?

Ich würde vorschlagen das ganze eher in Simulink aufzubauen.

Als ersten Schritt dazu baust du mal das was du schon weißt
Code:


und dann können wir uns ja mit der Frage beschäftigen
Zitat:
Ich brauch die Geschw. über die Zeit. Habe aber nur die Strecke gegeben. Wie stell ich denn die Funktion dann auf?


Grüße!
coopers
Private Nachricht senden Benutzer-Profile anzeigen
 
coopers
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 27.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2012, 21:02     Titel:
  Antworten mit Zitat      
Code:
FL=(roh/2)*cw*A*(v2)^2; %v2 v0-v1 im PID-Regler
 


In der Gleichung ist glaube ich noch ein Fehler.

v2 ist nicht die Differenz aus V_Soll und V_ist, sondern

v2 = v_rel, die Differenz aus Fahrzeuggeschwindigkeit und Luftgeschwindigkeit
Private Nachricht senden Benutzer-Profile anzeigen
 
ChriPs
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 29.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2012, 21:07     Titel: Danke
  Antworten mit Zitat      
Hey, danke für die antwort. Leider muss ich es in Matlab aufbauen. Simulink ist tabu-.- Den Sinn soetwas mit Matlab anstatt simulink zu machen verstehe ich aber auch nicht so ganz.

Danke für den Hinweis mit FL.
Was meinst du mit bauen? FA habe ich ja hergeleitet. Mein Problem ist ja dass FA von der Momentangeschw. abhängt.
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2012, 13:10     Titel:
  Antworten mit Zitat      
Der Schlüssel zur Lösung Deiner Aufgabenstellung liegt darin, die Differentialgleichungen, die Du im Prinzip schon aufgeschrieben hast (Vorzeichen sind noch zu prüfen!), in Matlab zu lösen.
Wie geht das?
-> Beispiel: http://www1.uni-hamburg.de/W.Wiedl/Skripte/Matlab/ODE/ALLG/
Private Nachricht senden Benutzer-Profile anzeigen
 
ChriPs
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 29.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 09:34     Titel:
  Antworten mit Zitat      
Sorry aber irgendwie stehe ich gerade auf dem Schlauch. Das heisst ich muss jetzt alle geschwindigkeitsabhängigen Formeln als Funktion aufschreiben und die dann mit Hilfe der Integratoren lösen lassen?

Könntest du mir da ein Beispiel geben? Also aus meinem Code herraus?
Private Nachricht senden Benutzer-Profile anzeigen
 
ChriPs
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 29.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2012, 12:47     Titel:
  Antworten mit Zitat      
ich habe doch dv/dt=FA/m , dass müsste doch von den Vorzeichen richtig sein oder nicht? oder muss ich die Antriebskraft der Beschleunigung entgegenwirken lassen. Das macht doch keinen wirklichen Sinn.
Private Nachricht senden Benutzer-Profile anzeigen
 
controlnix
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2012, 06:51     Titel:
  Antworten mit Zitat      
Ich ging davon aus, dass der von mir angegebene Link ausreichend aufzeigt (dort: Beispiel 1.1), wie Differentialgleichungen (Dgls) in Matlab umzusetzen sind. Auch bei der vorliegenden Aufgabe sind Dgls für den Bewegungsvorgang des Fahrzeugs zu verwenden. Diese liefern alle die Daten, die Du 'als Problem' benannt hattest. Was allerdings noch vollkommen fehlte, ist das Gaspedal.
Ich habe zwei M-Files beigefügt, in denen das für die vorliegende Aufgabe ausgeführt ist. Aufzurufen mit: vehsim_ohneReg. Die Regelung ist noch nicht dabei. Darin solltest Du Dich erst mal selbst versuchen. Wenn Du noch Hilfe benötigst, ...
Übrigens: Man kann mit Matlab sehr wohl solche Simulationen durchführen. Ausreichendes Dokumentieren ist natürlich erforderlich. Es muss nicht immer Simulink sein.

vehicle_ohneReg.m
 Beschreibung:
DGLs

Download
 Dateiname:  vehicle_ohneReg.m
 Dateigröße:  994 Bytes
 Heruntergeladen:  734 mal
vehsim_ohneReg.m
 Beschreibung:
Hauptprogramm

Download
 Dateiname:  vehsim_ohneReg.m
 Dateigröße:  1.45 KB
 Heruntergeladen:  696 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
coopers
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 27.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 18:25     Titel:
  Antworten mit Zitat      
Bewegungsgleichungen in m-Skripten lösen ist wirklich nicht schön.

Dein grundsätzliches Problem liegt glaube ich aber noch woanders. (Technische Mechanik).

Du hast das Kräftegleichgewicht jetzt aufgestellt für den Fall dass das Fzg nicht beschleunigt, also m*a=0. Für diesen Spezialfall ist dann FA = Summe aller Widerstandskräfte.

Für einen beliebigen Bewegungszustand musst du aber schreiben:

m*a = Summe aller Kräfte.

Wenn du das dann soweit hast kannst du alles nach a umstellen, durch die 1. Integration erhälst du die Geschwindigkeit und durch weiteres Integrieren erhälst du die zurückgelegte Strecke.

Grüße!
coopers
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.