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
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
Soweit ich den Post verstanden habe, suchst du eine Funktion, um aus vorgegebener Steigung und Geschwindigkeit den Wert des Stufenschalters zu errechnen. Richtig?
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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.