Jump to content

Lok abrufen aus Ringschuppen


Recommended Posts

Hallo zusammen,

ich bin gerade mal dabei einen kleinen Betriebshof als Modul aufzubauen. Darin enthalten ist u.a. eine Drehscheibe und eine Bekohlungsanlage.

Vorwärts Einfahrt auf Drehscheibe und rückwärts Parken in Ringschuppen läuft gut.
- In den Schuppen habe ich ein Sperrsignal verwendet, beim verlassen in Richtung -1 wird die Fahrtrichtung umgekehrt und die Lok hält am Signal und schaltet den Antrieb aus. wenn ich eine Lok haben wilk, brauche ich somit nur das Signal auf Fahrt setzen.

Jetzt stehe ich jedoch vor zwei kleineren Problemen......

1)

Die Gleise in den Schuppen haben den Namen RS GL 0 - RS GL 14 und RS GL 43, 45. Die Signale haben den Namen RS Sig 0 - 14 und RS Sig 43, 45. Die Loks haben ein Schlagwort Diesel oder Dampf.

Im Moment habe ich zum Abrufen zwei Taster (Taster Diesel oder Taster Dampf). Wenn ich einen (z.B. Taster Diesel) auslöse, solll geschaut werden auf welchem Gleis eine Lok mit Schlagwort Diesel steht und das entsprechende Signal auf fahrt gesetzt werden. (Natürlich wird zuvor auch die im Signal hinterlegte Variable (Zahl) für die Weichenstellung der Drehscheibe abgerufen und die Drehscheibe entsprechend positioniert - das ist jedoch kein Problem).

Ich wollte jetzt per Bedingung abfregen ob auf GL 0 - GL 14 eine Lok mit dem Schlagwort Diesel steht und dann das Signal auf Fahrt schalten.
Am besten dürfte das vermutlich mit einer Liste der Gleise zu lösen sein - oder ?
Habe mal in den Variablen eine Liste mit den entsprechenden Gleisen als Objekte angelegt. Das Signal wollte ich dann als Objekt im Gleis hinterlegen.
Also die Gleise der Liste der Reihe nach abfragen und bei einem Treffer das Signal im Gleis auf Fahrt schalten - Gedanklich recht einfach ...... aber wie setzte ich das in der EV um, dass die Liste abgefragt und dann das entsprechende Signal umgeschaltet wird.
Allerdings komme ich da nicht weiter und bräuchte da mal eure Hilfe.

Also ich löse das Tasterereignis aus und ...........

 

 

2)

Wie stoppt man eine Dampflok so, dass der Kohle-Tender/Behälter unter der Befüllung zum stehen kommt ? Mit einem Geschwindigkeit = 0 beim betreten (Fahrzeuganfang oder Fahrzeugmitte) eines Kontaktes ist das nicht wirklich möglich, da die Loks unterschiedliche Längen haben.

Danke euch schon mal
Gruß Ralf

 

Screenshot 2024-02-11 130504.jpg

Link to comment
Share on other sites

vor 14 Minuten schrieb bigrala:

Mit einem Geschwindigkeit = 0 beim betreten (Fahrzeuganfang oder Fahrzeugmitte) eines Kontaktes ist das nicht wirklich möglich, da die Loks unterschiedliche Längen haben.

Aber mit Geschwindigkeit = 0 bei Verlassen des Kontakts hast du vielleicht mehr Glück.

Link to comment
Share on other sites

Ist eine Idee, probiere ich gleich mal aus

Ja super klappt- Danke

Was sagst Du zu meinem Problem 1 - hast Du da auch einen Hinweis wie das mit Liste etc klappen würde ?

Edited by bigrala
Link to comment
Share on other sites

Hallo @bigrala,

Hier ein Lösungsvorschlag zu 1. :

Meine Annahme (und Voraussetzung) für das folgende (muss an Deine Gegebenheiten angepasst werden):

- Die Gleisliste ist im Objekt "Drehscheibe" angelegt.
- Bei Einfahrt auf ein Ringlokgleis wird die Lok als Variable "Triebfahrzeug" beim Gleis gespeichert

- Das zum Ringlokgleis gehörende Signal ist als Variable "Signal" beim Gleis gespeichert
- Die Weichenstellung für die Drehscheibe ist als Variable "Gleisnummer" beim Gleis gespeichert.

Ringlokschuppen.jpg.19c0e5fcf1337ed0cba60f7c71ba68ed.jpg

Wenn der Taster betätigt wird ...
- wird für die Drehscheibe die Variable "gefunden" auf ein leeres Objekt gesetzt
- Dann werden alle Einträge der Gleisliste durchgegangen
- - Sofern die Variable "gefunden" noch ein leeres Objekt beinhaltet
- - - Steht ein Fahrzeug auf dem aktuellen Gleis (Variable "Triebfahrzeug" kein leeres Objekt
- - - - Hat dieses Fahrzeug eine Variable "Diesel"
- - - - - Fahrzeug bei der Drehscheibe unter "gefunden" eintragen
- Ist die Variable "gefunden" kein leeres Objekt, sondern beinhaltet ein Gleis
- - Drehscheibe drehen auf Variable "Gleisnummer" des Gleises
- - Verzögerung für das Drehen der Drehscheibe
- - Das Signal (Variable "Signal" des Gleises) auf Fahrt schalten.

 

Viele Grüße,
    Wolfgang

 

Link to comment
Share on other sites

Hallo Prinz,

irgendwas scheint da faul zu sein oder ich habe einen Fehler gemacht. Bin das mehrmals durchgegangen und finde keinen Eintragungsfehler.
Im Anhang mal die jeweiligen Einträge für Gleise, Drehscheibe und Taster.
Beim Screenshot Taster siehst Du auch die Protokollierung. Bleibt direkt beim setzen der ersten Variable stehen.

Gruß Ralf

Screenshot Eintrag RS Gleis.jpg

Screenshot Einträge Drehscheibe.jpg

Screenshot Taster Diesel.jpg

Link to comment
Share on other sites

So sieht alles richtig aus. Ich habe das Szenario gerade nochmal aufgebaut und mit deiner EV getestet. Leider kein Problem aufgetreten.

In solchen Fällen kannst Du nur folgendes machen (außer einen Export der Anlage hier zu posten):

Füge in das Skript an relevanten Stellen jeweils ein Skript mit einem print-Statement ein, z.B.

Nach "Für alle Elemente"                                         print(Wdh.name)
Nach ..RS Gleis gefunden = [Leer]                           print("- noch nicht gefunden"
Nach ...Lok Name nicht [Leer]                                  print("- - ", Wdh.variables["Lok Name"].name)
Nach Eigenschaft/Variable existiert                         print("- - - Lok gefunden")

Dann müsstes Du eigentlich erkennen, wo etwas hakt.

P.S. Hast Du evtl. zwei Objekte auf der Anlage, die beide "Drehscheibe" heißen und irgendwo das falsche ausgewählt?

Probier das mal oder poste Deine Anlage hier und ich schaue mir die mal an.

 

Link to comment
Share on other sites

Hallo Wolfgang,

ich habe es gefunden ...... waren zwei kleine Fehler bei mir.....

1 das Schlagwort in den Loks heist bei mir nicht "Diesel" sondern "Lok Diesel"
2 bei Weiche schalten, ist der Name der Weichenstellung nicht "RS Gleise" sondern "Drehscheibe Pos"

Dann fehlte bei Signal einstellen auch noch der Signalname "RS Signal"

Super, jetzt läuft es. Danke Dir vielmals.
Gruß Ralf

 

Zu Erklärung der Benennung meiner Variable etc., bei allem was mit dem Ringschuppen und Drehscheibe zu tun hat, habe ich ein "RS" und bei allem in Bezug auf die normalen Lokschuppen habe ich ein "LS" vorangestellt. Ich habe mir gedacht, dass es vielleicht übersichtlicher und sicherer ist, wenn ich das BBW zum Beispiel als Modul in eine andere Anlage einfügen möchte.

So sieht mein Modul im Moment aus......

Screenshot 2024-02-12 175717.jpg

Link to comment
Share on other sites

Ja super.

Die Aktionen am Ende (Weiche stellen, Signal schalten) habe ich nicht mehr richtig gelesen, da ja schon vorher beim Prüfen der Gleise nichts gefunden wurde.

Klasse und viel Spaß

Grüße,
    Wolfgang

 

Link to comment
Share on other sites

Eine Drehscheibe arbeitet zwar wie Weichen, aber in eine Fahrstrasse läßt sie sich nicht einbinden - oder ?

Ich habe mal versuchsweise probiert eine FS einzurichten, von einem Signal - über die Drehscheibe zu einem anderen Signal.
Bekomme dann die Meldung "keine gültige Route". Ist auch in sofern nachvollziehbar, da im Moment ja das Brückenglies weggedreht ist und somit keine Verbindung zwischen den anschlußgleisen besteht.

Gibt es da einen Trick oder muss man sich da was mit Variablen (DS frei/besetzt) einfallen lassen.

Habe das Problem, dass wenn z.B. eine Lok gerade bei der Ausfahrt Ringschuppen-Drehscheibe-Ausfahrtsgleis ist und eine andere das Einfahrsignal betritt, dann gibts ein wildes Durcheinander mit Drehungen der Drehscheibe. Müsste ich die Routen per Variable blocken und freigeben ?

V8 - Modul Drehscheibe.mbp

Link to comment
Share on other sites

Die einfachste Möglichkeit wäre, bei der Drehscheibe eine Variable "belegt" mit Wahr/Falsch-Wert einzurichten. Bei Tastern und Signalen muss dann berücksichtigt werden, das nur Aktionen erfolgen, wenn diese Variable auf Falsch steht. Bei Start einer Aktion wird diese Variable sofort auf Wahr gesetzt und bei Beendigung wieder auf Falsch.

Hierzu wär notwendig, beim Setzen der Variable auf Wahr die Anforderungsschalter auf "unsichtbar" zu setzen und bei Falsch wieder "sichtbar". Weiterhin wäre notwendig, die Sperrsignale an der Einfahrt nicht einfach zu passieren, sondern bei Stellung Sh0 die Lok anzuhalten. Wird das Signal auf Sh1 geschaltet und die belegt-Variable steht auf Wahr, so wird das Signal wieder auf Sh0 zurückgesetzt, ansonsten wird die belegt-Variable auf "Wahr" gesetzt und die Lok am Signal gestartet.

Alternativ wäre eine Warteliste für die Drehscheibe denkbar, die aber etwas aufwändiger einzurichten ist.

Viele Grüße,
    Wolfgang

 

Link to comment
Share on other sites

Hallo,

vor 2 Stunden schrieb bigrala:

Eine Drehscheibe arbeitet zwar wie Weichen, aber in eine Fahrstrasse läßt sie sich nicht einbinden - oder ?

das geht schon, du mußt nur die Drehscheibe vor dem Einrichten der Fahrstraße auf die jeweils gültige Stellung setzen.
(Achtung beim Gleiskontakt auf der Drehscheibe: auf aktivierte Pfeilrichtung des Gleiskontaktes achten. Fahrstraßen sind richtungsbezogen.)

Gruß
EASY

Edited by EASY
Link to comment
Share on other sites

Hallo @bigrala,

ich habe mir Dein BW nochmal vorgenommen, um Deine Anforderung bzgl. der Absicherung gegen Mehrfachanforderung der Drehscheibe anzugehen.
Dabei sind einige Änderungen notwendig geworden (keine Kritik, nur Vorschläge):

Vorab: In deiner Liste RS Gleise der Drehscheibe war bei Gleis45 das Signal statt des Gleises eingetragen und bei den Gleisen 43+45 war die Variable "Lok Name" leer. Das habe ich geändert. Weiterhin sind die beiden Loks (+Tender) auf den Gleisen 43+45 so lang, dass sie nicht den Haltekontakt auf der Drehscheibe erreichen. Sie stoppen mit einigem Abstand zum Gleisende, da auf der Gegenseite keine Gleise angeschlossen sind. Deshalb habe ich das überarbeitet. Außerdem wird jetzt zufällig eine Diesel- bzw. Dampflok ausgewählt, statt der ersten gefundenen. Das Signal am Ausfahrgleis habe ich entfernt, da es (theoretisch) nicht benötigt wird und außerdem die falschen Variablen hatte.

Wie ich vorgeschlagen hatte, hat die Drehscheibe Gleis jetzt eine Variable "belegt". Sobald über einen Taster oder ein Anforderungssignal eine Lok gestartet werden soll, wird diese Variable auf True gesetzt. Damit werden die beiden Anforderungstaster unsichtbar und die beiden Signale können nicht mehr auf Fahrt geschaltet werden. Verlässt eine Lok die Drehscheibe werden die Taster wieder eingeblendet und die Signale können wieder geschaltet werden.

Damit bei der Einfahrt die Lok nicht unnötig hält, obwohl die Drehscheibe frei ist, sind vor den Signalen Gleiskontakte, die die Lok beim Signal anmelden und diese auf Fahrt schalten, wenn die Drehscheibe frei ist. Falls nicht, bleibt das Signal auf Halt und muss dann später manuell auf Fahrt geschaltet werden.

Damit auch die langen Loks bedient werden können, habe ich das überarbeitet: Wird der Haltekontakt in der Mitte erreicht, erhält die Lok ein Schlagwort "Lok auf Drehscheibe". Erreicht die Lok mit ihrer Mitte den Haltekontakt, so wird sie gestoppt. Stoppt eine Lok mit diesem Schlagwort (wegen Haltekontakt oder Gleisende), wird die Verarbeitung wie vorher bei Haltekontakt Mitte erreicht. Verlässt eine Lok das "Drehscheibe Gleis", so wird sicherheitshalber nochmal das Schlagwort "Lok auf Drehscheibe" gelöscht und die "belegt"-Variable wieder auf False gesetzt.

Ich habe die geänderten Ereignisse im Namen mit ...(mod) und die neuen mit ...(neu) gekennzeichnet und mit einem Kommentar versehen.

Ach ja: Da ich berufsbedingt (früher mal) immer noch ein Gegner von doppeltem Code bin, habe ich die Suche einer Dampf- und einer Diesellok zusammengefasst in einem Benutzerdefiniertem Ereignis, das von den beiden Tasten-Ereignissen mit den Parametern Drehscheibe und Schlagwort aufgerufen wird. So war auch die Umstellung beider Tastenevents auf eine zufällig gewählte Lok nur einmal durchzuführen.

Hier als Vorschlag die geänderte Anlage:

V8 - Modul Drehscheibe 2.mbp

Viele Grüße,
    Wolfgang

 

Link to comment
Share on other sites

Hallo @bigrala,

In einem anderen Thread (von EASY zu Lua in Tutorials) kam das Thema zum Anhalten der langen Loks (ursprünglich Gleis 43+45) nochmal zur Sprache. Darin gab Roter Brummer einen Tip mit der automatischen Verzögerung, die dafür sorgt, dass die Lok zu früh stehen bleibt. Damit lässt sich das Problem einfach lösen:

Die Zeilen zum Setzen/Löschen des Schlagwortes "Lok auf Drehscheibe" können gelöscht werden.

Beim Betreten des GK DS: Eigenschaft automatische Verzögerung der Lok auf False setzen
Beim Verlassen des GK DS: Eigenschaft automatische Verzögerung der Lok wieder auf True setzen
Gleiskontakt GK DS mit Fahrzeugmitte betreten: Wie ursprünglich. Du kannst das Ereignis "Lok auf Drehscheibe hält" ändern in Gleiskontakt GK DS mit Fahrzeugmitte betreten, musst nur als erste Maßnahme die Geschwindigkeit der Lok auf 0 setzen, gefolgt von einem Delay von 1 Sekunde.

Damit halten auch die beiden langen Loks mittig auf der Drehscheibe.

Viele Grüße,
    Wolfgang


 

Link to comment
Share on other sites

Hallo Prinz,

Ich war jetzt einige Tage nicht hier online (beruflich auswärts).

Kein Thema, nehme auch sehr gerne Kritik an - kann man nur von lernen (y)

Da hast Du Dir ja mächtig Arbeit gemacht. Werde ich mit heute Abend mal eingehend zu Gemüte führen.
Die Idee mit "DS belegt/frei" hatte ich auch schon und nach meinem Posting auch schon in Angriff genommen.
Mein Gedanke war also gar nicht falsch   ;-)

Die langen Loks auf 43/45 hatte ich erstmal als Füller hingestellt, aber noch nicht mit einbezogen. Aber Danke für die Lösungen.

Doppelte Codes mag ich auch nicht, erstelle normalerweise erstmal alles soweit das es lauffähig ist und fasse dann zusammen.

Nochmals vielen Dank
Viele Grüße   Ralf

 

Ein Gedanke;
So Dinge wie Drehscheiben, Bahnübergänge, einfache Bahnhöfe oder auch Lösungen zu Straßenverkehr etc. könnte man ja allgemeingültig erstellen und im Katralog als Modul zum Einbau in eigene Anlagen stellen.
Neulinge könnten sie dann einfach einbauen und lernen, wenn Sie sich die EV zu Gemüte führen.

 

 

Link to comment
Share on other sites

Hallo Wolfgang,

habe mir das mal alles angesehen und werde es gemäß Deinem letzten Post abändern.

Zusätzlich werde ich beim verlassen des DS Gleises abfragen ob an einem der Einfahrsignale eine Lok steht und wartet ... dann Drehscheibe einstellen und das entsprechene Signal auf Fahrt stellen. Habe beim Testen gesehen, dass eine Lok den GK überfährt und am Signal stehen bleibt, wenn DS noch belegt ist.

 

Habe es umgebaut, es funktioniert mit allen Loks (auch BR 05-003), nur nicht mit der BR 53 001. Die fährt auf die Drehscheibe, stoppt und ...... DS dreht nicht.  Ist die Lok einfach trotz allem zu groß ?

Edited by bigrala
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...