Jump to content

Gemeinsame Ampelsteurung für Autos und Trams auf Kreuzung mit 16 Spuren


winpet

Recommended Posts

Komplexe Kreuzung – Ampelsteuerung für Autos und Trams

Auf der Anlage kreuzen sich 4x drei Autotospuren und 2x zwei Tramspuren. Die gemeinsame AUTO-TRAM-Ampelsteuerung funktioniert im Prinzip und doch nicht ganz richtig.
Die Herausforderung besteht darin, dass die Autoampeln 4 Lampenaktionen haben (rot, gelb, grün und gelb-rot) und die Tramampeln deren 3 (quer, längs und rund). Die Steuerung findet im Ereignis ‘AUTO-TRAM-Listenplatz wird gesetzt’ statt.

Meine EV schafft es nicht, dass die TRAM-Ampeln selektiv zu den ATUTO-Ampeln behandelt werden. Die TRAM-Ampeln haben das Schlagwort ‘SW-TRAM_Ampel'. Ich kann diese Schlagwort/Variable als Bedingung in der EV jedoch nicht separat adressieren.

Kann mir da jemand weiterhelfen?

Zusatzinfos:
(1) Die komplexe Kreuzung ist an ‘Kreuzung in der Stadt’ von Fabio Luisi angelehnt. Die Fahrwege für Autos und Trams sowie die Ampelsteuerung sind in MBS_V8 realisiert und basieren auf verschiedenen Veröffentlichungen von Goetz, insbesondere ‘Kreuzungen und Einmündungen’, ‘Wegpunkte Listen’ und dem Tutorial-YouTube  ‘EV Spielereien’ – Herzlichen Dank diesen Erstautoren.
(2) Die Ampeln sind bewusst horizontal positioniert, damit in 2D die Lichter einfach erkannt werden können (Anlagebau, Work in Progress).
(3) Das Labeling mit den Spezifikationen der Anlageelementen lässt sich mit den EV-Ebenen zu- und abschalten.


(4) Anlagestart ist mit dem blauen Taster für die Ampeln, dem grünen für die Autos und dem grauen für die Trams.
(5) Ich habe es bis anhin nicht geschafft, die Startfunktion dieser 3 Bereiche in einem zu vereinen. Vielleicht hat dazu jemand eine Idee?

Herzlichen Dank für Eure Hilfe und beste Grüsse
winpet

Kreuzung3D.thumb.jpg.fc57bcce91c65d09a1af5b1922c3c147.jpgKreuzung2D.thumb.jpg.7a5d632b78946d98e5ed59747d968483.jpgKreuzungEV.thumb.jpg.f43e43815a726b25a8b743150ce1c252.jpg

Ampelsteuerung Auto- und Tramverkehr, Kreuzung mit 16 Spuren.mbp

Link to comment
Share on other sites

Ergänzung und Bitte

Hallo Goetz und alle anderen EV-Cracks


Ich wäre sehr dankbar, wenn sie jemand zur Problematik äussern könnte – Besten Dank!

   

                                                          

AUTO-Ampel.jpg.3842a499c3692bbd7fdffe89a84aafaf.jpg  AUTO-Ampel, Grünphase, Zustand 3                           TRAM-Ampel.jpg.f3fe3fe7da64cc3a8353583f4223ca12.jpg  TRAM-Ampel: Freie Fahrt, Zustand 2

Ich bringe es nicht auf die Reihe, dass die Phase Grün der AUTO-Ampeln und die Phase Freie Fahrt der TRAM-Ampeln in der Anlage mit korrekten Zeitverzögerungen funktinoieren. Weil diese längeren Phasen verschiedene Ampel-Zuständen entsprechen, versuchte ich, mit einer EV-Bedingung das Problem zu lösen. Die Tram-Ampeln haben ein Schlagwort ‘SW_Tram-Ampel’ und sind im TRUE-Bereich der Bedingung eingefügt, die Auto-Ampeln (kein SW) im FASLE-Bereich.

Ich habe verschiedene Varianten versucht, fand jedoch die Lösung nicht. Ausschnitt aus '(25) Tram Listenplatz wird gesetzt' siehe unten. Tricky ist, dass sich in der EV die 10 Sekunden einstellen lassen, im Betrieb der Anlage jedoch werden bei den TRAM-Ampeln die langen Verzögerungen NICHT übernommen, bei den AUTO-Ampeln jedoch schon. Ansonsten funktioniert der Ampelverkehr fehlerfrei, ohne Crash.
                                                                                                                                                                     

Kreuzun-EV-3.jpg.6157aade914c55cc446b7da8aef0df3e.jpg

Roter Pfeil (oben): Tram-Ampel 'Freie Fahrt' (Pos. 2) auf 8 Sek. gestellt
Roter Pfeil (unten): Auto-Ampel, 'Phase Grün' (Pos. 3) auf 10 Sek. gestellt
Blauer Pfeil: Tram-Ampel-Zyklus beendet (Pos. 1, ohne Zeitangabe)


P.S.

Damit der Kreuzungsverkehr realistisch-lebhaft wirkt, sind die AUTO- und TRAM-Ampeln miteinander verbunden (Route 5 & 6). Insgesamt verhindern die verschiedenen Verbindungen, dass zu einem Crash kommt.

Amopelverbindungen.jpg.7c1dc068f95f57d849b31b7807c0d98e.jpg

 

Ich würde mich auf Hinweise und Lösungsideen freuen.
Besten Dank und freundliche Grüsse
winpet

 

 

AUTO-Ampel.jpg

TRAM-Ampel.jpg

AUTO-Ampel.jpg

Link to comment
Share on other sites

Hallo @winpet,

Das einfachste wäre, du würdest zwei unabhängige (benutzerdefinierte) Ereignisse anlegen.
Eins für die Auto Ampeln und ein anderes für die Tram.

Beide Ereignisse stößt du gleichzeitig an. Und dann laufen sie parallel, jedes mit seinem passenden Timing, bis zum Ende der Sequenz.

So, wie du es aktuell versuchst, kann es nicht funktionieren.
Da ist dein Problem, dass immer nur entweder der eine oder der andere Weg gegangen wird, nicht (wie von dir gewünscht) beide parallel. Weil eine Unterscheidung ein entweder/oder ist und der nächste Einsprung (nach Ablauf der Zeit) hinter dieser Unterscheidung liegt.

Viele Grüße
Götz

Link to comment
Share on other sites

Hallo Goetz und Phrontistes

Ganz herzlichen Dank für Eure Ausführungen.
Die Grundidee der gemeinsamen AUTO-TRAM-Steuerung ist, dass ich einen realisitischen, lebhaften Kreuzungsverkehr erhalte, der keine Crashes produziert. Crash-sensibel ist das Linksabbiegen. Crash-los gelingt mit der Anlage. Lebhaft finde ich, dass gleichzeitig immer zwei Routen aktiviert sind: Trams gleichzeitig mit dem geradeaus Auto-Verkehr und gleichzitig zirkulierende Links- und Rechtsabbieger. Gesamthaft gesehen ist das Ursprungsziel zu etwa 95% erreicht, was ja toll ist. Wenn ich noch fantasiere, dass die Trams vor dem Kreuzungssignal eine Haltestelle haben, dann ist das Ziel zu 100% erreicht.

Trotzdem experimentiere ich gerne noch mit der Idee der benutzerdefinierten Ereignisse. Mal schauen, wie einfach oder kompliziert eine gegenseitige Zeitabstimmung ist.

Nochmals besten Dank und freundliche Grüsse
winpet

Link to comment
Share on other sites

vor einer Stunde schrieb Phrontistes:

Verzögert wird nur, was direkt hinter "Ausführung verzögern" folgt.

Es tut mir leid, @Phrontistes aber da möchte ich dir widersprechen.
(Und ich musste zuvor selbst ausprobieren, wie es sich wirklich verhält.)

ZeiteninBedingungen.jpg.ab41e770405963ee590c16541a0d9ef7.jpg

Dieses Skript gibt - je nach Schalterstellung -

  • entweder mit 3 Sekunden Verzögerung das Wort "drei" aus
  • oder nach 5 Sekunden das Wort "fünf".

Weitere 2 Sekunden später wird das Wort wieder durch einen Bindestrich ersetzt.

Viele Grüße
Götz

Link to comment
Share on other sites

vor 2 Minuten schrieb winpet:

Die Grundidee der gemeinsamen AUTO-TRAM-Steuerung ist, dass ich einen realisitischen, lebhaften Kreuzungsverkehr erhalte, der keine Crashes produziert.

Die sollst du ja auch haben.
Du hast die Zeiten nur besser im Griff, wenn zwei Ereignisketten parallel ablaufen und du nicht alles in eine einzige stopfst.
Das ändert nichts am Zusammenspiel beider Ampeln.

Link to comment
Share on other sites

Erneute Bitte an Goetz

Hallo Goetz

Dein  Ratschlag lautet:  "Das einfachste wäre, du würdest zwei unabhängige (benutzerdefinierte) Ereignisse anlegen.
Eins für die Auto Ampeln und ein anderes für die Tram."

Ich schaffe es nicht, Deinen Ratschlag umzusezten.
Eine Ampelsteuerung AUTO besteht aus den Elementen: 'Variablen' , 'Startknopf AUTO drücken' und 'AUTO-Listenplatz wird gesetzt'.
(analoge Elemente für eine Ampelsteuerung TRAM).
Was genau soll 'benutzerdefiniert' angelegt und wie weiterverbunden werden?
Ich habe 'Listenplatz wird gesetzt' benutzerdefiniert angelegt. Ich scheitere dann, den resultierenden 'ohne Parameter' mit den Aktionen 'Signal einstellen' etc. zu verbinden, resp. ich kann das Indexfeld (roter Pfeil), nicht als 'Auslöser' deklarieren und dann den 'Variablenwert' auswählen.

Was mache ich falsch? Könntest Du mir bitte nochmals unter die Arme greifen.

Besten Dank für Deine Mühe und
freundliche Grüsse

winpet

BentzerDef1.thumb.jpg.50f15bf92d67fb695ce0f20ecb914281.jpg

Link to comment
Share on other sites

Wenn du oben auf die blauen Worte "ohne Parameter" klickst, kannst du eine Liste von Parametern anlegen.

Du benötigst einen Parameter vom Typ "Objekt". Dieser Parameter soll beim Aufruf des Ereignisses das Signal bekommen.
Du kannst den Namen für den Parameter frei bestimmen. Sinnvoll wäre sicher so etwas wie "Ampel"

Wenn du jetzt auf "Listenplatz wird gesetzt" reagierst, dann rufst du das benutzerdefinierte Ereignis auf und übergibst die Ampel aus deiner Liste als Parameter.

Vorteil: Du musst nicht immer wieder die lange Schreibweise mit dem Listenplatz verwenden.
Die brauchst du nur einmal (beim Aufruf) und im Ereignis nimmst du für das Signal direkt den Auslöser "Ampel"

Link to comment
Share on other sites

Anfrage / Bitte Nr. 3

Hallo Goetz,

Vorerst ganz herzlichen Dank für deine immer kompetenten und prompten Beantwortungen. Dies ist nicht selbstverständlich und ich weiss es sehr zu schätzen, DANKE!

 

Deine letzten Hinweise zu den Parameternamen in Benutzerdefinierten Ereignissen konnte ich umsetzen (blaue Pfeile). Was mir jetzt nicht gelingt, dieses Ereignis in den Ablauf der Aktionen einzubinden, sodass die Ampelsteuerung korrekt funktioniert.
Ich habe Verschiedenes versucht, scheitere jedoch. Es scheint, dass ich gewisse Zusammenhänge (noch?) nicht begriffen habe.

Ich möchte als ersten Teilschritt (1) mit dem Startknopf-AUTO, die Ampelsteuerung AUTO benutzerdefiniert in Betrieb nehmen.
(Die Ampelsteuerung-TRAM würde ich dann analog, ausgelöst durch den Startknopf-TRAM folgen lassen(2) – und letztlich die beiden Steuerungen von einem Startknopf aus betätigen (3). Ich bin gespannt, ob sich die beiden Steuerungen nicht konkurrenzieren).

Zu (1): Angehängt die EV Startknopf (gelb) drücken und Listenplatz-AUTO setzten, Überblick und Detail – beim roten Pfeil bin ich unsicher, ob dies korrekt ist.
Wo liegt der Hund begraben, dass der Autoverkehr nicht korrekt abläuft?

Besten Dank für Hinweise und freundliche Grüsse


winpet

Anlagen:
- Startknopf-AUTO.jpg                  (EV zu gelbem Startknopf)
- BenDef-Listenplatz_AUTO.jpg                 (EV, Überblick)
- Detail-BenDef_AUTU.jpg          (EV-Teil von Listenplatz)
- Anlage Strassenverkehr_4x-Kreuzung_v.1.23.mbp       (aktuelle Anlage-Version)

BenDef-Listenplatz_AUTO.jpg

Detail_BenDef_Auto.jpg

Startknopf_AUTO.jpg

Strassenverkehr_4x-Kreuzung_v.1.23.mbp

Link to comment
Share on other sites

Anfrage und Bitte Nr. 4

Hallo Goetz und alle anderen EV-Cracks

Um ev. den Fehler in meiner Anlage zu finden, habe ich die Tutorial-Anlage von Goetz ‘Kreuzungen und Einmündungen.mbs’ genommen und versucht, die Ampelsteuerung mit einem Benutzerdefinierten Ereignis auszulösen. Es resultiert der gleiche Fehler, wie in Anfrage 3 beschrieben: Alle Ampeln schalten gleichzeitig und nicht mehr getrennt (Bild 1).

Ich pröble herum, kann den Fehler jedoch nicht finden und ich wäre dankbar, wenn jemand weiterhelfen könnte.

 Ich habe An

passungen bei 'BD_Startknopf Ampel wird gedrückt' versucht (Bilder 2-4) und bei 'BD_Listenplatz wird gesetzt' (Bilder 5-8) - wie erwähnt, efolglos.

Besten Dank für Hinweise und Lösungsideen.

Freundliche Grüsse
winpet

Bild1.jpg.e4cbeb88aea85f4199ddc5390a93590a.jpg Bild 1

Bild2.jpg.c526763c23afc3f6990bacf446a56cea.jpg Bild 2

Bild3.jpg.27166742d1bb5550cff645c9a2056b65.jpg Bild 3

Bild4.jpg.0a3ce3b0d71b1877ee28895bb28b7fa4.jpg  Bild 4

Bild5.jpg.6c9621bf3e5f4cc30d78b87585008a82.jpg Bild 5

Bild6.jpg.b05d868af18c3432139c4af72acaf2cf.jpg Bild 6

Bild7.jpg.9c82381eab788062ead3018ec26ab233.jpg Bild 7

Bild8.jpg.712f7ae4f367d2cb85eb8acc7e14c0eb.jpg Bild 8

 

Link to comment
Share on other sites

vor 48 Minuten schrieb winpet:

Besten Dank für deine Mühe.

Das mache ich gerne, Winpet.

Und so konnte ich auch schnell die Ursache finden, warum bei dir alle Ampeln gleichzeitig schalten:

Ampelsteuerung01.jpg.7ea342c30a8e479967d3be251e295058.jpg

Weil du für alle Ampeln aus der Liste gleichzeitig das benutzerdefinierte Ereignis startest.
In der Wiederholung ist der Aufruf falsch platziert. Eine Wiederholung wartet nicht, bis alles darin erledigt ist.

Diese Wiederholung an der Stelle dient in meiner Vorlage nur dazu, zu Beginn einmal alle Ampeln auf Rot zu schalten.
Danach lege ich fest, mit welcher Nummer aus der Liste die Sequenz beginnen soll.

Und dann wird die Sequenz nur für diese eine Ampel gestartet, die in der Liste an der Stelle "Listenplatz" steht.
Diese eine Ampel ist direkt mit allen weiteren verknüpft, die identisch schalten sollen. Deshalb genügt es, wenn ich eine Ampel anspreche

Nachdem die Sequenz für diese Ampel komplett durchlaufen wurde, schaltet die Sequenz als letzten Akt die Platznummer eins rauf.

Das Ändern der Platznummer bewirkt, dass die Sequenz erneut durchlaufen wird.
Und weil die Platznummer eine andere ist, ist jetzt auch eine andere Ampel dran.

Schau mal bitte, ob du mit diesen Erklärungen weiterkommst.

Viele Grüße
Götz

Link to comment
Share on other sites

Danke Goetz und sorry, ich scheitere immer noch. Ich verstehe Dein untenstehendes Fazit, kann aber daraus die Lösung nicht ableiten.

Fazit: In der Wiederholung ist der Aufruf falsch platziert.

Starte ich das benutzerdefinierte Ereignis ausserhalb der Wiederholung (ergo davor oder darnach) ändert das {@Wdh} zu {leer} und die Option 'Wiedeholung' steht nicht mer zur Vefügung.

Mein Problem ist: (a) Wo genau ausserhalb soll das 'Benutzerdefiniertes Ereignis' ausgelöst werden' und (b) welche Option soll mit dem Zahnrad gewählt werden und (c) was soll im grauen Feld dann stehen?
Für (a) denke ich, innerhalb dem gelben Bereich der erfüllten Bedingung, aber ausserhalb der braunen Wiederholung. Bei (b) stehe ich an und damit auch bei (c).

Hast Du noch weitere Eselsbrücken damit bei mir der Groschen fällt?

Danke für Dein geduldiges Teaching und viele Grüsse
winpet

Link to comment
Share on other sites

vor 58 Minuten schrieb winpet:

Hast Du noch weitere Eselsbrücken

Ich versuche es.

Eventuell habe ich dich mit den "benutzerdefinierten Ereignissen" auch auf die falsche Fährte gelockt.
Das habe ich nicht in böser Absicht getan.

Aber bevor du dich mit dem benutzerdefinierten Ereignis befasst, musst du zuerst einmal verstehen, welchen Zweck die Liste "Ampeln" in meinem Beispiel erfüllt und welche Rolle die Variable "Listenplatz" dabei spielt.

Mir wird aufgrund deiner Fragen deutlich, dass du das Prinzip noch nicht durchschaust.

Die drei Ampeln in der Liste repräsentieren die drei Wege, die reihum Grün bekommen:

  1. von oben und unten -> geradeaus und rechts
  2. von oben und unten -> Linksabbieger
  3. von beiden Seiten -> geradeaus und rechts

Mit dem Listenplatz gebe ich an, welcher der drei Wege Grün bekommen soll.
Und wenn diese Richtung alle Phasen (Rot, Rot-Gelb, Grün, Gelb, Rot) durchlaufen hat, dann zähle ich den Listenplatz um 1 rauf, damit der Zirkus für die nächste Fahrtrichtung von vorne beginnt.

So, wie du die Liste benutzt, kann es also nicht funktionieren. Weder in der Wiederholung, noch außerhalb.
Du musst dir pro Durchgang genau ein Element aus der Liste greifen. Nicht alle auf einmal.

Viele Grüße
Götz

Edited by Goetz
Schreibfehler korrigiert
Link to comment
Share on other sites

Hallo Goetz

Gehen wir zum Ausgangspunkt zurück.
Sowohl in Deine Anlage ’Kreuzungen und Einmündungen’ wie auch in meiner Anlage ‘Strassenverkehr 4xKreuzung’ funktionieren OHNE eine benutzerdefiniertes Auslöseereignis der Ampelsteuerung.
‘Benutzergesteuert’ kam ins Spiel, weil ich in meiner Anlage Auto- und Tramverkehr mit einer schlagwortgesteuerten Bedingung gleichzeitig ablaufen lassen wollte.
Ich denke, dass ich die Ereignisse  ‘Startknopf wird betätigt’ und ‘Listenplatz wird gesetzt’ in dieser Erstversion (ohne benutzerdefiniert) sehr wohl verstehe. (Eine äussere Schleife der verschiedene Fahrrouten/Fahrrichtungen und eine innere Schleife mit rot-gelb-grün-orange-Phasen/Lichterabfolge.)

 

Zwischenzeitlich versuchte ich die Anlage in ein ‘benutzerdefiniertes Auslöseereignis der Ampelsteuerung’ zu ändern. Anhand Deines letzten Kommentars bin ich jedoch unsicher, ob dies überhaupt geht.
Falls 'Benutzerdefiniert' geht, könntest Du mir bitte zeigen, wie so eine EV aussehen würde.

 

Ich danke für Deine Hilfe und grüsse freundlich


winpet

 

 

Link to comment
Share on other sites

Hallo @winpet,

Ich habe bis zum jetzigen Zeitpunkt noch keine Ampelkreuzung gebaut. Von daher liege ich mit dem, was mir zum Begriff "benutzerdefiniertes Ereignis" in den Sinn kommt, evtl. daneben. Aber ich stelle mir vor, eine Ampelschaltung ist an einer Kreuzung installiert, aber wartet noch auf ihre Inbetriebnahme. Damit der programmierte Schaltzyklus beginnen kann, muss doch erst z.B. einmalig ein Schalter betätigt werden, der den Steuerzyklus zum Laufen bringt. Dieser Schalter ist für mich das erwähnte benutzerdefinierte Ereignis. Wenn der Ampelzyklus in sich ständig gleich wiederholendem Ablauf arbeitet, könnte man theoretisch den Schalter wieder entfernen. Siehst Du das genauso ? Oder kann @Goetz für mich und andere klärend eingreifen, ob ich völlig daneben liege.

Link to comment
Share on other sites

vor 7 Minuten schrieb streit_ross:

Dieser Schalter ist für mich das erwähnte benutzerdefinierte Ereignis.

Da liegst du tatsächlich völlig falsch, Streitross.

Ein Ereignis hat in aller Regel einen Auslöser. Zug betritt Gleis, Signal schaltet, Zeit ist abgelaufen, um nur ein paar typische zu nennen.
Das benutzerdefinierte Ereignis hat keinen solchen Auslöser. Stattdessen wird es innerhalb eines anderen Ereignisses als Aktion gestartet.

Das kann man gut benutzen, um lange Aktionsketten in kleinere Happen zu unterteilen.

Link to comment
Share on other sites

vor 1 Minute schrieb streit_ross:

Das bedeutet dann,

dass in einem benutzerdefinierten Ereignis genau dieselben Dinge passieren, wie in allen anderen Ereignissen auch.
benutzerdefiniert ist dabei nur das Ereignis, was die Aktionskette auslöst.

Link to comment
Share on other sites

vor einer Stunde schrieb winpet:

Falls 'Benutzerdefiniert' geht, könntest Du mir bitte zeigen, wie so eine EV aussehen würde.

Das werde ich machen, Winpet.
Dauert aber ein bisschen.

Vorweg will ich gerne folgendes erklären:

Das benutzerdefinierte Ereignis kam mir als Lösungsvorschlag in den Sinn, weil die Aktionskette für einen kompletten Durchlauf aller Phasen an deiner Kreuzung sehr lang würde. Mit einem benutzerdefinierten Ereignis kann man solche Aktionslisten in Happen unterteilen. Damit würde die äußere Schleife aus meiner Beispielanlage ganz entfallen.

Link to comment
Share on other sites

Hallo Goetz

Ganz herzlichen Dank für die umgebaute Anlage.
Ja, ich sehe langsam, wie Du benutzerdefiniert gemeint hast. Ich muss das Ganze noch eingehend studieren - gelernt habe ich jedoch sicher recht viel.

Ich wünsche ein gutes Wochenende und freundliche Grüsse
winpet

Link to comment
Share on other sites

Feedback für Goetz

Hallo Goetz

Gerne gebe ich Feedback.
Ich habe meine 4x-Kreuzung auf benutzerdefinierte Ampelsteuerung umgstellt. Ausser den Linksabiegern, sind die AUTO- und TRAM-Ampeln miteinander verbunden, was auf der Kreuzung einen sehr lebendigen Verkehr (ohne Crash) ergibt.
Zum Start der Anlage müssen der blaue, grüne und der graue Taster aktiviert werden.

P.S. Bis anhin nicht geschafft habe ich, die Anlage von einem einzigen Taster aus zu starten (dem blauen Steuerzentrum BenDef). Vielleicht gelingt das mir später noch.

Nochmals besten Dank für Deine Hilfe und freunsdliche Grüsse
winpet

4x-Kreuzung,_BentzDef-v1.22.07.mbp

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