Jump to content

Ereignis Lokstart


MarkoP

Empfohlene Beiträge

  • 2 Wochen später...

Hallo Neo,

ich möchte einfach nur eine Information das sich eine Lok in Bewegung gesetzt hat.
Realisierbar wäre das heute schon, wenn man für jede Lok eine Countdownschleife mit der Abfrage "_CurrentSpeed > 0" in die EV schreibt. Es wäre jedoch einfacher - speziell wenn auch die Bewegungsrichtung angegeben würde - wenn ein Ereignis in der EV greift wenn "_CurrentSpeed" von 0 abweicht.

Dann kann man einfach die Fahrtrichtung feststellen oder auch davon abhängig andere Aktionen ausführen lassen.

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo MarkoP,

die Information, daß sich eine Lok im Bewegung gesetzt hat, hast Du bereits in dem Ereignis, mit dem DU die Lok in der EV gestartet hast. Ein manueller Start einer Lok ohne EV-Bezug ist meiner Meinung nach kontraproduktv, da dieses die EV durcheinander bringen wird.

:)Tipp: Denk Dir mal eine andere Strategie aus, die ohne Countdowns auskommt - das schont die Performance und ist besser kontrollier- und nachvollziehbar. Manchmal ist einfacher = besser.

aber das ist meine ganz persönliche Auffassung ...

Grüße,

Hery

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo MarkoP,

Zitat

ich möchte einfach nur eine Information das sich eine Lok in Bewegung gesetzt hat...

... Henry hat es schon angedeutet aber ich frage noch einmal nach:

Als Ereignis "Lok setzt sich in Bewegung" macht doch wirklich nur Sinn, wenn Du in der EV auf einen manuellen Lokstart reagieren möchtest... darum frage ich mal direkt nach: möchtest Du das? ... oder hast Du mal ein konkretes Anwendungsbeispiel (MBS-Projekt), das Dein Problem besser verdeutlicht?

... eine von der Bewegungsrichtung einer Lok abhängige Aktion kannst Du doch damit erreichen indem Du...

1) ...in der EV unter Bedingungen die Variable xx._CurrentSpeed auf >0 abfragst und

2) ...als Aktion die beiden Möglichkeiten - Aktionen für "Bedingungen sind erfüllt" - und - Aktionen für "Bedingungen sind NICHT erfüllt" - nutzt.

Gruß

EASY

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Henry, Easy,

ich versuche Countdowns zu vermeiden wo ich nur kann, deshalb möchte ich ja gerne auf eine andere Art prüfen ob sich eine Lok in Bewegung gesetzt hat.

Es geht mir nicht um manuelle Lokstarts. Auf meinen Anlagen sind in der Regel Aktionen Auslöser für andere Aktionen. Zum Beispiel "Zug betritt ein Gleis" in einem Bahnhof aktiviert je nach Bedingung eine Lok in einem Abstellbereich. Entweder um die Loks auszutauschen wie bei einem richtigen Zugbetrieb oder um einfach nur Abhängigkeiten zu schaffen. Das bedeutet aber, dass ich für jede Eventualität die bei "Zug betritt ein Gleis" einen Ablauf in die EV schreiben müsste um zu prüfen ob und welche Lok sich in Bewegung setzt, was ja unter Umständen gar nicht passieren soll. Oder Loks die in einem Schattenbahnhof abgestellt sind werden über eine Kontrollleuchte/Kippschalter manuell angefordert ohne zu wissen welche Lok sich aktuell auf dem betroffenen Abstellgleis befindet. Ich wüsste zwar, dass die Lok fährt, aber nicht um welche es sich handelt. Und alle paar Gleiselemente ein kurzes Gleis zum Auslesen der Objektvariablen per "Zug betriett Gleis" ist auch nicht sinnvoll.

Das Problem dabei sind zum einen die Bedingungen, welche nicht jedesmal die neue Lok starten, und zum anderen das ich die zu startende Lok nicht benennen kann/will. Ich will den Lok's per EV Namen zu weisen welche über die EV angesprochen werden, so dass selbst der Triebwagen eines ICE ausgetauscht werden kann ohne die Programmierung in der EV doppelt anlegen zu müssen. Dabei ist dann genau das xx bei xx._CurrentSpeed auf >0 das Problem, abgesehen davon läßt sich hiermit nur die Richtung (Positiv/Negativ) kontrollieren. Wenn damit geprüft werden soll ob die Lok überhaupt läuft geht das wieder nur mit Countdown. Und dieser Countdown würde ja die ganze Zeit laufen oder aber mindestens während des Stillstandes der Lok.

Mit einem Ereignis "Lok setzt sich in Bewegung" könnte jedoch ohne Countdown z.B. eine Fahrstrasse in einem BBW geschaltet werden oder ein in Beziehung gesetztes Abstellgleis mit Wagon's zum ankoppeln freigegeben werden.
Beispiel:
Auslöser: Lok xx setzt sich in Bewegung
Ereignis: Abstellgleis yy wird freigegeben, alle Weichen entsprechend geschaltet und die anderen kreuzenden Gleise gesperrt.

Würde man dies wieder mit "Zug betritt Gleis" machen, müsste man wieder unzählige Varianten in der EV anlegen.
 

Gruß
MarkoP

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo MarkoP,

in Ergänzung zu EASYs Beitrag #5 kannst Du feststellen, ob eine Lok überhaupt (vorwärts oder rückwärts) fährt:

3) ...in der EV unter Bedingungen die Variable xx._CurrentSpeed auf =0 abfragst und das Negieren-Kästchen aktivierst.
Dann ist die Bedingung erfüllt, wenn die Lok nicht steht.

Gruß,

Henry

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 6 Monate später...

Hallo alle,

ich habe mir schon gedacht, dass das Argument kommen wird: die Lok wird ja durch ein Ereignis gestartet, warum soll sie da selber noch ein Ereignis auslösen...

Aber haben denn alle ihre Anlagen komplett automatisiert? Wenn ich eine Lok einfach mal so rumfahren lassen will ? Bzw. Wenn der Start der Lok von mehreren Ereignissen ausgelöst werden kann, dann wird es ja auch ganz schön unübersichtlich.

Gruß

Matthias

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Stunden schrieb Famoguy:

Wenn der Start der Lok von mehreren Ereignissen ausgelöst werden kann ...

... dann startet jedes dieser Ereignisse die selbe Lok und kann entsprechend auch alles andere auslösen, was mit dem Start dieser Lok verbunden sein soll.

Bleibt also nur der manuelle Start als Argument ...

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Um diese ewige nörgeln und die Verweise auf den manuellen Lokstart mal abzustellen.

Ich nutze zum Beispiel die angehefteten Loklichter um meine Loks zu beleuchten.
Um diese zu schalten greife ich auf die Variable xx._CurrentSpeed zurück um je nach positivem oder negativem Wert die weißen oder roten Lampen auf jeder Seite der Lok ein/aus zu schalten. Derzeit funktioniert das ganze nur über einen Countdown, welcher im Millisekundentakt bei Stillstand prüft ob die Lok steht oder in welche Richtung sie fährt.

Das Argument, das man ja ein Ereignis hat welches die Lok ansteuert und ihr eine Geschwindigkeit gibt, ist wenig sinnvoll. Bei einer solchen Lösung müsste für jeden automatischen Lokstart dann die Lampen ein/aus geschaltet werden.
Hätte man ein Ereignis "Lok startet" könnte man in der EV für jede Lok ein reagierendes Ereignis für die Loklichter schreiben und müsste dies nicht dutzende Male sinnlos wiederholen.

Gruß
MarkoP

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