Jump to content

Empfohlene Beiträge

Geschrieben

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

TutorialkleinerEndbahnhof.thumb.jpg.e8de5adf6fab9478eb855ea57bac5353.jpg

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 

Geschrieben

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

Geschrieben
vor 25 Minuten schrieb jloos:

das muss ich erst mal praktisch ausprobieren. 

(y)

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.

  • 2 Wochen später...
Geschrieben

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.

Screenshot 2024-12-15 182928.jpg

Screenshot 2024-12-15 182821.jpg

Geschrieben

 

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

 

Geschrieben

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.

Geschrieben

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.

 

Geschrieben (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 von bigrala

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