Jump to content

Empfohlene Beiträge

Geschrieben

Hallo zusammen.

Ich versuche erfolglos, ein Schlüsselwort als Variable in einem EV-Benutzerereignis zu übergeben.

Ich kann problemlos eine Liste übergeben, aber nicht ein Schlüsselwort.

Wie kann ich das tun?

Vielen Dank und noch einen schönen Tag.

Geschrieben

Hallo Michel,

vor einer Stunde schrieb michellombart:

Ich kann problemlos eine Liste übergeben, aber nicht ein Schlüsselwort.

Das liegt eventuell daran, dass das Schlüsselwort selbst der Name der Variablen ist und "keyword" ihr Inhalt.
Deshalb findest du kein generisches "keyword", welches du übergeben könntest.

Für die Übergabe ist daher sinnvoller, eine generische Variable anzulegen und dort dein Keyword als Text zu speichern.

Alternativ kannst du die ganze "Variables" Liste durchforsten und dann den Bezeichner der Zelle zurückgeben, die ein "keyword" enthält.
Aber das scheint mir zu sehr "brute force" zu sein.

@HaNNoveraNerhat inzwischen perfekt zusammen gefasst, was ich hier umständlich beschreibe.
Ich schicke es mal trotzdem ab - als Ergänzung zu seinem Hinweis.

Viele Grüße
Götz

 

Geschrieben (bearbeitet)
vor 12 Minuten schrieb HaNNoveraNer:

Wenn ich dem Kontakt ein Schlagwort "Secteur #0" gebe, wie kann ich dann mit diesem Schlagwort
alle Signale mit dem gleichen Schlagwort schalten?

in einem Wort: umständlich
Drum hat Michel den richtigen Weg gewählt und im Kontakt den Namen des Schlagwortes in einer Text-Variablen hinterlegt.
Die kann er bequem auslesen und dann den Inhalt der Variablen als Schlagwort für seine "Wiederholung für alle Elemente mit dem Schlagwort" benutzen.

Der Zweck eines Schlagwortes ist, viele gleichartige Objekte zusammenzufassen und gemeinsam ansprechen zu können.
Schlagworte benutzt man nicht zur Unterscheidung (wie ich es hier oft sehe).

Es ist nicht klug, Zügen das Schlagwort "Personenzug", "Güterzug", "Eilzug" etc. zu geben.
Besser ist eine Textvariable "Zuggattung" und darin dann das passende Wort "Personenzug", "Güterzug" oder "Eilzug".
So kann ich diese eine Variable auslesen um zu erkennen, um welchen Zug es sich handelt.

Wer Zugarten per Schlagwort unterscheidet, der hat am Ende eine ganze Reihe Bedingungen in seinem Code. Weil er dann jedes Schlagwort einzeln auf seine Existenz prüfen muss. Das funktioniert zwar, ist aber von hinten durch die Brust ins Auge.

Liest man hingegen eine Variable "Zuggattung" aus, dann kann man anschließend direkt die Befehle ausführen, welche zum gefundenen Wort passen. Am allerbesten geht das mittels Tabellen, in denen diese Begriffe der Bezeichner einer Zelle sind. Damit erspart man sich die ganze if-Orgie komplett.

Viele Grüße
Götz

Bearbeitet von Goetz
Ergänzungen
Geschrieben
vor 41 Minuten schrieb Goetz:

Es ist nicht klug, Zügen das Schlagwort "Personenzug", "Güterzug", "Eilzug" etc. zu geben.
Besser ist eine Textvariable "Zuggattung" und darin dann das passende Wort "Personenzug", "Güterzug" oder "Eilzug".
So kann ich diese eine Variable auslesen um zu erkennen, um welchen Zug es sich handelt.

Ich werde die Anpassung der Zugtypen für das Projekt, an dem ich gerade arbeite, vornehmen. Es stimmt, dass es einfacher zu handhaben ist. 

Grüße.

Michel.

  • 2 Jahre später...
Geschrieben
Am 6.11.2021 um 19:22 schrieb Goetz:

Es ist nicht klug, Zügen das Schlagwort "Personenzug", "Güterzug", "Eilzug" etc. zu geben.
Besser ist eine Textvariable "Zuggattung" und darin dann das passende Wort "Personenzug", "Güterzug" oder "Eilzug".
So kann ich diese eine Variable auslesen um zu erkennen, um welchen Zug es sich handelt.

Hallo Goetz,

Ist das noch immer so, oder hat sich mit den Versionen auch diese Aussage geändert ?

Wenn das noch so ist, wie sollte das dann optimaler Weise nach gehen ?

Eine Tabelle mit allen möglichen Parameter Einträgen in jede Lok ?

(ZT = ZugTyp)

Tabelle "ZugTyp"

ZT01 - Text - Nahverkehr
ZT02 - Text - Fernverkehr
ZT03 - Text - Güterzug
ZT04 - Text - Personenzug
ZT05 - Text - Eilzug
ZT06 - Text - Schnellzug
usw

Wie fragst Du dann z.B. bei einer Bedingung das Ganze ab ?
Du willst wissen ob der Zug ein Personenzug für Nahverkehr ist - dann ......

Eigenschaft/Variable besitz den Wert
Auslöser Fahrzeug
?????????

Geschrieben
vor 1 Stunde schrieb bigrala:

Du willst wissen ob der Zug ein Personenzug für Nahverkehr ist - dann ......

Eigenschaft/Variable besitz den Wert
Auslöser Fahrzeug
?????????

Einfach so:

MBSV8103.thumb.jpg.61b7a8d31ead258f1d013a492cb1d20b.jpg

Damit kannst du z.B. eine Weiche stellen: Alle Züge mit dem Variablenwert "Nahverkehr" biegen ab; alle anderen fahren geradeaus.

Eine Tabelle braucht es dabei nicht.

Meiner persönlichen Meinung nach ist es außerdem besser, Namen von Variablen auszuschreiben. Mit den Abkürzungen kommt man spätestens dann, wenn man die Ereignisverwaltung drei Monate nicht mehr angefasst hat, komplett durcheinander.

HG
Brummi

Geschrieben (bearbeitet)

Hmm, worin liegt denn der Vorteil gegenüber Schlagworten.

Das erschließt sich mit nicht wirklich.
Ob den Wert einer Variablen oder die Existenz einer Variablen in der Lok abfrage ..... das ist doch der gleiche Aufwand - oder was übersehe ich dabei ?

 

Bezüglich Tabelle, das hatte Götz angesprochen, dass das am allerbesten wäre.
 

 

image.thumb.jpeg.6ede18b92df1b84e897f6665c85e3f4a.jpeg

 

 

Bearbeitet von bigrala
Geschrieben (bearbeitet)
vor 1 Stunde schrieb bigrala:

oder was übersehe ich dabei ?

Ein Schlagwort ist wie ein Variablenname. Also müsstest du einzeln nach jedem Schlagwort fragen.
Eine Variable mit dem Namen "Zuggattung" müsstest du hingegen nur einmal auslesen und hättest so mit einem Griff die Zuggattung zur Hand.

Liest doch mal bitte die ganze Antwort von mir, die du oben zitiert hast.
Da steht auch drin, warum es ist wie es ist und wie man damit umgehen kann.

 

vor 1 Stunde schrieb bigrala:

Bezüglich Tabelle, das hatte Götz angesprochen

Tabellen, in denen die Zuggattung der Bezeichner ist, Ralf.
Weißt du, was der Bezeichner in einer Tabelle ist?
Hier siehst du ein Beispiel. Die Tabelle "Einfahrten" hat drei Einträge, deren Bezeichner eine der Zuggattungen ist.
Jeder Eintrag ist dann wiederum eine Liste mit den erlaubten Fahrstraßen für diese Zuggattung.
In der Liste haben die Einträge keine Bezeichner, sondern sie sind durchnummeriert. Das unterscheidet eine Liste von einer Tabelle.

BezeichnereinerTabelle.jpg.532c1ea6bd04042dbb2e18a0f630edb4.jpg

Viele Grüße
Götz

Bearbeitet von Goetz
Ergänzungen
Geschrieben (bearbeitet)

Hallo,

Am 6.11.2021 um 19:22 schrieb Goetz:

Am allerbesten geht das mittels Tabellen, in denen diese Begriffe der Bezeichner einer Zelle sind. Damit erspart man sich die ganze if-Orgie komplett.

vor 4 Stunden schrieb bigrala:

Bezüglich Tabelle, das hatte Götz angesprochen, dass das am allerbesten wäre.

Ich habe ein kleines Beispiel gebaut...
Bild006.thumb.jpg.f6a215230e2c13e6f41f4b940277bfb6.jpg

Wenn der entsprechende Zugtyp dem in der Lokvariablen "Zugtyp" entspricht, sollen die entsprechenden Signale umgeschaltet werden...

Die Lok vom Typ "Fernverkehr" hat folgende Variableneinträge...

Bild001.thumb.jpg.51cab85a23a14711d088a2700d4b8199.jpg

Wichtig! Der Text in der Variablen "Zugtyp" entspricht dem Namen der Tabelle für die Signale...

... die Tabelle für die Signale hat folgende Einträge...
Bild002.thumb.jpg.abcdc0a61540f3ee75e7a916d857d9d3.jpg

So sieht es für den "Nahverkehr" aus...
Bild003.thumb.jpg.b4d85dd94a022f6b494124ccbe8a9a70.jpg

Bild004.thumb.jpg.f4e29ce10ba756467e09666a4c47778c.jpg

Die Darstellung für den Güterverkehr ist dem Schema entsprechend (wird deshalb nicht auch noch dargestellt)...

Der Eintrag in der EV sieht dann so aus...
Bild005.thumb.jpg.88297bfb908cae28a3dc64add36749ca.jpg

Es gibt nur eine Abfrage ob die Variable "Zugtyp" existiert (als Absicherung für den Fall, daß ein Zug nicht typisiert wurde).

Der Vorteil dieser Methode liegt darin, daß weitere Zugtypen einfach nach dem Schema für die Variablen in der Lok erstellt werden können ohne die EV ändern zu müssen.

Zum ausprobieren...
2024-03-05-Zugtypen unterscheiden 01.mbp

Gruß
EASY

 

Bearbeitet von EASY
Geschrieben

@Goetz
@Easy

Vielen Dank für eure Bemühungen, aber irgendwie habe ich da eine Denkblockade.

Klar, das Beispiel von Goetz ist gut und notwendig, wenn ich z.B. zufällige FS für die Einfahrt ermitteln will.
Dann kann ich (in diesem Fall) eine Zufallszahl zwischen 1 und 4 aus der Liste ermitteln lassen. ---- Mache ich auch schon seit einiger Zeit.

Beim Beispiel von Easy, dass ich eine Liste über Whg abarbeiten lasse, kann ich auch nachvollziehen.

 

Aber ..... ich benutze bisher Schlagwörter um z.B. Blocksignale oder BHF Signale zusammenzufassen. Lege in den Signalen mögliche FS ab und aktiviere diese wenn ein Signal übr ein Schlagwort angesprochen wird.
Außerdem habe ich den Loks bisher Schlagwörter für Fern- Nah- und Güterverkehr gegeben und das hat auch immer ganz gut funktioniert. Ob zur Auswahl einer FS bei Ein-/Ausfahrt oder zum Start aus einem Depot. Gerade wenn Züge mehrer Parameter haben, wie z.B. Güterzug für Nah- oder Fernverkehr, Nahverkehr mit SBahn, Eilzug etc.
Dann habe ich zwei Bedingung "Variable existiert" Güterzug und Nahverkehr oder Ferverkehr und das wars.

Bei dem Einsatz von Tabellen und Listen muss ich doch genauso abfragen, nur eben nicht nach Schlagworten sondern nach Variablen.

 

Habe mal versucht je zwei loks mit Text Variablen für Fernverkehr, Nahverkehr und Güterverkehr versehen und in ein Depot geschickt.
Wollte sie dann mal 5 sek nach betreten eines Depots din gleichen Zugtyp wieder starten. Bisher habe ich zur Auswahl welche Zugart gestartet werden soll Schlagworte benutzt.
Wenn ich es mit der Variablen Version probiere klappt es nicht.
 

Ich komme fast zu der Überzeugung, dass bei mir Hopfen und Malz verloren ist und eure Mühen umsonst sind.

Geschrieben (bearbeitet)
vor 13 Minuten schrieb bigrala:

Bei dem Einsatz von Tabellen und Listen muss ich doch genauso abfragen

Nein, du entnimmst der Variable die Zuggattung und benutzt dieses Wort direkt als Adressierung in der Tabelle.
Ganz ohne Abfrage.

 

vor 13 Minuten schrieb bigrala:

Habe mal versucht je zwei loks mit Text Variablen für Fernverkehr, Nahverkehr und Güterverkehr versehen und in ein Depot geschickt.
Wollte sie dann mal 5 sek nach betreten eines Depots din gleichen Zugtyp wieder starten. Bisher habe ich zur Auswahl welche Zugart gestartet werden soll Schlagworte benutzt.
Wenn ich es mit der Variablen Version probiere klappt es nicht.

Das ist ein anderes Thema. Für die Unterscheidung der Züge im Depot benötigst du in der Tat das Schlagwort. Da nützt die Variable nichts.

 

Bearbeitet von Goetz
Geschrieben

Hallo,

vor 3 Stunden schrieb bigrala:

Ich komme fast zu der Überzeugung, dass bei mir Hopfen und Malz verloren ist und eure Mühen umsonst sind.

... wenn Du Dich hinsetzt und einmal gemütlich mit einem Getränk (in dem die beiden Stoffe vorkommen) in der Hand darüber nachdenkst, kommt vielleicht doch noch die Erkenntnis, wann es sinnvoll sein könnte ein Schlagwort oder eine Variable zu setzen (prost!)9_9.
(Hinweis: manchmal ist etwas auch einfach nur abhängig vom Anwendungsfall und es gibt nicht die eine Antwort;))

Gruß
EASY

  • 2 Monate später...
Geschrieben (bearbeitet)
On 3/5/2024 at 10:15 PM, EASY said:

Hallo,

Ich habe ein kleines Beispiel gebaut...
Bild006.thumb.jpg.f6a215230e2c13e6f41f4b940277bfb6.jpg

Wenn der entsprechende Zugtyp dem in der Lokvariablen "Zugtyp" entspricht, sollen die entsprechenden Signale umgeschaltet werden...

Die Lok vom Typ "Fernverkehr" hat folgende Variableneinträge...

Bild001.thumb.jpg.51cab85a23a14711d088a2700d4b8199.jpg

Wichtig! Der Text in der Variablen "Zugtyp" entspricht dem Namen der Tabelle für die Signale...

... die Tabelle für die Signale hat folgende Einträge...
Bild002.thumb.jpg.abcdc0a61540f3ee75e7a916d857d9d3.jpg

So sieht es für den "Nahverkehr" aus...
Bild003.thumb.jpg.b4d85dd94a022f6b494124ccbe8a9a70.jpg

Bild004.thumb.jpg.f4e29ce10ba756467e09666a4c47778c.jpg

Die Darstellung für den Güterverkehr ist dem Schema entsprechend (wird deshalb nicht auch noch dargestellt)...

Der Eintrag in der EV sieht dann so aus...
Bild005.thumb.jpg.88297bfb908cae28a3dc64add36749ca.jpg

Es gibt nur eine Abfrage ob die Variable "Zugtyp" existiert (als Absicherung für den Fall, daß ein Zug nicht typisiert wurde).

Der Vorteil dieser Methode liegt darin, daß weitere Zugtypen einfach nach dem Schema für die Variablen in der Lok erstellt werden können ohne die EV ändern zu müssen.

Zum ausprobieren...
2024-03-05-Zugtypen unterscheiden 01.mbp

Gruß
EASY

 

Hallo,


    Ich habe versucht, dieses Beispiel auf meinen Bahn anzuwenden, konnte es aber nicht herausfinden. Ich spiele erst seit 2 Wochen mit MBS. 
Anstelle von Signalen möchte ich die Fahrstraßen je nach Zugtyp wechseln. Ich nutze für jede Route zwischen 2 Signalen eine eigene Fahrstraße, so dass bei jedem Signal die nachfolgende Route neu ermittelt werden kann, wodurch unvorhersehbare Routen entstehen. 
Ich habe einen Teil meines Gleissen bereits mit den nötigen EV's ausgestattet, aber ich stecke bei Kontakt 8 fest. Die HSL fährt weiterhin regelmäßig zur Talstrecke, während dies nicht erlaubt ist, wie aus der beigefügten Anlage von 7-5-24 hervorgeht. 
Vorgesehen ist, dass die HSL-Züge (High Speed Line) nur über die Linie 14b zum Bahnhof fahren dürfen, die Güterzüge nur über die Linie 14a zum Nebengleis und die Personenzüge random in beide Richtungen. Der Kontakt 8 steuert somit je nach Zugtyp den Weige 12 mit den zugehörigen Fahrstrassen.

Ich hoffe, Sie können mir weiterhelfen. Vielen Dank im Voraus

 

Bunderbahn zolder 7-5-2024.mbp

Bearbeitet von Nico Essers
Geschrieben
vor 25 Minuten schrieb Nico Essers:

Vorgesehen ist, dass die HSL-Züge (High Speed Line) nur über die Linie 14b zum Bahnhof fahren dürfen, die Güterzüge nur über die Linie 14a zum Nebengleis und die Personenzüge random in beide Richtungen.

Deine EV sagt am Kontakt 8:

Wenn es kein Güterzug ist, dann Route 14a,

sonst (= Güterzug) zufällig 14a oder 14b

Goederentrein.jpg.58b4d4a7480dd466f9b1ebff78528b9c.jpg

 

Viele Grüße
Götz

Geschrieben (bearbeitet)

Leider funktioniert es nicht wie vorgesehen. Ich habe die HSL als besseren Namen in Intercity geändert. 
Die Ereignisprotekollierung zeigt, dass die Fahrstraßen für den Güterzug und den Personenzug wie erwartet sauber aktiviert sind. 
Allerdings passiert laut Ereignisprotekollierung am Intercity nichts und er stoppt vor Signal 14. Mal sehen, ob wir das morgen lösen können
 

Bearbeitet von Nico Essers
Geschrieben

Endlich eine Variante gefunden, die richtig funktioniert. Anschließend erwies sich eine kleine Anpassung in der Sortierung der Blöcke als ausreichend. Die Ereignisverwaltung sieht nun wie folgt aus.

EV contact 08 2024-05-09.jpg

Geschrieben

Mit der letzten Prüfung (Personentrein) schließt du alle Züge aus, die keiner der drei Kategorien angehören. 
Falls ein Zug keins der drei Schlagwörter hat, wird für ihn keine Fahrstraße aktiviert werden.

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