Jump to content

Problem: Ereignis "Lok stoppt" und Verzögerung


Empfohlene Beiträge

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

 

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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

 

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Bearbeitet von Goetz
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...