Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,
ich habe mich nun mal mit V7 an einer Abzweigung versucht. Aber auch hier bleibe ich wieder hängen. Das Beispiel ist nicht einfach zu verstehen, da entscheidende Stellen in Lua programmiert sind. Die Idee dahinter: für einen flüssigen Ablauf können die Spuren nur helfen, de/aktivieren sollten wir sie dafür nicht. Insofern teile ich den Fahrzeugen am Checkpoint ein Ziel zu. Interessanterweise muß ich da mal kurzzeitig eine Spur wegschalten, sonst nimmt er nicht unbedingt den kürzesten Weg. Ich habe zwei indizierte Felder 'N' und 'on' (OV in der Abzweigungselbst), die die Fahrzeuge auf den Spuren zählen. Am ersten (blauen) Gleiskontakt wird eine Richtung gewürfelt, dem Auto mitgegeben und N hochgezählt. Am weißen Kontakt wird das Ziel gesetzt und entschieden, ob gebremst oder beschleunigt wird. Der Leuchtwürfel zeigt an: grün = kann fahren, gelb = bremst, weil er Vorfahrt achtet, rot = bremst, weil was auf der Kreuzung im Weg ist. Am cyan-Kontakt gilt das Fahrzeug als 'auf der Kreuzung'. N wird heruntergezählt, 'on' wird hochgezählt. Am letzten grünen Kontakt wird, wenn dieser verlassen wird, 'on' heruntergezählt. Nach jeder Zähländerung wird 'event' ausgelöst, was den neuen Zustand der Kreuzung bestimmt.
Tja - und irgendwann steht die Kreuzung, weil ein Zählfehler vorliegt. Es ist zählmäßig ein Fahrzeug in der Kreuzung übrig, was dort nicht mehr ist. Gehen wieder Ereignisse verloren?
Oder haben wir sogar Doppelereignisse, denn ich habe auch schon ein -1 im N-Feld gesehen. Was eigentlich gar nicht möglich ist. Bin erstmal ratlos.

Gruß
  Andy

Abzweigung V7.mbp

Geschrieben

In der Beschriftung  ist die obere Zeile das 'N'-Feld, das untere das 'on'-Feld. Tritt der Fehler auf, ist meistens Spur 5 ungleich 0. Das ist der Rechtsabbieger der Seitenstraße.

Geschrieben

Bin einen Schritt weiter, habe einen Grund gefunden. Ein Auto betritt einen On-Kontakt, hat aber keine Geschwindigkeit mehr, rutscht also beim Bremsen durch. Wenn der nicht auf dem weißen Kontakt stehenbleibt, kann er auch nicht mehr beschleunigt werden. Muß nachdenken...

Geschrieben

Hallo Andy,

Schieb mal bitte deine drei Zielkontakte von der Kreuzung runter auf das angrenzende Straßenstück.
Dann sollte die Zielfindung perfekt funktionieren und du kannst dir den ganzen Lua Umstand sparen.

Ich habe hier eine Variante mit einfacher Zielführung.
Ansonsten ist sie mit deiner Anlage identisch

Andys Abzweigung mit neuer Zielwahl.mbp

Die "In" Kontakte enthalten Listen mit den möglichen Zielen.
Beim Betreten des Kontakts wird eins der Ziele zufällig ausgewählt und an das Auto übergeben.
Damit kannst du dich besser auf das Zählen konzentrieren und musst keine Spuren mehr deaktivieren.

Viele Grüße
Götz

Geschrieben (bearbeitet)

Hallo @Goetz,
das ging aber schnell. Bin jetzt erstmal groggy, schau sie mir aber in jedem Fall an, denn wir brauchen da dringend ein fertiges Modul.

Gruß
  Andy

Edit: da wir ja jetzt die autom. Beschleunigung auch auf dem Kontakt haben, und Bremsung und Beschleunigung ja wohl wirken, solange der Auslöser auf dem Kontakt steht - könnte es sein, dass wir u.U. zusätzlich eine längere Version des Gleiskontakts brauchen? Denn hier rutscht ganz sicher ein sehr kurzes Auto durch (der Mercedes). Ja, man könnte vorher abbremsen, aber ich wollte, dass auf den Vorfahrtsstraßen höhere Geschwindigkeiten erhalten bleiben.

Bearbeitet von Andy
Geschrieben
vor 2 Stunden schrieb Andy:

das ging aber schnell.

Ich habe nur die Kontakte verschoben und dazu eine neue Zielauswahl in die EV geschrieben.
Die bringt jetzt aber aktuell deine Zähler durcheinander, weil die Autos keinen korrekten "dir" Wert mehr bekommen, sondern direkt ihre Ziele.

Die Ziele kannst du aber per Lua genauso auswerten wie dein "dir".
Sie heißen vehicle.target und du kannst direkt prüfen, ob sie mit dem einen oder anderen Zielobjekt übereinstimmen

Ich habe angefangen, dein Beispiel weiter umzuformen, bin aber gedanklich aktuell nicht richtig bei der Sache.
Private Dinge blockieren mich da zu sehr.

Vielleicht hilft dir die deutlich einfachere Zielzuweisung dennoch ein wenig?

Geschrieben (bearbeitet)

Hallo @Goetz,
das mit der Zielwahl habe ich mal außen vor gelassen, das muß sowieso umstrukturiert werden, wenn das ein portables Modul werden soll.
Viel wichtiger war das Vorziehen der Kontakte, denn logischerweise können sie auf der Kreuzung nicht unbedingt entscheiden, zu welcher Spur sie nun gehören.
Das mit dem De/aktivieren der Spuren, da konnte ich dann doch drauf verzichten und auch das Überfahren des Brems/Beschleunigungskontaktes passiert mittlerweile nicht mehr. Die folgende Version muß ich mal ausdauernd testen:

Die zwei Ziffern bei den Leuchtwürfeln zeigen jeweils die Zähler 'N' und 'on' für jede Spur.

 

 

 

Abzweigung V7b.mbp

Bearbeitet von Andy
Geschrieben

Läuft auf den ersten Blick prima, aber irgendwann verzockt er sich. 9_9 Wird schwer zu finden sein. Da haben wir den Fall: Einsatz Videomitschnitt...

Geschrieben

Hallo @Goetz und @Neo,

nehmen wir mal an, die Abzweigung würde funktionieren und könnte nun als Gruppe zum Einbinden zur Verfügung gestellt werden.
Dann bleiben wir aber noch an einer wichtigen Stelle hängen:
Angenommen, wir hätten ein größeres Straßennetz und ein paar Fahrzeuge, die ihr 'Ziel' nutzen und solch ein Fahrweg würde durch solch eine Abzweigung hindurchführen.
Wir generieren also keinen zufälligen Fahrweg, sondern wir haben eine Vorgabe.
Dann könnte man beim Betreten eines Eingangskontaktes vehicle.target auslesen, merken und beim Verlassen des Ausgangskontaktes wieder restaurieren.
Aber - wir bräuchten für die Verarbeitung innerhalb der Abzweigung/Kreuzung unbedingt auch den Spurindex den das Fahrzeug nehmen würde (zum Zeitpunkt des Auslesens von vehicle.target), um die Prioritätsberechnungen durchführen zu können. Kann der zur Verfügung gestellt werden - oder gibt es den schon?

Gruß
  Andy

Geschrieben

Hallo Andy,

ich habe dein Thema bisher noch nicht verfolgt, weswegen ich dir aktuell wenig helfen kann. Ich weiß auch nicht warum du das Fahrzeugziel auslesen und merken willst, oder was es mit Prioritätsberechnungen auf sich hat, aber mit Spurindizes würde ich generell nicht arbeiten, diese könnten sich bei einer Überarbeitung des Modells ändern (wenn auch eher unwahrscheinlich). Kannst du hier nicht explizit mit Gleiskontakten arbeiten, um Richtungen zu bestimmen?

Viele Grüße,

Neo

Geschrieben (bearbeitet)

Hallo @Neo,
es geht hier um Vorfahrtsregelungen an einer Abzweigung/Kreuzung ohne Ampeln. Wenn jetzt ein Fahrzeug ein target hat und durch diese Abzweigung durch will, wie soll ich denn erkennen, welchen Weg dieses Fahrzeug nimmt? Ich kann die Spuren abstrahieren, aber ich kann nicht erkennen, ob das Fahrzeug nun abbiegen will, oder geradeaus fährt. (Was ja auch für Blinkeransteuerungen interessant wäre). Ich muß den Weg zum Ziel innerhalb der Abzweigung auflösen können, um Brems/Beschleunigungsverhalten zu bestimmen. Aber ich denke, Götz ist da schon tiefer drin. Ich warte mal ab.

Gruß
  Andy

EDIT:

Bearbeitet von Andy
Geschrieben
vor einer Stunde schrieb Neo:

Kannst du hier nicht explizit mit Gleiskontakten arbeiten, um Richtungen zu bestimmen?

wenn ich abfragen könnte, ob Gleiskontakt x auf dem Weg liegt, den ein Fahrzeug nach target nehmen will, dann wäre das eine Lösung!

Geschrieben (bearbeitet)

Man könnte für jede Richtung einen eigenen Gleiskontakt setzen, den man dann in die Zielführung mit aufnimmt. An dem kann dann das Fahrzeug zum Vorfahrt gewähren gestoppt werden. Dann braucht man nicht abfragen wo das Fahrzeug lang will. 

Bearbeitet von HaNNoveraNer
Geschrieben

Hallo Thomas,
auf die Kreuzung kannst Du keinen Kontakt setzen. Und wo soll der sonst hin? Es geht nicht um Zielführung, die Abzweigung soll universell einsetzbar sein, d.h. das Ziel kann überall sein. Es ist ja schön, dass wir den Fahrzeugen ein Ziel vorgeben können. Schließlich kann man ja auch davon ausgehen, dass dieses Ziel sicher erreicht wird, da es ja keine Beulen geben kann... 9_9

Gruß
  Andy

Geschrieben

Hallo Andy,

vor 6 Stunden schrieb Andy:

wenn ich abfragen könnte, ob Gleiskontakt x auf dem Weg liegt

wie wäre es mit einer EV-Bedingung Fahrzeug fährt in Richtung eines Gleises/Gleiskontakts. Diese Bedingung prüft, ob entlang der aktuellen Fahrtrichtung eines Fahrzeugs ein Gleis bzw. ein Gleiskontakt liegt.

Viele Grüße,

Neo

Geschrieben (bearbeitet)

Ich probiere das gerade mal nur mit Gleiskontakten. Ohne Spuren und son Mumpitz.
Aber das ist beliebig kompliziert, die Autos wieder durch das richtige Fahrzeug in Gang zu setzen.
Und das Ganze allgemein mit Schlagworten. Ein schönes Puzzle.
Aber ich habe noch Ideen und es scheint schon fast zu funktionieren.
Muß den Vorfahrts-Fahrzeugen Stempel aufdrücken und wieder entfernen.
Montag hab ich wieder Zeit.

Gruß
Thomas

Bearbeitet von HaNNoveraNer
Geschrieben

Hallo Andy,

mich hat das Thema auch gereizt. Auf Basis Deiner Testanlage habe ich versucht, deine Steuerung dahingehend zu überarbeiten, dass sie für beliebig viele Abzweigungen verwendet werden kann. Auch die Prüfung (kann fahren, Vorfahrt achten und Notbremsung) habe ich anders gestaltet mit dem Ziel, diese Steuerung auch für andere Typen von Abzweigungen oder Kreuzungen zu nutzen.

Zunächst zur Verallgemeinerung für mehrere Abzweigungen: Alle Gleiskontakte haben jetzt eine OV mit der Abzweigung als Objekt. So kann die Abzweigung neutral angesprochen werden. Die Abzweigung selbst hat jetzt als Objektvariable die Check-Kontakte und die Leuchtwürfel (für die Demo). Die Beschriftungen habe ich so gelassen, da sie wohl nicht Bestandteil eines Moduls werden. Die Ereignisse der Gleiskontakte habe ich darauf angepasst. Aus dem Event ist eine Benutzerdefinierter Event geworden, der als Parameter die Abzweigung erhält.

Dann zur Änderung der Fahrberechtigungsprüfung (wow, schönes deutsches Bandwurmwort): Statt die Prüfung in einzelne if then elseif else Konstrukte zu legen, hat die Abzweigung jetzt zwei zusätzliche Listen:
Notbremsung: enthält je Spur eine Liste derjenigen Spuren, die bei Belegung eine Notbremsung notwendig machen
Vorfahrt achten: enthält je Spur eine Liste derjenigen Spuren, die bei angemeldeten Fahrzeugen eine Weiterfahrt verhindern.

Das benuterdefinierte Ereignis Abzweigevent, das die Abzweigung als Parameter erhält, wird statt bisherigen Eventsteuerung von den anderen Ereignissen aufgerufen.
Um das möglichst übersichtlich zu gestalten, sind darin "function" zur Prüfung der Notbremsung, der Vorfahrt sowie einer kompletten Spurprüfung enthalten.

Abzweigung V7c2.mbp

Wenn Dir das so gefällt, könnte man Notbrems- und Vorfahrlisten für weitere Abzweigungen (= 3 Richtungen) und für eine Kreuzung (=4 Richtungen) arbeiten, so dass diese Steuerung dann allgemein genutzt werden kann.

Was mir noch auffiel (und noch nicht gelöst ist):

Manchmal wird ein Fahrzeug mit einer viel zu geringen Geschwindigkeit gestartet. Deshalb wird die Zielgeschwindigkeit beim Verlassen von CHECK nochmal gesetzt. Der Fehler tritt aber manchmal trotzdem noch auf.

Die Zähler müssen irgendwo noch eine Lücke haben, so dass ein Zähler nicht mit der Realität übereinstimmt. Manchmal geht ein Zähler in den negativen Bereich. Deshalb habe ich für diese Situation einen absichtlichen Fehler (Rechnen mit Variable "gibtsnicht") eingebaut, so dass bei eingeschaltetem Protokoll gestoppt wird.

 

Viele Grüße

Wolfgang

 

Geschrieben (bearbeitet)

Hallo @prinz,
da hättest Du mir schon viel Arbeit abgenommen von dem, was es mal werden soll, denn genau dahin geht mein Plan! Es geht ja auch nicht darum, wer es macht, sondern dass es gemacht wird. Jedenfalls freut es mich sehr, da nun nicht alleine durch zu müssen.
Was die Problematiken angeht, die sehe ich auch. Wobei speziell das mit der Zählung äußerst mysteriös ist. Sicher ist: man muß es vermeiden einen Kontakt gleichzeitig mit Betreten und Verlassen zu verwenden, was einer der Fehler der vorangegangenen Versionen war. Wenn da die Abstände zu kurz werden, wird eher neu betreten als alt verlassen. Und auch die 'Vorbremsung' mußte rein, weil der Bremskontakt sonst schon sehr schnell überfahren wird. Also mit Hochgeschwindigkeit durch die Kreuzung durch, geht nur, wenn das Vorausschauen (also Eintrittskontakt) schon sehr weit von der Abzweigung entfernt liegt. Wir können die Härte der Bremsung halt nicht dauernd einstellen...
Uns jetzt noch zu wünschen, dass bei autom. Bremswert 0 auf jeden Fall so gebremst wird, dass der Gleiskontakt nicht vollständig überfahren wird, könnte problematisch werden.
Ich brauche jetzt aber die nächsten beiden Tage für Amtsgänge, die Rente ruft... Ich bleibe dann dran!
Für universell einsetzbare Dinge brauchen wir sowieso noch das nächste Update mit der Möglichkeit einen Kontakt zu befragen, ob er auf dem Weg liegt. Eilt also nicht.

Gruß
  Andy

Bearbeitet von Andy
Geschrieben

Hallo @Andy,

da hast Du Recht. Es eilt nicht. Die notwendige Funktion muss erst da sein. Vielleicht hilft uns @Neo da weiter. Ich fände es jedenfalls gut, wenn wir eine gute Lösung für eine allgemein nutzbare Steuerung finden. 
Für Deine Amtsgänge alles Gute. Ist manchmal nicht einfach mit den Behörden. Gut, dass ich da durch bin.

 

Gruß,

 Wolfgang

Geschrieben

Hallo @prinz,
ich habe jetzt die Zeit, mich mit Deiner Version zu beschäftigen und das Listenkonzept gefällt mir schon sehr gut. Das übernehme ich mal so.
Ich versuche nun herauszufinden, wo die Teufel noch stecken.

Gruß
  Andy

Geschrieben

Hallo,
bevor ich auf intensive Fehlersuche gehe, habe ich mal ein paar Änderungen eingebracht:
1. wie Neo schon vorgeschlagen hat, habe ich die Abzweigung unabhängig von den tatsächlichen Spuren gemacht. Das erspart uns den Salat mit dem 0-Index, der für Lua recht unbrauchbar ist. Und so sind auch die Tabellen mit den Vorfahrtsregeln besser zu verstehen. Die Lücke mit Spur 4 (für die Stopschildspur) entfällt so ebenfalls.
2. das 7.2.-Update hat uns die wichtige Funktion vehicle:isHeadingToward(kontakt) gebracht. Beim Betreten eines ENTER-Kontaktes wird nun geschaut, ob das Fahrzeug
bereits eine Zielvorgabe hat und falls dies der Fall ist, wird diese Richtung beibehalten. Ansonsten wird eben die Zufallsauswahl bemüht.
Wenn wir das Innenleben der Abzweigung nun fehlerfrei bekommen, ist sie in der Tat portabel einsetzbar. Dass die interne EV nun Lua-lastig ist, sollte keinen interessieren.
Da gilt für die Nutzer einfach: Hände weg.
@Neo vielleicht hast Du eine Idee, wie derartige (kleine) Module einen Platz im normalen Modellkatalog finden könnten, trotz EV, denn dort wird sie der Nutzer suchen. Derzeit müssen sie ja wohl als Anlage einkopiert werden. (Okay, so wie sie jetzt ist, hat sie noch Diagnosedinge und eine Bodenplatte mit drin - aber das wird.) Auf dieselbe Art und Weise können wir z.B. auch Bahnübergänge voll funktionsfähig machen, sodaß der Nutzer nur noch die Kontakte placieren muß.

So - ich gehe dann mal auf Fehlersuche. Zwei Dinge dürfen nicht passieren:
Überfahren des CHECK-Kontaktes beim Bremsen, (Effekt: wir können das Fahrzeug nicht mehr beschleunigen)
Betreten des CHECK-Kontaktes, wenn das vorausfahrende Fahrzeug ihn noch gar nicht verlassen hat. (Effekt: totale unvorhersehbar, zwei Fahrzeuge auf einem Kontakt).

Gruß
  Andy

Abzweigung V7d.mbp

Geschrieben

Hey @Andy ,

ich hab es gerade gelesen. Hört sich wirklich gut an. Morgen schau ich mir das näher an. Wär eine tolle Sache, wenn wir die Steuerung hier modularisieren könnten. Ich bin gespannt und motiviert. 
 

Grüße, Wolfgang

 

Geschrieben

Hallo,
ich muß nochmal (weil das bedeutend sein wird) in die Runde fragen, ob jemand spontan weiß, welches das kürzeste Auto im Katalog ist. Sonst muß ich da mal abklappern.

Gruß
  Andy

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