Jump to content

Ausgabe des Fahrzeug-Namens (nicht Lok) als zusätzlichen Trigger-Wert beim Ereignis "Zug betritt/verlässt Gleis"


BahnLand

Empfohlene Beiträge

Hallo Neo,

im Zusammenhang mit der aktuellen Realisierung des Ablaufbergs möchte ich noch einmal nachfragen, ob es möglich wäre, für das Ereignis "Zug betritt Gleis" oder "Zug verlässt Gleis" neben den heute zurückgegebenen Werten 

  • "_Trigger1 - Name der Lok, die das Gleis betritt/verlässt" und
  • "_Trigger2 - Name des Gleises"

noch einen dritten Wert

  • "_Trigger3 - Name des Fahrzeugs, welches das Gleis als erstes betritt/als letztes verlässt"

bereitzustellen. Bei dem Fahrzeug soll es sich um jenes Fahrzeug im Zugverband handeln, das sich beim "Betreten des Gleises" tatsächlich auf dem Gleis befindet (das ist das erste Fahrzeug des Zugverbands, welches auf das Gleis einfährt - unabhängig davon, ob es sich hierbei um eine den Zug anführende Lok oder den ersten Wagen eines geschobenen Zuges handelt), oder das sich beim "Verlassen des Gleises" als letztes Fahrzeug auf dem Gleis befand.

Mit der Realisierung der ersten Variante ("Zug betritt Gleis") würde sich bei meiner Ablaufberg-Demo die Benennung der Wagen mit Zahlen und die Zählerschleife zur Identifizierung des Wagens erübrigen, wodurch dann auch die Begrenzung der Wagenzahl durch die Schleifendauer obsolet wäre.

Dieser Feature-Wunsch steht in ähnlicher Form schon längere Zeit "im Raum" und wurde von Dir hier und hier beantwortet. Entgegen den in den zugehörigen Threads gestellten Wünschen wären bei der hier beschriebenen Einschränkung auf das erste/letzte Fahrzeug im Zugverband die in den oben referenzierten Antworten formulierten Bedenken wegen möglicher Performance-Einbußen (Abfrage aller Wagen im Zugverband) und möglicher Mehrdeutigkeit der auf dem Gleis befindlichen Wagen (nur einer ist der erste oder letzte) gegenstandslos.

Könntest Du Dir bitte unter diesen gegenüber den ursprünglichen Wünschen etwas eingeschränkten Voraussetzungen noch einmal Gedanken dazu machen, ob in dieser Form eine kurzfristige Bereitstellung dieses Features möglich wäre?

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hello Neo and BahnLand

I play MBS since a few days only. I like it. I built a simple railroad table and try to control trains on it. The one of the difficulties for me is the recognizing the direction of the train what entered or left a track. I lack the information about the other relevant track in the event. These are the previous track in "Train enters to a track" event and the next track in "Train leaves a track" event. The query "Locomotive/Wagon is located on a track" is uncertain when the concerned tracks are short. 

Solving this problem may be one of the next developing goals.

For example the 6120 and 6230 are an railway crossing with barriers

...|-6140-|----------------6110-------------|===6120===|=6230=|----------6210-----------|-6240-|---...

Events

1. Any train enters to 6110 from LEFT - close barriers

2. Any train enters to 6210 from RIGHT - close barriers

3. Any train leaves the 6120 to LEFT - open barriers

4. Any train leaves the 6230 to RIGHT - open barriers

If the event handler would serve the name of the other relevant track in the event to "_Triggerx" than the defining events can be easy.

1. Event - Train enters to a track - All locomotives - 6110

1. Conditions - Variable has the values - $_Triggerx._Name - 6140

1. Actions - ...

 

2. Event - Trains enters to a track - All locomotives - 6210

2. Conditions - Variable has the values - $_Triggerx._Name - 6240

2. Actions - ...

 

3. Event - Trains leaves a track - All locomotives - 6120

3. Conditions - Variable has the values - $_Triggerx._Name - 6110

3. Actions - ...

 

4. Event - Trains leaves a track - All locomotives - 6230

4. Conditions - Variable has the values - $_Triggerx._Name - 6210

4. Actions - ...

 

This way helps to decide  which end of the train triggered the event too.

In another version I can imagine to define the required neighbor of the target track in the 3rd event parameter. If the 3rd parameter can of "All tracks" the event handling remains compatible.

Other possibilities: The "All tracks" option in 2nd parameter enables the traceability with event handling.

Sorry for English I can't speak German.

Viele Grüß

kronauerl

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo alle,
das ereignis zug betritt/verlässt ein gleis würde ich hier nicht nutzen,

sondern lieber ein neues ereignis

gleis wird betreten/verlassen - wobei hier dann nur ein trigger (name des objektes) reichen würde

um das studio dann bei der auswertung dieses ereignises zu unterstützen, muss der name des gleises ein bestimmtes format haben zb name_xx

vg quackster

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster,

bezieht sich Dein Kommentar auf meinen Ausgangsbeitrag oder auf den Beitrag von konauerl?
Falls er sich auf meinen Beitrag bezieht:

Zitat

das ereignis zug betritt/verlässt ein gleis würde ich hier nicht nutzen

warum? Ich erkenne hier kein Problem.

Zitat

um das studio dann bei der auswertung dieses ereignises zu unterstützen, muss der name des gleises ein bestimmtes format haben zb name_xx

Inwiefern soll hier die Einhaltung einer bestimmten Syntax für die Gleisbezeichnung einen Vorteil für die Auswertung durch das Modellbahn-Studio bringen?

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hello kronauerl,

there are 2 different _Trigger variables for the events "train enters/leaves a track":

1. _Trigger1:  name of the engine which pulls or pushes the train entering or leaving the track
2. _Trigger2:  name of the track which is entered or leaved by the train

I assume that you mean "_Trigger2" when writing "_Triggerx" within your comment above.

So, your definitions, e.g.

1. Event - Train enters to a track - All locomotives - 6110
1. Conditions - Variable has the values - $_Triggerx._Name - 6140    [Triggerx = Trigger2 ???]
1. Actions - ...

cannot work, because "$_Trigger2._Name" always represents that track which was entered/leaved by the train (this is track 6110 within the example above, and not 6140). Therefore, the condition you have specified in all cases 1-4 returns always 'false', so that your actions get never performed.

You wrote:

Zitat

The query "Locomotive/Wagon is located on a track" is uncertain when the concerned tracks are short.

This is not quite correct. It is true, that you cannot recognize a unique vehicle on the track when more than 1 vehicle is located on the track (but this is the more supposably the longer the track is). But when only checking, whether the neighboring track of the track to be entered or leaved is also occupied, you need not to specify any vehicle name within the condition mentioned above. If you implement the following definition in case 1:    

1. Event - Train enters to a track - [All locomotives] - 6110
1. Conditions - Locomotive/Wagon is located on a track - [All] - 6140
1. Actions - ...

the 'Actions' part of the definition above will be performed correctly, if the train enters track 6110 from the left, and is ignored, if the train is comming from the right. This is independent from the length of track 6140.

You can apply this approach similarly for your cases 2-4.

Many greetings
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hello Bahnland

What I have written the demand for a solution to a problem encountered. _Triggerx isn't yet it would be further trigger variable. This should contain the name of the neighbor track in a future development. In the new aspect it is not so important already. Altought I have idea about the nested value subtitution in an expression.

So.  I also got similar result but in reverse logic.

The task to detect the train coming from the 6140 to the 6110.

When this event triggered and proper the train is on 6110, 6140 and so on but it is not on 6120 (other end of the 6110) surely

Therefore the event configuration is:

1. Event - Train enters to a track - [All locomotives] - 6110
1. Conditions - Locomotive/Wagon is located on a track - [All] - 6120 - Negate
1. Actions - ...

Fine. There are two alternatives. I can choose between them at the right distance or any other aspects. 

Many thanks for your  thoughts

kronauerl

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo BahnLand,

ich hatte mich auf deinen Beitrag bezogen,
bei den fast gleichen ereignissen zug/lok oder dann wagen betritt/verlässt Gleis wird es mit sicherheit zu verwirrungen kommen.

wie in EASY's betrag (Entkupplungsgleis (Ereingis Wagon)) die bemerkung von Neo
"Ereignis "Wagen betritt/verlässt Gleis" prüfen, ob es auch performancetechnisch bei größeren Anlagen noch vertretbar ist."

daher mein ansatz (nur bestimmte gleise zu nutzen), den im prinzip auch EASY (im genannten beitrag) verfolgt, allerdings auf entkupplungsgleise begrenzt.
nur entkupplungsgleise finde ich nun auch nicht gut (aber besser als nix) , da immer diese genutzt werden müßten wenn zb ein wagen zum be/entladen an einem bestimmten gleis halten soll.

vg quackster

Bearbeitet von quackster
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo, da das Thema mehrfach angesprochen wurde hier mal ein anderer Denkansatz.

Vorausgesetzt im MBS könnte man mehrdimensionale Variablen (sogan. Array's) nutzen, könnte man einer Lok ein solches Array als Objektvariable mitgeben.
Beim ankoppeln eines Wagons (wird ja vom Studio irgendwie registriert) wird der Name des Wagons an das Array angehangen.
So würde sich eine komplette Auflistung des gesamten Zugverbandes ergeben, da in jeder Teilvariable des Array's jeweils ein angehangener Wagon hinterlegt ist. Somit könnte man jederzeit die Anzahl der angehangenen Wagons auslesen, prüfen ob ein bestimmter Wagon sich auf einem bestimmten Gleis befindet etc..

Beispiel:
Arrayname: Zugverband
Lokname: BR201
Variable: BR201.Zugverband(1) = Name des ersten Wagons, BR201.Zugverband(2) = Name des zweiten Wagons, BR201.Zugverband(3) = Name des 3. Wagons) etc.

Voraussetzung dafür ist die Unterstützung mehrdimensionaler Variablen wie sie aus Programmierung und Mathematik bekannt sind. Ich weiß nicht ob dies im Studio möglich ist, da wäre Neo gefragt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

interessante Idee, ich fürchte aber nicht machbar- beim an/abkoppeln eines Wagens mags ja noch gehen, aber bei Zugverbänden:/ , und wenn dann noch Lokzüge ins spiel kommen... ( eine lok koppelt an, eine andere zieht ).

Bedauernt ~ Lutz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Rein zum Verständnis, was genau verstehst du unter Zugverbände und Lokzüge?

Zugverband ist für mich eine Lok/Triebwagen mit angehängten Wagons
Den Ausdruck Lokzug kenne ich gar nicht

Falls du Züge mit zwei aufeinander folgenden Loks meinst, meine ich mich erinnern zu können, das von Neo hier mal der Hinweis erfolgte immer nur eine als Antriebslok zu verwenden, was bedeuten würde, dass die zweite (unangetriebene) Lok einfach wie ein Wagon betrachtet werden kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

ein Lokzug besteht aus lauter Loks, wobei die erste die Zuglok ist und die anderen als sogenannte "Wagenloks" mitlaufen. Lokzüge gibt es beim Vorbild beispielsweise, wenn Schadloks ins Ausbesserungswerk oder ausgemusterte Loks zum Schrotthändler abgefahren werden. Hier findest Du eine Menge Bilder von Lokzügen. Auch bei Eisenbahn-Ausstellungen werden die Exponate oft als Lokzüge her- und weggefahren.

Die Wikipedia-Definition von "Lokzug" findest Du hier. Von einm "Zugverband" spricht man meistens dann, wenn man sich auf einzelne Fahrzeuge innerhalb des kompletten Zuges bezieht. Eine offizielle Definition dieses Begriffs gibt es meines Wissens nicht.  Ein Beispiel findet sich aber auch in Wikipedia im Abschnitt "Arten der Zugbildung":

" Von einer Lokomotive beförderte, so genannte „lokbespannte“ Züge; die Lokomotive kann sich dabei an der Spitze des Wagenparks oder an anderer Stelle im Zug befinden. In jedem Fall muss aber der Zug von der Spitze, ggf. von einem Steuerwagen aus, gesteuert werden. In diesem Fall spricht man auch von einem Wendezug, da das Triebfahrzeug auch bei einem Fahrtrichtungswechsel seine Position im Zugverband behalten kann."

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Bahnland,

danke für die Aufklärung. Besonders der Lokzug war mir als Begriff so nicht geläufig.

Mit diesen Informationen kann man Lutz Bedenken eigentlich ignorieren, da sich die nicht angetriebenen Loks einfach wie Wagons betrachten lassen.
Es ginge ja bei der Lösung lediglich darum, den Namen des Rollobjektes in die Array-Variable anzufügen wenn ein Rollmaterial angekoppelt wird, beziehungsweise den oder die Teile der Array-Variable zu löschen wenn Rollmaterial abgekuppelt wird. Ob es sich dann bei dem Rollmaterial um eine Lok oder einen Wagon handelt ist letztendlich egal. Es würde lediglich dazu führen, dass die geschleppten Loks ebenfalls ein eigenes Array beinhalten würden, welches die Aufzählung angefangen beim ersten Rollmaterial hinter dieser Lok beinhalten würde. Dies wäre im Fall z.B. einer Zugtrennung sogar von Vorteil, da direkt beide Einzelzüge die entsprechend gefüllten Arrays besäßen, Beispiel kombinierte Regionalzüge bestehend aus zwei Einzelzügen.

Aber wie gesagt, solange man nicht weiß ob das MBS Arrays unterstützt ist es sowieso nur Wunschdenken. Und ob dem so ist, kann wahrscheinlich nur Neo derzeit beantworten bzw. die Möglichkeit dafür schaffen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Everybody

I mentioned the value substitution in my previous posts. I explain what I mean in response MarkoP's posts about the cars in the train.

The "$Variable_name" means the value of the "Variable_name" now. This should continue to think about.

My idea:

For example the "{variable_name}" similarly behaves like "$Variable_name" but it can be anywhere in the expression. The "{variable_name}" replaced with the current value in expression text.

Loco.Car_count = 3

Loco.Car1 = Blau_3te_KL

Loco.Car2 = Blau_2te_KL

Loco.Car3 = Bayern

"$Loco.Car{Loco.Car_count}" means "Bayern" because "{Loco.Car_count}" replaced by its value "3" and "Loco.Car3" is "Bayern". In this way it would be possible to handle simple arrays.

Other example for usage nested substitution:

Loco.Max_speed = 320

To set train speed to reverse max. speed when "Loco" reaches the exit of the station (Actions only):

Set track vehicle speed

Locomotive: [Trigger 1: Locomotive]

Track: [All track]

Speed: -{{_Trigger1._Name}.Max_speed}

1st substitution: "{_Trigger1._Name}" replaced "Loco"

2nd substitution: "{Loco.Max_speed}" replaced "320"

The resulting expression is "-320" as used now.

 

I think this idea is useable

- to collect cars of the train if it will be "Car enters/leaves track" event.

- to point the car to detach it (if the cars are enumerated in an array)

- to select any device (track switch, signal etc.) by an alphanumeric index

Viele Grüße

kronauerl

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi kronauerl,

my englisch is not so good, so i write in German and hope that you will understand it.

Programmiertechnisch ist der Ansatz korrekt, doch leider in der EV meines Wissens nicht umsetzbar. In der EV gibt es keine zusammengesetzten Variablen. Also wird die Zusammensetzung aus "$Loco.Car{Loco.Car_count}" so zu keiner verwertbaren Ausgabe führen.

Ich persönlich habe zwar Programmierkenntnisse, dennoch suche ich immer nach Möglichkeiten Probleme mit der EV alleine zu lösen. Viele haben nunmal nicht die Möglichkeit externe Programme zu verstehen und zu benutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi kronauerl,

Zitat
vor 5 Stunden schrieb kronauerl:

It would make me happy if you would see the idea useful.

... ohh thanks... i would see it useful... particularly , the second example ( -{{_Trigger1._Name}.Max_speed} ) (-> direct mathematical operations with [indirect] variables)

... but i am only a "normal" user... Neo is the programmer...

EASY

 

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