Jump to content

Empfohlene Beiträge

Geschrieben

Hallo Alle,

Mysterien für Einsteiger, Folge ca. 3:
(MBS Version 8.2.2.0)

Ziel: ein Zug soll

  • stoppen,
  • seine Fahrtrichtung umkehren,
  • zunächst aber noch stehen bleiben

Manuell alles ganz einfach: Im Kontroll-Widget für die Lok den Zug stoppen, dann auf den "Richtungswechsel"-Knopf klicken.
Die Anzeige im Widget (Dreiecks-Pfeil) springt entsprechend um.
Dann (irgendwann) manuell "Gas geben" --> Zug fährt rückwärts ab.
Wie erwartet.

Nicht wie erwartet die folgende Variante:
Es gibt einen Gleiskontakt und ein Skript, die dasselbe bewirken sollen.

--[[
    getestet in Version 8.2.2.0
--]]
vehicle = $("BR 89.0") -- Achtung: Name hier festverdrahtet (der Einfachheit halber)
print(">>>>>> Richtung vorher:  " .. tostring(vehicle.drivingDirection))     --> 1
dir = vehicle.drivingDirection
vehicle.targetSpeed = 0
vehicle.drivingDirection = (-1)*dir
print(">>>>>> Richtung nachher: " .. tostring(vehicle.drivingDirection))   --> -1

-- vehicle.targetSpeed = -3  -- (Zahl ist beliebig)  
-- vorige Zeile auskommentiert: Skript funktioniert für einzelne Loks, aber nicht für Züge
-- Zeile aktiviert: funktioniert auch für Züge (die dann aber logischerweise nicht stehen bleiben)

Für eine einzelne Lok klappt das auch.
Sobald die Lok aber auch nur einen Waggon zieht, funktioniert es nicht mehr:

  • Der Zug stoppt. OK.
  • Die Eigenschaft "drivingDirection" springt von +1 auf -1 (s. Ereignisprotokoll). Auch OK.
  • Aber die Anzeige im Kontroll-Widget springt nicht um.
  • Und wenn man dann manuell "Gas gibt", fährt der Zug vorwärts in der alten Richtung weiter.

Bonus-Mysterium: Setzt man aber im Skript nach der Richtungsumkehr noch eine negative targetSpeed ungleich 0 (s. drittletzte Zeile im Skript),
dann funktioniert wieder alles wie erwartet*:

  • Zug stoppt.
  • Richtungsanzeige springt um.
  • Zug fährt rückwärts ab (mit der neuen negativen targetSpeed)

Er soll aber erstmal stehenbleiben! >:(
Nur klappt das nicht mit targetSpeed 0 (ausser für einzelne Loks, s.o.).

Was übersehe ich diesmal?

Mikro-"Anlage" zum Ausprobieren anbei.

Danke für alle Tips.

Cheers,
El Ferrocarrilero

* ...und mit dieser targetSpeed- Anweisung kann man sich auch die ganze Richtungsumkehr-Logik im Skript sparen.
     Aber "-0" funktioniert nicht ;)

 

 

Demo_Richtungsumkehr_Zug.mbp

Geschrieben

Eventuell hilft das?

if not deferredCall then
  local v = vehicle
  if v:hasEngine() then
    v.engine.active = true
    v.targetSpeed = 0
  end

  defer(10, "Verzögerung")
elseif deferredCall == "Verzögerung" then
  local v = vehicle
  if v:hasEngine() then
    v.engine.active = true
    v.targetSpeedAbs = -20
  end
end

HG
Brummi

Geschrieben
vor 34 Minuten schrieb ElFerrocarrilero:
  • stoppen,
  • seine Fahrtrichtung umkehren,
  • zunächst aber noch stehen bleiben

bekommst du in dieser Tutorial Anlage:

24166EEB-60A7-4817-8925-8DBE75B4BCB1

Die Befehle sind:

HaltundFahrtrichtungsumkehrohneAbfahrt.jpg.c4c7cc55b8e1a15866b72f784f94d283.jpg

In der Anlage wird der Zug durch Aktivierung einer Fahrstraße gestartet. 
Damit das funktioniert und das Signal den Zug in Bewegung setzen kann, muss seine Fahrtrichtung vorher umgekehrt werden ohne, dass der Zug losfährt.

Viele Grüße
Götz

Geschrieben (bearbeitet)

Vielen Dank an @Roter Brummer und @Goetzfür die schnellen Antworten; die "Reaktionszeiten" auf diesem Forum sind hervorragend.
[Hinweis für kommende Generationen, die diese Forumsbeiträge lesen: Die von Götz erwähnte Tutorial-Anlage erfordert mindestens MBS-Version 8.5.]

Der Trick ist also, nach dem Stopp die Richtungsumkehr erst mit ein paar Sekunden  kleiner Verzögerung erfolgen zu lassen.
[Update: gerade noch getestet: auch eine Verzögerung von nur 0,5 sec reicht noch, nur 0  darf es nicht sein.]
(Wobei der Zug mit dem Code von Roter Brummer nach Verzögerung immer noch abfährt, mit dem Code von Götz aber wirklich stehen bleibt, wie gewünscht).
Wieder was gelernt!

Und das führt dann zu den beliebten Folge-Fragen, wie z.B.: Warum diese Verzögerung?
(Lieber nicht; das verwickelt uns womöglich in das komplizierte Gewirr von parallelen und wetteifernden (Computer-)Threads, oder ähnlichem...:o)

Sowie die allerdings ebenfalls "akademische" Frage:
Wie kommt es denn, dass eine einzelne Lok sich anders verhält (in diesem Szenario) als eine Lok+Waggon(s)?

Erst hatte ich die Vermutung, anders als beim grossen bzw 1:87 kleinen Vorbild sind die Waggons vielleicht nicht willenlose Einheiten, die halt alles mitmachen müssen, was ihnen die ziehende/schiebende Lok aufzwingt, sondern sie haben ihre eigenen Eigenschaften für Richtungswechsel etc, die dann auch noch berücksichtigt werden müssen.
Dem ist aber nicht so, es geht hier wirklich nur um die Lok. Und die benimmt sich hier mal so und mal anders, je nachdem ob was dranhängt oder nicht.

Wie auch immer, es funktioniert! *)
(Und die Module der Tutorial-Anlage (auch von Roter Brummer) sind prächtig; die werden das Role Model für meine vielen Mikro-"Anlagen" zu Lern- und Testzwecken. Motto: "Mehr Kühe!":x).

Thanks & Cheers,
El Ferrocarrilero

*) Dieses ist die Theorie: wenn's klappen müsst' -- und klappt doch nie.
   Und in der Praxis kehrt sichs um: es klappt -- doch keiner weiss, warum.
  :)

Bearbeitet von ElFerrocarrilero
update
Geschrieben
vor 28 Minuten schrieb ElFerrocarrilero:

Warum diese Verzögerung?

Wenn du dem Zug die Geschwindigkeit 0 zuweist, dann braucht er noch Zeit zum Bremsen. Und du willst die Fahrtrichtung erst dann ändern, wenn der Zug wirklich steht.

vor 30 Minuten schrieb ElFerrocarrilero:

Wie kommt es denn, dass eine einzelne Lok sich anders verhält (in diesem Szenario) als eine Lok+Waggon(s)?

Eventuell haben die Loks unterschiedliche Verzögerungszeiten.
Mit den Waggons hat das sicher nichts zu tun. Die haben (im Zugverband) keine Schwungmasse.
Aber es macht einen Unterschied, ob die Lok sanft oder brutal gebremst wird.

 

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