Jump to content

Bremsen und Beschleunigen


streit_ross
 Share

Recommended Posts

Hallo Modelbahnfreunde,

ich habe zum Thema "Wie erstelle ich eine Ereignisverwaltung zum Bremsen oder Beschleunigen einer Lok (eines Zuges)" eine praktische Anleitung als experimentelle Anlage erstellt. Damit soll in erster Linie den Neulingen nach dem Prinzip des Ausprobierens und Nachahmens ohne großartige theoretische Erläuterung gezeigt werden, wie sie in ihrer eigenen Anlage Züge zum Stehen bringen können bzw. aus dem Halt heraus beschleunigen. Die Ereignisverwaltung baucht sozusagen nur 1:1 abgekupfert werden. Ich hoffe, dass Nero sie kurz-fristig freigibt und dann viel Spaß beim Probieren.

An Nero gewandt möchte ich nur kurz anmerken, dass ich es schade finde, dass im Forum nicht wie einst die kleinen "Vorschaubilder" zu finden sind.

 

Link to comment
Share on other sites

Hallo Streit_Ross,

könntest Du Deine Anlage als mbp-Datei exportieren und hier als Datei-Anhang einhängen?
Es könnte nämlich noch ein Weilchen dauern, bis Neo Deine Anlage im Online-Katalog frei gibt.

Mich interessiert Deine Beispiel-Anlage schon deshalb, weil ich selbst für meine Gotthard-Anlage einen Beschleunigungs- und Brems-Algorithmus in der Ereignisverwaltung implementiert habe. Und da würde ich gerne ein bisschen vergleichen.

Den Anspruch, für den Anfänger "besonders einfach" zu sein, kann meine Realisierung wohl nicht erfüllen, weil ich gleichzeitig noch die beiden möglichen Geschwindigkeits-Orientierungen der Triebfahrzeuge (Vorwärtsfahrt bei "normaler" Ausrichtung  und Rückwärtsfahrt bei Drehung des Fahrzeugs um 180°) und beliebige Positionen des Triebfahrzeugs im Zugverband berücksichtigt habe. Ohne zusätzliche Beschreibung wird daher meine Ereignissteuerung nicht auskommen.

Damit möchte ich aber warten, bis Du Deine Ereignissteuerung hier präsentieren konntest,

Viele Grüße
BahnLand

Link to comment
Share on other sites

Hallo BahnLand,

zunächstmal danke für Dein Interesse an meiner Beispielanlage. Ich glaube aber nicht, dass sie für Dich ineressant ist, weil es mir darum geht, für jemanden, der noch nicht in der Arbeit mit Variablen durchblickt, auf einfachste Weise zu demonstrieren, wie z.B. konkret ein Zug abgebremst oder beschleunigt werden kann. Da Du auf dem Gebiet Variablen anhand Deiner Anlagen eindeutig kein Neuling bist, ist mein Beispiel in seiner Einfachheit wirklich nur für Einsteiger gedacht. Ich habe also einfach nur zwei Kreise mit jeweils einer Lok darauf genommen und auf einem das Abbremsen und auf dem anderen das Beschleunigen in einem Interval von jeweils 0,3 sek um jeweils 1mm/s als Ereignisverwaltung erstellt. Solche von fortgeschrittenen MBS-Nutzern verwendeten Variablennamem wie Trigger oder Current_Speed habe ich deshalb bewußt nicht benutzt. Für mich war eigentlich nur wichtig, dass der Neuling meine EV dazu nutzt, durch Nachahmung ein Erfolgserlebnis zu haben, wenn er z.B. meine Lok durch eine andere(seine) Lok im Feld Name Lok ersetzt und sofort sieht, dass es funktioniert. Weitere angebotene Veränderungen können u.a sein: Änderung des Contdownintervalls, Änderung der Lokausgangsgeschwindigkeitt beim Beschleunigen oder Bremsem. Also nur kleine Veränderungen in der EV mit sofort sichtbaren optisch erkennbaren Auswirkungen.

Natürlich finde ich es etwas schade, wenn wie Deiner Aussage nach es mit der Freigabe durch Neo aus welchen Gründen auch immer noch eine Weile dauern kann. Ich muss aber auch gestehen, dass ich nicht weiß, wie ich eine Anlage als mbp-Datei exportieren kann und bitte Dich und weitere Interessenten abzuwarten.

 

Viele Grüße

Strei_Ross

 

 

 

 

Link to comment
Share on other sites

Hallo Streit-Ross,

ich habe mir Deine erfolgreich exportierte und angehängte mbp-Anlage angeschaut.

Stimmt: für den Einstieg ist dieses Anwendungsbeispiel sicher besser geeignet als mein deutlich komplexeres Beispiel, das ich demnächst ebenfalls in diesem Thread vorstellen werde. Durch die Reduktion des Beispiels auf die Grundfunktionen "Beschleunigen" und "Bremsen" bleibt auch die "Übersicht" gewahrt. 

Eine Frage habe ich aber noch: Hast Du die Schreibweise "++1" und "+-1" für die Veränderung der Geschwindigkeits-Variable bewusst gewählt (ich wusste gar nicht, dass das überhaupt geht)? Mit einfachem "+1" und nur mit "-1" hättest Du nämlich die Variablen-Änderung auch hinbekommen.

Viele Grüße
BahnLand

 

Link to comment
Share on other sites

Hallo Leute,

habe gerade ein kleines Beispiel für Beschleunigen und Bremsen gemacht.

Einfach den Kippschalter betätigen; der Zug beschleunigt im Halbbogen und auf der Geraden auf 240mm/s, und auf der Gegengeraden "langsamer" bremst der Zug auf 0. Die Formel ist ganz simpel: (Weg*2)/Speed (beim Bremsen=Ausgangsgeschwindigkeit, beim Beschleunigen die Endgeschwindigkeit) = Brems- bzw. Beschleunigungszeit. Die schneidet man in Scheibchen (Takt)(in meinem Fall 30). Das ist dann die Taktzeit für den Counter. Und die Speed zerlegt man auch (durch 30). Das ist dann der Anstieg/die Verzögerung pro Takt.

MfGaÖ

Vermanus

 

PS: Dank an quackster, die Originalanlage ist von ihm!

BeschleunigenBremsen.mbp

Edited by Vermanus
Link to comment
Share on other sites

Hallo,

wie man an den vorangegangen Beiträgen sieht, gibt es verschiedene Ansätze, eine gleichmäßige Beschleunigung oder Verzögerung zu realisieren. Der Hauptbaustein innerhalb der Ereignisverwaltung ist hier immer die Countdown-Schleife, mit der die Geschwindigkeit schrittweise angepasst wird. Das ist bei meiner Lösung auch nicht anders, wenn man von kleinen Detail-Unterschieden absieht.

Gesamtansicht.jpg

In dem für die Demonstration hergerichteten Gleisoval ist eine Signalstrecke eingebaut, deren "Schaltgleise" von links nach rechts ein Sperrgleis (violett), ein Haltegleis (rot), ein Bremsgleis (orange) und ein Einfahrgleis (blau) sind.

Gleisdetails.jpg

Beim Einfahren in die Signalstrecke von rechts nach links wird am Einfahrgleis das "Triebfahrzeug" des Zuges (jenes Fahrzeug, dem die Fahrgeschwindigkeit des Zuges zugeordnet ist) identifiziert. Bei der Einfahrt in das Bremsgleis beginnt die sukzessive Verzögerung bis zu einer "geringen" Annäherungsgeschwindigkeit, die dann beim Eintritt in das Haltegleis wieder schrittweise weiter auf 0 reduziert wird. Nach dem Öffnen des Signals wird der Zug wiederum sukzessive bis zu seiner Sollgeschwindigkeit beschleunigt. Das Sperrgleis ist bei mir immer vorgesehen, um ein versehentliches Überfahren des auf Halt stehenden Signals durch den Zug zu verhindern, oder ihn "absichtlich" mit minimaler Geschwindigkeit "auffahren" zu lassen, wenn es wichtig ist, dass der Zug erst direkt am Sperrgleis zum Stehen kommt.

Ereignisse + Variablen.png

Den im Zug vorhandenen "Rollmaterialien mit Antrieb" (das sind hier die 4 Triebköpfe, von vorne nach hinten durchnummeriert), wird vor dem Betrieb statisch eine Sollgeschwindigkeits-Variable zugewiesen und vorbelegt. Deren Wert kann hierbei für jedes Triebfahrzeug individuell festgelegt werden. Weiter gibt es noch die globalen statischen Variablen Bremsverzögerung, Halteverzögerung und Startbeschleunigung, die als "Stellschrauben" für den Grad der Beschleunigung und Verzögerung hergenommen werden können. Sie spezifizieren, nach wie vielen Sekunden (hier im Beispiel 0,15 Sekunden für das Abbremsen und 0,25 Sekunden für das Beschleunigen) der nächste Geschwindigkeitsschritt eingestellt werden soll. Je kleiner dieser Wert eingestellt wird, umso schneller wird die Beschleunigung oder Verzögerung vollzogen (und umgekehrt).

Die mit dem Präfix "G1" versehenen Variablen werden temporär verwendet, um für das Gleis des Signalabschnitts das beim Einfahrgleis identifizierte Triebfahrzeug und während des Brems- oder Beschleunigungs-Vorgangs den Ausgangsgeschwindigkeit ("Istgeschwindigkeit")  und die "Zielgeschwindigkeit" zu hinterlegen. Gibt es auf der Anlage mehrere Signalabschnitte, die gleichzeitig von verschiedenen Zügen befahren werden können, müssen für jeden Gleisabschnitt eigene Ausprägungen dieser Variablen verwendet werden (beispielsweise mit den Präfixen G2, G3 usw. versehen).

Bevor der Zug das erste Mal in Betrieb gesetzt wird oder wenn das Triebfahrzeug gewechselt werden soll oder durch "Umdrehen" seine Orientierung wechselt, muss zunächst eine Initialisierungsphase durchlaufen werden: Hierzu schaltet man in der Demo-Anlage den "Init-Schalter" ein. Hierdurch werden die Ereignisse für den "Betriebsablauf"  deaktiviert, sodass der Zug "von Hand" bewegt werden kann, ohne eine ungewollte Ereignisbehandlung auszulösen. Nun bewegt man den Zug mit der Maus oder durch eine Geschwindigkeitszuweisung vom Haltegleis weg. Nun weist man jenem Triebfahrzeug, das zukünftig den Zug "antreiben" soll, eine Geschwindigkeit zu, die den Zug wieder auf das Haltegleis fahren lässt (wir dann vom geschlossenen Sperrgleis gestoppt). Hierdurch wird das Triebfahrzeug durch die Ereignisverwaltung identifiziert und die Orientierung seiner Sollgeschwindigkeit korrekt (d.h. zum Signal hin ausgerichtet) festgelegt. Die Ereignisverwaltung hierzu sieht wie folgt aus:

EV Inititialisierung.PNG

Nach dieser "Initialisierung" kann der Init-Schalter zurückgesetzt werden (wird beim Betätigen des Signal-Schalters automatisch gemacht).

Für die Realisierung der Beschleunigung und Verzögerung des Zuges gibt es zwei Ereignis-Definitionen (Countdown-Ereignisse), die mit passend zugeteilten Werten für die Istgeschwindigkeit und Zielgeschwindigkeit für das Bremsen am Brems- und Haltegleis und für das Beschleunigen beim Öffnen des Signals sowohl bei positiver als auch bei negativer Sollgeschwindigkeit eingesetzt werden können:

EV_Beschleunigungen.PNG

Die "positive Beschleunigung" wird hierbei bei positiver Sollgeschwindigkeit zum Starten und bei negativer Sollgeschwindigkeit zum Bremsen des Zuges, die "negative Beschleunigung" genau umgekehrt zum Starten des Zuges mit negativer Sollgeschwindigkeit und zu dessen Abbremsung bei positiver Sollgeschwindigkeit verwendet.

Der Start des Beschleunigungs- oder Bremsvorgangs am Bremsgleis, am Haltegleis oder beim Öffnen des Signals erfolgt hierbei mithilfe der folgenden Ereignis-Definitionen:

EV Beschleunigungs-Aufruf.PNG

Hierbei wird für die zu startende Countdown-Schleife die automatische Wiederholung eingestellt. Der Countdown muss daher für jeden Brems- oder Beschleunigungsvorgang nur einmal aufgerufen werden und schaltet sich selbst ab, wenn die Zielgeschwindigkeit erreicht ist. Soll bereits vor dem Erreichen der Zielgeschwindigkeit ein anderer Countdown gestartet werden (z.B. wenn das Haltegleis "zu schnell" erreicht wird oder das Signal sich während des Bremsvorgangs öffnet, muss der laufende Countdown durch die Ereignisverwaltung gestoppt werden, bevor der neue gestartet wird (das Stoppen eines nicht laufenden Countdowns ist wirkungslos und muss daher nicht explizit verhindert werden).

Der Start des Zuges bei sich öffnendem Signal erfolgt über den Signal-Schalter. Das Signal schließt sich automatisch nach dem Passieren des Zuges und setzt damit auch den Signalschalter zurück. Wird das Signal geöffnet, bevor der Zug das Bremsgleis erreicht, fährt dieser ohne zu bremsen durch. Wird das Signal geöffnet, während der Zug gerade bremst, wird die Bremsung abgebrochen und durch die Beschleunigung ersetzt. Der Zug reagiert allerdings auf das Öffnen des Signals etwas verzögert, weil ich eine "Reaktionszeit des Lokführers" von 1 Sekunde eingebaut habe. Auch diese ist als "globale Variable" definiert und lässt sich somit als "Stellschraube" manipulieren.

Links von den Schaltern werden das ausgewählte Triebfahrzeug, dessen Sollgeschwindigkeit und die in jedem Countdown-Schritt des Beschleunigungs- oder Bremsvorgangs zugeordnete Istgeschwindigkeit angezeigt.

Warum kann es notwendig sein, auch ein "hinteres" Fahrzeug im Zug als "Triebfahrzeug" auszuwählen?
Als Beispiel sei hier der Metronom-Wendezug aus dem Online-Katalog genannt. Bei diesem ist nur die Lok (Baureihe 246) als "Rollmaterial Lok" definiert, nicht aber der Steuerwagen. Wenn man den Zug "Steuerwagen voraus" fahren lassen möchte, muss man daher der hinten fahrenden Lok die Geschwindigkeit zuweisen.

Nun hat man aber das Problem, dass sich dieser Zug nicht mehr durch eine Geschwindigkeits-Zuweisung über das Haltegleis starten lässt. Deshalb bin ich dazu übergegangen, beim Starten des Zuges dem Triebfahrzeug nicht mehr indirekt über das Gleis, sondern direkt die Geschwindigkeit zuzuordnen. Beim Bremsen (beim Eintritt in das Bremsgleis oder Haltegleis) kann man hierbei das Triebfahrzeug über die vordefinierte Objektvariable "_Trigger1" identifizieren. Beim Beschleunigen des Zuges nach dem Öffnen des Signals geht das nicht. Deshalb wird die Identität des Triebfahrzeugs bereits beim Befahren des Einfahrgleises zwischengespeichert und dann zum Starten des Zuges herangezogen.

Übrigens:
Die Zuweisung "=-50" für die temporäre Variable Zielgeschwindigkeit des Bremsvorgangs am Bremsgleis bei negativer Einfahrgeschwindigkeit ist zwingend notwendig, weil bei der Eingabe von "-50" ohne Gleichheitszeichen dieser Wert nicht als Absolutwert interpretiert, sondern vom vorgefundenen Wert abgezogen würde.

Anbei noch meine Demo-Anlage:

Beschleunigung abhängig von der Tfz-Orientierung.mbp

Viele Grüße
BahnLand

 

 

 

Link to comment
Share on other sites

Hallo BahnLand,

das mit dem "++1" und "+-1" habe ich so in mehreren anderen Beispielanlagen gefunden und einfach übernommen. Um einem Neuling davon abzuhalten, die Frage zu stellen, warum ein doppeltes + oder ein "entgegengesetztes" +- notwendig ist (ist es ja in der Tat wie in Deinem Hinweis nicht) habe ich meine EV schnurstracks geändert.

Wenn ich mir Deine EV betrachte, ist sie im Gegensatz zu meiner einfach gestrickten für einen Neuling (ohne eine von Ihnen unterschätzen zu wollen) einfach ein paar Nummern zu groß (zu kompliziert). Aber wir beide verfolgen ja auch ganz unterschiedliche Ziele.

Bleib trotzdem auf Deinem Niveau-auch aus einem Neuling kann en Experte wie Du werden.

Viele Grüße

Streit_Ross

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...