Jump to content

Lokrichtung


pfjoh

Empfohlene Beiträge

Guten morgen

ich hab ein kleines Problem. Ich habe vor das ein Güterzug im Bahnhof mit +kmh in den Bahnhof einfährt.Lok kuppelt dann ab, umfährt den Zug kuppelt hinten wieder an, und verlässt den Bahnhof mit -kmh. Im Schatten Bahnhof durchfährt sie dann eine Kehrschleife und kommt wieder zurück, Und hier das Problem . Diesmal kommt sie mit -kmh zurück. Das Abkuppeln, Umfahren usw müste jetzt mit umgekehrten Vorzeichen bei den Geschwindikeiten sein. Wie kann mann das am besten lösen??

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo pfjoh,
dieses Problem habe ich in den nächsten Tagen auch vor mir, da ich im Rangierbahnhof ebenfalls eine Wendeschleife eingebaut habe. Ich kann jetzt noch keine endgültige Lösung präsentieren, aber sie wird ungefähr so aussehen:

die Lok kriegt in ihren Objektvariablen eine Variable namens 'Rangiergeschwindigkeit'. Und gib ihr gleiche noch eine Variable 'istRangierlok' mit, die Du auf 1 setzt. Die Rangiergeschwindigkeit setzt Du, wenn Du sie erzeugst, auf einen Anfangswert. An einem bestimmten Punkt der Rangieroperation machst Du dann ein Ereignis, was z.B. sagt:

Auslöser: Fahrzeug betritt Gleis,
Bedingung: Variable hat den Wert _Trigger1.istRangierlok  mit Wert 1.
Aktionsteil:
1. Variable setzen: _Trigger1.Rangiergeschwindigkeit  Wert: *-1
2. Fahrzeuggeschwindigkeit setzen: Auslöser 1 auf $_Trigger1.Rangiergeschwindigkeit

Die Multiplikation mit -1 ist das, was hier gebraucht wird. Sind die Variablen gar nicht vorhanden, wird die Aktion von der EV ignoriert, Loks, die nicht als Rangierloks markiert sind, reagieren also gar nicht darauf.

Soweit meine erste schnelle (und wohl noch unausgereifte) Überlegung zu dem Thema, wobei ich auch dankbar für Informationen von Mitgliedern bin, die da mehr Erfahrung haben als ich.

Gruß
  Andy

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @pfjoh und @Andy,

beim Ereignis "Zug betritt Gleis" kann man mittels "_Trigger1._CurrentSpeed" die aktuelle Geschwindigkeit des einfahrenden Zuges auf das Vorzeichen abfragen (z.B. "$_Trigger1._CurrentSpeed > 0"). Legt man dann die oben genannte Zahl "1" oder "-1" entsprechend in einer Variable ab, kann man diese zur späteren Festlegung der positiven oder negativen Geschwindigkeit verwenden.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe nochmal ein Beispiel angehängt, in dem ich zusätzlich auch das Verhalten der EV aufzeige, was ich persönlich gebraucht habe.
Der ET hat zwei Objektvariablen! istRangierlok und Rangiergeschwindigkeit - ist zwar Blasphemie, aber ich habe eine lange Lok gebraucht!
Man sollte im Beispiel mit beliebig vielen Anhängern oder auch ohne testen.

Der Kippschalter Start startet das Beispiel, die Variablen werden gesetzt, der Zug in Bewegung gesetzt.
Die Lampen zeigen nun, für welche Gleise die Bedingung 'Fahrzeug steht auf Gleis' gilt,
ein weiteres Ereignis reagiert auf 'Fahrzeug verläßt Gleis' und stoppt den Zug sofort, wenn es passiert.

In beiden Fällen gilt es für den ganzen Zug, und die Lok alleine kann durchaus auf mehreren Gleisen die Bedingung erfüllen. Was ebenso für einen einzelnen Wagen gelten kann.

Der andere Schalter schaltet die Objektgeschwindigkeit um und gibt sie an den Zug.

Grüße
  Andy

EVtest.mbp

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

37197BAC-37EB-4638-97BC-42AB19AC0854

Guten Tag ihr beiden EV Spezialisten. Danke erst mal für die schnellen Antworten.  Verstanden hab ich dabei rein gar nichts, lacht, das liegt nicht an euch sondern an meinen Verständnis für Variablen in der EV. Ich hab das kurz mal gebaut. Wenn ihr auf Animation start drückt funktioniert das ganze ja erst mal ohne Problem bis eben der Zug dann zurück kommt. Ich bitte euch jetzt mal ganz lieb daß ihr die EV  eben für die umgekehrten Vorzeichen der Geschwindigkeit modifiziert. Vieleicht kapier ich es wenn ich es dann in der EV lesen bzw nachvollziehen kann.

mit besten Dank im voraus Hans

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hans,

anbei zwei Korrektur-Entwürfe für Dein Kehrschleifen-Beispiel:

Test kehrschleife_2.mbp
Minimale Änderung. Verwendung von 2 Variablen für die Streckengeschwindigeit ("Fahren") ud die Rangiergeschwindigkeit ("Rangieren"). Diese Variablen wechseln in bestimmten Situationen ihr Vorzeichen (*-1). Bei der expliziten Zuordnung einer negativen Geschwindigkeit (hier "-10") muss das Gleichheitszeichen davor geschrieben werden ("=-10"). Sonst wird die Zuweisung als "Abziehen vom aktuellen Wert" interpretiert.

Test kehrschleife_3.mbp
Verallgemeinerung als Vorgriff auf die Verwendung unterschiedliecher Triebfahrzeuge. Es wird eine zusätzliche Variable "Triebfahrzeug" angelegt, in der das "in den Bahnhof" einfahrende Triebfahrzeug "hinterlegt" wird. In allen weiteren Referenzen des Triebfahrzeugs wird nun der Inhalt dieser Variable zugewiesen. Dies geschieht insbesondere auch bei der Geschwindigkeitszuweisung, um zu verhindern, dass diese gleichzeitig auch für andere Triebfahrzeuge  wirksam wird (statt Geschwindigkeitszuweisung an "alle Loks auf allen Gleisen" nun Zuweisung an "Lok $Triebfahrzeug auf allen Gleisen" - damit werden andere Loks nicht mehr mit einbezogen).

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe auch eine Lösung, die aber ziemlich speziell auf das Problem zugeschnitten ist, und vermutlich sehr an Bahnland's erste Version erinnert.
Ich habe dabei vier Geschwindigkeitsvariablen (für jede gesetzte Geschwindigkeit eine, Anfangsgeschwindigkeit inclusive). Am Abfahrpunkt werden alle vier mal minus 1 genommen und dann wird weiter gefahren. Das bedeutet aber, dass sich das System darauf verläßt, dass die Lok beim nächsten Mal mit der negierten Geschwindigkeit auch wieder reinkommt. Für eine zweite Lösung war Bahnland mit seiner Routine natürlich viel schneller. Die werde ich mir sehr interessiert noch mal ansehen.

@BahnLand
Ich mag das bekannterweise gar nicht mit den negativen Geschwindigkeiten. Mir wäre eine stets positive Geschwindigkeit lieber, desweiteren zwei Fahrtrichtungsobjektvariablen, eine, die vorwärts/rückwärts festlegt, und dann noch eine globale für die generelle Orientierung, Rechts/Linkssystem (das ist aber sehr mathematisch...).
Und ferner wäre es unbedingt wichtig zu erfahren, welches Objekt eine Variable ändert, damit ich im gleichen Objekt direkt andere Variablen beeinflussen kann.

Grüße
  Andy

 

kehrschleife2.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hüllo Andy,

um Geschwindigkeitswerte mit negativem Voezeichen wirst Du hier nicht herumkommen, da das Modellbahn-Studio eben so programmiert ist. "Positiv/negativ" ist hier die programmtechnische Umsetzung von "vorwärts/rückwärts". Oder anders interpretiert: Das Vorzeichen ist hier halt der "Fahrtrichtungsschalter". Ich wüsste nicht, wie man den Geschwindgkeitsbetrag und die Geschwindigkeitsorientierung sonst in einem Wert zusammengefasst darstellen könnte. Und immer zwei getrennte Werte für den Geschwindigkeitsbetrag und dessen Orientierung mitzuführen, würde die Programmierung um einiges verkomplizieren.

Übrigens habe ich das obige Anlagenbeispiel nochmals etwas verändert, indem ich eine zweite Lok hinzugefügt habe:

Test kehrschleife_4.mbp

Das Beispiel funktioniert aber nur, solange die Loklänge nicht verändert wird (also die zweite Lok ebenfalls die Länge der ursprünglich eingesetzten 216 besitzt). Der Grund dafür liegt darin, dass bei einer längeren Zuglok der letzte Wagen des Güterzugs zu weit hinten zum Stehen kommt und damit in das "Schaltgleis" für das Ankoppeln "stop03" hineinragt (oder dieses sogar überragt). Wenn dann die Ersatzlok zu früh ankuppelt, wird das "Zug-betritt-Gleis"-Ereignis nicht mehr wirksam, und die Ereignissteuerung gerät durcheinander. Ist die zweite Lok dagegen kürzer als eine 216, ist der Güterzug insgesamt kürzer, sodass der letzte Wagen weiter vorne zum Stehen kommt. Dann ist der voreingestellte Bremsweg der ablösenden Lok zu kurz, um ankuppeln zu können.

Man kann dieses Problem lösen, indem man das Anhalten des einfahrenden Güterzugs nicht vom Ereignis "Zug betritt Gleis stop-01", sondern stattdessen vom Ereignis "Zug verlässt Gleis stop03" oder alternativ "Zug verlässt Gleis sk 04" abhängig macht. Dann ist die Position des letzen Wagens des angehaltenenen Güterzugs relativ zum "Ankuppel"-Gleis "stop03" immer konstant (unabhängig von der Loklänge), und der eingestellte Bremsweg für die ablösende Lok kann immer gleich gewählt werden.

Und jetzt nochmal "erfolgreiches Probieren und Studieren"! :D

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen

Also ich sitze jetzt da mit offenen Mund und staune. Ich hab es zwar noch nicht ganz kapiert (sowas dauert etwas bei mir, das nach zu vollziehen), aber ja so wollte ich es. Besonders das mit den zwei Loks war im Hinterkopf. Danke. Vielen Dank an euch beide.

Muss mal gesagt werden, hier im Forum gibt es wirklich eine Menge tolle hilfsbereite Leute (y)(y)(y)

MfG Hans

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo bahnland,

ich hätte hier zu deiner testkehrschleife 4 auch noch eine frage dazu. wie hast du das gemacht, dass der zug mit der 2. lok beim ankoppeln nicht weiter rückwärts fährt ohne einen Prellbock? ... habe mal sowas ähnliches ausprobiert bin aber dann irgendwie nicht weiter gekommen. ich finde diese Idee von dir großartig (y)...gruß schlagerfuzzi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Schlagerfuzzi,

die hier realisierte Technik hatte @pfjoh schon in seiner Original-Testanlage (Content-ID = 37197BAC-37EB-4638-97BC-42AB19AC0854) eingebaut (die Idee stammt also von ihm): 

Das für das "rechtzeitige" Abbremsen verantwortliche Gleisstück ist "stop03". Kommt die Lok aus dem Stumpfgleis rechts, trifft in der Ereignisdefinition "ankuppeln" die Bedingung "Weiche dkw01 steht auf Position 0" zu, und die in das Gleis "stop03" einfahrende Lok wird angehalten. Dass sie dabei gerade am Ende des Wagenzuges zum Stehen kommt, liegt daran, dass

  1. der Wagenzug immer an derselben Stelle steht (deshalb müssen die Loks alle gleich lang sein und der Abstand zwischen den beiden Stoppgleisen "stop03" und "stop 01" zur Länge des Zuges passen), und
  2. die Bremsverzögerung der Lok dazu passend eingestellt ist.

Da die oben genannte Bedingung nicht erfüllt ist, wenn der Zug von der "freien Strecke" kommend in das "Bahnhofsgleis" einfährt, wird hier die Ereignisdefinition "ankuppeln" nicht wirksam, und der Zug kann bis zum Gleis "stop 01" vorfahren, um dann dort durch die Ereignisdefinition "stop 01" angehalten zu werden.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

es hat mir keine Ruhe gelassen - ich musste auch noch die Variante mit der Ereignisdefinition "Zug verlässt Gleis" realisieren.

Test kehrschleife_5.mbp

Hierbei ist folgendes zu beachten:

  1. In der Ereignisdefinition "stop 01" wird anstelle von "Zug betritt Gleis stop 01" als Auslöser "Zug verlässt Gleis sk 04" verwendet. Das Zugende befindet sich beim Auslösen des Ereignisses exakt an jener Stelle, an der sich die Front der Ersatzlok bei der Auslösung des Ereignisses "ankuppeln" befindet ("Zug betritt Gleis stop03"). Damit die Ersatzlok "sauber" ankuppelt, müssen die Bremswege des einfahrenden Zuges und der ankuppelnden Lok exakt gleich lang sein. Dies erreicht man am einfachsten, indem man bei beiden Fahrzeugen mit derselben Bremsverzögerung aus derselben Ausgangsgeschwindigkeit abbremst.
  2. Damit der einfahrende Zug vor dem Anhalten die "Rangiergeschwindigkeit" der ankuppelnden Lok besitzt, muss er vorher abgebremst werden. Dies geschieht über eine neue Ereignisdefinition "brems 01", die durch das Verlassen der Doppelgreuzungsweiche "dkw 01" ausgelöst wird. Die Länge des anschließenden Gleises "sk 04" reicht aus, um den einfahrenden Zug aus der "Reisegeschwindigkeit" auf die "Rangiergeschwindigkeit" abzubremsen.
  3. Da auch der ausfahrende Güterzug die Ereignisse "stop 01" und "brems 01" auslöst, muss in beiden Definitionen über eine Zusatzbedingung verhindert werden, dass die Aktionen dieser Ereignisse bei der Ausfahrt ausgeführt werden. Dies geschieht, indem man in beiden Definitionen die Belegung des Bahnhof-seitigen Nachbargleises (also des Gleises "sk 04" bzw. "stop03") voraussetzt. Für die Ereignisdefinition "brems 01" reicht dies allerdings nicht aus, weil auch die Ersatzlok beim Vorziehen auf das rechte Stumpfgleis die Kreuzungsweiche verlässt und damit ebenfalls das Ereignis "brems 01" auslöst. Da hier jedoch die Bedingung "Fahrzeug steht auf Gleis sk 04" durch den ausfahrbereiten Güterzug erfüllt ist, die Aktionen dieser Ereignisdefinition aber trotzdem nicht ausgeführt werden dürfen, ist hier noch eine zweite Bedingung erforderlich, für die ich "Weiche dkw 01 steht auf Position 3" verwendet habe. Denn diese Bedingung ist beim einfahrenden Güterzug erfüllt, nicht jedoch beim Erreichen des Stumpfgleises durch die Ersatzlok.
  4. Zum Abbremsen des eintreffenden Güterzugs auf die Rangiergeschwindigkeit muss nun noch festgestellt werden, ob die Zuglok dem Wagenzug vorwärts oder rückwärts vorgespannt ist und ihre Geschwindigkeit entsrechend ein positives oder negatives Vorzeichen besitzt, Dieses muss natürlich zur Eingabe der Rangiergeschwindigkeit als Zielgeschwindigkeit mit übernommen werden. Deshalb muss in Abhängigkeit von (z.B.) der Bedingung "Zuggeschwindigkeit > 0" die Zielgeschwindigkeit für das Abbremsen ohne oder mit Minuszeichen eingegeben werden. Wir haben nun für das Abbremsen des Zuges zwei voneinander unabhängige Bedingungen auszuwerten:

    a) Die Fahrtrichtung des Zuges entscheidet, ob das Ereignis "Zug verlässt Gleis dkw 01" überhaupt bearbeitet werden soll.
    b) Die Orientierung der Zuglok entscheidet, ob auf einen positiven oder negativen Geschwindigkeitswert abgebremst werden soll.

    Beide Bedingungen lassen sich nicht zur einer Gesamtbedingung verknüpfen. Deshalb wird die Eregnisdefinition "brems 01" in zwei hintereinander auszuführende Ereignisdefinitionen aufgesplittet:

    Ereignis "Zug verlässt Gleis dkw 01":
    Ausführung nur bei der Einfahrt des Zuges in das Bahnhofsgleis, Identifizierung der Zuglok und Hinterlegung von deren Einfahrgeschwindigkeit wegen des Vorzeichens,
    Anstoß einer Folgebearbeitung mittels des Countdowns "bremsen" mit Wartezeit 0.

    Ereignis "Countdown bremsen läuft ab":
    Zuweisung der Rangiergeschwindigkeit in Abhängigkeit von der Bedinging, welche die Orientierung der Zuglok (das Vorzeichen der Geschwindigkeit) auswertet.

Neben den oben beschriebenen zwei zusätzlichen Ereignisdefinitionen und der entsprechenden Anpassung der Ereignisdefinition für das Anhalten des eingetroffenen Güterzuges habe ich zu Demonstration der "allgemeinen Tauglichkeit" noch folgende Änderungen vorgenommen:

  • Die zweite Lok ist eine V200 und hat somit eine andere Länge als die ursprüngliche 218.
  • Der Güterzug besitzt einen Wagen mehr und hat daher eine andere Länge.
  • Die Geschwindigkeiten sind um den Faktor 3 erhöht (Fahrgeschwindigkeit = 60 km/h, Rangiergeschwindigkeit = 30 km/h). Hierdurch soll einerseits gezeigt werden, dass der Mechanismus auch mit anderen Geschwindigkeiten funktioniert. Andererseits wird dadurch auch der Gesamtablauf etwas beschleunigt.
  • Anfahrbeschleunigung und Bremsverzögerung wurden entsprechend an die neuen Geschwindigkeiten angepasst. Insbesondere die Bremsverzögerung muss für beide Loks identisch sein, damit die Bremswege für ein "sauberes" Ankuppeln identisch sind.

Und nun viel Spaß mit der neuen Variante von @pfjoh's Beispiel-Anlage.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...