Jump to content

Problem: Ereignis "Lok stoppt" und Verzögerung


Recommended Posts

Hallo @Neo

Es gibt ein kleines Problemchen mit der Verzögerung in dem neuen Ereignis: Lok stoppt.

Es scheint so, als würde das MBS die Verzögerung auf das letzte ZURÜCKLIEGENDE Stop der Lok beziehen.
Das gibt bei folgendem Beispiel Probleme:

Eine Lok fährt auf einen Bremskontakt zu und stoppt dort.
Dieser Gleiskontakt setzt dann eine Variable, die beim NÄCHSTEN Stop der Lok bestimmt, was das Stop-Ereignis tun soll.
In der Stop-Ereignis Routine ist aber eine 5s Verzögerung eingebaut.
Was passiert: Das Ereignis wird 5s nach dem Stop beim Gleiskontakt ausgeführt und nicht erst beim NÄCHSTEN Stop der Lok.

Ich hoffe ich hab mich verständlich ausgedrückt.
Hab leider kein Beispiel, da das in einer komplexen Steuerung auftritt.

Kann man dieses Problem schon im MBS Code irgendwie umgehen?
Es bräuchte irgendwie einen RESET (benutzergesteuert?) des Stop Ereignisses, wenn noch eine Verzögerung läuft,
man aber schon das nächste Stop Ereignis definieren möchte.

Gruß
Thomas

 

Edited by HaNNoveraNer
Link to comment
Share on other sites

Hallo Thomas,

anhand deiner Beschreibung kann ich leider keinen Fehler ausmachen, für mich klingt es so, als würde die Verzögerung genau das machen, was sie soll, nämlich eine Aktion verzögern.

Ohne (extrahiertes) Beispiel werden wir nur raten können.

Viele Grüße,

Neo

Link to comment
Share on other sites

Hallo @Neo

Achte auf die untere Weiche. Die soll erst 5s nachdem die Lok angekuppelt hat auf GERADEAUS geschaltet werden.
Das Flag dazu wird im Gleiskontakt gesetzt.
Erst wenn das Flag gesetzt ist, soll das Lokstop-Ereignis seine Aktion beim nächsten Stop durchführen.
Nicht schon vorher, wie leider in diesem Beispiel.

aaa.mbp

 

Edited by HaNNoveraNer
Link to comment
Share on other sites

vor 6 Stunden schrieb HaNNoveraNer:

Aber eine kleine Falle ist es schon.

... die du dir da selbst stellst.

Ab Überfahren des Kontakts wartet die EV 5 Sekunden, dann setzt sie den Wert auf 1

Ab Anhalten (also minimal später!) wartet die EV ebenfalls 5 Sekunden, dann prüft sie, ob der Wert 1 ist. Und natürlich ist er das.
Er wurde ja einen Sekundenbruchteil vorher umgeschaltet.

Denn ein Zug kommt kurz nach Überfahren des Kontakts zum Stillstand.
Weil der Zug auf dem Kontakt stehen soll, der ihn stoppt. Damit man ihn ansprechen kann, wenn man ihn wieder losschicken will.

Du musst das Setzen der Variablen also etwas mehr verzögern.

770877950_Verzgerungen.jpg.c5341d2767470aeb21748475a2f85183.jpg

Eine Sekunde würde auch schon reichen. Ich war faul und habe die erste Verzögerung kopiert.

Viele Grüße
Götz

Nachtrag: Deine Lösung ist die bessere!

Edited by Goetz
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
×
×
  • Create New...