Jump to content

Gebrauch _Trigger1 bei Countdown läuft ab


wopitir

Empfohlene Beiträge

Hallo zusammen,

die Arbeitsweise mit dem _Trigger1 bei "Countdown läuft ab" habe ich doch noch herausgefunden.

Jetzt habe ich ein neues Problem bei dem ich auf die Hilfe der EV-Profis hoffe. Folgende Aufgabe habe ich mir gestellt:

Erstellung eines Bremsmoduls das nach betreten eines Gleises das Fahrzeug nach vorgegebenen Werten abbremst bzw. stillsetzt. Die Variablen sollen als Objektvariablen am definierten Auslösegleis hängen. Wird das Modul kopiert und für eine weitere Bremsstelle an ein anderes Gleis gekoppelt, soll durch wenig Änderung eine neue Bremsstrecke vorliegen. Es werden die Trigger-Funktionen verwendet um eine saubere Zuordnung zu erreichen.

In meiner beigefügten Anlage habe ich zwei Bremsgleise (rot) angelegt. Die Bremsgleise dürfen nur mit positiven Geschwindigkeitswerten angefahren werden, sonst keine Funktion. Das rechte Bremsgleis (00_BrmsGls_Gls01) mit Bremsgruppe ist in der EV derzeit deaktiviert.

Funktion: Wird das "Bremsgleis_li" z. B. mit 100 km/h angefahren, wird die Lok bis kurz vor dem rechten Bremsgleis (00_BrmsGls_Gls01) zum Stillstand gebracht. So wäre die Funktion für alle Bremsstrecken gedacht.

Aktiviere ich in der EV die zweite Bremsgruppe und befahre die linke Bremsstrecke erneut, wird die Lok in der halben Strecke angehalten (so nicht ok). Es hat den Anschein als ob beide Timer angestoßen werden und ihre Aktionen auf die Lok Einfluß nehmen. Das wäre für meine Funktion nicht schön. Denn je mehr Bremsstrecken auf einer Anlage montert werden, desto schneller erfolgt die Abbremsung.

Gibt es für mein Bremsmodul eine Lösung? Was habe ich falsch gemacht?

Danke allen bereits im voraus für euere Hilfe sagt
der Wolfgang

Bremsen_mit_Objekvariable_Gleis.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster,

Über den Ausdruck $(_Trigger1._Name).Lokgeschwindigkeit lese ich zum Beispiel den Inhalt aus einer Objekvariablen heraus, die in den Timer-Aktionen abgehandelt werden. Willst du den Trigger1-Begriff von "Countdown läuft ab" in einer Variablen speichern, so schreibe bei "Variable setzen" Variablenname= Test, Wert = $_Trigger1._Name. Hier wird dann der Name vom abgelaufenen Countdown gesetzt.

Gruß
Wolfgang

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Wolfgang,

 ich glaube, dass Du an der im nachfolgenden Bild eingekreisten Stelle etwas zuviel "getrickst" hast.

EV1.jpg.3e61985874a5d4a11ca167b757e7b0a2.jpg

Wie Lutz bereits festgestellt hat, scheinen bei dieser Definition beide Countdowns (für beide Bremsgleise) immer zusammen ausgelöst zu werden.

Ich denke, dass Du hier nicht drum g´herun kommst, die Countdowns explizit und nicht übe reine Variable zu benennen. Ich habe hierzu "(rbenfalls) Deine Demo erweitert:

EV2.jpg.89a543f60a667f0e9d5b49601e55cbaf.jpg

Gruppe "Versuch 1" enthälte Deine EV, Gruppe "Versuch 2" eine von mir modifizierte Kopie derselben. Damit funktioniert es einwandfrei. Probier's einfach mal aus.

Bremsen_mit_Objektbvariable_Gleis-1b.mbp

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

jetzt hab' ich's:

Durch die Verwendung der Bezeichnung "$_Trigger1._Name" für den Namen beider Countdown-Ereignisdefinitionen "Bremsgleis_li" und "00_BrmsGls_Gls01" wird dieses Ereignis sowohl nach dem Start des einen Countdowns als auch nach dem Start des anderen Countdowns immer zweimal ausgelöst, wobei wegen des "dynamischen" Bestandteils "$_Trigger1" im Namen der auslösende Countdown entweder "Bremsgleis_li" oder "00_BrmsGls_Gls01" ist - in Abhängigkeit davon, in welches Bremsgleis die Lok eingefahren ist. Man kann also durch die Verwendung einer Variablen für den Auslöser des Ereignisses nicht verhindern, dass bei mehreren Ereignisdefinitionen mit derselben Referenz eines Auslösers (also auch bei der Verwendung der Variable) tatsächlich derselbe Auslöser adressiert wird.

Mit anderen Worten: Das Countdown-Ereignis mit "Name=$_Trigger1._Name" verhält sich genau so, wie wenn man zwei Countdown-Ereignisse mit "Name=Bremsgleis_li" und mit "Name=00_BrmsGls_Gls01" in beiden Ereignisgruppen defniert hätte. Und damit ist klar, warum der Timer jeweils doppelt ausgeführt und daher die Geschwindigkeit jeweils gleich zweimal heruntergesetzt wird - was letzendlich zur Halbierung des Bremswegs führt.

Es bleibt also nichts anderes übrig, als in den beiden Ereignisgruppen den jeweiligen Countdown jeweils explizit zu adressieren. Nur hierdurch kann erreicht werden, dass in jeder Ereihnisgruppe immer nur das Ereignis eines (des richtigen) Countowns abgefragt und dadurch der erwartete Bremsweg durchlaufen wird.

An der EV selbst liegt's also nicht. Die arbeitet bei dieser Konstruktion völlig korrekt.

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

so scheint es zu funktionieren. Wie Bahnland richtigerweise gesagt hat muss wahrscheinlich beim Ereignis "Countdown läuft ab" explizit der Name des abgelaufenen Countdowns im Feld "Name" angegeben werden. Da ich hier immer den gleichen Namen vom Gleisnamen verwende setze ich hier explizit "Bremsgleis_li" bzw. "00_BrmsGls_Gls01" in dieses Feld . Dieser Name kann später mit der _Trigger1-Funktion auch ermittelt und verwendet werden.

Ich hänge die geänderte Anlage von Lutz nochmal an.

Gruß
Wolfgang

Bremsen_mit_Objekvariable_Gleis_FriLu_01.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

aus gegebenen Anlass 9_9 hab ich meinen "Konstanten" Bremsweg (naja nahezu konstant) hervorgeholt und an V4 angepasst (lief merkwürdigerweise nicht rund).

Unterschiedliche Geschwindigkeiten und richtungsunabhängigkeit waren hier das Ziel.

Lutz

 

 

 

Konstanter_Bremsweg.mbp

Bearbeitet von FriLu
neue Version, mit Variablenanzeige
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Lutz,

alle Achtung, in der Berechnung für die "Bremsrampe" steckt schon "KnoffHoff". Dadurch, das sich der Timer immer wieder selber aufruft, werden die Werte in den Objektvariablen immer neu berechnet und der Lok zugewiesen. Auch die Berechnung der .dec-Variable ist schon beeindruckend.(y)

Gruß
Wolfgang

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