Jump to content

Empfohlene Beiträge

Geschrieben

Ein Zug fährt in einen Bahnhof ein. Über die EV "Fahrstraßen mit einem Schlagwort" wählt er sich zufällig ein Gleis. Da die Funktion nur einmal durchläuft habe ich einen Timer gesetzt (Beispiel hatte ich im Forum gefunden), damit er solange sucht, bis ein Gleis frei wird. Das klappt auch. Allerdings bin ich damit nicht so richtig zufrieden. In anderen Sprachen gibt es "do while" oder andere Schleifen. Geht das nicht irgendwie eleganter? Timer finde ich suspekt.

Den False/True-Schalter habe ich deswegen, weil der Zug bei der Einfahrt über zwei Kontakte fährt. Ist beim ersten Kontakt kein Gleis frei, dann vielleicht beim zweiten.

image.jpeg.21b77efab1eb0d9ab57ee8e9e7221ced.jpeg

Geschrieben
vor 30 Minuten schrieb guenter.strickmann:

Da die Funktion nur einmal durchläuft habe ich einen Timer gesetzt (Beispiel hatte ich im Forum gefunden), damit er solange sucht, bis ein Gleis frei wird. Das klappt auch. Allerdings bin ich damit nicht so richtig zufrieden.

Ich würde einen anderen Ansatz wählen:

Wenn kein freies Gleis gefunden wurde, dann wird erst dann wieder eins frei, wenn ein Zug ausfährt. Du musst also nicht alle paar Sekunden nachfragen, ob sich was geändert hat. Denn du weißt, was sich ändern muss. Und das ist dann dein Auslöser für eine erneute Suche (oder eine direkte Anforderung dieses frei gewordenen Gleises).

Geschrieben

Hallo,

vor 28 Minuten schrieb guenter.strickmann:

Geht das nicht irgendwie eleganter? Timer finde ich suspekt.

ich kenne Deinen Aufbau nicht. Mein Lösungsansatz wäre folgender:
Wenn ein Zug den Bahnhof verlassen hat (Gleis ist garantiert frei), wird nachgesehen, ob ein Zug auf Einfahrt wartet (weil er kein freies Gleis gefunden hat). Damit braucht es keinen Timer...

@Goetz war einen Tick schneller...

Gruß
EASY

Geschrieben

Vielen Dank erstmal für den Vorschlag. Das geht aber ein wenig am Kern meines Wunsches vorbei.

Wenn ein Zug auf Gleis 6 bis zum Einfahrsignal einfährt, könnte er theoretisch alle Gleise 1-6 belegen. Kommt jetzt zeitgleich ein Zug auf Gleis 2 angefahren und fährt in 6 ein, dann "schneidet" er alle Gleise für den Zug auf 6 ab, wenn ich nur einmal die Wdh-Funktion nutze. Durch den Timer schaue ich alle par Sekunden, ob wieder ein Gleis frei wird.

Das konntet ihr nicht wissen, aber wenn ich euren Ansatz wählen würde, bliebe der Zug auf 6 stehen, bis ein Zug von vielleicht Gleis 3 ausfahren würde. Dann würde 6 in 3 einfahren. Zeitgleich wären aber vielleicht, 1,2,4 und 5 schon frei gewesen. Ich hoffe, das war verständlich.

Durch die Timerabfrage habe ich also die Möglichkeit, ständig nach freien Gleisen "Ausschau" zu halten.

 

Wie gesagt, dass funktioniert auch. Aber geht das nicht auch anders?

a.mbp

Geschrieben
6 minutes ago, guenter.strickmann said:

Vielen Dank erstmal für den Vorschlag. Das geht aber ein wenig am Kern meines Wunsches vorbei.

Wenn ein Zug auf Gleis 6 bis zum Einfahrsignal einfährt, könnte er theoretisch alle Gleise 1-6 belegen. Kommt jetzt zeitgleich ein Zug auf Gleis 2 angefahren und fährt in 6 ein, dann "schneidet" er alle Gleise für den Zug auf 6 ab, wenn ich nur einmal die Wdh-Funktion nutze. Durch den Timer schaue ich alle par Sekunden, ob wieder ein Gleis frei wird.

Das konntet ihr nicht wissen, aber wenn ich euren Ansatz wählen würde, bliebe der Zug auf 6 stehen, bis ein Zug von vielleicht Gleis 3 ausfahren würde. Dann würde 6 in 3 einfahren. Zeitgleich wären aber vielleicht, 1,2,4 und 5 schon frei gewesen. Ich hoffe, das war verständlich.

Durch die Timerabfrage habe ich also die Möglichkeit, ständig nach freien Gleisen "Ausschau" zu halten.

 

Wie gesagt, dass funktioniert auch. Aber geht das nicht auch anders?

a.mbp 382.26 kB · 1 download

Ich antworte mal ohne dein beispiel anzuschauen.
Ich wuerde keinen timer verwenden, der loest event aus auch wenn nichts zu tun ist und loest nicht gleich aus wenn was tun ist, jenachdem wie oft er eingestellt ist.
In meinen augen die bessere loesung ist, entweder einfahr- und ausfahrgleisen, oder kontakten das gleiche schlagwort zuweisen und einen event verwenden, der bei diesem schlagwort entweder fuer gleis oder kontakt ausloest. Damit weisst du ganz genau dass es lohnt etwas zu tun, und wenn du jetzt noch das gleis oder kontakt benennst und abfragst weist du auch welches gleis betroffen ist.

Mit diesem konzept vermeide ich timer generell.

gruss
Gmd
 

Geschrieben (bearbeitet)
vor 57 Minuten schrieb guenter.strickmann:

Durch die Timerabfrage habe ich also die Möglichkeit, ständig nach freien Gleisen "Ausschau" zu halten.

Hallo Günter, 

"freie Gleise" bedeutet doch auch freie Fahrstraßen. Um den Timer zu vermeiden kannst du auch das Ereignis "Eine beliebige Fahrstraße wird aktiviert/deaktiviert" verwenden.  

Hier mal das Beispiel aus meinem Kopfbahnhof, den ich vor längerer Zeit mal hier ins Forum gestellt hatte. 

Screenshot2025-03-27150259.thumb.jpg.e7f06ce9e532bba217836d4180e7055c.jpg

VG,

Hawkeye

Bearbeitet von Hawkeye
Geschrieben

Hallo Hawkeye,

 

ich kenne deine Anlage wohl und die hat mir schon einige Ideen gebracht. Ich habe deine Anlage einmal in einer bestimmten Situation exportiert. Die einfahrende S-Bahn hat eigentlich ein Gleis frei, wartet aber, bis die gegenübliegende Lok auf das Abstellgleis fährt.

An der Stelle möchte ich, dass die S-Bahn bereits das freie Gleis anfährt.

Die Timer-Funktion in meiner Anlage schaut alle 3 Sekunden, ob was frei ist. Aber sie schaut eben immer wieder. 

 

Ich denke mir das so:

1. Ein Stück vor dem Einfahrsignal erzeugt ein Gleiskontakt den Befehl: Ich komme jetzt rein, gib mir ein freies Gleis.

2. Am Signal sind aber immer noch alle Gleise nicht zugängig.

3. Das liegt in meiner Anlage aber nicht daran, dass alle belegt sind, sondern das ein Zug quer vorherläuft und alle blockiert.

4. Am Ende des vorbeilaufenden Zuges müsste dann das erste freie Gleis signalisieren: ich bin jetzt frei, komm rein.

Das muss über eine Zustandsabfrage der Ausfahr-Fahrtsraßen gehen. Also wenn blockiert passiert nichts, wird die Straße frei, schaut sie, ob jemand am Einfahrsignal wartet und gibt die entsprechende Fahrstraße frei. So oder so ähnlich. Der Auslöser wäre dann immer das Umschalten der Ausfahr-Fahrstraße von Belegt nach frei.

 

Aber warum fährt die S-Bahn dann nicht in das freie Gleis?

 

Hawkeye.mbp

Geschrieben (bearbeitet)
vor 36 Minuten schrieb guenter.strickmann:

Aber warum fährt die S-Bahn dann nicht in das freie Gleis?

Hallo Günter, 

weil sich da wohl ein kleiner Fehler im Ablauf eingeschlichen hat.  

Screenshot2025-03-27191208.thumb.jpg.b3e5a729c5103e6b5ad8c3d740a09fe6.jpg

1. Weil die Kreuzungsweiche gesperrt ist. 

Screenshot2025-03-27191611.thumb.jpg.3abb14554eddf2057b2630b2f6ea8743.jpg

2. Weil die rote Lok eigentlich losfahren müsste, da die Fahrstraße aktiviert ist.

3. Das tut sie aber nicht. 

Weise ihr eine (negative) Geschwindigkeit zu und starte erst dann den Ablauf. 

Screenshot2025-03-27191708.thumb.jpg.8c3752f2560a7f3365b66dad9f850f87.jpg

Dann fährt die S-Bahn auch auf das freie Gleis. ;)

VG,

Hawkeye

PS: Aber irgendwie ist der gesamte Ablauf in deiner Version gestört. Hast du etwas verändert? 

Bearbeitet von Hawkeye
Geschrieben

Nein, ich habe die Anlage vor einer halben Stunde aus einem deiner Forenbeiträge heruntergeladen.

Aber wie so oft: Das Problem sitzt vor dem Bildschirm. :-(

Jedenfalls habe ich jetzt eine Idee, das probier ich mal aus. Wenn es klappt, stell ichs rein, wenn nicht steig ich auf Ölmalerei um.

Geschrieben (bearbeitet)
vor 19 Minuten schrieb guenter.strickmann:

Aber wie so oft: Das Problem sitzt vor dem Bildschirm. :-(

Nein, das Problem ist V9! 

Starte die Anlage in V8.5, dann funktioniert sie auch richtig. 

Hallo @Neo

diese Anlage 

V8.5-Kopfbahnhof 08.mbp

lauft in der MBS Version 8.5 wie sie soll. 

Startet man sie jedoch mit der MBS Version V9, dann stimmen die Fahrtrichtungen der Loks nicht und sie bleiben stehen! 

Screenshot2025-03-27195315.thumb.jpg.08b00c1a0c39713678cd0ca0415c055c.jpg

Hier werden die Fahrtrichtungen aus älteren Anlagen nicht richtig in V9 übernommen. Hast du diesbezüglich Änderungen in V9 vorgenommen? 

VG,

Hawkeye 

Bearbeitet von Hawkeye
Geschrieben (bearbeitet)
vor 10 Stunden schrieb Hawkeye:

Hast du diesbezüglich Änderungen in V9 vorgenommen? 

Hallo @Neo

ich habe die Ursache gefunden. Die Anlage verursacht in V9 einen Fehler, weil die Animationen der (alten) Fahrlichter nicht mehr existieren bzw. durch die Schalter ersetzt wurden.  

Screenshot2025-03-28062159.thumb.jpg.acedb8f8fef2078b78f9b998381a3521.jpg

Es gibt zwar ein paar (veraltete) Animationen, aber die Fahrlichter sind nicht mehr dabei. 

Screenshot2025-03-28062411.thumb.jpg.25389cee9d5985513adab2d382fe1d59.jpg

Da werde ich die Anlage wohl überarbeiten und auf die neuen Schalter aktualisieren müssen. 

Komisch ist nur, das es wohl nur die "Siemens-Vectron" betrifft. 

Bei den anderen Loks sind die (veralteten) Lichtanimationen noch vorhanden. Screenshot2025-03-28065246.thumb.jpg.0f86e203697ef09e7d5112cea527d90e.jpg

 

VG,

Hawkeye

Bearbeitet von Hawkeye
Geschrieben
vor 4 Stunden schrieb Hawkeye:

Es gibt zwar ein paar (veraltete) Animationen, aber die Fahrlichter sind nicht mehr dabei. 

Danke für die Fehleruntersuchung, das Modell wurde etwas zu stark bei der Umstellung auf die neuen Lichter angepasst. Ich habe die Vectron repariert.

Viele Grüße,

Neo

Geschrieben
vor 37 Minuten schrieb Neo:

Ich habe die Vectron repariert.

Danke, die Fehlermeldung ist weg und die Anlage läuft wieder. 

Das Fahrlicht und die Scheinwerfer vorne und hinten leuchten zwar nicht, wenn sie per Animation angesteuert werden, spielt für mich jetzt aber keine große Rolle mehr, da ich die Anlage schon auf Schalter umgestellt habe. 

 Screenshot2025-03-28120147.thumb.jpg.3a2e7384300ac73cd8255bd525bfe63c.jpg

Screenshot2025-03-28114940.thumb.jpg.bf58b8c4fbd65750c6c29fc053a5b82f.jpg

VG,

Hawkeye

Geschrieben
vor 1 Minute schrieb Hawkeye:

leuchten zwar nicht, wenn sie per Animation angesteuert werden

Ja, es handelt sich nur noch um Dummy-Animationen, da die Vectron die neuen Beleuchtungsfunktionen nutzt, die nicht mehr auf Animationen basieren.

Geschrieben (bearbeitet)

So, ein erster Ansatz. Ich habe den Timer umgewandelt. Jedesmal wenn eine beliebige Fahrstraße aktiviert wird, schaut die EV nach, ob ein Einfahrgleis frei ist. Das funktioniert auch soweit. Allerdings scheint mir das aktuell noch zu kompliziert mit den vielen Variablen. Das kommt eigentlich daher, dass die langen ICE und EC nicht auf das 1. bzw. 6 Gleis passen. Das muss noch vereinfacht werden. Aber prinzipiell funktioniert es. Das ist ja schon mal was.

Das Auslösen einer FS ersetzt den Timer.

 

8.mbp

Bearbeitet von guenter.strickmann
Geschrieben
vor 12 Stunden schrieb guenter.strickmann:

Allerdings scheint mir das aktuell noch zu kompliziert mit den vielen Variablen. Das kommt eigentlich daher, dass die langen ICE und EC nicht auf das 1. bzw. 6 Gleis passen.

Hallo Günter, 

echt jetzt? Hier geht es um vielleicht 1-2 m Gleislänge! 

Screenshot2025-03-29083644.thumb.jpg.b5dc47c552bb8b190542f2ac1f5605f4.jpgScreenshot2025-03-29084028.thumb.jpg.b490eb73a0009360a8373994517f87d0.jpg

Ist das ein Schildbürgerstreich bei der Planung? :D  Verlängere doch die Länge der Bahnhofsgleise, das die ICE so gerade noch auf die Gleise passen. 

 VG,

Hawkeye

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