Jump to content

Zufall Variabel gesteuert


astt

Empfohlene Beiträge

Hallo zusammen,

ich hoffe Ihr habt trotz dem Sch.... Wetter einen schönen Tag.

Nun zu meinem Anliegen. Ich möchte mit einer Zufallssteuerung verschiedene Gleise belegen. Dies soll aus zwei Richtungen geschehen.

Dies habe ich schon halbwegs hinbekommen. Nur, wie sage ich der Zufallsteuerung, ein Gleis ist besetzt, nimm ein anderes. Da komme ich irgendwie nicht weiter.

Habe schon so ca. eine Woche rumprobiert, aber keine Lösung gefunden. Zum besseren Verständniss, hänge ich die Test - Anlage mal unten an.

Hat vielleicht einer von Euch Experten einen Tipp ?

Schönes Wochenende wünscht

Andreas (astt)

 

Test Zufall.mbp

Bearbeitet von astt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andreas,

versuche mal folgendes:

Gleisharfe.jpg

Ich habe in Deinem Anlagenbeispiel Deine "Schalt"-Gleise blau und die "Halt"-Gleise rot eingefärbt. Außerdem habe ich weitere Gleise hinzugefügt und eingefärbt, die Du für die Ereignissteuerung zusätzlich benötigst. Auf diese Gleise komme ich später zu sprechen.

Zunächst betrachten wir die blauen "Schalt"-Gleise. Über diese soll durch einen annähernden Zug veranlasst werden, dass die Einfahrt in ein freies Harfengleis eingestellt wird. Damit diese Veranlassung nur dann erfolgt, wenn der Zug von "außen" in das Schaltgleis einfährt, benötigst Du jeweils ein im Bild violett eingezeichnetes "Nachbargleis", über welches Du bestimmen kannst, aus welcher Richtung der Zug in das Schaltgleis einfährt. Befindet sich der Zug nicht auf dem violetten Gleis, wenn er in das blaue Gleis einfährt, kommt er aus der "richtigen" Richtung und darf das Aussuchen eine freien Gleisharfen-Gleises veranlassen. Die Veranlassung erfolgt durch den Start eines Countdowns mit Ablaufzeit "0" (Countdown-Ereignis wird sofort ausgelöst), über den die Stellung des richtigen Fahrwegs ausgelöst wird.  Zusätzlich soltest Du bei jedem violetten Gleis ein "Einfahrsignal" aufstellen, das nur dann geöffnet werden darf, wenn die EInfahrt vom Streckengleis in die Gleisharfe erfolgreich bereitgestellt werden konnte. Für die EInfahrt des Zuges von links muss die Ereignisdefinition dann wie folgt aussehen:

(1) Ereignisdefinition: Zug nähert sich von Links der Gleisharfe
      Auslöser: Zug betritt linkes blaues Gleis (Schalt-Gleis)
      Bedingung: Zug befindet sich nicht auf violettem linken Gleis
      Aktion1: Signal vor der Einfhrt auf Rot stellen (wenn nicht bereits geschlossen)
      Aktion2: Zug abbremsen und anhalten
      Aktion3: Starte Countdown "Linke Einfahrt festlegen" mit Verzögerungszeit 0 Sekunden

Für die Einfahrt eines Zuges von rechts erstellst Du eine analoge Ereignisdefinition mit dem blauen und violetten Gleis und dem zugehörigen Signal auf der rechten Seite sowie dem Countdown "Rechte Einfahrt festlegen".

Für jedes Harfengleis und für jede Einfahrt (links und rechts) erstellst Du eine eigene Ereignisdefinition, die durch den Countdown des sich von links oder rechts annähernden Zuges ausgelöst wird, und dann die Fahrstraße von der Strecke zum "eigenen" Harfengleis schaltet. Am Ende dieser Ereignisdefinition wird dann noch das Signal der zugehörigen Einfahrt geöffnet. Im Detail sieht die Ereignisdefinition beispielsweise für Harfengleis 1 und die Einfahrt von links wir folgt aus:

(2) Ereignisdefinition: Fahrweg-Erstellung von links in Harfengleis 1
      Auslöser: Countdown "Linke Einfahrt festlegen" läuft ab
      Aktion1: Alle Weichen vom linken Streckengleis für Fahrweg in das Harfengleis 1 einstellen
      Aktion2: Linkes Einfahrsignal öffnen

Analoge Ereignisdefinitionen erstellst Du nun auch für die Zufahrten zu den Harfengleisen 2-4 aus der linken Strecke und die Zufahrten zu den Harfengleisen 1-4 von der rechten Strecke aus. Bei den 4 zuletzt genannten wird als Auslöser der Countdown "Rechte Einfahrt festlegen" herangezogen.

Da die Fahrweg-Einstellungen von der linken Strecke in die Gleisharfe denselben Auslöser "Linke Einfahrt festlegen" besitzen, laufen sie theoretisch auch alle gleichzeitig los. Tatsächlich werden die Ereignisdefinitionen in jener Reihenfolge sequenziell abgearbeitet, in der sie in der Ereignisverwaltung angeordnet sind. Damit wird letztendlich nur jene Fahrwegschaltung wirksam, die zeitlich zuletzt abgearbeitet wurde. Ohne zusätzliche Vorkehrungen, die im nächsten Abschnitt beschrieben werden, würde der Zug immer in das zuletzt eingestellte Gleis einfahren, unabhängig davon, ob dieses frei oder belegt ist. Damit genau das nicht passiert, benötigt man für jedes Harfengleis zwei zusätzliche Ereignisdefinitionen, mit denen man den Aufbau des Fahrwegs von beiden Seiten aus in das betrachtete Harfengleis unterbinden kann, solange sich ein Zug in diesem Harfengleis befindet. Hierzu werden die im obigen Bild grün und gelb eingezeichneten Gleise benötigt.

Für die Einfahrt des Zuges in das Harfengleis 1 von links wird beispielsweise folgende Ereignisdefinition benötigt:

(3) Ereignisdefinition: Blockierung Harfenbgleis 1 durch einfahrenden Zug von links
      Auslöser: Zug betritt linkes grünes Gleis in Harfengleis 1
      Bedingung: Zug befindet sich nicht auf gelbem Nachbargleis (Zug fährt einwärts)
      Aktion1: Ereignisdefinition "Fahwegeinstellung von links in Harfengleis 1" deaktivieren
      Aktion2: Ereignisdefinition "Fahrwegeinstellung von rechts in Harfengleis 1" deaktivieren

Für die Ausfahrt des Zuges aus dem Harfengleis nach rechts wird beispielsweise folgende Ereignisdefinition benötigt:

(4) Ereignisdefinition: Blockierung Harfengleis 1 durch ausfahrenden Zug nach rechts aufheben
      Auslöser: Zug verlässt rechtes grünes Gleis in Harfengleis 1
      Bedingung: Zug befindet sich nicht auf gelbem Nachbargleis (Zug fährt auswärts)
      Aktion1: Ereignisdefinition "Fahrwegeinstellung von links in Harfengleis 1" aktivieren
      Aktion2: Ereignisdefinition "Fahrwegeinstellung von rechts in Harfengleis 1" aktivieren

Durch die beiden zuletzt dargestellten Ereignisdefinitionen, die für jedes Harfengleis und für jede Richtung der Einfahrt und Ausfahrt bereitgestellt werden müssen, wird sichergestellt, dass durch die Countdown-Ereignisse "Linke Einfahrt festlegen" und "Rechte Einfahrt festlegen" jeweils nur jene Eregnisdefintionen des Typs (2) zur Ausführung gelangen, deren Harfengleis tatsächlich frei ist. Sind alle Harfengleise belegt, kommt überhaupt keine Ereignisdefinition vom Typ (2) zur Ausführung, und das Einfahrsignal des Zuges, der die Einfarrt angefordert hat, bleibt geschlossen. Es ist dann eine weitere Aufgabe der Ereignissteuerung, nach Frei-Werden eines Harfengleises die Fahrweg-Anforderung des wartenden Zuges zu wiederholen, damit der Fahrweg in das nun freie Gleis eingestellt und das Einfahrsignal geöffnet wird.

Mit den obigen Schaltugen wird also sichergestellt, dass immer nur der Fahrweg zu einem freien Harfengleis für einen einfahr-willigen Zug bereitgestellt wird. Die Reihefolge der Harfengleis-Bestimmung ist jedoch immer dieselbe. Um hier noch eine Zufalls-Auswahl mit hinein zu bringen, kann man die Ereignisdefinition (2) wie folgt auftrennen:

(2a) Ereignisdefinition: Zufallsverzögerung für Fahrwegeinstellung von links in Harfengleis 1
        Auslöser: Countdown "Linke Einfahrt festlegen" läuft ab
        Aktion1: Countdown "Fahrweg-Einstellung von links in Harfengleis 1 verzögert starten" mit zufälliger Verzögerungszeit

(2b) Ereignisdefinition: Fahrweg-Erstellung von links in Harfengleis 1
        Auslöser: Countdown "Fahrweg-Einstellung von links in Harfengleis 1 verzögert starten" läuft ab
        Aktion1: Alle Weichen vom linken Streckengleis für Fahrweg in das Harfengleos 1 einstellen
        Aktion2: Linkes Einfahrsignal öffnen

Die zufällige Verzögerungszeit sollte hierbei unterhalb von einer Sekunde liegen. Da nun alle "aktivierten" Fahrweg-Ereignisse mit zufällig unterschiedlicher Verzögerungszeit ablaufen, kann die zeitlich letzte Fahrweg-Einstellung immer zufällig eine andere sein, wobei aber auch hier die "belegten" Harfengleise weiterhin ausgeschlossen bleiben. Da jede "aktive" Ereignisdefinition vom Typ (2b) aber auch das Einfahrsignal öffnet, muss der Start des Zuges um das mögliche Maximuum der Random-Zahl verzögert werden, damit der Zug nicht bereits losfährt, solange die Weichen noch gestellt werden.

Ich wollte Dir bewusst nicht schon die eincodierte Lösung anbieten, da Du mehr davon hast, wenn Du die hier bereitgestellte Beschreibung selbst umsetzst.

Viel Erfolg dabei wünscht Dir
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand, (wer sonst schon ;))

vielen Dank für Deine, wie immer Grossartige, Hilfe und Beschreibung.

Nur noch mal "blöd" zurück gefragt. Die Ganzen Sachen, die Du beschreibst brauche ich zusätzlich zu meinen Einträgen in der EV ?

Schönen Sonntag wünscht

Andreas(astt)

 

Bearbeitet von astt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andreas,

nein.
Wirf bitte Deine alte Eerignisverwaltung komplett weg. Denn diese kann so nicht funktionieren: Du wählst über die Zufallszahl irgend eines der 4 Gleise aus, um die Fahrstraße dorthin einzustellen, wenn mindestens eines der 4 Harfengleise nicht belegt ist. Damit kannst Du dann aber auch ein belegtes Gleis "treffen".

Die Auswahl eines "freien" Harfengleises wird durch meine Beschreibung vollständig abgedeckt.

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Brk,

möchte man die Gleichzeitigkeit einer Harfengleis-Reservierung von zwei von beiden Seiten her einfahrenden Zügen berücksichtigen, muss man einen Lock (Serialisierungs-Mechanismus) verwenden. Hierzu kreiert man eine "Lock-Variable", die zu einem Zeitpunkt nur von einem der konkurrierenden Züge gehalten werden kann. Der Zug, der den Lock besitzt, darf sich ein Harfengleis reservieren und damit für sich blockieren. Der andere Zug muss solange warten, bis der Lok vom ersten Zug wieder freigegeben wurde, und muss ihn dann selbst nehmen, um sich ebenfalls ein freies Harfengleis zu reservieren.

Der Lock-Mechanismus funktioniert folgendermaßen:

  1. Zug nähert sich von einer beliebigen Seite der Gleisharfe
  2. Falls Lock-Variable "frei": Weiter mit Punkt 4
  3. Warten bis Lock-Variable als "frei" erkannt wird.
    Dann zurück zu Punkt 2.
  4. Eigenen Wert in Lock-Variable setzen und damit Lock nehmen
  5. 1/2 Sekunde warten, um ein mögliches Überschreiben der Lock-Variable durch einen Konkurrenten zu erkennen.
  6. Falls Lock-Variable noch den "eigenen "Wert enthält, weiter mit Punkt 8.
  7. Konkurrent hat Lock-Variable überschrieben.
    Warten bie Lock-Variable erneut als "frei" erkannt wird.
    Dann zurück zu Punkt 2.
  8. Falls freies Harfengleis vorhanden: Weiter mit Punkt 10.
  9. Alle Harfengleise belegt.
    Gehaltene Lock-Variable freigeben.
    Warten, bis ein Harfengleis frei wird.
    Dann zurück zu Punkt 2.
  10. Harfengleis als belegt kennzeichen. Anzahl der "freien" Harfengleise um 1 reduzieren.
    Lock-Variable freigeben, da nicht mehr benötigt.

Durch den Lock wird sichergestellt, dass zu einem Zeitpunkt auch immer nur ein Zug ein freies Harfengleis belegt. Da rein theoretisch zwei Züge gleichzeitig den Lock als "frei" erkennen und mit dem jeweils "eigenen" Wert überschreiben können, muss nach dem Schreiben der Lock-Variable kurz auf möglicherweise konkurrierende Überschreiber gewartet werden. Da diese denselben Lock-Zyklus durchlaufen, ist diese Zeitspanne sehr kurz (1/2 Sekunde sollte genügen). Danach wurde die Lock-Variable entweder überschrieben oder sie wird "sicher" von dem anfordernden Zug gehalten. Nur im letzten Fall ist das weitere Vorgehen durch den Lock geschützt (kein anderer funkt dazwischen), sodass die Gleis-Prüfung und -Reservierung ohne die Befürchtung einer weiteren (gleichzeitigen) Konkurrenz durchgeführt werden kann.

Die Freigabe des Harfengleises, nachdem es vom Zug verlassen wurde, kann dann ohne Lock erfolgen.

Ich habe übrigens vor längerer Zeit das Prinzip eines Lock-Mechanismus im Wiki beschrieben (siehe hier). Die Beschreibung einer dynamischen konkurrierenden Gleisauswahl findest Du im selben Hauptkapitel hier. Die dort beschriebene Anlage mit der zugehörigen Ereignisverwaltung ist im Verzeichnis "Experimentelle Anlagen" des Online-Katalogs unter der Bezeichnung "Automatik-Steuerung 07b - Dynamische Gleisauswahl (bestückt)" abgelegt.

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