Jump to content
BahnLand

Anlagen-Bausteine mit vorgefertigter Ereignissteuerung (Diskussionsforum)

Recommended Posts

vor 8 Stunden schrieb Goetz:

Diese Kopie wird mit dem Inhalt der temporären Liste "namen" befüllt, aber nicht das Original. Damit versickert FzListe bzw. FzTabelle im Lua Code und wird an niemanden im MBS weitergereicht. Du erkennst das daran, dass das Ereignis "Objekt Variable wird gesetzt" nicht getriggert wird.

Hallo Götz,

mal eine Frage, die nur am Rande das hier behandelte Problem berührt. Arbeiten die Tabellenbefehle "table.insert" und "table.remove" in meinen Scripts auch nur mit Kopien? Im Ereignisprotokoll werden diese Änderungen ja nicht angezeigt. Und falls ja, zu welchem Zeitpunkt findet eine Synchronisation statt, denn letztlich steht ja in der Originaltabelle am Ende alles so wie es soll.

Gruß Timba

Share this post


Link to post
Share on other sites
vor 51 Minuten schrieb Timba:

Arbeiten die Tabellenbefehle "table.insert" und "table.remove" in meinen Scripts auch nur mit Kopien?

Die Befehle selbst erzeugen keine neuen Kopien.

Bei Bahnland ist die Tabelle, die er als Ziel für table.insert angegeben hat, eine Kopie.
Ob das bei dir ebenso der Fall ist muss ich mir anschauen.

Und synchronisiert wird per se gar nichts. Weder in Lua, noch in anderen Sprachen.
Entweder verbirgt sich hinter zwei Namen dieselbe Adresse oder nicht.

Die Sache ist deshalb ein wenig "tricky", weil man genau hinschauen muss, wo was übergeben wird.

In Lua läuft es so ab:

Liste_1 = {"John", "Paul", "George", "Ringo"}
Liste_2 = Liste_1               -- Kopie oder Weitergabe der Adresse?

s = table.concat(Liste_2, "\n") -- alle Texte der Tabelle in einen String
print("Liste 2\n"..s.."\n")     -- sieht aus wie Liste_1

table.insert(Liste_1, 1, "Stewart")

s = table.concat(Liste_1, "\n") -- alle Texte der Tabelle in einen String
print("Liste 1:\n"..s.."\n")    -- Liste 1 hat einen neuen Namen dazu bekommen

s = table.concat(Liste_2, "\n") -- alle Texte der Tabelle in einen String
print("Liste 2:\n"..s.."\n")    -- Liste 2 ebenfalls, weil nur die Adresse übergeben wurde. Es ist dieselbe Tabelle!

-- Das heißt: umgekehrt wirkt sich eine Änderung in Liste_2 auch auf Liste_1 aus.
table.insert(Liste_2, 1, "The Beatles")

s = table.concat(Liste_1, "\n") -- alle Texte der Tabelle in einen String
print("Liste 1:\n"..s.."\n")    -- Liste 1 hat einen neuen Namen dazu bekommen

 

Selbst dann, wenn man eine globale Tabelle als Funktionsargument übergibt, bleibt es dieselbe Adresse:

Liste_1 = {"John", "Paul", "George", "Ringo"}

function Test(Liste_2)
    table.insert(Liste_2, 1, "The Beatles")
    local s = table.concat(Liste_2, "\n")
    print("Liste 2:\n"..s.."\n")
end

Test(Liste_1)
s = table.concat(Liste_1, "\n")
print("Liste 1:\n"..s.."\n")

 

In diesem Punkt ist Lua wirklich eigenartig. Eine Variable wäre als Funktionsargument lokal definiert. Sie könnte sogar den selben Namen haben, wie die globale Variable und würde dennoch nichts mit ihr zu tun haben. Eine lokale Änderung hätte keine globale Auswirkung. Aber bei der Tabelle wird nur die Adresse an den lokalen Träger übergeben. Und die weist auf dieselbe Tabelle.

 

Aber in der EV von MBS passiert mehr als nur Lua. Die Übergabe von einem Ort (Objekt, Modul etc.) zum anderen wird nicht von Lua erledigt. Sonst gäbe es keine adressierbaren Objekte. Die kennt Lua nämlich so nicht. Dahinter steckt Neos Cleverness!

Und bei der Übergabe einer Tabelle in der EV wird diese Tabelle kopiert. Deshalb ist es ratsam, nur das Objekt zu übergeben, welches die Tabelle beherbergt. Denn wenn ich das Objekt (und die darin enthaltene Tabelle) anspreche, dann ist es das Original.

Edited by Goetz

Share this post


Link to post
Share on other sites

Eigene Protokoll-Ausgaben im Ereignisprotokoll ganz einfach selbstgestrickt

Hallo zusammen,

wenn man in einer Ereignissteuerung einen Fehler oder ein unerwartetes Verhalten diagnostizieren möchte, sind zusätzlich bewusst eingestreute Protokollausgaben meist sehr hilfreich. Ich möchte hier zwei kleine Bespiele zeigen, wie man solche Protokollausgaben mit minimalem Aufwand selbst produzueren kann:
 

1. Beispiel
Man definiere in der Ereignisverwaltung ein Benutzerdefiniertes Ereignis und füge diesem ein paar Parameter vom Typ "Text" hinzu.

706479826_01BenutzdefiniertesEreignismitParametern.thumb.jpg.1c29b5fb73fb7ddbe98f9d78ad5abb95.jpg

Es brauchen keine Inhalte (Bedingungen, Aktionen, ...) hinzugefügt zu werden.

In den Ereignisdefinitonen, wo Protokollzeilen ausgegeben werden sollen, fügt man nun Aufrufe dieses "leeren" Ereignisses hinzu.699762424_02Ereignis-AufrufmitParametern1.thumb.jpg.528bf0bdedef7dfb97e244ac99cdc6db.jpg

Entsprechend der Anzahl eingerichteter Parameter in der Ereignisdefinition "Print" stehen nun beim Aufruf diese Parameter zum Ausfüllen zur Verfügung. Man kann auch Parameter leer lassen. Dann wird einfach der Leerstring "" hergenommen.

949582342_03Ereignis-AufrufmitParametern2.thumb.jpg.8e57cdf72124612cf15332f4e74ace6a.jpg

Man kann als Parameter aber auch Referenzen auf Objekte hinterlegen und beispielsweise deren Bezeichnungen ausgeben lassen. Dort werden dann im Ereignisprotokoll die (Bezeichungen der) tatsächlichen Objekte ausgegeben.

1559236415_04Protokollausgabe.jpg.807c4b8615f75899d7808eafca5a4ca0.jpg

Leider sticht die Ausgabe im Protokoll nicht "besonders" hervor, weil es sich "nur" um die Protokollierung eines aufgetretenen Ereignisses (unter vielen) handelt. Dennoch kann man die zusätzlivchen Protkollausgaben am Namen der hierfür verwendeten Ereignisdefinitoon (hier "Print") erkennen.
 

2. Beispiel
Dieses untescheidet sich vom 1. Beipiel nur dadurch, dass man der Ereignisdefinition "Print" eine Zeile "Lua-Code" verpasst:

858365851_05Lua-Einzeiler.thumb.jpg.d6716f9db7379219289f4ff34db265dc.jpg

Das "print"-Statement bekommt genau jene Parameter verpasst, die das Print-Ereignis "nach außen" anbietet. Die Aufrufe aus den obigen Bildern bleiben unverändert. Doch die print-Anweisung in der Lua-Ereignisdefinition gibt nun zusätzlich die im Ereignis-Aufruf übergebenen Parameterwerte in grüner Schrift aus, welche hier deutlicher hervortritt. Nachteilig wirkt sich hier allerdings aus, dass das Protokoll der Ereignis-Auslösung trotzdem noch ausgegeben wird, sodass jetzt jeder "Print"-Aufruf zu einer doppelten Ausgabe führt.

Frage an @Neo:
Wäre es eventuell möglich, so etwas Ähnliches etwa in einer solchen Form ...

Trace-Ausgabe.thumb.jpg.83a45d01258050b8d445e636977fd443.jpg

... direkt in der Ereignisverwaltung anzubieten, wobei dann tatsächlich nur die Ausgabe selbst (ohne Ereignisbezeichnung) im Ereignisprotikoll (in einer auffälligen Farbe) ausgegeben wird? Am einfachsten wäre es natürlich, wie beim "Kommentar" etwas in das Lua-Script einzufügen (nämlich die im vorletzten Bild gezeigte Hintereinander-Reihung der Parameter in der Lua-print-Anweisung anstelle des Kommentartextes in der Form "--text" oder "--[[ text --]] , ohne die "Trace"-Überschrift zu protokollieren).

Viele Grüße
BahnLand

 

 

Edited by BahnLand

Share this post


Link to post
Share on other sites

Hallo,

der hier angekündigte Anlagenbaustein "Ablaufberg" ist nun fertig und unter der Content-ID B9B9CF7A-4616-4350-B2E0-6EA3BD8A3429 im Online-Katalog zu finden. Als Anwendungsbeispiel habe die alte Anlage "Ablaufberg" aus V4 aktualisiert (Content-ID BF1E3582-32E9-4074-AE25-5F55DED16C28), die nach der automatischen Übernahme nach V5 nicht mehr funktioniert hat. In Ihr sind nun neben dem fertigen Anlagen-Baustein für den Ablaufberg auch die Bausteine "Signalhalt" und "Bahnhofshalt 2-seitig" eingefügt. Diese wurden aber für den Ablaufberg-Betrieb etwas modifiziert. Die Beschreibung des Anlagenbausteins "Ablaufberg" befindet sich hier.

Im Gegensatz zur Ablaufberg-Anlage in V4 brauchen nun die Wagen der zu zerlegenden Güterzüge nicht mehr mit Nummern bezeichnet zu sein. Sobald sich ein Güterzug der Kuppe des Ablaufbergs nähert, wird über ein Lua-Script die Liste aller im Güterzug enthaltenen Güterwagen-Objekte bestimmt, die dann an der Kuppe zur Identifizierung des abzukuppelnden Wagens herangezogen wird. Da die abzufragende Liste die Wagen-Objekte direkt enthält, können diese nun beliebige Namen besitzen, die nicht einmal eindeutig sein müssen. Dies ist übrigens das einzige im Anlagenbaustein direkt implementierte Lua-cript, alle anderen Ereignisdefinitionen sind wie in den anderen bisherigen Anlagen-Bausteinen auch über die grafische EV realisiert.

Eine einzuhaltende Namensvorgabe gibt es allerdings bei den Entkuppler-Fahrzeugen: Diese müssen alle "Entkuppler" heißen, da deren Identifizierung als Entkuppkler-Fahrzeuge über diesen Namen erfolgt (anstelle der Abfrage einer sonst notwendigen Typ-Zuweisung). Dies ist für den Anwender jedoch nur dann relevant, wenn der bereits vorhandene Pool von Entkuppler-Fahrzeugen vergrößert werden soll.
 

Noch ein Hinweis an @Neo:

1392902618_21KeineBeschereichbungsmglichkeitohneDummy.thumb.jpg.cc7d843eb64736824e71a54f83746d26.jpg

Aufgrund der Aufteilung der Ereignissteuerung in 3 Funktionsgruppen (Ereignismodule) gibt es in der Hauptebene keine Ereignisdefinition. Damit gibt es hier aber auch keine Möglichkeit, eine Beschreibung hinzuzufügen.

540560294_22BeschereichbungsmglichkeitnurmitDummy.thumb.jpg.d86bf6a2036080f95121135c1d5102a2.jpg

Dies ist erst möglich, wenn mindestens eine Ereignisdefinition hinzugefügt wurde. Ich habe daher ein "leeres" Dummy-Ereignis vom Typ "benutzerdefiniert" hinzugefügt, das keinen Inhalt besitzt. Ich würde es aber für "sauberer" erachten, wenn die Übersticht im Fenster rechts mit der Möglichkeit, eine Beschreibung hinzuzufügen, auch dann angezeigt würde, wenn das oberste Ereignismodul selbst nur eingebettete Ereignismodule, aber keine direkten Ereignisdefinitionen enthält.

Viele Grüße
BahnLand

Share this post


Link to post
Share on other sites

Hallo zusammen,

auch wenn @Neo aufgrund unserer gemeinsamen Bemühungen für eine komfortable Konvoi-Steuerung hier für V6 die schon lange ersehnte komfortable Unterstützung des Konvoi-Problems angekündigt hat, wollte ich doch meine schon begonnenen Lösungsansätze ohne V6 zu Ende bringen und hier vergleichend vorstellen. Es hat jetzt nun doch noch ein paar Tage gedauert, da ja bekanntlich der Teufel im Detail steckt. Doch nun hier die von mir betrachteten jeweils mit mindestens einem Makel behafteten Lösungs- oder Kompromiss-Varianten im direkten Vergleich.

Ich habe für jede Variante einen Anlagenbaustein gebaut, den man in vorhandene Anlagen einfügen (importieren) und dort mehrmals duplizieren und individuell anpassen kann, ohne jeweils die enthaltene Ereignissteuerung mit duplizieren zu müssen. Da ich mir aufgrund der Ankündigung von @Neo nicht sicher bin, ob ich die Bausteine jetzt wirklich noch im Online-Katalog (Kategorie "Module zum Einbauen") veröffentlichen soll, möchte ich sie zumindest hier als mbp-Dateien zur Verfügung stellen. Außerdem gibt es für jeden Baustein eine kleine Demo-Anlage.


1. Einfache Konvoi-Steuerung mit einer die Fahrzeuge blockierenden Fahrsperre.

2054505409_BausteinAutokonvoi1.thumb.jpg.14a29b5c625333fca335d88bde2ec6f3.jpg
Baustein Autokonvoi 1.mbp

627995136_DemoAutokonvoi1.thumb.jpg.a54b9472cc7dd58697c4602cea8b674c.jpg
Demo Autokonvoi 1.mbp

Der Baustein besteht aus einer (schaltbaren) Fahrsperre (dunkler Fahrbahnbelag), einem normalen Straßenstück als "Abstandhalter" (heller Fahrbahnbelag), einem Gleiskontakt zum Entsperren der Fahrsperre, einem Stopp-Taster und einem Dummy-Fahrzeug (halbtransparent grün). Befindet sich auf dem hellen Straßenstück ein Fahrzeug, wird das nächste an der Fahrsperre eintreffende Fahrzeug durch "festklemmen" zwangsgestoppt, ohne dass dabei die zugeordnete Ist-Geschwindigkeit verloren geht. Auch auf dieses Fahrzeug auffahrende weitere Fahrzeuge behalten dadurch ihre zugeordnete Ist-Geschwindigkeit bei.

Verlässt ein Fahrzeug das helle Straßenstück und damit den "Entsperr-Kontakt", wird ein an der Fahrsperre festgeklemmtes Fahrzeug "losgelassen", worauf dieses und alle nachfolgenden aufgefahrenen Fahrzeuge ihre Fahrt mit der Ist-Geschwindigkeit fortsetzen. Da diese Ist-Geschwindigkeiten der Fahrzeuge bei diesem Szenario zu keinem Zeitpunkt verändert werden, gibt es auch kein "Abbremsen" oder "Beschleunigen". Die Fahrt wird als "ruckartig" gestoppt und fortgesetzt. Der rote Taster ist Platzhalter für eine Ampel, eine Bahnschranke oder ein anderes Steuer-Objekt, mit welchem der Konvoi an der Stelle, wo dieser Baustein im Straßenverlauf platziert wird, angehalten werden soll.

Wird ein Fahrzeug an der Fahrsperre "festgeklemmt", kommt es in Abhängigkeit von seiner Länge mit einer unterschiedlichen Überlappung an der Einfahrt zur Fahrsperre zum Stehen. Bei sehr langen Fahrzeugen (z.B. einen langen Bus) kann es daher passieren, dass ein davor befindliches Fahrzeug weitergeschoben wird, und damit die Ereignissteuerung negativ beeinflusst. Außerdem wird das Fahrzeug beim "Festklemmen" etwas nach hinten versetzt, sodass sich das Fahrzeug in ein möglicherweise aufgefahrenes Fahrzeug hinein schiebt. Dies ergibt dann insbesondere bei zusammengesetzten Fahrzeugen (z.B. Gliederbus oder Sattelzug) ein sehr unschönes Erscheinungsbild. Deshalb wird bei dieser Variante jedem Fahrzeug oder Fahrzeuggespann ein "Dummy-Fahrzeug" mit einheitlich kurzer Länge vorangestellt, das anstelle der Originalfahrzeuge den "Antrieb" als "Zugmaschine" übernimmt. Das versehentliche Weiterschieben vorausfahrender Fahrzeuge wird dadurch verhindert, und das Zurückschieben in das nachfolgende Fahrzeug hinein ist nach dem Ausblenden der Dummy-Fahrzeuge nicht mehr sichtbar.

2135081157_DemoAutokonvoi1c.thumb.jpg.93014ca74dd4698f987a28bc4308c881.jpg

Außerdem dienen die Dummy-Fahrzeuge hierbei gleichzeitig als "Abstandhalter" zwischen den Fahrzeugen im Konvoi.

2061001858_DemoAutokonvoi1b.thumb.jpg.ceed272ac7e1cd26db29433da5cbd02e.jpg

Bei aus Straßenstücken mit mehreren Fahrspuren bestehenden Straßenverläufen, kann nicht das Straßenstück mit allen Fahrspuren als schaltbare Fahrsperre ausgeführt werden. Deshalb sind hier beim originalen Straßenstück sämtliche Fahrspuren zu entfernen (oder zu deaktivieren) und bei der zu blockierenden Fahrspur durch den Anlagenbaustein zu ersetzen. Bei dessen Straßenstücken kann als Variation eine bunte Spurlinie ausgewählt werden, wobei für die Fahrsperre und das "normale" Straßenstück unterschiedliche Farben ausgewählt werden können. Für die nicht zu blockierende Fahrspur wird eine Kopie des "normalen" Straßenstücks (ebenfalls als "Spurlinie") eingesetzt und in der Länge angepasst. Darüber kann dann wieder das originale Straßenstück im normalen Straßendesign (das nun keine aktiven Fahrspuren mehr enthält) darüber gelegt werden. Die eingesetzten "Spurlinien" werden abschließend ausgeblendet (im vorletzten Bild die Ebene "Baustein-Fahrspuren").

Durch das Verschieben des Gleiskontakts nach vorne (Vergrößerung des Abstands zur Fahrsperre) kann der Abstand der Fahrzeuge auf der Straßen nach dem Verlassen der Fahrsperre reguliert werden.


2. Konvoi-Steuerung mit weichem Abbremsen auf kurzen Fahrbahn-Abschnitten.

565171348_BausteinAutokonvoi2.thumb.jpg.062428d3e2ae5efa611c1f7318123c5c.jpg
Baustein Autokonvoi 2.mbp

Dieser Baustein besteht aus 3 Fahrbahn-Abschnitten (zur Unterscheidung mit unterschiedlichen Fahrbahnbelägen), einem Stopp-Taster, einem weiteren Taster zur Umschaltung der Ereignissteuerung zwischen Initialisierungs- und Betriebsmodus sowie einem zur Durchführung der Initialisierung benötigten Dummy-Fahrzeug. Die Konfiguration aus den 3 Straßenabschnitten repräsentiert die von der Ereignissteuerung kontrollierte "Autokonvoi-Haltestrecke", welche durch Einfügen weiterer Kopien des mittleren Straßenstücks beliebig verlängert werden kann. Ein in das vorderste Straßenstück (im Bild links) von rechts einfahrendes Fahrzeug wird dann abgebremst, wenn der Stopp-Taster "Halt" gebietet. Schaltet dieser auf Grün, wird ein auf diesem Straßenstück stehendes Fahrzeug gestartet. Bei der Einfahrt in eines der Straßenstücke dahinter wird das Fahrzeug dann abgebremst, wenn das Straßenstück davor durch ein vorausfahrendes Fahrzeug belegt ist. Dieses startet das angehaltene nachfolgende Fahrzeug wieder, sobald es das von ihm belegte Straßenstück verlassen hat. Das letzte Straßenstück (rechts) stellt als "Sonderfunktion" bei den eintreffenden Fahrzeuge noch die Geschwindigkeit und Bremsverzögerung so ein, dass das Fahrzeug beim Eintritt in alle weiteren Straßenstücke auf diesem zum Halten gebracht werden kann, ohne versehentlich in das nächste Straßenstück hinein zu gelangen.

Damit von einem Straßenstück aus auf die benachbarten Straßenstücke zugegriffen werden kann, sind diese jeweils gegenseitig miteinander verknüpft. Werden nun zwischen die "Einfahrt" (Straßenstück rechts) und die "Ausfahrt" (Straßenstück links) weitere "mittlere" Straßenstücke eingefügt, muss diese Verkettung neu konfiguriert werden. Hierzu schaltet man mit der "Auto"-Taste die Konfiguration in den Initialisierungsmodus ("Hand") um, platziert das Dummy-Fahrzeug außerhalb der Autokonvoi-Haltestrecke auf der Straße vor der "Einfahrt", und lässt es einmal durch die gesamte Haltestrecke hindurch fahren, bist es am andere Ende die "Ausfahrt" wieder verlassen hat. Danach kann man das Dummy-Fahrzeug wieder von der Straße nehmen und auf den Betriebsmodus zurückschalten. Die Autokonvoi-Haltestrecke ist nun einsatzbereit.


Dieser Baustein funktioniert so aber nur für einspurige Straßenverläufe. Für zweispurige Straßen mit Gegenverkehr hat Frank (@fzonk) in diesem Beitrag eine Lösung präsentiert, die ich entsprechend zu einem Baustein für zweispurige Straßen erweitert habe:

1788912114_BausteinAutokonvoi3.thumb.jpg.cb181ed49e322136cdb6fe32821b7698.jpg
Baustein Autokonvoi 3.mbp

Das Schema ist im Prinzip das Gleiche wie beim Anlagenbaustein "Autokonvoi 2" mit dem Unterschied, dass nun die beiden End-Straßenstücke die Steuerung sowohl für die Einfahrt als auch für die Ausfahrt enthalten und auch das mittlere Straßenstückbeide Fahrtrichtungen unterstützt. Eine Erweiterung dieser Methode auf weitere Fahrspuren in einem Straßenstück oder eine Anwendung auf in der gleichen Fahrtrichtung zu befahrende zweispurige Straßenverläufe ist allerdings nicht möglich.

118125207_DemoAutokonvoi23.thumb.jpg.5fa04adc338d32de0a954c4cd0f0415e.jpg
Demo Autokonvoi 2+3.mbp

Beide Varianten (ein- und zweispurig im Gegenverkehr) habe ich in der obigen Demo-Anlage vereinigt. Bei diesen Konfigurationen ist insbesondere darauf zu achten, dass die Gesamtlänge des angehaltenen Konvois innerhalb der Autokonvoi-Haltestrecke Platz findet. Sobald ein Fahrzeug noch außerhalb der der Haltestrecke auf den hinten hinausragenden stehenden Konvoi auffährt, werden die Fahrzeuge von hinten zusammengeschoben, und die Ereignissteuerung funktioniert nicht mehr, weil die einzelne Fahrzeuge des Konvois nicht mehr auf jenen Straßenabschnitten stehen, auf denen sie in der Ereignissteuerung hinterlegt sind.


3. Mittels Gleiskontakten realisierte Konvoi-Steuerung.

1935002760_BausteinAutokonvoi4.thumb.jpg.f42298d54c63d6d9c5f194fa2fece892.jpg
Baustein Autokonvoi 4.mbp

1322711661_DemoAutokonvoi4.thumb.jpg.82007ed9384e01252ead544bbbfc2b98.jpg
Demo Autokonvoi 4.mbp

Dieser Baustein ist analog zum Anlagenbaustein "Autokonvoi 2" aufgebaut mit dem Unterschied, dass das Erkennen einer Ein- und Ausfahrt aus einem Halteabschnitt nicht über die Straßenstücke, sondern über an den Abschnittsgrenzen angeordnete Gleiskontakte erfolgt. Die Straßenstücke selbst werden von der Ereignissteuerung nicht mehr ausgewertet und dienen hier nur noch als optische Anzeige der Halte-Abschnitte. Auf der Anlage selbst können die Gleiskontakte des Anlagenbausteins deshalb direkt auf den vorhandenen Straßenverlauf aufgelegt, sodass die Straßenstücke des Anlagenbausteins dann überflüssig sind.

Im Gegensatz zur Realisierung mit Straßenstücken werden für die Realisierung mit Gleiskontakten zwei Begrenzer des jeweiligen Halteabschnitts benötigt, wobei die "inneren" Gleiskontakte jeweils für beide angrenzenden Halteabschnitte verwendet werden. Der Ausfahr-Kontakt ganz links ist nur noch für die Freigabe des hinter ihm liegenden Halteblocks zuständig. Alle anderen Gleiskontakte sind jeweils für den in Fahrtrichtig vor ihnen liegenden Halteabschnitt zuständig, wobei der zweite Kontakt von links die Steuerung in Abhängigkeit vom Zustand des Stopp-Tasters durchführt. Bei allen anderen Kontakten bestimmt die Belegung des auf den eigenen Abschnitt folgenden Abschnitt durch ein vorausfahrendes Fahrzeug, on das den Kontakt passierende Fahrzeug abgebremst werden soll oder durchfahren kann. Der letzte Kontakt ganz rechts schließt als Einfahr-Kontakt die Autokonvoi-Haltestrecke ab und nimmt wie das letzte Straßenstück beim "Anagenbaustein Autokonvoi 2" eine eventuell erforderliche Anpassung der Geschwindigkeit und der Bremsverzögerung des einfahrenden Fahrzeugs vor.

Der verbleibende in der Reihenfolge dritte Gleiskontakt (grün) kann zur Verlängerung der Autokonvoi-Haltestrecke beliebig oft kopiert und als weiterer "innerer" Kontakt eingefügt werden. Auch hier muss anschließend im Initialisierungsmodus das Dummy-Fahrzeug durch die komplette Autokonvoi-Haltestrecke gefahren werden, um die Gleiskontakte korrekt miteinander zu verketten.

1734866696_DemoAutokonvoi4b.thumb.jpg.39ada77f6c1d0a6e0e8354c521c2b0b8.jpg

 

Im Gegensatz zur Realisierung de Konvoi-Steuerung mittels kurzer Straßenstücke ist diese Variante gleichermaßen für ein- und mehrspurige Straßen (auch mit gleicher Fahrtrichtung anwendbar, indem die Konfiguration einfach für jede zu berücksichtigende Fahrspur angelegt wird. Die Problematik der Längenbegrenzung des Konvois ist hier aber genauso vorhanden wie bei der zuvor beschriebenen Variante.

Durch das Vergrößern des Abstands zwischen den ersten beiden Gleiskontakten kann der Abstand der Fahrzeuge auf der nicht kontrollierten Straße nach dem Verlassen der Autokonvoi-Haltestrecke reguliert werden.


4. Rückwärtige Absicherung der Autokonvoi-Haltestrecke durch hinten angefügte Fahrsperren.

1714884013_BausteinAutokonvoi5.thumb.jpg.c0dc6183ccb980d946a3f22bc1cb7e49.jpg
Baustein Autokonvoi 5.mbp

247037524_DemoAutokonvoi5.thumb.jpg.904ee804159e5bd3352a509eb85f0141.jpg
Demo Autokonvoi 5.mbp

Hierbei handelt es sich um eine Kombination aus dem Anlagenbaustein "Autokonvoi 4" und mehreren angehängten Ausprägungen des Bausteins "Autokonvoi 1", denen allerdings die Stopp-Taster fehlen. Konkret wurde der Baustein "Autokonvoi 4" um ein Mittelglied verlängert, dessen Gleiskontakt (im Bild weiß dargestellt) gleichzeitig die Funktionalität des Entsperr-Kontakts des vordersten Bausteins "Autokonvoi 1" innehat. Hierbei müssen sich der Streckenabschnitt dieses Bausteins und der letzte Abschnitt des Bausteins "Autokonvoi 4" überlappen, damit letzterer die Funktionalität des entfernten Stopp-Tasters übernehmen kann. Jeder weitere angehängte "Autokonvoi 1"-Abschnitt wird durch die Fahrsperre des Abschnitts, an den er angehängt wurde, sowohl bei der Sperrung (Stopp-Taster-Funktionalität) als auch bei der Entsperrung (Funktion des nun auch fehlenden Entsperr-Kontakts) gesteuert. Eine Verlängerung des Bausteins ist sowohl im vorderen Teil (Duplizierung des grünen Gleiskontakts) als auch im hinteren Teil (Duplizierung der mittleren Fahrsperre einschließlich des davor liegenden "Distanz"-Straßenstücks möglich.  Auch hier ist nach einer Veränderung der Baustein-Länge ein Initialisierungslauf erforderlich, wobei sowohl die Gleiskontakte als auch die Fahrsperren jeweils untereinander verkettet werden.

Im Gegensatz zum originalen Anlagenbaustein "Autokonvoi 1" bei denen die eigentlichen Fahrzeuge nicht selbst fahren, sondern jeweils durch "Längen-normierte" Dummy-Fahrzeuge gezogen werden, sind es hier wieder die originalen Fahrzeuge unterschiedlicher Länge, die von den Fahrsperren "festgeklemmt" werden. Um hierbei ein ungewolltes Anschieben des Vordermanns durch ein "zu spätes Festklemmen" zu vermeiden wurden die Distanzen im Bereich der Fahrsperren" gegenüber jenen im Bereich der Gleiskontakte vergrößert.

1201004553_DemoAutokonvoi5b.thumb.jpg.d37aa66e32addacc630bc7d3f50df0af.jpg

Ragt ein am Ende des Gleiskontaktbereich (der klassischen Autokonvoi-Haltestrecke mit "weichem" Abbremsen) angehaltenes Fahrzeug hinten über diesen Abschnitt hinaus, würde ein nachfolgendes Fahrzeug ohne zusätzliche Stopp-Stelle in das letzte Fahrzeug des haltenden Konvois hineinfahren, hierbei die haltenden Konvoi-Fahrzeuge zusammenschieben und dadurch letztendlich chaotische Zustände herstellen, welche die Ereignissteuerung nicht mehr beherrschen und auch nicht mehr reparieren kann. Um dies zu vermeiden, muss es eine Fahrsperre geben, die so weit nach hinten versetzt ist, dass auch das längste auf der Anlage im Einsatz befindliche Fahrzeuggespann (in der vorliegenden Demo ein Schwertransport mit führender und schiebender Zugmaschine) auch beim Halten ganz hinten im Gleiskontaktbereich noch davor Platz findet. Im obigen Bild erfüllt die Fahrsperre unter dem Sattelzug diese Bedingung. Damit bei kürzeren Fahrzeugen die Lücke zwischen dem letzen im Gleiskontaktbereich angehaltenen Fahrzeug und einem durch die Fahrsperre festgeklemmten Folgefahrzeug nicht zu groß wird, gibt es die im Baustein realisierte Folge von Fahrsperren mit kürzeren Abständen. Hinter der letzten Fahrsperre können dann weitere Folgefahrzeuge gefahrlos auffahren, ohne dass hierdurch die Ereignissteuerung störend beeinflusst wird.


Vergleich der Stärken und Makel der einzelnen Konvoi-Lösungen.

Der Baustein "Autokonvoi 1" erlaubt keine weichen Brems- und Anfahrvorgänge. Das Anhalten und Losfahren geschieht grundsätzlich ruckartig. Ferner werden für ein "sauberes" Anhalten an der Fahrsperre und für das Beibehalten von Mindestabständen unsichtbare Dummy-Fahrzeuge benötigt, die allen Fahrzeugen und Fahrzeuggespannen als "Zugmaschinen" vorangestellt werden (den gezogenen Fahrzeugen selbst wird dabei grundsätzlich keine Geschwindigkeit zugeordnet). Der Einbau des Bausteins in größere Straßenverkehrs-Objekte ist dagegen sehr einfach zu handhaben und benötigt mit Ausnahme des Voranstellens der Dummy-Fahrzeuge vor die eigentlichen Fahrzeuge und Fahrzeuggespanne keine besonderen Vorkehrungen. Insbesondere können auch "diffizile" Straßengeometrien mit überschaubarem Aufwand damit ausgestattet werden. Als komplexere Beispiele seien hier die Kreisverkehr-Demo-Anlagen aus diesem Beitrag genannt.

Die Bausteine "Autokonvoi 2", "Autokonvoi 3" und "Autokonvoi 4" erlauben zwar ein weiches Abbremsen und Anfahren, beschränken aber jeweils die Länge des aufgestauten Konvois auf die Länge der Realisierten "Autokonvoi-Haltestrecke". Es muss hierunbedingt vermieden werden, dass der Stau hinten über das Ende der Autokonvoi-Haltestrecke hinaus reicht und dann ein weiteres Fahrzeug hinten auffährt. Tritt dieser Fall tatsächlich auf, versinkt die Konvoi-Steuerung im Chaos. Man muss also garantieren, dass entweder der Stau niemals über das Ende der Haltestrecke hinausragt, oder die gesamte Straßenkonfiguration als Autokonvoi-Haltestrecke einrichten.

Der Baustein "Autokonvoi 5" stellt einen Kompromiss zwischen den Bausteinen "Autokonvoi 4" (stellvertretend für "Autokonvoi 2" und "Autokonvoi 3") und "Autokonvoi 1" dar, indem er diese beide kombiniert. Solange der Stau sich auf den Bereich innerhalb der Autokonvoi-Haltestrecke (den Bereich innerhalb der Gleiskontakte) beschränkt, werden die Fahrzeuge weich abgebremst und auch beim Start wieder langsam beschleunigt. Es ist jedoch möglich, den haltenden Konvoi über den Gleiskontakt-Bereich nach hinten hinaus ragen zu und auch zusätzliche Fahrzeuge von hinten auffahren zu lassen. Diese werden dann aber schlagartig angehalten und auch wieder ruckartig gestartet. Erst mit der Einfahrt i den Gleiskontaktbereich kommen dann auch diese in den Genuss der weichen Abbremsung und Beschleunigung.

Insgesamt muss ich also feststellen, dass ich keine "ultimative" Lösung gefunden habe, und man - unabhängig davon, welche Lösung man wählt - mit einem Makel leben muss. Insofern können alle hier angebotenen Lösungen nur Übergangslösungen bis zur V6 sein, in der dann diese Lösungswege vermutlich alle obsolet werden.

 

Denkansätze für eine mögliche einfache Konvoi-Steuerung mit sanftem Halt und Start.

Bei meinen Versuchen zu den obigen Lösungsansätzen habe ich festgestellt, dass ein Fahrzeug, das auf ein langsamer fahrendes Fahrzeug auffährt, auf dessen Geschwindigkeit abgebremst wird. Beschleunigt nun das vordere Fahrzeug über die ursprüngliche Geschwindigkeit des hinteren Fahrzeugs hinaus, macht das hintere Fahrzeug die Beschleunigung mit, bis seine ursprüngliche Geschwindigkeit erreicht ist, und behält diese dann bei. Die dem hinteren Fahrzeug zugeordnete Ist-Geschwindigkeit wird also beibehalten, wenn das Fahrzeug beim Auffahren auf ein langsameres Fahrzeug abgebremst wird.

Mir stellte sich daraufhin die Frage, ob es nicht möglich wäre, durch "weiches" Abbremsen des ersten Fahrzeugs auf z.B. 0,001 km/h "quasi" anzuhalten (vielleicht sogar "de facto"), ohne dass nachfolgende Fahrzeuge trotz Zwangshalt beim Auffahren ihre zugeordnete Ist-Geschwindigkeit verlieren, und dann beim Wiederanfahren des ersten Fahrzeugs alle aufgefahrenen Fahrzeuge ebenfalls anfahren - alle mit der dem ersten Fahrzeug zugeteilten Beschleunigung. Dies wäre dann tatsächlichen Konvoi-Stopp-Mechanismus ähnlich analog zu dem in Anlagenbaustein "Autokonvoi 1" beschrieben, mit dem gravierenden Unterschied, dass keinen Fahrsperren im Spiel sind, und damit auch das Anhalten und losfahren nicht abrupt, sondern "weich" erfolgt.

Leider ließ sich dann diese Idee nicht realisieren, weil sich das Verhalten des vorderen Fahrzeugs bei sehr niedrigen Geschwindigkeiten plötzlich ändert. Hierzu habe ich ein kleines Test-Oval gebaut, auf dem zwei Fahrzeuggespanne (jeweils ein angetriebenes Dummy-Fahrzeug mit 5 nicht angetriebenen Dummy-Anhängern) ihre Runden drehen.

239019889_X1Einstellungen.thumb.jpg.b97ba829b63e69d9960593d861f5972d.jpg
Blockade-Test.mbp

Die vorderen Kupplungen beider Gespanne sind deaktiviert, damit die beiden Gespanne sich nicht zu einem "Zug" vereinigen. Für beide Gespanne ist ursprünglich eine Geschwindigkeit von 100 km/h eingestellt, mit der sie auf dem Oval ihre Runden drehen, ohne sich gegenseitig zu behelligen.
 

77840434_X2Anzeige.thumb.jpg.4ffcc08ddc4e517c94a45d628c8c2bbd.jpg

In der Mitte des der unteren Gerade ist eine Gleiskontakt platziert, an dem die Eintrittsgeschwindigkeit des jeweils Gespanns gemessen und  und zusammen mit seiner Kennzeichnung ausgegeben wird.

1987500458_X3Vorderesbremstaus.thumb.jpg.5f0992c854e0a6736c1bfc599353db78.jpg

Reduziert man nun die Geschwindigkeit des vorderen Gespanns auf beispielsweise 50 km/h, schließt das hintere Gespann auf und wird beim Auffahren auf ebenfalls diese Geschwindigkeit zwangs-abgebremst, ...

1596417687_X4Hinteresausgebremst.thumb.jpg.7252d9480fa2b98b22c3ec3d10276cd3.jpg

... ohne hierbei die ursprüngliche Geschwindigkeitszuordnung zu verlieren. Auf diese Art kann das hintere Gespann durch das vordere auf bis etwa 2 km/h abgebremst werden. Ab unter 4 km/h tritt ein gelegentliches Ruckeln auf, das mit weiter sinkender Geschwindigkeit sich bist zu seinem Höhepunkt bei etwa 2 km/h steigert.

1291458428_X5MinimaleBremsgeschwindigkeit.thumb.jpg.30c99e9a8856ea2fb5f92bc0003d47f7.jpg

 

In einem Geschwindigkeitsbereich zwischen etwa 2,2 km/h und 2,0 km/h tritt plötzlich ein seltsames Phänomen auf: 

143039375_X6Vorderesnichterkannt.thumb.jpg.ccbdba1e2df6171df28ae0409a53265d.jpg

Beim Eintritt des vorderen Gespanns am Gleiskontakt wird zufallsgesteuert anstelle dieses Gespanns das hintere Gespann mit seiner eingestellten Ist-Geschwindigkeit von 200 km/h angezeigt, was bedeutet, dass das vordere Gespann nicht mehr als eigenständiges Gespann, sonder als geschobener Teil des hinteren Gespanns erkannt wird. Geht man mit der vorderen Geschwindigkeit noch weiterherunter werden die beiden Gespanne nur noch gemeinsam als "Hinteres Gespann" identifiziert. Außerdem steigt die Geschwindigkeit nun langsam wieder an und erreicht bei einer eingegeben Geschwindigkeit von 0,01 km/h für das vordere Gespann tatsächlich geschätzte 60 km/h (diese Geschwindigkeit kann nicht direkt gemessen werden).

Im Einzelnen habe ich folgende Geschwindigkeiten gemessen bzw. geschätzt:

eingegebene Geschwindigkeit      gemessene oder geschätzte Geschwindigkeit
100 km/h bis ca. 2,0 km/h             gemessene = eingegebene Geschwindigkeit (bis auf minimale Rundungsfehler)
1,0 km/h                                        geschätzt 30 km/h
0,1 km/h                                        geschätzt 50 km/h
0,01 km/h                                      geschätzt 60 km/h

Stellt man die Geschwindigkeit des vorderen Gespanns exakt auf 0, springt die tatsächliche Geschwindigkeit abrupt auf die 100 km/h des hinteren Gespanns. stellt man anschließend für das vordere Gespann wieder eine Geschwindigkeit >0 ein, wird wieder abrupt auf die entsprechende Geschwindigkeit - interpoliert aus obiger Tabelle - gesprungen. Bei einer Geschwindigkeitsänderung für das vordere Gespann von >0 nach >0 erfolgt die Geschwindigkeitsanpassung immer "Weiche" entsprechend der eingestellten Werte für die Bremsverzögerung und die Beschleunigung.

Fragen an @Neo:
Gibt es eine Erklärung für dieses Verhalten?
Wäre es eventuell möglich, das Verhalten so anzupassen, dass die oben beschriebene Idee einer "weichen" Konvoi-Abbremsung ermöglicht werden könnte?
Es wäre zumindest eine Überbrückungsmöglichkeit bis zur V6, mit der man weiches Anhalten und Anfahren mit dem einfachen Lösungsansatz des Anlagenbausteins "Autokonvoi 1" verbinden könnte und damit die Mängel aller oben beschriebenen Lösungsansätze beseitigen könnte.

Viele Grüße
BahnLand

Share this post


Link to post
Share on other sites

Hallo BahnLand,

ich habe großen Respekt vor deiner aufwendigen Arbeit, das muss viele Stunden gekostet haben. Um so schwerer fällt es mir zu sagen, dass es für V5 keine Änderungen am Fahrzeug-Code mehr geben wird. Ich habe bereits für V6 den gesamten Code erneuert und gute Fortschritte mit der Abstandsverwaltung gemacht. Die Ergebnisse sind jetzt schon nicht mit dem zu vergleichen, was mit V5 mit viel Aufwand möglich wäre. In V6 wirst du beliebige Autos auf eine Straße setzen, dem vorderen eine Geschwindigkeit geben und alle Nachfolger orientieren sich automatisch, ohne unsichtbare Hilfsobjekte oder Ereignisse.

Es wird sich lohnen, auf V6 zu warten!

Viele Grüße,

Neo

Share this post


Link to post
Share on other sites

@Neo

Kann man das vielleicht auch zum Rangieren von Loks und Waggons verwenden?
Sprich: die fahren automatisch abgebremst an stehende Waggons/Loks/Züge ran, um dann verkuppelt zu werden.

 

Gruß
Thomas

Share this post


Link to post
Share on other sites

Hallo Thomas,

vor 1 Minute schrieb HaNNoveraNer:

Sprich: die fahren automatisch abgebremst an stehende Waggons/Loks/Züge ran, um dann verkuppelt zu werden.

ja :)

Viele Grüße,

Neo

Share this post


Link to post
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

×