Jump to content

Fahrzeug auf Gleis mit Schlagwort


MarkoP

Empfohlene Beiträge

Hallo Marko,

um bei der Prüfung, ob ein Gleis von irgend einem Zug belegt ist, alle Gleise zu erfassen, die mit dem besagten Schlagwort belegt sind, kannst Du in der EV wie folgt vorgehen:

EV-Vorschlag.thumb.jpg.a1436b6ba3538bccc3a5eac4a4e4b09e.jpg

Angenommen, die zu prüfenden Gleise seien mit dem Schlagwort "Gruppe" versehen. Setze nun zuerst eine Boolesche Variable (hier eine globale Variable "Check") auf "false". Prüfe anschließend in einer Schleife alle Gleise mit dem Schlagwort "Gruppe", ob auf ihnen ein Zug steht. Ist diese Bedingung für ein solches Gleis erfüllt, setzt Du die Variable "Check" auf "true". Nachdem die Schleife abgearbeitet ist, kannst Du am Wert der Variable "Check" ablesen, ob irgend ein Gleis mit dem Schlagwort "Gruppe" von einem Zug belegt ist.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für den Ansatz, leider ist das für mein Problem keine Lösung.

Ich möchte ein Ereignis erstellen bei dem das Ereignis ausgelöst wird sobald irgendein Zug auf einem Gleis mit dem betreffenden Schlagwort "Bahnhofsgleis" stoppt.

Ich möchte erreichen, dass das Ereignis nur in Bahnhöfen und nicht auf offener Strecke ausgelöst wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko

Das ist leider etwas tricky.
Da überschneiden sich ein Ereignis: "Zug stoppt" und eine Bedingung "Zug steht auf Gleis".
Leider ist als Auslöser dieses Ereignisses nur das Fahrzeug bekannt, das Gleis ist unbekannt.
Da bleibt eigentlich nur, sich den Namen des zuletzt betretenen Gleises in einer Variablen im Fahrzeug zu merken.
Erst dann kannst Du bei "Zug stoppt" abfragen, welches Schlagwort das Gleis hat.

Daher wäre es einfacher, Züge immer mit Gleiskontakten zu stoppen.
Denen kannst Du auch das Schlagwort geben.
Die kannst Du dann auf allen Bahnhofsgleisen das Ereignis auslösen lassen.

Bahnhofsgleis.mbp

 

Gruß
Thomas
 

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Zug wird ja auch per Gleiskontakt/Signal gestoppt.

Das Problem ist halt, dass ich die Aktion nur ausführen möchte wenn der Zug eben auf bestimmten Gleisen hält. Sonst würden beispielsweise die Türen ja bei jedem Halt an einem geschlossenen Signal auf offener Strecke auch aufgehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

eigentlich macht die Lösung von Thomas genau das, was Du wünschst:

Ersetze doch einfach die Bedingung "wenn der Zug eben auf bestimmten Gleisen hält" aus Deinem letzten Beitrag durch "wenn der Zug eben an bestimmten Gleiskontakten (Signalkontakten) hält". Wenn Du dann anstatt dem Gleis dem Gleiskontakt (Signalkontakt) das Schlagwort zuordnest, kannst Du dort genau bei jenen Gleiskontakte reagieren, denen Dei Schlagwort zugeordnet ist. Speziell für das "Türen-öffnen"-Szenario würde ich die Ereignisdefinition von Thomas wie folgt erweitern:

1854808704_02EV-Vorschlag.thumb.jpg.00688d4852c79888c698a79bc80479fc.jpg

Zunächst wird das Ereignis bei dieser Variante tatsächlich nur dann ausgelöst, wenn der betretene Gleiskontakt das Schlagwort "Bahnhofshalt" besitzt. Damit muss die Existenz dieses Schlagworts nicht mehr abgefragt werden. Da die Türen aber nur dann geöffnet werden sollen, wenn den Zug vor dem geschlossenen Signal gestoppt wurde, wird die Bedingung "Signal geschlossen" (der Auslöser Gleiskontakt steht hier gleichzeitig für das Signal) als Zusatz-Voraussetzung für das Öffnen der Türen herangezogen. Dass der Zug "steht", braucht in diesem Fall nicht mehr abgefragt zu werden.

Ist das Signal beim Eintreffen des Zuges am Gleiskontakt geöffnet (dann überfährt der Zug den Gleiskontakt ohne anzuhalten), ist obige Bedingung nicht erfüllt, sodass die Türen nicht geöffnet werden.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Werde ich ausprobieren und mir im praktischen Beispiel mal ansehen müssen.
Bislang ist mir noch nicht klar bewusst, wann ein Zug auf einem Gleiskontakt steht wenn dieser gestoppt ist.

 

Zeitgleich könnt ihr mir vielleicht beim umgekehrten Problem ebenfalls helfen, dem schließen der Türen und anschließendem Abfahren.

Dazu habe ich eine globale Variable als Tabelle als Fahrplan erstellt. Jeder Zeiteintrag hat wiederum selbst eine Tabelle mit verschiedenen Variablen wie Ziel, Zugnummer etc. (siehe Screenshot Fahrplan)

Da ich in dem Moment ja keinen Zug als Auslöser habe, beinhaltet die innere Tabelle die Zugnummer, welche gleichlautend ist wie die beiden Triebwagen.
Mein Versuch geht insoweit, dass ich über das abfragen der Zeit (Lösung in anderem Thread) auf die Zugnummer der inneren Tabelle zugreife und diese als Fahrzeug/Objekt in meinem "Animation abspielen"-Aufruf verwende. Die Animationsnamen stehen in einer Objektvariablen "Türen" des Triebwagens in einer Tabelle mit dem Index "Links/Rechts", welcher wiederum ebenfalls aus einer Objektvariabelen des Triebwagens "Bahnsteig" entnommen wird.
Da das ganze natürlich für den gesamten Zugverbund durchgeführt wird, ist es in einer entsprechenden Wiederholen-Funktion eingeschlossen.

Leider werden aber immer alle Animationen abgespielt anstatt nur die der Türen und ich finde den Denkfehler nicht.

Screenshot 2022-02-13 154904.jpg

Screenshot Fahrplan.jpg

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