Forum: PC-Programmierung Exponentialfunktion erweitern


von Christian M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Foraner,

für mein Projekt zum Steuern der Gartenbahn mittels 1:1 nachgebautem 
Führerstand stehe ich nun an einem kleinen mathematischen Problem an.

Das Einlesen der Daten mit USB4all über USB und die Ausgabe über 
RS232/TCP ist kein Problem. Aber die Verarbeitung derselben. Als 
relevante Daten habe ich:

- Stellung Stufenschalter (-21 .. 0 .. +25, wobei - Bremsen und + Fahren 
entspricht
- Stellung der Luftbremse als Analogwert
- gesammte Zuglast (Masse des Zuges)
- Steigung des momentan befahrenen Streckenabschnitts
- Zeit seit letzter Abfrage (in ms)

Mit der Formel zum Laden/Entladen eines Kondensators habe ich mal eine 
einfache Formel gefunden, um die Geschwindigkeit nach einer bestimmten 
Zeit bei einer bestimmten Stufenschalterstellung errechnet:

Zum Fahren: V = Vmax. * (1 - k ^ -x)
Zum Bremsen: V = Vmax. * (k ^ -x)

Wobei Koeffizient k einfach mal eine Zahl ist, die von der Stellung des 
Stufenschalters (und der Zuglast) abhängt.

Problem 1:
Das Programm läuft in einer Schleife und ich möchte bei jedem 
Schleifendurchlauf die Einzelschritte berechnen. Also iterativ, wobei 
der errechnete Wert vom letzten wert abhängt, und NICHT vom Startwert. 
Das muss ich ja, weil die Stufenschalterstellung jederzeit ändern kann. 
Geht das überhaupt?

Uebertragen auf den Kondensator würde das bedeuten, der Ladewiderstand 
kann jederzeit ändern, was die Kurvenform beeinflusst.

Problem 2:
Auch die Vmax. in der Formel kann jederzeit (in Abhängigkeit von der 
Stufenschalterstellung ändern! Was passiert, wenn das Resultat KLEINER 
ist als der letzte Wert? Der sollte dann gleich bleiben! Da sehe ich 
überhaupt nicht durch.

Problem 3:
Ich brauche noch eine Komponente, die zum Beispiel bei Talfahrt die 
Geschwindigkeit linear ansteigen lässt (abhängig von der Steigung), 
sowie bei Bergfahrt "bremst".

Diese 3 Probleme sollen sich überlagern. Zu sagen ist noch, dass die 
Ausgabe nicht sonderlich exakt sein muss, ich habe 127 Fahrstufen für 
einen Geschwindigkeitsbereich von 65km/h, und ob der jetzt einen km/h 
schneller oder langsamer fährt, ist nicht so schlimm...

Zuerst wollte ich das in einer Tabelle lösen, aber als sich dann 
abzeichnete, dass diese mehrere Dimensionen hätte, verwarf ich die Idee 
wieder... Einzig die Fahrstufen dürften vernünftigereise durch eine 
Tabelle gejagt werden, wo ich individuell das "Fahrgefühl" einstellen 
kann (bzw. Vmax. und k).

Im Anhang die Oberfläche des schon realisierten Programms zur Steuerung. 
Läuft auf einem WinXP-Rechner, programmiert mit XProfan11.

Danke und Gruss Chregu

von Jan H. (j_hansen)


Lesenswert?

Ehrlich gesagt ist mir dein Problem nicht ganz klar. Auch nicht, was die 
Ladekurve eines Kondensators damit zu tun haben soll.

Willst du ausgehend von der Geschwindigkeit v0 zum Zeitpunkt t0 die 
Geschwindigkeit v1 zum Zeitpunkt t1 berechnen, so würde ich 
folgendermaßen vorgehen:
1
1. Reibung Fr = m * g * µ
2
2. Luftwiderstand = Fl = cw * A * rohLuft * v^2 / 2
3
3. Steigung: Fs = m * g * [hier Trigonometrie einsetzen]
4
5
=> Gesamtwiderstand: Fg = Fr + Fl + Fs
6
7
Stufenschalter entspricht einer Leistung P
8
9
P = F * v => F = P / v
10
11
=> übrig bleibt Feff = F - Fg
12
13
Mit F = m * a => a = F / m => dv/dt = F / m => dv = F * dt / m
14
15
kommt dann heraus: v1 = v0 * Feff * (t1 - t0) / m

: Bearbeitet durch User
von B Nerd (Gast)


Lesenswert?

Soweit ich den Post verstanden habe, suchst du eine Funktion, um aus 
vorgegebener Steigung und Geschwindigkeit den Wert des Stufenschalters 
zu errechnen. Richtig?

von Christian M. (Gast)


Lesenswert?

Aehm, fast. Ich suche eine Funktion, die aus der alten Geschwindigkeit 
(vor dem Zyklusdurchlauf), der Steigung, dem Gewicht und dem Wert des 
Stufenschalters die neue Geschwindigkeit errechnet.

Jan H. schrieb:
> Auch nicht, was die
> Ladekurve eines Kondensators damit zu tun haben soll.

Weil mich der Geschwindigkeitsverlauf an eben so eine Kurve erinnert. 
Auch analog zum verhalten: Während dem Laden kann die Sollspannung und 
der Ladewiderstand dauernd ändern (analog zu Geschwindigkeit, und bei 
annäherung an Sollgeschwindigkeit die die Zugkraft stetig ab)

Gruss Chregu

von B Nerd (Gast)


Lesenswert?

Christian M. schrieb:
> Aehm, fast. Ich suche eine Funktion, die aus der alten Geschwindigkeit
> (vor dem Zyklusdurchlauf), der Steigung, dem Gewicht und dem Wert des
> Stufenschalters die neue Geschwindigkeit errechnet.


Dann suchst du ein PT1 Glied mit der Verstärkung K=1 und einer 
Zeitkonstanten abhängig von der Last des Zuges.

von Tommi (Gast)


Lesenswert?

Wenn ich dich richtig verstehe willst du ja die Dynamik eines echten 
Zuges nachempfinden.
Der Stufenschalter wird einem Raddrehmoment und damit einer axialen 
Kraft in Fahrzeugrichtung entsprechen. Dazu (oder dagegen) kommt noch 
eine (konstante) Reibungskraft, die ist bei der Bahn sehr gering. 
Außerdem gibt es eine geschwindigkeitsabhängige Dämpfung (Luftwiderstand 
und Lagerdynamik). Berg- und Talfahrt ergeben noch eine 
steigungsanhängige Kraft. Alle Kräfte addiert ergibt die 
Beschleunigungskraft:
1
Summe_F = F_Antrieb - |F_Reibung| + F_Dämpfung + F_Steigung

Mit F= m*a = m*dv/dt ergibt sich
1
dv = F/m * dt
dt ist dein Iterationsschritt (Berechnung in Echtzeit) und dv deine 
Geschwindigkeitsänderung.
Also
1
v_i+1 = V_i + Summe_F /m * dt

Bei fester Reibung kannst du die Dämpfung über die 
Maximalgeschwindigkeit berechnen, da gilt nämlich dv = 0 (keine weitere 
Erhöhung der Geschwindigkeit).

Die Formeln oben ergeben einen exponentiellen Geschwindigkeitsverlauf.

von Christian M. (Gast)


Lesenswert?

Oh ja, vielen Dank! Ich glaube, ich hatte einen Denkfehler! Die 
Triebwagen haben Hauptschlussmotoren, das ergibt näherungsweise eine 
gleichbleibende Leistung bei versch. Drehzahlen! Bei Steigungen ergibt 
sich eine max. Geschwindigkeit!

Momentan kann ich nicht soviel machen, die Erkältung hat ganz 
zugeschlagen und liege nur rum!

Ausserdem geht das Internet nicht, muss mit dem WLAN-Hotspot übers Natel 
surfen...

Aber habe ja 3GB pro Monat! Ist halt ein bisschen "zäher" bis die Daten 
kommen...

Gruss Chregu

Edit: Schreibfehler

von Christian M. (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt mal einen Simulator/Visualisator programmiert. Aber 
irgendwie funktioniert das doch noch nicht so ganz wie ich mir das 
vorstelle.

Ich muss morgen mal darüberschauen, meine Konzentration ist im Keller. 
Ich glaub, das Fieber steigt wieder... :-))

Das Programm ist mit XProfan 10 compiliert, Quellcode ist auch dabei.

Gute Nacht!

Chregu

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.