Jump to content

Zugtyp identifizieren


Empfohlene Beiträge

Hallo,

ich würde gerne jedem Zug eine Variable mit dem Zugtyp zuweisen.
Zugtpyen z.B. ZugGüter, ZugNah, ZugFern usw

Diese soll beim Zusammenstellen des Zuges gesetzt und an diversen Stellen auf der Strecke sollen Aktionen in Abhängigkeit des Zugtyps stattfinden.

Aber irgendwie steh ich mal wieder auf dem Schlauch ......

Okay der Lock eine Variable "ZugTyp" vom Typ Text mit dem Wert "ZugFern" gegeben.
Wenn ich dann eine Bedingung für einen Gleiskontakt deffinieren will, dann wäle ich den Auslöser/Fahrzeug soll glleich der TextVariablen in der Lok sein.
Aber genau das klappt irgendwie nicht - ich inde nichts wie ich den Zugtyp abfragen kann.

Hatte gedacht mit Variable erweitert Auslöser/Fahrzeug und dann Text "......." zu verwenden, aber in der Auswahlliste kann ich keinen der Zugtypen finden.

Wo hab ich meinen Denkfehler ?

 

Wollte es erst mit Schlagworten machen, aber die kann ich in einer Bedingung nicht abfragen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Ich habe mein mein Vorhaben einmal umgedacht .....

Mein Vorhaben;
Ich möchte das jede Lok ihre Aufgabe mit sich führt und an verschiedenen Stellen der Anlage, entsprechend ihrer Aufgaben ein Ereignis ausgelöst bzw eine Fahrstrasse aktiviert wird.

Dazu habe ich aktuell jeder Lok vier boolsche Variabeln (Personen/Güter/Nah/Fern) gegeben. Diese Variabeln kann ich zum Beispiel beim Zusammenstellen des Zuges bereits mehr oder weniger automatisch setzen.

Kommt eine Lok z.B. an einem EinfahrSignal an und wird als Güterzug identifiziert, so wird geprüft ob eines der beiden "Durchfahrtsgleise" frei sind, wenn ja wird die entsprechende Fahrstrasse aktiviert und der Güterzug fährt ein/durch. Sind beide besetzt, so wartet er am Einfahrsignal.

Da die eigentliche Abfrage mit den Anweisungen an verschiedenen Stellen (Ein- und Ausfahrt) benötigt wird, habe ich diese in ein benutzerdefiniertes Ereignis gepackt.

Nun habe ich zwei Fragen;

1- Verlässt ein Zug den Bahnhof, so wird das benutzerdefinierte Ereignis aufgerufen und geprüft ob das Einfahrsignal auf HALT steht, ob an ihm ein Zug steht und ob eine der beiden Durchfahrtsgleise frei sind. Jetzt möchte ich aber auch noch abfragen, ob z.B. der boolsche Wert für GÜTER True ist.
Also ..... ist die boolsche Variable in der Lok auf True, welche am Einfahrtssignal steht.  
Hier komme ich nicht weiter, ich vermute mal dass man hier mit verschachtelten erweiterten Variablen arbeiten muss.
 

2 - Eine allgemeine Frage an alle ........ wie regelt Ihr das effektiv mit der Zugidentifizierung bzw den Aufgaben der Züge ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ralf,

vor einer Stunde schrieb bigrala:

Verlässt ein Zug den Bahnhof, so wird das benutzerdefinierte Ereignis aufgerufen ...

und bei diesem Aufruf kannst du den Zug als Argument an das benutzerdefinierte Ereignis übergeben.
Dann kannst du dort auf ihn zugreifen und in einer Bedingung prüfen, ob beispielsweise seine Variable "Güterzug" true ist

Der Zug, den du beim Aufruf übergibst, wird im benutzerdefinierten Ereignis als "Auslöser" geführt.

Du brauchst bei der Prüfung - wie du schon richtig vermutest - die erweiterte Variable.

Viele Grüße
Götz

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 21 Minuten schrieb Goetz:

kannst du den Zug als Argument an das benutzerdefinierte Ereignis übergeben

Hallo Götz,

.....hm, wenn ich "Ereignis/benutzerdefiniertes Ereignis auslösen" wähle, wie kann ich da einen Parameter übergeben ?
Im BenutzerEreignis, da gibt es eine ParameterListe aber noch leer.

Link zu diesem Kommentar
Auf anderen Seiten teilen

1 hour ago, bigrala said:

benutzerdefiniertes Ereignis

Hello @bigrala,

1642253061_userdefined2.thumb.jpg.9a4d29f814a08ccaf05abdeff1bb78eb.jpg

1574089744_userdefined.jpg.365b2667d81d4b2ce09b6ab0306500e8.jpg

Loctype.thumb.jpg.b7bf62e32ebceb019f32f52831a2e3bb.jpg

For the first parameter click on ( no parameters ) and define. For the next parameter click on +. If you want to call this routine,  you will see the parameter.

Für den ersten Parameter klicken Sie auf ( no parameters ) und definieren Sie ihn. Für den nächsten Parameter klicken Sie auf +. Wenn Sie diese Routine aufrufen wollen, sehen Sie den Parameter.. Hilft das?

Regards, Grüße , Herman

Bearbeitet von Herman
extra picture
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hello Hermann,

Thank you but I don't understand the procedure.

 

Also aktuell habe ich es so.....

Im ersten Bild werden die Lokparameter an das Einfahrsignal übergeben, es wird geprüft ob das Signal auf HALT steht und 
ob ein Zug am Signal steht.

Im zweiten Bild wird abgefragt, ob im Signal der GÜTER auf True steht. 
Anschließend werden die beiden Durchfahrgleise (2 und 7) nacheinander auf FREI abgefragt und wenn eins frei ist, 
soll die entsprechende Fahrstraße aktiviert werden.   

 

Beim Ausfahrkontakt werden ebenfalls die Lokparameter übergeben werden und es wird geprüft ob das Einfahrsignal auf HALT steht und ob ein Zug am Signal steht,
dann wird das benutzerdefinierte Ereignis aufgerufen.

 

Soweit mein Gedankengang ..... nur ..... der Zug startet nicht bzw die Fahrstrasse wird anscheinend nicht aktiviert.
Habe mal die Protokollierung drangehängt.

 

 

Screenshot 2022-07-22 215746.jpg

Screenshot 2022-07-22 215724.jpg

Screenshot 2022-07-22 215907.jpg

Bearbeitet von bigrala
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 15 Minuten schrieb bigrala:

but I don't understand the procedure.

Dann noch einmal:

Im benutzerdefinierten Ereignis steht oben "ohne Parameter".
Da klickst du drauf, legst eine neue Variable vom Typ "Objekt" an und benennst sie, wie du willst.
Zum Beispiel "Zug". (Bei Herman heißt sie "LocType").

Wenn du jetzt an anderer Stelle das benutzerdefinierte Ereignis aufrufst, dann hast du dort ein neues Feld mit dem Namen deiner Variablen.
In dieses Feld gibst du den Auslöser "Fahrzeug".

So kannst du das auslösende Fahrzeug an dein benutzerdefiniertes Ereignis übergeben.
Und wenn du es dort zur Verfügung hast, dann kannst du auch seine Variablen dort auswerten.

Viele Grüße
Götz

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Götz,

mit Deiner Erklärung hab ich es verstanden, wie das mit den Parametern funktioniert.
Dass dann ein neues Feld entsteht, kannte ich bisher noch nicht.

Aber......

das funktioniert, wenn der fragliche Zug der Auslöser ist, z.B. der Zug am Einfahrsignal ankommt.


Ich habe aber auch den Fall, dass ein ausfahrender Zug die Prüfung für den am Einfahrsignal stehenden auslösen soll.
Dies ist der Fall, wenn beide Gütergleise besetzt waren und nun ein Gütergleis frei wird.

Deshalb hatte ich es so versucht, dass ich alle Variablen ins Signal übergebe und dann auf das Signal zugreife.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

Könnt Ihr mir nochmal auf die Sprünge helfen ?

Wie Götz das so einleuchtend beschrieben hat, funktioniert das mit den Parametern und dem Auslöser, wenn der die Variablen in dem Auslösenden Zug stehen.

Aber ich habe auch den Fall, dass z.B. an der Einfahrt West ein Zug steht weil alle oder sein Gleis besetzt ist. Nun verläßt ein Zug den Bhf und löst nach verlassen des Ausfahrkontakts eine Prüfung aller Einfahrsignale aus. Die wartenden Züge sollen nun auf Ihren ZugTyp (Personen, Nah, Fern ,Güter.....) überprüft werden und die entsprechenden FS aktiviert werden.

Das Ganze funktioniert auch einwandfrei, auch mit der Ermittlung des Zugtyps für den auslösenden Zug.
Für die wartenden Züge funktioniert die ZugTypbestimmung jedoch noch nicht.

Mir fehlt da die Abfrage ...... ist die Variable 1 in der Lok an Signal XXX = True, ist die Variable 2 der Lok an Signal XXX = True ........
Wie spreche ich die Lok an Signal XXX an ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @bigrala,

den Zug am Signal bekommst du am Besten über eine Wiederholung zu fassen.

1325430256_VariableimZugamSignal.jpg.c848fcd69afb69f7426b49a78c13f825.jpg

Und dann prüfst du in der Wiederholung, ob im gefundenen Fahrzeug die Variable auf true steht.

Das klappt so aber nur, wenn das angetriebene Fahrzeug auf dem Kontakt steht.
Falls Züge auch geschoben werden, musst du in einer weiteren Wiederholung alle Fahrzeuge untersuchen, die zu diesem Zugverband gehören.

Alternativ speicherst du den Zug bei Ankunft im Signal. Dann kannst du ihn dort bei Bedarf abrufen.

Viele Grüße
Götz

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