Jump to content

Pendelzug-Steuerung


Empfohlene Beiträge

Hallo Modellbahn-Studiosi,

irgendwie stehe ich auf dem Schlauch. Ich möchte über die Ereignisverwaltung eine Pendelzug-Steuerung aufbauen. Dabei soll der Zug aber nicht dadurch wenden, dass er auf ein Gleisende oder einen Prellbock auffährt, sondern er soll auf einem Haltegleis anhalten und dann in entgegen gesetzter Fahrtrichtung wieder wegfahren.

Das ist ja alles kein Problem, solange auf einer Strecke nur hin und her gefahren wird. Wenn aber jetzt an einem Ende der Strecke, wie bei mir, eine Kehrschleife eingebaut ist, kommt der Zug ja mit derselben Richtung wieder an den Wendepunkt zurück. Und da ist mein Probblem.

Ich suche nach einer Steurungsmöglichkeit die folgendes bewirkt:

  1. Zug nähert sich dem Endpunkt
  2. Geschwindigkeit verinngert sich von +200 mm/s auf +100 mm/s (wenn Zug vorher mit +200 mm/s gefahren ist) oder von -200 mm/s auf -100 mm/s (wenn Zug vorher mit -200 mm/s gefahren ist)
  3. Zug hält an (kein Problem)
  4. Wartezeit läuft ab (kein Problem)
  5. Zug fährt mit -200 mm/s ab (wenn Zug vorher mit +100 mm/s gefahren ist) oder Zug fährt mit +200 mm/s ab (wenn Zug vorher mit -100 mm/s gefahren ist)

Es müsste also eine Möglichkeit geben, die vorher gefahrene Geschwindigkeit und Richtung auszulesen und zu speichern um sie als Bedingung für die nächste Aktion zu setzen.

Wer kann da helfen?

Vielen Dank

Brummi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Brummi,

schau Dir doch bitte mal die Anlage "Automatik-Steuerung 05a - Streckenvereinigung und -verzweigung" aus dem Online-Katalog in der Kategorie "Experimentelle Anlagen" an. Dort wird zwar nicht die Fahrtrichtung einer Lok umgekehrt, aber es fahren Loks mit unterschiedlichen Ausrichtungen über dieselben Haltegleise. Das zu lösende Problem ist also mit Deinem vergleichbar. Jeder Lok und jedem Haltegleis sind Objektvariablen zugeordnet, deren Werte gegenseitig ausgetauscht und ausgewertet werden. So ist es möglich, festzustellen, ob eine einfahrende Lok eine positive oder negative Geschwindigkeit besitzt, die dann beim Weiterfahren mit demselben Vorzeichen wieder an die Lok zurückgegeben werden muss. Bei Deinem Problem, wo der Zug in der entgegengesetzten Richtung wieder ausfahren soll, muss das Vorzeichen dann eben umgekehrt werden (Multiplikation mit "-1").

Im Forumsbeitrag Anlagen "Automatik-Steuerung 01" bis "Automatik-Steuerung 07b" habe ich die Anlage im Abschnitt "Automatik-Steuerung 05a - Streckenvereinigung und -verzweigung" kurz beschrieben. Was das allgemeine (weiche) Abbremsen eines Zuges betrifft (ist in der besagten Demo-Anlage auch für beide "Geschwindigkeits-Richtungen" eingebaut), kann ich Dich auch auf das Wiki zum Thema "Automatische Zugsteuerung mit der Ereignisverwaltung" verweisen, wo ich zu diesem Thema einiges beschrieben habe.

Viel Spaß beim Verwirklichen Deiner Zugautomatik wünscht Dir
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Bahnland,

vielen Dank für den Tipp. Das mit dem Triggern der Lokgeschwindigkeit habe ich glaube ich jetzt begriffen ($_Trigger1._CurrentSpeed). Kann ich an einer anderen Stelle der Anlage gut gebrauchen. Allerdings kann das bei umgekehrter Ausfahrt nach Wartezeit ja nicht funktionieren, da die Lokgeschwindigkeit ja =0 ist. Von daher kann das MBS jetzt nicht wissen, ob mit Geschwindigkeit + oder - ausgefahren werden soll.

Im Moment habe ich mir mit einem Schalter geholfen, der bei jedem Stopp einmal umgeschaltet wird und damit die nächste Fahrtrichtung vorgibt. Ist zwar nicht sehr elegant, funktioniert aber.

LG

Brummi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Brummi,

deshalb brauchst Du auch eine dem Haltegleis zugeordnete Objektvariable, in der Du die Geschwindigkeit (insbesondere deren Vorzeichen), die der Zug beim Einfahren (also vor dem Anhalten) besitzt, zwischenspeicherst. Diese Geschwindigkeit kannst Du dann für den Start des Zuges auslesen, negieren und dem Zug als neue Geschwindigkeit zuweisen. Schau Dir bitte die Ereignisverwaltung zu oben genannter Anlage an. Dort habe ich es so gemacht (nur dass "mein" Zug dann in derselben Richtung weiter fährt (keine Negierung).

Du benötigst diesen Mechanismus nicht nur, um die Geschwindigkeitsrichtung festzustellen, sondern auch um deren Betrag festzuhalten, wenn die am Haltegleis zum Stehen kommenden Züge unterschiedliche Endgeschwindigkeiten haben sollen (z.B. Schnellzug und Bummelzug). Auf der besagten Anlage fahren 3 Züge, von denen der mit der Diesellok V200 bespannte schneller als die beiden anderen ist. Den beiden anderen ist jeweils ein 86er-Dampflok vorgespannt, jedoch einmal vorwärts und einmal rückwärts. Entsprechend besitzt einer der beiden Züge eine positive, der andere eine negative Geschwindigkeit.

Beim Einfahren eines der Züge in eines der Bahnsteiggleise muss, da die Kombination Haltegleis + einfahrender Zug "zufällig" ist (wird zumindest als "zufällig" betrachtet), beim Einfahren festgestellt werden, welche Geschwindigkeit (einschließlich Vorzeichen) der Zug besitzt. Dieser Wert wird in einer dem Haltegleis zugeordneten Objektvariable abgespeichert. Wenn der Zug wieder losfahren soll, ist bekannt, von welchem Haltegleis der Zug startet, also welche Haltegleis-bezogene Objektvariable ausgewertet werden muss. Diese enthält von der vorangehenden Einfahrt her die ursprüngliche Geschwindigkeit und Fahrtrichtung (Vorzeichen) des Zuges. Man muss also zum Start nur den Inhalt dieser Objektvariable dem zu starteten Zug zuordnen, damit dieser mit dem ursprünglichen Geschwindigkeitswert und auch der korrekten Richtung weiter fährt. In Deinem Fall muss man halt zusätzlich noch das Vorzeichen der ausgelesenen Geschwindigkeit wechseln, damit der Zug in die entgegengesetzte Richtung ausfährt.

Achtung:
Dieser Mechanismus funktioniert nur, wenn Du die beim Starten nach dem Anhalten zuzuweisenden Geschwindigkeit jenem Fahrzeug zuordnest, von welchem Du sie bei der Einfahrt festgestellt hast. Wenn also eine ziehende Lok einfährt, muss sie anschließend den Zug in der Gegenrichtung schieben, oder Du musst sie umsetzen. Soll der Zug dagegen in der Gegenrichtung (d.h. nach dem Wenden) von einem am anderen Ende des Zuges positionierten Fahrzeug gezogen werden (z.B. vom anderen Triebkopf, Steuerwagen oder der hinteren Lok eines "Sandwich"-Zuges), so kannst Du zwar auch ihr zumindest betragsmäßig die zuvor hinterlegte Geschwindigkeit zuweisen, das zu verwendende Vorzeichen hängt aber von der Ausrichtung des bisher hinteren Fahrzeugs ab, die nicht unbedingt mit jener des bisherigen Zugfahrzeugs übereinstimmen muss. Da beim Einfahren nur die Geschwindigkeits-Eigenschaften des ziehenden Fahrzeugs erfasst werden (das hintere Fahrzeug wird ja in diesem Moment "antriebslos" gezogen) kann dessen Orientierung hier nicht festgestellt werden. Hier empfiehlt es sich, für beide Endfahrzeuge des Zuges immer dieselbe Orientierungs-Relation zu verwenden, oder in einer dem Zug zugeordneten Variable festzuhalten, ob beim Wenden des Zuges ein Vorzeichenwechsel bei der Geschwindigkeit erforderlich ist (Orientierung beider Loks/Steuerwagen/Triebköpfe zeigen in dieselbe Richtung) oder nicht (beide Loks sind jeweils in Zugrichtung nach "vorne" orientiert). Oder man legt diese Eigenschaften explizit fest und programmiert sie dann direkt in die Ereignisverwaltung ein.

So, jetzt hoffe ich, dass ich Dich nicht zu sehr "zugemüllt" habe und Du mit diesen Hinweisen weiter kommst.

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...