Jump to content

Empfohlene Beiträge

Geschrieben

Liebe 3D-Modellbahnstudio-Fans,

seit einiger Zeit tüftele ich an einer automatischen Steuerung für Stoppstraßen. Inzwischen habe ich eine Version erstellt, die grundsätzlich funktioniert. Manchmal jedoch bleiben Autos an den Stoppstraßen stehen, obwohl die Kreuzung frei ist.

Es gibt eine Variable, die per Counter ein- und ausfahrende Autos ermittelt. Über einen Gleiskontakt wird Addition und Subtraktion von Fahrzeugen durchgeführt. Aus irgend einem Grund funktioniert das aber manchmal nicht und der Counter zählt falsch.

Ihr findet eine Testanlage unter dieser Content-ID: F7C41FEB-6DD2-444B-9085-BC0952762F96

Falls jemand Zeit und Lust hat, sich mit dem Thema zu befassen, würde ich mich über eine Antwort sehr freuen!

Gruß
Dirk

Geschrieben
vor 4 Minuten schrieb dirk.klotz:

und der Counter zählt falsch

Hallo Dirk,
das ist eine Geschichte, der müssen wir wirklich mal intensiv auf den Grund gehen, denn das ist nicht nur bei Deiner Anlage der Fall. Bei all unseren vorfahrtsbeachtenden Abzweigungen haben wir das Problem ebenfalls. Neo empfiehlt ja auf Counter zu verzichten, aber dann kommen wir der Sache nie auf die Spur. Da V8 da leider keine neuen unterstützende Maßnahmen mitbringt, besitzt das Thema für uns hohe Priorität.

Gruß
  Andy

Geschrieben (bearbeitet)
9 minutes ago, dirk.klotz said:

...If anyone has the time and desire to deal with the topic, I would be very happy to receive an answer! ...

Good evening, Dirk...

There have been many attempts to solve this problem reliably; as far as I am aware, no-one has yet succeeded. I spent quite a long time experimenting with distances, speeds, multiple contacts and more, but in the end decided that for me, only a traffic light system worked perfectly. There have been many explanations, too, but the 'counter in/counter out' method just seems to be fatally flawed. I would be happy to learn of any new developments that solve the issue, but meanwhile, I use traffic lights.

Guten Abend Dirk...

Es hat viele Versuche gegeben, dieses Problem zuverlässig zu lösen; Soweit mir bekannt ist, ist dies noch niemandem gelungen. Ich habe ziemlich lange mit Entfernungen, Geschwindigkeiten, Mehrfachkontakten und mehr herumexperimentiert, aber am Ende entschieden, dass für mich nur ein Ampelsystem perfekt funktioniert. Es gab auch viele Erklärungen, aber die 'Counter in/Counter out'-Methode scheint einfach fatal fehlerhaft zu sein. Ich würde mich freuen, von neuen Entwicklungen zu erfahren, die das Problem lösen, aber inzwischen verwende ich Ampeln.

Douglas

Bearbeitet von Dad3353
Geschrieben

Das Problem dabei ist schlicht und einfach die Erstellung eines begleitenden überwachenden Systems, denn wenn das so einfach wäre, würden wir dies ja ersatzweise einsetzen. ;)

Geschrieben
vor 2 Minuten schrieb Andy:

Das Problem dabei ist schlicht und einfach die Erstellung eines begleitenden überwachenden Systems

Ja, das kann ich mir gut vorstellen! Komplexes Thema...

Jetzt ist es eben so wie im richtigen Leben: Manchmal bleibt halt jemand ohne Grund an der Kreuzung stehen und hält den Verkehr auf. 9_9:D

Geschrieben

Hallo Dirk,

Zustandsvariablen bzw. Zähler haben den inhärenten Nachteil, dass sich Probleme aufsummieren. Sobald es auch nur eine Schwachstelle in der Logik gibt, wird es zu einem Ablaufproblem kommen. In diesem Beitrag habe ich einen anderen Ansatz gewählt, bei dem Fahrstraßen "missbraucht" werden, um freie Bereiche vor einer Kreuzung zu erkennen:

Die Methode ist zwar sicher, aber aufwendig zu konfigurieren, basiert aber mehr auf der Realität, bei der Autos auf Kreuzungen nicht gezählt werden, sondern die Autos "schauen", ob der Weg frei ist.

Viele Grüße,

Neo

Geschrieben

Hallo @Neo

vor 14 Minuten schrieb Neo:

In diesem Beitrag habe ich einen anderen Ansatz gewählt, bei dem Fahrstraßen "missbraucht" werden, um freie Bereiche vor einer Kreuzung zu erkennen:

Dein Link bezieht sich auf diese Anlage von dir   E9F17CEE-42E4-467D-A120-CC6D40CC290A

 

1043895289_Screenshot2022-10-20214257.thumb.jpg.9fcc65612b33863b3e05be55a19df81e.jpg

Ist die nicht mehr im Katalog verfügbar?

Ich hatte schon öfter mal versucht die wiederzufinden. 

VG,

Hawkeye

Geschrieben
vor 53 Minuten schrieb Andy:

das ist eine Geschichte, der müssen wir wirklich mal intensiv auf den Grund gehen, denn das ist nicht nur bei Deiner Anlage der Fall. Bei all unseren vorfahrtsbeachtenden Abzweigungen haben wir das Problem ebenfalls.

Ich hatte schonmal überlegt, ob es vielleicht an gleichzeitig ein- und ausfahrenden Pkw liegt... Also wenn zwei Gleiskontakte zeitgleich ausgelöst werden.
Allerdings habe ich das noch nicht exakt überprüft, es ist wie gesagt nur eine Vermutung.

Geschrieben

Auch, wenn zwei Kontakte gleichzeitig ausgelöst werden, geht keins der beiden Ereignisse verloren.

Sonst würde das ganze Studio nicht funktionieren. denn die Ereignisse, welche man in der EV nutzt um eigene Aktionslisten zu triggern, finden ja sowieso statt. Sie sind die Basis für alle Animationen, wie beispielsweise die Fahrt eines Zuges.

Geschrieben
vor 39 Minuten schrieb Hawkeye:

Ist die nicht mehr im Katalog verfügbar?

Leider nicht mehr, die Anlage war damals nur als Proof-of-Concept gedacht, um eine zustandsfreie Alternative zu demonstrieren. Für den praktischen Einsatz wäre die Anlage auch nichts gewesen, das Zweckentfremden von Fahrstraßen sollte man gar nicht erst groß publik machen.

Viele Grüße,

Neo

Geschrieben

Hallo Andy,

Was optisch auffällt, sind Kurvengeschwindigkeiten von 100 km/h, die von Rasern ausgenutzt werden, um Lücken zum Vorausfahrenden zu schließen. Dagegen ist prinzipiell nichts einzuwenden, nur scheint das ein Zugeständnis an die Funktionsabläufe zu sein und eigentlich nur deshalb hinnehmbar. Was spricht eigentlich zur grundsätzlichen Vereinfachung eines Straßenverkehrs mit Abbiegespuren gegen eine Ampellösung ? Man kann sich auch in eine Idee verbeißen nur um des Prinzips wegen: Das muss doch hinzukriegen sein, eher gebe ich nicht auf.

Gruß

streit_ross

Geschrieben
vor 18 Stunden schrieb Goetz:

Auch, wenn zwei Kontakte gleichzeitig ausgelöst werden, geht keins der beiden Ereignisse verloren.

Sonst würde das ganze Studio nicht funktionieren. denn die Ereignisse, welche man in der EV nutzt um eigene Aktionslisten zu triggern, finden ja sowieso statt. Sie sind die Basis für alle Animationen, wie beispielsweise die Fahrt eines Zuges.

Hallo Götz,

Das ist so richtig, es geht kein Ereignis verloren. Die Krux liegt darin, dass zwei Ereignisse fast parallel ausgeführt werden und die selbe Variable verändern.
In einzelne Schritte aufgeteilt passiert beim Ändern eines Zählers folgendes (Hier als Beispiel Zähler erhöhen):

Schritt 1: Hole den Wert der Variablen in ein Arbeitsfeld.
Schritt 2: Addiere den Wert 1 auf das Arbeitsfeld
Schritt 3: Schreibe den Inhalt des Arbeitfeldes wieder in die Variable.

Wenn nun gleichzeitig von einem anderen Ereignis der Zähler vermindert wird und dabei der Schritt 1 während Schritt 1 oder 2 der Erhöhung stattfindet, wird das Ergebnis der Zählererhöhung überschrieben.
Mein Lösungsansatz war daher, Einfahr- und Ausfahrzähler getrennt zu führen. Bei Wertegleichheit ist der Bereich dann frei.

Grüße, Wolfgang

 

Geschrieben (bearbeitet)

Hallo Wolfgang,
ich glaube, das haben wir schon versucht. Das geht aber auch schief. Es scheint wirklich der Kolonneneffekt zu sein (Hawkeye's Thread).
Wenn die Fahrzeuge dann vorne noch getrennt sind, aber innerhalb des Bereichs zusammen finden, hat man den Salat.

Gruß
  Andy

Bearbeitet von Andy
Geschrieben
vor 8 Minuten schrieb prinz:

Wenn nun gleichzeitig von einem anderen Ereignis der Zähler vermindert wird und dabei der Schritt 1 während Schritt 1 oder 2 der Erhöhung stattfindet

Das passiert im Studio aber nicht, Prinz

Die Verarbeitung geschieht seriell und nicht parallel.

Geschrieben
vor 3 Minuten schrieb Goetz:

Die Verarbeitung geschieht seriell und nicht parallel.

Soll das heißen, dass ein Ereignis erst dann ausgeführt wird, wenn alle anderen beendet sind ? Kann nicht sein.

Geschrieben (bearbeitet)

Das soll es heißen.

Ausnahme: Verzögerungen. Denn die bewirken, dass eine Aktionsliste an dieser Stelle abgebrochen und später erneut aufgerufen wird.

In die Änderung eines Variablenwertes kann nichts anderes "reinfunken" bis der Vorgang abgeschlossen ist.

Und die Ereignisse werden nicht ausgeführt. Sondern sie sind Auslöser dafür, dass Aktionslisten ausgeführt werden, welche wir diesen Ereignissen zuweisen. Bitte nicht als Wortklauberei missverstehen. Ich schreibe das, weil falsche Beschreibungen manchmal von falschen Vorstellungen herrühren, die dann zu falschen Interpretationen führen.

Bearbeitet von Goetz
Geschrieben

Hallo Prinz,

es ist wie Götz es geschrieben hat. Wenn im Studio ein Ereignis auftritt, geht die Ereignisverwaltung von oben nach unten durch alle Ereignisdefinitionen, die zu dem Ereignis passen und führt die dort aufgelisteten Aktionen von oben nach unten aus, Ereignis für Ereignis. Es gibt keinerlei parallele Verarbeitung, das würde im Chaos enden.

Natürlich gibt es einige Spezialfälle, wie z.B. die Verzögerungen, die technisch nur ein Trick sind, und das Ereignis später einfach nochmal aufrufen, aber an einer späteren Stelle einsteigen. Und es gibt Rekursionen, also Ereignisse, die direkt durch eine Aktion ausgeführt werden. Bei einfachen Variablenzuweisungen muss man sich aber für gewöhnlich nicht mit solchen Spezialfällen auseinandersetzen.

Viele Grüße,

Neo

Geschrieben

Danke Götz und Neo

Dann muss ich nochmal nachdenken, was sonst die Ursache sein kann.
Mir kam dieses Problem aus meiner alten Softwarefirma bekannt vor. Dann seid ihr da besser gewappnet.

Grüße, Wolfgang

 

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