Goetz Geschrieben 3. Dezember Geschrieben 3. Dezember Angeregt durch die Fragen von @Mobb habe ich ein kleines, schmuckloses Beispiel gebastelt, in dem Züge auf Knopfdruck in einen Endbahnhof ein- und aus ihm ausfahren. Content-ID: 6C90DC03-A6FA-4468-B153-0112BAC3D86D Bei der zufälligen Gleiswahl wird zuerst eine Zufallszahl von 1 bis 3 erzeugt und dann ab dieser Zahl reihum für alle drei Gleise geprüft, ob es die erforderlichen Bedingungen erfüllt. Die Züge sind ohne Rücksicht auf Epochen, Regionen etc. kunterbunt gemischt, damit verschiedene Zusammenstellungen im Bahnhof eintreffen. Außerdem habe ich die Trieb- von den Steuerwagen optisch unterschieden, wo es geeignete Varianten gab. So kann man sehen, dass mal das angetriebene Fahrzeug auf dem Kontakt am Gleisende steht und mal ein Bei- oder Steuerwagen. Da alle Züge durch die Beschleunigung im Kontakt in Bewegung gesetzt werden, muss ich nicht per EV das angetriebene Fahrzeug im Zug suchen. Das übernimmt das Studio für mich. Viele Grüße Götz
jloos Geschrieben 4. Dezember Geschrieben 4. Dezember Hallo @Goetz, bitte erkläre mir die Scriptzeile Startwert = Startwert % 3 + 1 Was hat es mit dem % aufsich? Gruß Jürgen
Goetz Geschrieben 4. Dezember Autor Geschrieben 4. Dezember Hallo Jürgen, das erkläre ich dir gerne, weil es ein sehr nützlicher Trick ist. Ich möchte nacheinander die Gleise 1, 2 und 3 prüfen. Ich möchte zufällig mit einer der drei Zahlen beginnen und dann weiter machen, bis ich alle drei Zahlen benutzt habe. Wenn ich (zufällig) bei 2 beginne und dann immer 1 hinzu zähle, bekomme ich 2, 3 und 4. Der Modulo Operator % zieht vom Startwert so oft die Zahl hinter dem % ab, bis der neue Wert kleiner als diese Zahl ist Aus 3 wird 0 Aus 4 wird 1 Aus 5 wird 2 Und aus 6 wird wieder 0 Wenn mein letzter Startwert 3 war, dann macht % 3 daraus wieder eine Null. Weil ich anschließend noch 1 hinzuzähle, bekomme ich so nach der 3 eine 1 Modulo liefert dir den Rest einer ganzzahligen Division: 7 / 3 = 2 Rest 1 7 % 3 = 1 Deshalb wird % als "Punktrechnung" gewertet, also wie * und / vor den "Strichrechnungen" + und - ausgeführt. Modulo ist in der Programmierung so hilfreich, dass du es in nahezu allen Programmiersprachen findest. Die Schreibweise kann aber von Sprache zu Sprache verschieden sein. Viele Grüße Götz
jloos Geschrieben 4. Dezember Geschrieben 4. Dezember Danke @Goetz, das muss ich erst mal praktisch ausprobieren. Gruß Jürgen
Goetz Geschrieben 4. Dezember Autor Geschrieben 4. Dezember vor 25 Minuten schrieb jloos: das muss ich erst mal praktisch ausprobieren. Genau das ist echtes "learning by doing". Das Theoretische mit eigenen praktischen Experimenten durchleuchten, bis man es wirklich durchschaut, damit aus der Theorie durch eigene Erfahrungen Wissen wird.
bigrala Geschrieben 15. Dezember Geschrieben 15. Dezember Hallo Goetz, ich habe mal versucht das alles nachzuvollziehen und die Anzahl der Gleise zu erweitern um zu sehen was da alles passieren muss, dass es funktioniert. Eigentlich glaube ich alles soweit verstanden zu haben, Also, zunächst habe ich ein zusätzliches Gleis angelegt, Endkontakt 54, Signal N4, den GK Ende mit dem Signal verbunden und die neuen FS angelegt. Einträge in den Listen Einfahrten und Ausfahrten jeweils um die neuen Fahrstraßen erweitert. Bei den Ein- und Ausfahrttastern die Zufallszahl auf 1-4 geändert, da ja jetzt 4 Gleise statt 3. Die Scripte Startwert = Startwert % 4 + 1, da ja jetzt In den Benutzerereignissen "zufällige Ein- und Ausfahrten" die Aktionen jeweils um einen weiteren Block (Script, Bedingung, FS aktivierung) erweitert. Bei den Einfahrten klappt auch alles gut, das neue Gleis wird berücksichtigt, nur bei den Ausfahrten bekomme ich im Protokoll eine Fehlermeldung "Attempt to get length of a nil value" und kann mir nicht helfen. Hab ich da doch noch was nicht wirklich verstanden ? Ein generelles Fragezeichen habe ich da auch noch. Bei den Bedingungen in den zufälligen Ausfahrten hast Du im Feld Name den Text "Kontakt" eingetragen ..... woher kommt der ? Ich kann nicht finden, dass Du dem GK Ende den Namen Kontakt vergeben hättest.
Goetz Geschrieben 15. Dezember Autor Geschrieben 15. Dezember vor einer Stunde schrieb bigrala: "Kontakt" ... woher kommt der? Kontakt ist eine Objektvariable in der Fahrstraße. Die wird dir fehlen und das ist vermutlich die Ursache dafür, dass es noch nicht ganz klappt
bigrala Geschrieben 15. Dezember Geschrieben 15. Dezember Da in Deiner Lösung der Kontakt zum Beschleunigen der ausfarenden Züge genutzt wird, lässt sich eine Ausfahrt mit Lokwechsel nicht so einfach realisieren - oder ? Da müsste dann die Wechsellok beim Ankuppeln erkannt und für das Ausfahren des Zuges angesprochen werden. Die anschließend am Endkontakt sehende müsste dann ebenfalls angesprochen und zu einem Wartebereich geschickt werden.
Goetz Geschrieben 15. Dezember Autor Geschrieben 15. Dezember Stimmt, dafür ist mein Beispiel nicht (ohne weiteres) geeignet. Denn die Zuglok würde ja nach Ankunft abgekoppelt und stünde nun alleine auf dem Kontakt. Wenn das Ausfahrsignal auf Fahrt wechselt, würde diese Lok (und nicht der neue Zug) durch den Kontakt beschleunigt.
bigrala Geschrieben 15. Dezember Geschrieben 15. Dezember Meine ich ja mit meiner Beschreibung. Aber für Triebwagen und ohne Lokwechsel ist Dein Beispiel absolut geil.
Goetz Geschrieben 15. Dezember Autor Geschrieben 15. Dezember Freut mich, dass es dir gefällt. Und mit der Beschreibung wollte ich deine Aussage nur bestätigen.
Roter Brummer Geschrieben 16. Dezember Geschrieben 16. Dezember Hallo @bigrala, das mit dem Lokwechsel habe ich hier beschrieben: HG Brummi
bigrala Geschrieben Dienstag um 23:53 Uhr Geschrieben Dienstag um 23:53 Uhr (bearbeitet) Hallo Roter Brummer, Hallo Goetz und all die anderen..... die Mini Experimente mit dem Lokwechsel von Roter Brummer sind nun ja schon fast 5 Jahre alt und wir sind inzwischen bei V9. Das Prinzip mit abkuppeln, ranfahren einer Ersatzlok mit ankuppeln, das Ausfahren des neuen Zuges und das anschließende Parken der alten Lok .... das ist ja alles kein Problem. Mir gefällt die Lösung von Goetz mit dem Modulo Operator richtig gut. Ich möchte einen Kopfbahnhof realisieren mit der zufälligen Einfahrt mit dem Modulo Operator (nach Goetz) und einer Ausfahrt nach einem Halt, dessen Länge durch eine Zufallszahl (z.B. 20-40 sec) festgelegt ist. Soweit, sogut Jetzt möchte ich beim Halt des Eingefahrenen Zuges abfragen, ob es sich um einen "normalen" Zug oder einen Triebwagen (2 Steuerstände) handelt. Im Fall eines Triebwagens, so kommt die Ausfahrt von Goetz, allerdings ohne die zufällige Ausfahrt, zum Einsatz. Im Falle eines normalen Zuges, findet ein Lokwechsel statt und anschließend die Ausfahrt nach dem regulären Halt. Außerdem soll in Abhängigkeit der anschließend zu fahrenden Strecke (elektrifiziert oder nicht) als Wechsellok eine E-Lok oder Diesel Lok an den Zug gekoppelt werden. Soweit mein Plan - bin mal gespannt in wie weit ich das realisieren kann mit möglichst universeller EV. Eine Frage/Unklarheit habe ich bereits.... Ich habe im Ausfahrsignal 3 mögliche Fahrstrassen (FS1, FS2, FS3) Direkt hinter das Ausfahrsignal habe ich einen weiteren GK um den Zugnamen (Objekt) des einfahrenden Zuges und der Wechsellok ins Signal zu schreiben. Sowet okay. (normaler Zug) .... Nach halt des einfahrenden Zuges wird eine Wechsellok abgerufen, diese meldet sich beim überfahren des zusätzlichen GK´s im Signal an, bekommt 15 sce Zeit um anzukoppeln, dann wird die FS 1 zur Ausfahrt aktiviert und die Wechsellok bekommt einen Fahrbefehl. 2 Sec später startet auch die am GLeisende stehende Lok, bekommt die FS 3 zugewiesen und fährt in den Parkbereich der Wechselloks. Läuft soweit. (Triebwagen) ..... Nach halt des Triebwagens wird eine zufällige Zeitverzögerung (20-40) aktiviert, danach soll die FS 2 aktiviert und der Zug gestartet werden. >>> meine Frage, wenn der Triebwagen auf dem GK am Gleisende steht, wie kann er die FS 2 im Ausfahrsignal aktivieren ? Bzw. muss ich immer die FS in den auslösenden GK schreiben oder kann ich alle möglichen FS im Ausfahrsignal speichern und aktivieren auch wenn der Zug nicht auf dem Kontakt des Ausfahrsignals steht ? Versucht hatte ich...... Den GK am Gleisende hatte ich mit dem Ausfahrsignal verbunden. Wenn ich die FS manuell auslöse, fährt mein Zug auch schön los. Nach meinem Verständnis sollte durch die verknüpfung des GK´s mit dem Signal auf die Einträge im Ausfahrsignal zugegriffen werden können. Ich dann die Aktivierungsaktion so vorgestellt; Fahrstrasse (Variable) --- Auslöser = Gleiskontakt --- Name = "FS2" --- Zustand = Aktiv Anscheinend versucht die EV hier die FS2 im GK Gleisende und nicht im verbundenen Signal zu suchen. - das ergibt natürlich eine Fehlermeldung dass das Feld FS2 nicht gefunden wurde. Allem Anschein nach liege ich mit meiner Annahme in Bezug auf die Verbindung/Verknüpfung schief. >>> Wie müsste die Aktion tatsächlich aussehen um auf den Kontakt des Signals und seine Inhalte zuzugreifen. Die Verwendung der Objektvariable in der FS und die Abfrage in der EV diente ja eigentlich nur der Ermittlung und Aktivierung der zufälligen Ausfahrten. >>> Daher denke ich in meinem Fall darauf verzichten zu können - oder liege ich hier falsch ? Bearbeitet Mittwoch um 02:52 Uhr von bigrala
bigrala Geschrieben Mittwoch um 12:11 Uhr Geschrieben Mittwoch um 12:11 Uhr (bearbeitet) zur Verdeutlichung mal mein Teststück, im Moment nur Triebwagen und Lokwechsel und noch ohne Unterscheidung El Lok oder Diesel Lok. Durch Taster können die beiden Demozüge gestartet werden V9 - Test Lokwechsel und Triebwagen.mbp Bearbeitet Mittwoch um 12:41 Uhr von bigrala
AndreasWB Geschrieben vor 18 Stunden Geschrieben vor 18 Stunden Hallo zusammen, zum Thema der zufälligen Fahrstraßen-Auswahl habe auch ich ein kleines Demo-Layout erstellt. Es steht in der Bibliothek unter Tutorial Anlagen unter der ID EAB7AADB-371B-45F2-9791-14E367220E61 zur Verfügung ("Test Zufalls-Fahrstraßen"). Erstellt under MBD V8.5. Einfach den Ablauf mit der Fahrstraße "Ausfahrt 2" starten. Mit gewissen Zeitverzögerungen werden immer wieder entsprechende Folge-Fahrstraßen aktiviert. Dies alles wird über einige wenige, überschaubare EVs gesteuert. Zusäzlich werden auch die zugehörigen Vorsignale korrekt angesteuert und der Zug erhält immer die richtige Geschwindigkeitsvorgabe. Gruß Andreas
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden