Jump to content

Autoschlangen-Steuerung ohne Sperr-Kreuzung nicht möglich


BahnLand

Empfohlene Beiträge

Hallo Neo und Freunde des Ereignis-gesteuerten Straßenverkehrs

 

Wie sagte einst das kleine Mädchen mit gezogenen Zähnen nach der Rückkehr vom Zahnarzt zu seiner Mutter?

"Mami, Mami, er hat überhaupt nicht gebohrt!

So könnte es mir auch gehen, da ich mir momentan die Zähne ausbeiße bei dem Versuch, eine funktionierende und auch betriebssichere Ampel- und Schranken-Steuerung hinzubekommen, welche ohne die bisher genutzte Sperr-Funktion der Kreuzung auskommt.

Diese Funktion verhinderte, dass während des Passierens der Kreuzung durch einen Zug ein zweiter in diesen hinein fuhr. Vielmehr wurde der zweite Zug unter Beibehaltung seiner Geschwindigkeitszuordnung solange am "Eingang" der Kreuzung angehalten, bis der erste Zug die Kreuzung verlassen hatte. Danach fuhr der zweite Zug automatisch mit seiner ursprünglichen Geschwindigkeit weiter, ohne dass es hierfür eines expliziten Anstoßes durch den Benutzer oder die Ereignisverwaltung bedurfte.

Leider hat Neo angekündigt, dass es diese Funktionalität der Kreuzung in der neuen Version des Modellbahn-Studios nicht mehr geben wird. Deshalb werden etliche meiner Anlagen (z.B. "Bahnübergangs-Steuerung", "Ablaufberg", "Autoscooter" oder die Kleinkabinen-Seilbahn auf der Anlage "Mount-Rushmore") in der V4 nicht mehr ablauffähig sein.

Bei dem Versuch, eine ausschließlich über die Ereignisverwaltung gesteuerte Lösung zu finden, welche die Kreuzungs-Funktionalität nicht mehr benötigt, bin ich bisher kläglich gescheitert, weil ich es einfach nicht schaffe, den so leidlich funktionierenden Ablauf auch "betriebssicher" zu machen.

Vielleicht hat ja jemand von Euch eine Idee, wie man den hier beschriebenen Ablauf, wie er von mir bisher realisiert wurde, gegen die am Ende dieses Beitrags beschriebenen Fehler "abschotten" kann, ohne dass die Funktionalität an sich darunter leidet. Andererseits hat Neo in Aussicht gestellt, dass er sich nach der Erstauslieferung der V4 Gedanken über mögliche Funktionserweiterungen im Modellbahn-Studio (insbesondere in der Ereignisverwaltung) machen könnte, um das hier geschilderte Problem auf andere Weise als über die nicht mehr vorhandene Kreuzungs-Funktionalität lösen zu können. Hierfür möchte ich mittels dieser Beschreibung ein paar Anhaltspunkte liefern.

 

Zunächst sei als "Ausgangspunkt" die in der Anlage "Bahnübergangs-Steuerung" realisierte Lösung kurz umrissen:

59ef9ebeeea7f_01Gleissperrealt.thumb.jpg.d0350cff31094b940b0e4bef3ea40577.jpg

Bei einer geschlossenen Bahnschranke oder einer roten Ampel konnte durch eine in den Fahrweg eingebaute Kreuzung und eine quer zur Fahrtrichtung einfahrende "Dummy-Lok" (grün)  die Weiterfahrt der ankommenden Straßenfahrzeuge blockiert werden. Die vor der Kreuzung angehaltenen Fahrzeuge behielten ihre Geschwindigkeitszuordnungen bei,  

59ef9ed4b2fe7_02Kreuzungssperrealt.thumb.jpg.d543580e26c8077485c6298a75686eaa.jpg

sodass sie nach dem "Zurückweichen" der Dummy-Lok ihre Fahrt mit der ursprünglichen Geschwindigkeit fortsetzen konnten. Zwischenräume zwischen den einzelnen Fahrzeugen wurden durch "Dummy-Anhänger" (gelb) realisiert, die ein Auffahren "Stoßstange an Stoßstange" verhinderten. Diese wurden jeweils dem vorausfahrenden Fahrzeug zugeordnet und hatten die "hinteren" Fahrzeugkupplungen grundsätzlich deaktiviert. So war durch das dunkelbraune Gleis, das "in Wahrheit" ebenfalls eine Kreuzung war (beide Fahrwege identisch), die Trennung aufeinanderfolgender Fahrzeuge möglich,

59ef9eea55712_03Gleissperrealt2.thumb.jpg.aa36b11b58dcb0c0bdc78e7f88212b2c.jpg

wodurch sich insbesondere die grüne "Sperr-Lok" wieder dazwischen schieben konnte, um insbesondere einen größeren Abstand zwischen vorausfahrendem und nachfolgendem Fahrzeug zu ermöglichen.

 

In der Variante ohne Nutzung der Kreuzungs-Funktionalität sollte nun das gleiche Szenario realisiert werden: Ein Fahrzeugkonvoi, bestehend aus einer Reihe von Einzelfahrzeugen und Fahrzeug-Kompositionen (z.B. Lastwagen oder Autos mit Anhängern, Sattelzüge usw.), jeweils abschließend ergänzt durch einen "Dummy-Anhänger" für einen minimalen Abstand, sollte vor einer Ampel oder Schranke insgesamt gestoppt und nach Freigabe des Fahrwegs nach Fahrzeug-Kompositionen getrennt wieder einzeln gestartet werden können.

59ef9ef69945b_04AutokonvoiV4.thumb.jpg.83535a3a027a1647099aa3c8f5e21f0c.jpg

Da das vollautomatische Anfahren der einzelnen Fahrzeuge im Konvoi nun nicht mehr möglich ist, musste ein Weg gefunden werden, wie alle Fahrzeuge gestartet werden können, ohne die mögliche Länge des Konvois zu kennen. Damit war der Start aller Fahrzeuge des kompletten Konvois über ein darunter befindliches Gleis "geeigneter Länge" ausgeschlossen. Als Lösung blieb also nur noch, die Fahrzeuge des gesamten Konvois zu "einem Zug" zu vereinen und diesen als Ganzes über das Auto an der "Zugspitze" zu starten. Hierfür mussten aber alle Kupplungen an allen Fahrzeugen beidseitig aktiviert sein.  Zur Trennung der ersten Fahrzeugkomposition vom Zug musste daher die hintere Kupplung von deren letztem Teilfahrzeug (dem Dummy-Anhänger) dynamisch deaktiviert werden.

Da über "Zug-betritt-Gleis"-Ereignisse nur "aktive Lokomotiven" (hier die Autos mit zugeordneter Geschwindigkeit), aber keine "Wagen" (hier die Dummy-Anhänger) erkannt werden können, erfolgte jeweils eine paarweise Verknüpfung zwischen Auto und Dummy-Anhänger mittels gleichartig durchnummerierten Fahrzeug-Bezeichnungen und einer "verbindenden" Objektvariable (die Nummern sind im obigen Bild über den gelben Dummy-Anhängern eingeblendet):

59ef9efbed0ec_05Objektvariablen.jpg.b27f5918fd2fb55c58f406bea928633b.jpg

Diese Liste wurde ür den kompletten Fahrzeugestand händisch erstellt.

Für die Realisierung der Konvoi-Steuerung wurde folgende Steuergleis-Konfiguration aufgebaut:

59ef9f078d9aa_06Steuergleis-Konfiguration.thumb.jpg.2d6a0a91662df106a9d2bba82d15f1bd.jpg

Bei geschlossenem Sperrgleis (gelb) werden ankommende Fahrzeuge zwangsgestoppt. Dies ist notwendig, da ein über die Zuweisung der Geschwindigkeit "0" gestopptes Auto durch ein von hinten auf den Konvoi auffahrendes Auto wieder "angeschubst" werden könnte.

Das erste Auto des Konvois kommt dann auf dem roten Stoppgleis zum Stillstand. Da nur während der Einfahrt das Auto durch die EV identifiziert werden kann, wird hierbei gleich über dessen Objektvariable die hintere Kupplung des Abstands-Anhängers deaktiviert. Der Rest des Konvois bleibt damit stehen. Nach dem Öffnen des Sperrgleises wird über das rote Stoppgleis die erste (entkuppelte) Fahrzeug-Komposition gestartet. Das Stoppgleis muss so kurz sein, dass kein aufgefahrenes Nachfolge-Fahrzeug mit erfasst werden kann. Die vergebene Startgeschwindigkeit ist etwas höher als die "normale" Fahrgeschwindigkeit, damit auch bei einem durch Auffahrt von hinten nachgeschobenen Rest-Konvoi ein kleiner Abstand für das Schließen des Sperrgleises nach dem Passieren der ersten Fahrzeug-Komposition entsteht.

Der Start des restlichen Konvois zum Aufrücken über das graue Nachrückgleis erfolgt bei der Einfahrt des abgekuppelten ersten Fahrzeugs in das olivgelbe Fahrgleis. Es werden alle Fahrzeuge gestartet, die sich auf dem grauen Nachrückgleis befinden. Damit dies auch dann für mindestens ein Fahrzeug zutrifft, wenn es sich bei dem am Stoppgeleis gestarteten Fahrzeug um eine "lange" Komposition handelt (z.B. Schwerlasttransport oder Gliederbus), muss das graue Nachrückgleis länger als die längste auf der Anlage im Einsatz befindliche Fahrzeugkomposition sein. Dies bedeutet allerdings auch, dass bei einer Reihe von kurzen Fahrzeugen am Anfang des Konvois durch die Geschwindigkeitszuweisung an das graue Nachrückgleis sehr viele Fahrzeuge erfasst werden.

Da bei mehreren "aktiven" Fahrzeugen im "Zugverband" die Erkennung des "Auslöser"-Fahrzeugs im "Zug-betritt-Gleis"-Ereignis nicht eindeutig ist, und somit anstelle des ersten Autos auch ein Fahrzeug weiter hinten im Konvoi in der "_Trigger1"-Variable stehen kann, muss die "Identifizierung" des ersten Fahrzeugs im Konvoi am Stoppgleis "erzwungen" werden. Dies wird dadurch realisiert, dass "vorher" noch das violette Bremsgleis eingefügt wird. Fährt der Konvoi in dieses Gleis ein, werden zunächst alle Fahrzeuge auf dem grauen Nachrückgleis durch die Geschwindigkeitszuweisung "0" gestoppt. Hiervon betroffen ist aber auch das allererste Fahrzeug, das sich in diesem Moment gleichzeitig auf dem violetten Bremsgleis und dem grauen Nachrückgleis befindet. Deshalb wird in derselben Ereignisdefinition dem "Fahrzeug auf dem violetten Gleis" (und das ist jetzt nur das erste Fahrzeug des Konvois) wieder die volle Fahrgeschwindigkeit zugewiesen. Beim Eintreffen auf dem roten Stoppgleis besitzt daher "nur" das erste Fahrzeug eine zugeordnete Geschwindigkeit und wird daher in der "_Trigger1"-Variable korrekt erkannt, wodurch dann auch dessen Abstands-Anhänger korrekt adressiert werden kann.

Soweit die Theorie. In der Praxis sieht es aber ganz anders aus:
Beidseitig vom Hauptschalter für die Demo sind Anzeigen für das erkannte Triebfahrzeug und dessen Abstands-Anhänger am roten Stoppgleis (links) und für das erkannte Triebfahrzeug am violetten Bremsgleis (rechts) angeordnet. Diese werden mit dem jeweiligen "Zug-betritt-Gleis"-Auslöser und der zugehörigen Objektvariable beschrieben.

59ef9f10ea5af_07Gutfall2.thumb.jpg.6fcce33a4def739ba18fa4c8bb29cc28.jpg

Hier kann man gut erkennen, dass die Theorie "manchmal" sehr gut funktioniert (Bild oben), aber in vielen Fällen eben doch irgendein anderes Fahrzeug als das erste, in der linken Anzeige erscheint (Bild unten).

59ef9f1cb761c_08Schlechtfall.thumb.jpg.6cf970ebb447ed7847091be6705961f4.jpg

Entsprechend wird dann die hintere Kupplung der falschen Fahrzeug-Komposition (am gezeigten Beispiel die Kupplung von Fz05# anstelle von Fz02#) deaktiviert, was dazu führt, dass der Konvoi an der falschen Stelle getrennt wird. Durch die "Überlänge" des falsch abgetrennten "ersten Fahrzeugs" steht nun der restliche Konvoi außerhalb des grauen Nachrückgleises und kann daher nicht mehr gestartet werden.  

Wegen der "Überlänge" der "falschen" Fahrzeug-Komposition, befindet sich dann beim Eintritt in das olivgelbe Fahrgleis ein Teil der enthaltenen Triebfahrzeuge immer noch auf dem grauen Nachrückgleis, wodurch diese alle wieder eine Geschwindigkeit zugordnet bekommen. Folglich kann dann beim Verlassen des gelben Sperrgleises, bei dem die hinterste Kupplung des "Auslösers" wieder aktiviert werden soll, wieder "irgendeine" Kupplung aus dem falschen Konvoi identifiziert werden. Damit bleibt möglicherweise die "tatsächlich hinterste" Kupplung deaktiviert. Beim "Auffahren in der nächsten" Runde, wird dann der dadurch gebildete "Zugverband" nicht mehr geschlossen, wodurch nicht mehr alle Teile des "Zuges" nachgezogen werden können.

Der Vollständigkeit halber sei noch erwähnt, dass beim Verlassen des grünen Freigleises das Sperrgleis für den Start des nächsten Autos geöffnet wird, wenn der Hauptschalter eingeschaltet ist.

 

Aufgrund geschilderten "Tohuwabohus"  folgt jetzt meine Frage an die Runde:
Hat jemand eine Idee, wie man dieses Szenario mit bestehenden Mitteln betriebssicher machen könnte? Oder gibt es wirklich nur den Weg möglicher "Nachbesserungen" durch Neo (z.B. in der Ereignisverwaltung), um die Betriebssicherheit dieses Szenarios herstellen zu können?

Ich habe die Anlage im beliegenden ZIP-Paket zusammen mit der extrahierten und als Textdatei formatierten Ereignissteuerung beigelegt.  Vielleicht hilft es ja etwas beim Nachvollziehen der Problematik. Die Dummy-Fahrzeuge und die Nummern-Anzeigen sind jeweils eigenen Ebenen zugeordnet und können daher über diese ausgeblendet werden. Die Anlage wurde in V3 erstellt, läuft aber mit denselben "Mucken" auch in V4.

Autoschlange.zip

Viele Grüße
BahnLand

Autoschlange.zip

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Bahnland,

hast du mal probiert jedes ankommende Fahrzeug bei geschlossener Schranke in einer hochzählende Objektvariable der Schranke einzufügen, spricht Schranke1.Auto1, Schranke1.Auto2 ... (idealerweise wird es ja bei den Variablen vielleicht mal Array's geben)

Wenn du die Fahrgeschwindigkeit jedes Fahrzeuges in einer Objektvariable des jeweiligen Fahrzeugs speicherst, müsstest du doch dann beim öffnen der Schranke jeden Wagen einzeln ansprechen und wieder auf seine Fahrgeschwindigkeit setzen können.
Du must ja nur in einer Schleife abfragen ob die nächste Objektvariable z.B. "Auto2" leer oder gefüllt ist. Wenn du statt Auto1, Auto2, ... nur 1, 2, ... verwendest müsste man die Objektvariablen mit Hilfe mathematischer Funktionen ansprechen können. Theoretisch könntest du mit der Zufallsfunktion sogar eine zufällige Reaktionszeit für das anfahren einbauen.
Schwierig stelle ich mir aber vor zu realisieren, dass die Autos beim Anfahren nicht aufeinander auffahren falls die einzelnen Fahrzeuge über unterschiedliche Geschwindigkeiten verfügen.

 

Parallel eine Frage an Neo:

Wenn ich mich richtig entsinne wurde im Forum irgendwann mal davon gesprochen, das es demnächst möglich wäre die Achspunkte/Kopplungspunkte vom Rollmaterial zu bestimmen/verändern. Ich Frage deshalb, weil man eventuell auf irgendwelche Dummy-Anhänger verzichten könnte, wenn der Ankopplungspunkt bei Auto's entsprechend etwas hinter dem eigentlichen Fahrzeugende liegt. So würden zwar die Fahrzeuge aufeinander 'auffahren', aber bei geöffneter Kupplung nicht aneinander haften und optisch sähe es so aus, als wenn sie gar nicht erst zusammenstoßen. Immerhin bewirkt Bahnland's Beispiel mit den Dummy-Anhängern ja eine Verdopplung der Straßenfahrzeuge, was die Ressourcen angreift.

Bearbeitet von MarkoP
Link zu diesem Kommentar
Auf anderen Seiten teilen

*Hallo Marko,

vor 1 Stunde schrieb MarkoP:

hast du mal probiert jedes ankommende Fahrzeug bei geschlossener Schranke in einer hochzählende Objektvariable der Schranke einzufügen, spricht Schranke1.Auto1, Schranke1.Auto2

Wie soll ich die ankommenden Autos vor der geschlossenen Schranke registrieren? Das ertse Austo kann ja noch in ein kurzes Stoppgleis vor der Schranke einfahren und damit registriert werden. Um weitere ankommenden Autos in der Schlange registrieren zu können, muss ich dieses Stoppgeis entsprechend verlängern, damit "alle" ankommenden Autos das "zu-betrritt.Gleis"-Ereignis auslösen können. Wie lang soll nun dieses Gkleis sein, wenn die Länge des Staus vor der geschlossenen Schranke beliebig sein kann?

vor 1 Stunde schrieb MarkoP:

Wenn du die Fahrgeschwindigkeit jedes Fahrzeuges in einer Objektvariable des jeweiligen Fahrzeugs speicherst, müsstest du doch dann beim öffnen der Schranke jeden Wagen einzeln ansprechen und wieder auf seine Fahrgeschwindigkeit setzen können.

Diese Vorgehensweise wende ich bereits bei meinen Zügen auf der Gotthard.Anlage an, da diese nicht nur verschwiedene Geschwindigkeiten besitzen, sondern auch vorwärts oder rückwärts ausgrichtet sein können. Dies lässt sich auf "einfache" Weise tatsächlich nur mit in Objektvariablen abgespeichertebn "Eigen"-Geschwindigkeiten lösen. Im Gegensatz zu meinen Zügen, von denen jeder exklusiv auf einem speziellen Gleis steht, reihen sich die Autos auf einer Spur "unkontrolliert" aneinander. Und da es meines Wissens auch in V4 kein Array geben wird, habe ich bisher keinen Weg gefunden, eine variable Anzahl von Objekten in einer später wieder abzufragenden (irgendwie gearteten) "Liste" abzulegen.

vor 1 Stunde schrieb MarkoP:

Wenn du statt Auto1, Auto2, ... nur 1, 2, ... verwendest müsste man die Objektvariablen mit Hilfe mathematischer Funktionen ansprechen können.

Diesen "Trick" habe ich auch schon beim "Ablaufberg" angewendet. Wenn es aber sehr viele Objekte unterschiedlicher Art gibt, die alle mit rein numerischen Bezeichnern ausgestattet sein sollen, wird man sehr schnell den Überblick verlieren.

Was hier z.B. in der EV fehlt, ist die zusätzliche Ausgabe (als weiterern _Trigger-Wert) des Fahrzeugs (unabhängig ob antreibende oder passiv laufende Lok oder Wagen), das sich beim Ereignis "Zug betritt Gleis" tatsächlich auf dem "betretenen" Gleis befindet (die "Auslöser-Lok" könnte ja schiebend am anderen Ende des Zuges positioniert sein).

vor 1 Stunde schrieb MarkoP:

Schwierig stelle ich mir aber vor zu realisieren, dass die Autos beim Anfahren nicht aufeinander auffahren falls die einzelnen Fahrzeuge über unterschiedliche Geschwindigkeiten verfügen.

Das "Aufeinanderfahren" ist nicht nur wegen der unterschiedlichen individuellen Geschwindigkeiten ein Problem, sondern grundsätzlich beim Bilden von Autoschlangen vor Hindernissen wie z.B. geschlossenen Schranken und roten Ampeln. Genau das "Wieder-auseinander-pfriemeln" ist das Problem, weil man beim "geschlossenen Zugverband" nicht feststellen kann, wo ein Auto oder Gespann endet und das nächste anfängt.

vor 2 Stunden schrieb MarkoP:

Wenn ich mich richtig entsinne wurde im Forum irgendwann mal davon gesprochen, das es demnächst möglich wäre die Achspunkte/Kopplungspunkte vom Rollmaterial zu bestimmen/verändern. Ich Frage deshalb, weil man eventuell auf irgendwelche Dummy-Anhänger verzichten könnte, wenn der Ankopplungspunkt bei Auto's entsprechend etwas hinter dem eigentlichen Fahrzeugende liegt. So würden zwar die Fahrzeuge aufeinander 'auffahren', aber bei geöffneter Kupplung nicht aneinander haften und optisch sähe es so aus, als wenn sie gar nicht erst zusammenstoßen. Immerhin bewirkt Bahnland's Beispiel mit den Dummy-Anhängern ja eine Verdopplung der Straßenfahrzeuge, was die Ressourcen angreift.

Im Prinzip hast Du Recht. Nur würde ich die "Luft" nicht hinten, sondern vorne anhängen. Dann hast Du nämlich weiterhin die Möglichkeit, hinten einen Anhänger (beim PKW beispelsweise einen Wohnwagen) anzukuppeln, was nicht mehr ginge, wenn Du die "Luft" hinten einplanen würdest. Der Effekt mit dem "auseinander haltenden" Zwischenraum ist in beiden Fällen der gleiche.

Viele Grüße
BahnLand

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 19 Minuten schrieb BahnLand:

Wie soll ich die ankommenden Autos vor der geschlossenen Schranke registrieren? Das ertse Austo kann ja noch in ein kurzes Stoppgleis vor der Schranke einfahren und damit registriert werden. Um weitere ankommenden Autos in der Schlange registrieren zu können, muss ich dieses Stoppgeis entsprechend verlängern, damit "alle" ankommenden Autos das "zu-betrritt.Gleis"-Ereignis auslösen können. Wie lang soll nun dieses Gkleis sein, wenn die Länge des Staus vor der geschlossenen Schranke beliebig sein kann?

Ich verwende in solchen Situationen immer ein Flexgleis bis zur nächsten Weiche/Kreuzung - länger kann der auflaufende Verkehr ja nicht werden.

 

vor 20 Minuten schrieb BahnLand:

Und da es meines Wissens auch in V4 kein Array geben wird, habe ich bisher keinen Weg gefunden, eine variable Anzahl von Objekten in einer später wieder abzufragenden (irgendwie gearteten) "Liste" abzulegen.

Hast du Recht mit, war ein kleiner Anreiz an Neo. Lösen kannst du das nur indem du eben mehrere Objektvariablen durchnumeriert anlegst, quasi auf Vorrat.
Solange sie leer sind tauchen Sie ja sonst nirgends auf. Beim Rest des Absatzes verstehe ich nicht ganz wie du es meinst.

 

vor 23 Minuten schrieb BahnLand:

Diesen "Trick" habe ich auch schon beim "Ablaufberg" angewendet. Wenn es aber sehr viele Objekte unterschiedlicher Art gibt, die alle mit rein numerischen Bezeichnern ausgestattet sein sollen, wird man sehr schnell den Überblick verlieren.

Was hier z.B. in der EV fehlt, ist die zusätzliche Ausgabe (als weiterern _Trigger-Wert) des Fahrzeugs (unabhängig ob antreibende oder passiv laufende Lok oder Wagen), das sich beim Ereignis "Zug betritt Gleis" tatsächlich auf dem "betretenen" Gleis befindet (die "Auslöser-Lok" könnte ja schiebend am anderen Ende des Zuges positioniert sein).

Gebe ich dir Recht. Bei meiner Hafenanlage habe ich da dann z.B. ab 10000 durchnumeriert und jeden Block zum Verladen jeweils um 1000 addiert, also den ersten Block 10001, 10002,10003´, ... und den nächsten Block dann 11001, 11002, 11003, ... etc.

Aber grundsätzlich wäre es von Vorteil wenn man ein Objekt nicht mit seinem Namen, sondern mit seiner kompletten Struktur ansprechen kann.

 

vor 26 Minuten schrieb BahnLand:

weil man beim "geschlossenen Zugverband" nicht feststellen kann, wo ein Auto oder Gespann endet und das nächste anfängt.

Also ich würde grundsätzlich davon absehen einen geschlossenen Zugverbund daraus zu machen. Das ginge einzig nur, wenn du dem jeweils vorderen Fahrzeug den Namen des nachfolgenden in einer Objektvariable zuweist. Aber das führt zu unendlich langen Verkapselungen beim Ansprechen der Objektvariablen.

 

vor 28 Minuten schrieb BahnLand:

Im Prinzip hast Du Recht. Nur würde ich die "Luft" nicht hinten, sondern vorne anhängen. Dann hast Du nämlich weiterhin die Möglichkeit, hinten einen Anhänger (beim PKW beispelsweise einen Wohnwagen) anzukuppeln, was nicht mehr ginge, wenn Du die "Luft" hinten einplanen würdest. Der Effekt mit dem "auseinander haltenden" Zwischenraum ist in beiden Fällen der gleiche.

Hast du vollkommen Recht mit, wäre die bessere Variante. Müsste soweit ich das aber noch im Kopf habe vom jeweiligen Modellbauer festgelegt werden. Nachträglich konnte man es nicht anpassen wenn ich mich richtig erinnere.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Marko,

vor 2 Stunden schrieb MarkoP:

Ich verwende in solchen Situationen immer ein Flexgleis bis zur nächsten Weiche/Kreuzung - länger kann der auflaufende Verkehr ja nicht werden.

Dies bedeutet aber dann in letzter Konsequenz, dass das komplette Straßennetz außerhalb von Verzweigungen "überwacht" und für den möglichen Start von Autos innerhalb aufzulösender Warteschlangen einbezogen werden muss. Bei langen Straßenzügen, die nicht durch ein einzelnes Flexgleis dargestellt werden können, sondern gegebenenfalls aus zig Straßenelementen bestehen, kann dies zu einer sehr aufwendigen Ereignissteuerung führen (meine Gotthard-Anlage besitzt beispielsweise einen von Wassen bis Amsteg reichenden Straßenabschnitt ohne dazwischen vorhandene Kreuzung/Verzweigung).

vor 2 Stunden schrieb MarkoP:

Beim Rest des Absatzes verstehe ich nicht ganz wie du es meinst.

Ich vermute, dass Du damit den vorderen Teil dieses Absatzes meinst, da sich der von Dir zitierte Satz am Ende desselben befindet.

Im Gegensatz zu Autos, die - wenn sie nicht gerade "rangieren" - normalerweise einen Vorwärtsgang eingelegt haben (also der Geschwindigkeitswert immer positiv ist), kann eine Lok auch "umgekehrt" (d.h. mit dem hinteren Führerstand vorne) einem Zug vorgespannt sein. Dann besitzt sie eine Geschwindigkeitszuweisung mit negativem Vorzeichen. Bei meinen Zügen auf der Gotthard-Anlage (einer neueren noch nicht veröffentlichten Variante) habe ich für jede Lok eine Objektvariable definiert, in welcher der Betrag der vorgesehenen "Soll"-Geschwindigkeit und das Vorzeichen für die aktuelle Fahrtrichtung des Triebfahrzeugs innerhalb des Zugverbands hinterlegt ist. Wenn der Zug die Fahrtrichtung wechseln soll (Zug wendet), wird in der Objektvariable einfach das Vorzeichen umgedreht. Hierbei spielt es dann auch keine Rolle, ob die Lok den Zug schiebt oder zieht oder sich in der Mitte befindet. D.h. die Ablage der individuellen Sollgeschwindigkeit für einen Zug in einer zugeordneten Objektvariable ist eine feine Sache und kann so (abgesehen vom Vorzeichen) natürlich auch auf Autos angewendet werden.

Mit dem mittleren Satz wollte ich ausdrücken, dass in jedem Gleisabschnitt meiner Gotthard-Anlage sich zu einem Zeitpunkt stets höchstens ein Zug befindet. Dessen Triebfahrzeug kann dann natürlich über die Auslöser- oder _Trigger1-Variable immer eindeutig identifiziert werden - solange im selben Zug nicht mehrere Triebfahrzeuge gleichzeitig "aktiv" sind (und genau letzteres vermeide ich). Bei einer Autoschlange geht das natürlich nicht. Da ist es eigentlich der "Normalfall", dass es in der durch "Auffahren" erzeugten Autoschlange (die dann für die EV einen "zusammengekuppelten" Zug darstellt) mehrere "aktive Triebfahrzeuge" geben kann, sodass der Inhalt der Auslöser- oder _Trigger1-Variable beim "Zug-betritt-Gleis"-Ereignis nicht mehr eindeutig ist. Als "unkontrolliert" bezeichne ich hierbei den Fakt, dass von der EV (zumindest in meiner Theorie) die Anzahl und Reihenfolge der zu adressierenden Autos in einer auf einem Straßenabschnitt stehenden Autoschlange nicht vorhersehbar ist.

vor 2 Stunden schrieb MarkoP:

Also ich würde grundsätzlich davon absehen einen geschlossenen Zugverbund daraus zu machen. Das ginge einzig nur, wenn du dem jeweils vorderen Fahrzeug den Namen des nachfolgenden in einer Objektvariable zuweist. Aber das führt zu unendlich langen Verkapselungen beim Ansprechen der Objektvariablen.

Unter dem Aspekt der ersten Antwort hast Du Recht, da hier die Zusammenfassung der Einzelfahrzeuge in der Autoschlange durch Zusammenkuppeln nicht notwendig ist. Sobald ich aber nicht sämtliche Straßenzüge komplett in irgendwelche Ampel- oder Bahnübergangs-Steuerungen einbeziehen möchte, ergibt sich hieraus das (theoretische) Problem, dass eine Autoschlange länger sein kann als der "überwachte" Straßenabschnitt. Und dann müssen darüber hinaus ragende Autoschlangen-Abschnitte von den vorderen Abschnitten "vorgezogen" werden können. Und das geht nur durch zusammenkuppeln.

vor 2 Stunden schrieb MarkoP:

Müsste soweit ich das aber noch im Kopf habe vom jeweiligen Modellbauer festgelegt werden. Nachträglich konnte man es nicht anpassen wenn ich mich richtig erinnere.

Der Anwender hat da wirklich keine Möglichkeit, selbst etwas zu unternehmen. Aber der Modellbauer kann - wenn er möchte - sein Modell natürlich jederzeit korrigieren und dann nochmals übergeben. Die Frage ist nur, ob er das auch tun oder sich lieber auf neue Modelle konzentrieren möchte.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

da ich aktuell nur wenig Zeit habe, kann ich mich mit einer Lösung noch nicht befassen, möchte aber dennoch kurz etwas zu dem Wegfall der "Kreuzungssperrung" sagen:

Wie BahnLand schon beschrieben hat, ging es ihm bei der Funktion gar nicht so sehr um das Erkennen von mehreren Fahrzeugen auf einer Kreuzung, sondern um das automatische Anfahren, sobald die Kreuzung wieder frei ist. Hierbei handelte es sich allerdings um einen Fehler im Studio, den es schon seit Zeiten des alten 3D-Eisenbahnplaner gab.

Das "Stoppen des Fahrzeugs ohne tatsächliche Änderung der Geschwindigkeit" wurde ursprünglich für das Auffahren eines Zuges auf einen anderen implementiert. In diesem Fall füllt das schnellere, hintere Fahrzeug die Lücke zum Vordermann auf und fährt normal mit seiner Geschwindigkeit weiter. Die Kreuzungssperrung hat diese Funktion in den alten Versionen missbraucht, um ebenfalls kurz zu warten, nur dass es in diesem Fall keine Lücke zum Auffüllen gab.

Da im Zuge der Gleiserneuerung in V4 viel alter Code aufgeräumt wurde, wurde dieser Fehler behoben, was jetzt zu den Problemen führt. Ich werde aber, sobald nach V4 wieder etwas Zeit ist, eine Vereinfachung über die EV anstreben, sodass das eigentliche Ziel einer Stausimulation auch ohne Ausnutzung eines Programmfehlers umgesetzt werden kann.

vor 16 Stunden schrieb BahnLand:

Ich Frage deshalb, weil man eventuell auf irgendwelche Dummy-Anhänger verzichten könnte, wenn der Ankopplungspunkt bei Auto's entsprechend etwas hinter dem eigentlichen Fahrzeugende liegt.

Von solchen Lösungen rate ich mittlerweile ab, weil das wieder ein Missbrauch einer Funktion ist, die dafür gar nicht vorgesehen ist, und wir uns dann irgendwann wieder in diesem Beitrag wiederfinden werden. Besser ihr versucht das Problem über die EV zu lösen und sammelt Vorschläge, welche Funktionen dort noch fehlen, um das Szenario fertigzustellen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 22 Stunden schrieb BahnLand:

Bei langen Straßenzügen, die nicht durch ein einzelnes Flexgleis dargestellt werden können, sondern gegebenenfalls aus zig Straßenelementen bestehen, kann dies zu einer sehr aufwendigen Ereignissteuerung führen (meine Gotthard-Anlage besitzt beispielsweise einen von Wassen bis Amsteg reichenden Straßenabschnitt ohne dazwischen vorhandene Kreuzung/Verzweigung).

Naja, wir wollen mal die Butter bei den Fischen lassen, wenn du so eine lange Straße hast, wird die Autokolonne wohl nicht länger werden ein Flexgleis maximaler Länge, oder? Ich denke da reicht es ein Flexgleis zu überwachen und nicht die gesamte Straße.

 

vor 22 Stunden schrieb BahnLand:

...sodass der Inhalt der Auslöser- oder _Trigger1-Variable beim "Zug-betritt-Gleis"-Ereignis nicht mehr eindeutig ist.

In solchen Fällen behelfe ich mir immer mit einem kurzen Gleisstück vor dem eigentlich Haltegleis (Flexgleis). Beim betreten des Gleises lasse ich den Namen pauschal auslesen und abspeichern und beim verlassen des Haltegleises wieder löschen. Sollte das Halten-Ereignis nicht eintreten wird der Name eben für kurze Zeit ohne weiteren Sinn zwischengespeichert.

 

vor 22 Stunden schrieb BahnLand:

dass eine Autoschlange länger sein kann als der "überwachte" Straßenabschnitt. Und dann müssen darüber hinaus ragende Autoschlangen-Abschnitte von den vorderen Abschnitten "vorgezogen" werden können. Und das geht nur durch zusammenkuppeln.

irgendwie habe ich immer den Eindruck das du die mögliche Länge etwas überschätzt. Natürlich muss man mit unendlich kalkulieren wenn man flexible sein will, aber realistisch betrachtet werden doch niemals mehr als 10-20 Fahrzeuge auf einander auffahren und eine Kolonne bilden, oder?

 

vor 9 Stunden schrieb Neo:

Von solchen Lösungen rate ich mittlerweile ab, weil das wieder ein Missbrauch einer Funktion ist, die dafür gar nicht vorgesehen ist, und wir uns dann irgendwann wieder in diesem Beitrag wiederfinden werden. Besser ihr versucht das Problem über die EV zu lösen und sammelt Vorschläge, welche Funktionen dort noch fehlen, um das Szenario fertigzustellen.

Also die einzige Situation die meines Erachtens nicht mehr funktionieren würde wäre ein simulierter Unfall. Für die EV hingegen sehe ich da keine Lösungsmöglichkeit, da es derzeit unmöglich ist einen fixen Abstand zu hinterlegen. Ich kann mir auch derzeit keine Funktion vorstellen wie so etwas per EV generiert werden könnte.

Außerdem wie Bahnlands Beispiel zeigt ist der "Missbrauch" einer Funktion oftmals die einfachste Lösung. Wieviele Dinge wurden denn bisher in der EV durch Missbrauch erst lösbar umgesetzt. Viele der Funktionen sind doch ursprünglich nicht für den Zweck gedacht gewesen für den sie heute oft benutzt werden.

Bearbeitet von MarkoP
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Bahnland,

ich weiss ich bin ein Greenhorn in Sachen EV und Variablen und habe hier, und vor allem an Dich, schon mehrfach Anfragen gestartet, weil ich nicht weiter wusste.

Seit dem lesen Deines post`s spukt mir eine Idee im Kopf herum, wobei ich onehin nicht weiss, ob die zu realisieren wäre.

Also: Wenn man eine Globale Variable erstellen würde, die jedem Fahrzeug beim erreichen eines Gleises eine eindeutige Nummer (oder sonstiges) zu ordnet und diese in eine Objektvariavble schreibt. Könnte man dann nicht, z.B. Countdowngesteuert diese Fahrzeugnummer aufrufen und mit einer Geschwindigkeit versehen, sprich los fahren lassen ?

Ja, damit sind natürlich die anderen Probleme wie z.B. anhalten und auffahren nicht gelöst und wie gesagt, ist nur so ne Idee gewesen, die ich sicher nicht realisieren kann. ;):D

Schönen Feiertag wünscht

Andreas (astt)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andreas,

wenn ein Fahrzeug oder Fahrzeug-Gespann (z.B. Zug oder Auto mit Anhänger) ein Gleis erreicht, und damit ein "Zug betritt Gleis"-Ereignis auslöst, bekommt man dort automatisch den Namen des antreibenden Fahrzeugs mitgeliefert. Diesen Namen kann man beispielsweise in einer Variablen hinterlegen, um zu einem späteren Zeitpunkt das Fahrzeug über seinen Namen wieder adressieren zu können. Allein um das Fahrzeug "ansprechen" zu können, z.B. um ihm eine Geschwindigkeit zuzuweisen, ist es also nicht notwendig, das (angetriebene) Fahrzeug über eine Nummer zu identifizieren.

Nummern werden beispielsweise dann benötigt, wenn wenn Fahrzeug nicht über das "Zug betritt Gleis"-Ereignis erkannt werden kann (z.B. ein Wagen ohne eigenen Antrieb oder ein "passiv" mitgezogenes Triebfahrzeug). Dann muss aber der Name des Fahrzeugs selbst eine Nummer sein, damit der Name über einen numerischen Algorithmus erzeugt werden kann (z.B. durch Hochzählen einer Nummer), um dann möglicherweise das Fahrzeug über Bedingung "Fahrzeug steht auf einem Gleis" (welche auch für Wagen wirksam ist) identifizieren zu können. Diese Fahrzeug-Namen können leider nicht über einen Algorithmus vergeben werden, weil ja ein "passives Fahrzeug" durch das "Zug betritt Gleis"-Ereignis nicht erkannt werden kann. Man muss also die "Nummern"-Bezeichungen den Fahrzeugen "von Hand" zuordnen.

Viele Grüße
BahnLand

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