Jump to content

Ereignisgruppen in EV schalten nicht korrekt


Recommended Posts

Hallo,

ich habe in meiner Testanlage folgendes Problem:
In einem 3-Blockkreis sind 3 Bremsstrecken integriert. Nur wenn Das Signal auf "Stop" steht, soll die Ereignisgruppe "Bremsen" aktiv sein. Schaltet jedoch ein Signal (egal welches) werden immer alle 3 Ereignisgruppen "Bremsen" gleichzeitig geschaltet (entweder alle gleichzeitig Aktiv bei "Stop", oder alle gleichzeitig Deaktiv bei "Fahrt"). Es sollte nur die Bremsstrecke vor dem entsprechendem Signal beeinflusst werden.
Kann mir da ein lieber Kollege weiter helfen?

Gruß
Wolfgang

Bremsen_Objektvariable_Gleis_Rampe_BlockGleis_Test.mbp

Link to comment
Share on other sites

Hallo Wolfgang,

schlechte Nachricht:
Es scheint so, als ob die EV -nicht wie erwartet- auf das Ereigis >Signal xxx< schaltet reagiert, und dann auf >0< testet; sondern generell >hat ein Signal auf 0< geschaltet prüft und dann das Signal über seinen Namen indentifiziert.

Da der Name >_Trigger1._Name< [ das ist dasselbe wie _Trigger1.Signalname, spart aber eine Objektvariable :P ]  ALLE Signale darstellt, werden dann alle Ereignisse, wo Signal schaltet auf >0< steht, ausgeführt.
genauso auch bei >1< bzw >2<.

Ich habe mal zum Testen eine Zusatzbedingung (bei Signal schaltet auf 0): >Lok steht auf Gleis< Gleis: >$(_Trigger1._Name).StpGls< hinzugefügt, selbst dann werden alle Ereignisse ausgeführt >:(.

Bleibt wohl nur, den Ereignissen den Originalnamen des Signals zu verpassen oder einen anderen Weg zu finden...

[ Ich weiss, das Du einen Weg finden willst, beim Kopieren von Ereignissen so wenig wie möglich ändern zu müssen... ]

Gruß ~ Lutz

PS: ich habe noch eine Taste ( als Signal definiert,  Taste ▼) eingefügt, selbst  darauf reagieren die Ereignisse, was meine obige Vermutung bestätigt...:(

Edited by FriLu
Nachtrag
Link to comment
Share on other sites

Zitat

(WIKI)

Auf die auslösenden Objekte kann neben der Auswahlliste auch per Variable zugegriffen werden. Durch den vom 3D-Modellbahn Studio vorgegebenen Objektnamen "_Trigger1", "_Trigger2" usw. kann auf eine Objektvariable zugegriffen werden, die sich auf das auslösende Objekt bezieht. Im Falle der "Lokgeschwindigkeit setzen"-Aktion lässt sich z.B. mittels "_Trigger1.Speed" eine Geschwindigkeit setzen, die in der Variable "Speed" der aus dem Bahnhof ausfahrenden Lok hinterlegt ist.

Hallo Wolfgang,

Du solltest in den Ereignissen nicht "_Trigger1.xxx" als Variable setzen, da sie nur temporär im Moment der Auslösung vorhanden ist. Ein nachfolgendes Ereignis benutzt wieder "_Trigger1.xxx" und überschreibt die vorher gesetzten Werte. Weise einer anderen Signalvariable stattdessen den Wert aus "Trigger1.xxx" zu. Dann sollte es klappen.

viele Grüße,

Henry

Link to comment
Share on other sites

Hallo Wolfgang,

ich bin jetzt mehrere Stunden an Deinem Problem gesessen, ohne auf eine grünen Zweig zu kommen. Mir ist aufgefallen, dass die Umschaltung eines Signals auch die Aktionen für die Umschaltung eines anderen Signals auslöst, ohne durchzublicken, warum das so ist. Was mit eindeutig fehlt, ist das Trace-Plugin von EASY, das in V4 nicht mehr zur Verfügung steht. Ich kann Dir daher auch nicht sagen, ob es ein Fehler in der Kodierung Deiner Ereignissteuerung oder ein prinzipieller Fehler in der Ereignisverwaltung der V4 ist.

Ich kann Dir daher nur einen Rat geben:
Versuche, die Situation in V3 nachzustellen. Soweit ich das Ganze überblicke, verwendest Du keine V4-Funktionalität, sodass die von Dir vorgesehene Steuerung - sofern sie korrekt ist - auch in V3 erfolgreich zum Ablauf gebracht werden können sollte. Leider musst Du hierzu die gesamte Anlage einschließlich der Ereignisssteuerung nochmals ganz neu bauen, da Du die Anlage nicht von V4 nach V3 übertragen kannst.

Wenn Du die Anlage in V3 realisiert hast, kannst Du auch - sofern Du dort die gleichen Effekte bekommen solltest, zumindest die Ereignisse mithilfe von EASY's Plugin mitprotokollieren. Das erleichtert die Diagnose erheblich. Wenn Du dann die Anlage in V3 erfolgreich zum Laufen gebracht hast, kannst Du sie nach V4 übertragen. Wenn dann der in V3 erfolgreiche Ablauf in V4 nicht mehr funktioniert, wäre das ein Indiz für einen Fehler in der EV von V4.

Tut mir leid, dass ich keinen besseren Vorschlag habe. Aber das ist momentan der einzige Weg, den ich sehe, um dem Problem möglicherweise doch auf die Schliche zu kommen.

Und noch etwas:
Versuche bitte, für gleichartige Funktionsgleise und Signale in den einzelnen Blockabschnitten gleichartige Bezeichnungen zu verwenden. Die teilweise völlig unterschiedlichen Bezeichnungen für gleichartige Objekte erschweren die Diagnose zusätzlich.

Viele Grüße
BahnLand

Link to comment
Share on other sites

Hallo zusammen,

jetzt will ich schon genau wissen wo der Fehler liegt. Man hat ja auch seinen Stolz :).
Ich werde die Anlage in V3 neu und besser strukturiert aufbauen. Die vorgehensweise ist mir ja jetzt klar.
Wie Lutz schon richtig bemerkt hat, will ich ein Modul erstellen, da nach dem Kopieren mit wenig Änderungen wieder verwendet werden kann, egal wieviele Blöcke eine Strecke hat.
Ich werde mich wieder melden.

Gruß
Wolfgang

Link to comment
Share on other sites

Hallo Wolfgang, 

Ich weiss jetzt nicht ob diese Vorgehensweise für Dein Vorhaben sinnvoll ist, aber ich habe das abbremsen vor Signalen immer über das Bremsgleis definiert. 

Also Lok betritt Gleis: Bremsgleis

Bedingung: Signal auf Halt

Aktion: Geschwindigkeit Trigger 1 auf xx setzen.

Vielleicht ist dieser Weg eine Alternative. 

HG

Wüstenfuchs

Link to comment
Share on other sites

Hallo,

Fehler gefunden.
Ich habe in der Festlegung der Ereignisse "Signal schaltet" eine Benutzerdefinierte Eingabe gemacht ($_Trigger1.SignalName). Dies führt scheinbar bei der der Ereignisfestlegung zu dem entsprechendem Effekt. Wird die Festlegung mit dem echten Signalnamen vorgenommen, tritt der Effekt nicht auf.

@Neo Ist es bei allen Ereignisfestlegungen so, das in diesem Feld keine benutzerdefinierten Angaben verarbeitet werden. Auswählen kann man diese Angaben schon. Wäre schön wenn das möglich wäre, man müsste dann nicht jedesmal nach dem Kopieren Änderungen vornehmen.

Gruß
Wolfgang

Link to comment
Share on other sites

Hallo Wolfgang,

jetzt wo Du selbst darauf gekommen bist, fällt es mir auch "wie Schuppen von den Augen". Damit ist der bei Dir aufgetretene Effekt auch direkt nachvollziebar (das Signal kann icht identifizierte werdeb´n -deshalb wirken sich die Aktionen auf alle Signale aus.

Es ist eigentlich ein prinzipelles Problem, dass man das Ereigins-auslösende Objelt nicht mit "_Trigger1" (oder "_Trigger2", ...) identifizieren kann. Denn erst einmal muss das Objekt bekannt sein, bevor man mittels der "_Trigger"-Variablen auf vom Modellbahn-Studio zurückgelieferte Eigenschaften dieses vorher zu identifizierenden Objekts zugreifen kann.

@Neo
Ich würde daher vorschlagen, bei der Beschreibung der _Trigger-Variablen im Wiki einen dick und fett markierten Hinweis aufzunehmen, dass diese _Trigger-Variabken bei der Spezifikation des Auslösers in der Ereigisdefinition nicht verwendet werden dürfen!

Viele Grüße
BahnLand

 

Link to comment
Share on other sites

Hallo Bahnland,

wenn das so ist, braucht im Dialogfeld für die Objektauswahl, nur die Möglichkeit einen Benutzerdefinierten Ausdruck einzugeben, entfernt werden, so dass nur noch die vorgegebenen Werte ausgewählt werden können.

Gruß
Wolfgang

Link to comment
Share on other sites

Hallo Wolfgang,

so einfach ist es vermutlich nicht. Denn es könnte ja sein, dass man solch ein Objekt in einer Variable hinterlegt hat, und diese dann in Form des "benutzerdefinierten" Ausdrucks spezifizieren möchte. Das würde dann tatsächlich funktionieren. Nur eine "_Trigger"-Variable darf hier nicht verwendet werden. Die totale Streichung der "benutzerdefinierten" Eingabe-Möglichkeit an dieser Stelle würde ich daher als zu restriktiv ansehen.

Viele Grüße
BahnLand

Edited by BahnLand
Link to comment
Share on other sites

  • 1 year later...

I'm still experimenting with this, but I'm using the speed of a second locomotive on the track, based on the speed of the primary locomotive.  

1st.jpg.dd35b87aeec1ba399a28f49f7f1f3043.jpg

I gave the Locomotives different names, and read the current speed of the main Lok as it crosses a certain track.

2nd.thumb.jpg.aebc31533f2594a102b80b9b3cc01b9f.jpg

the actions for this include setting the variable for speed from the current speed of main Lok.

3rd.thumb.jpg.015b8bbe26af290be2e5dff66af64a1c.jpg

I then set the vehicle speed for the Hog1 (American term for a helper locomotive) to the stored variable $Speed.

this activates the smoke from Hog1.   It's still a little buggy, but seems to work so far.

greetings,

Curtis

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