Jump to content

Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung


CC.SDL

Empfohlene Beiträge

Hallo Andy,

ja, das "Schlagwort" ist eine starkes Hilfsmittel.
Ich habe es verwendet, um die komplette Gleisbelegung im Gleisbildstellpult  über die aktuelle Zugbewegung auf der Anlage zu steuern - und das gerade mal mit 4 Eeignisdefinitionen (2 für's Einschalten und 2 für's Ausschalten). Damit verbunden ist allerdings ein exzessiver Gebrauch von Objektvariablen (jedes "schaltende" Gleis muss "seinen" GBS-Baustein kennen).

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und um wieder Platz für Claudia zu schaffen abschließend:
So, und nun lege eine Tabelle an mit den Blöcken, die die 'Stammdaten' der Objekte beinhaltet und die Status-OV der zugehörigen Objekte per Lua automatisch füttert.
Dann bleibt neben der zu ladenden Bibliothek nur das Ausfüllen der Tabelle für den Anwender übrig und alles schnackelt. Da genau ist das Ziel!

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Stunden schrieb streit_ross:

mögest Du all denjenigen nicht's nachtragen, die Deinen Thread so in die gutgemeinte Diskussionsbreite ziehen. Herr vergib ihnen nicht, denn sie wissen was sie tun

erst muss ich mich von meinen Lachanfall erholen. @streit_ross das ist göttlich...

Guten morgen euch, denen die den Thread korrekter Weise auseinander ziehen. Also von der Unterstützung hätte ich nicht zu träumen gewagt. Das ist nicht nur für mich als Einsteiger eine perfekte "Ich-baue-eine-Anlage" Hilfe. Also, weiter mit  "denn sie wissen was sie tun" außerdem ist eine Auffrischung eures Wissens bestimmt gut für die EV in V5:

Eure Anlagenbeispiele werde ich mir genau vornehmen. Was ich ebenfalls versuche mir vorzustellen ist, wenn der Pz. nicht den einfachen kleinen Streckenblock befährt sondern die Weiche auf 0 steht, und der Abschnitt frei, oder nicht frei ist,(Gegenverkehr) wie bekomme ich das mit der EV geregelt.

Nebenbei, wie gefallen euch das Gleisbett und meine bis dato auch meine Entwicklung. Meine damit, könnt ihr meine Ernsthaftigkeit für dieses Projekt erkennen und verstehen? Es stimmt, @Andy,@streit_ross, ihr habt meine Ungeduld schon erkannt. Auch da ist es hilfreich, wenn ihr mich bremst und Hausaufgaben machen lasst.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Minuten schrieb CC.SDL:

wie gefallen euch das Gleisbett

wenn's der pfjoh abnickt, hast Du schon was geschafft, was nicht jeder hinkriegt :) Da haben die mich auch gefoltert, denn ich hatte da gar keine Ansprüche. Aber die!

p.s.: zwischendurch gab's dann mal eine tröstende Stimme, die gemeint hat: Es ist Deine Anlage und Du machst sie so, wie Du sie willst. Basta!
Aber wenn man um Rat fragt, dann wollen 'die' auch, dass der umgesetzt wird!! Böse, böse Buben! ;)

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin Andy,

aber...auch die Ansprüche...es macht Spaß. Der Umgang ist toll, auch irgendwie ein Gemeinschaftsgefühl, geben und nehmen. Was mich noch interessiert, entwickelt Neo das alleine oder sind hier auch welche der MBS-Entwicklung angeschlossen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Claudia,

@Neo macht das MBS ganz alleine. Von den Modellbauern kommen "nur" die den Grundausbau ergänzenden Modelle. "Nur" in Anführungszeichen deshalb, weil diese Modelle inzwischen - glaube ich jedenfalls - die Mehrzahl ausmachen. :D

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand,

wenn ich den MBS sehe ist das schon "Wahnsinn" für eine Person. (y) und Respekt @Neo. Allerdings, wenn ich deinen Beiträgen und Anlagen anschaue, steckt da auch viel Wissen drinnen. Darum hatte ich den Gedanken das du als Entwickler bei bist, auch wenn es nicht im Profil vermerkt ist. Mir gefällt die Gotthard Rampe im Winter. (y)

Also (m)einen Beitrag für den Katalog soll nicht nur bei Texturen bleiben. Ich habe schon mal in den Thread für Wünsche geschaut. Jetzt bin ich aber erst dabei die EV zu bearbeiten. Genauer gesagt rechts den Gegenverkehr einzubinden. Also "Halt" für Zug 1 weil Zug 2 die Weiche noch nicht frei gegeben hat. Oder so ähnlich, ich hänge mal etwas an zum nachvollziehen. Denn vielleicht kannst du mir etwas sagen über die Freigabe von Weichen o.ä. wenn mit Gegenverkehr zu rechnen ist.

 

 

Zwischenablage02.gif

Bearbeitet von CC.SDL
Schreibfehler
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Claudia,

zuerst einmal vielen Dank für das große Lob. :)
Bezüglich des MBS bin ich tatsächlich genauso wie Du ein "ganz gewöhnlicher" Anwender. Denn die Möglichkeit, Modelle zu bauen, hat hier jeder, sofern er sich traut, mit einem entsprechenden 3D-Modellierungsprogramm (z.B. Blender oder Sketchup) umzugehen. Und dass es da schon einige gibt, siehst Du an dem vorhandenen Angebot an Modellen im Online-Katalog.

Die Gotthard Nordrampe ist übrigens eine Anlage, die sich aufgrund ihrer Größe bereit sehr "am Rande des Möglichen" bewegt. So bleibe ich beispielsweise bei vielen Kamera-Einstellungen weit unter den 25 FPS (Frames per second), die man benötigt, damit das Auge die Bildfolge als fließende Bewegung interpretiert. Und wenn ich dann noch die neue Eigenschaft "Schatten" dazu schalte, wird die Verarbeitungsgeschwindiglkeit gleich noch einmal auf die Hälfte gedrückt.

Nun zu Deiner angesprochenen Gegenverkehr-Problematik:
Leider ist die Ausrichtung der Richtungspfeile auf dem Übersichtsbild aus diesem Beitrag von Dir so gut wie nicht zu erkennen, und der Ausschnitt in dem Bild Deines letzten Beitrags ist zu klein, um sich über die vorgesehenen Fahrtrichtungen auf allen sichtbaren Gleisen klar zu werden.

Ich habe Deinen Gleisplan deshalb "nachgezeichnet" und die Gleise entsprechend der (auch anhand von Deinen Zugstellungen) von mir interpretierten Fahrtrichtungen eingefärbt:

55534206_Beispiel1c.thumb.JPG.1235aad3145af832437872c0fc31a8f8.JPG

Meine Vermutung ist, dass die blau und violett eingefärbten Gleise normalerweise im Uhrzeigersinn und die grün und rot eingefärbten Gleise entgegen dem Uhrzeigersinn befahren werden. Nun kann man hier sehr gut erkennen, dass die beiden im Großen und Ganzen parallel verlaufenden blauen Gleisabschnitte im violetten Bereich zu einem gemeinsamen Gleis zusammengefasst sind. Damit müssen sich die hier in dieselbe Richtung fahrenden Züge synchronisieren, da immer nur von einem blauen Gleisabschnitt ein Zug in den violetten Abschitt einfahren kann.

Um diesen Engpass zu umgehen, kann der Zug auf den inneren roten Gleisabschnitt über das hellblaue Verbindungsgleis ausweichen und von dort auf das unter die Brücke fürhrende blaue Gleis zurückkehren, ohne dem vom violetten Gleis auf die Brücke weiterfahrenden Zug in die Quere zu kommen. Dafür begibt er sch aber auf den "Kreisverkehr" des inneren Zuges auf dem grünen Gleisabschnitt, der den roten Gleisabschnitt zwingend benötigt, umd die "Umrundung" komplett durchführen zu können. Im roten Glesabschnitt müssen sich also zwei in entgegengesetzter Richtung fahrende Züge synchronisieren.

Das Prinzip der Zugsynchronisation ist in beiden Fallbeispielen dasselbe:
Fährt ein Zug in einen der beiden "neuralgischen" Gelsiabschnitte (violett oder rot) ein, muss er diesen Abschnitt für andere Züge so lange sperren, bis er selbst ihn wieder verlassen hat. Die Abschnitte sind jeweils an den Einfahrgleisen durch entsprechende Signale geschützt. An den Ausfahrgleisen brauchen für diesen Zweck dagegen keine Signale zu stehen. Deshalb habe ich beim violetten Abschnitt die Einfahrsignale nur rechts an beiden blauen einmündenden Gleisen und beim roten Abschnitt rechts nur am hellblauen Verbindungsgleis und links nur am grünen Einfahrgleis postiert.

Diese Signale sind in der Regel alle geschlossen. Nähert sich nun ein Zug einem solchen Signal, muss er zunächst die Berechtigung beantragen, in den violetten oder roten Gleisabschnitt einfahren zu dürfen. Dies regelt man in der Datenverarbeitung normalerweise durch einen "Lock" (eine Variable, in welcher der Beantragende seine Identität hinterlegt). Dies kann immer nur einer machen. Denn ist die Lock-Variable bereits durch einen Zug "belegt", darf ein anderer Zug diese nicht überschreiben. Nur wenn also die Identität des beantragenden Zuges in der Lock-Variable erfolgreich abgelegt werden konnte, ist der Gleisabschnitt für ihn reserviert, und er kann, nachdem sein Signal geöffnet wurde, einfahren. 

Wenn der Zug den besagten Engpass-Abschnitt wieder verlässt, also die Weiche hinter dem reservierten Gleisabschnitt passiert hat, kann er die Lock-Variable wiede auf "Frei" setzen, sodass nun ein anderer Zug den Gleisabschnitt für sich reservieren kann.

Auf diese Weise ist immer gewährleistet, dass nur ein Zug einen solchen neuralgischen Abschnitt befährt, und es daher zu keinen Unfällen kommt.

In der Ereignisverwaltung wird eine solche Steuerung beispielsweise wie folgt realisiert.

  1. Zug nähert sich dem EInfahrsignal (z.B. Ereignis "Zug betritt Gleis") oder
           vor dem geschlossenen Signal wartender Zug erhält die Aufforderung zur erneuten Prüfung:
    Prüfen, ob Lock-Variable frei ist (z.B. ob sie den Wert "frei" enthält).
    Wenn nein: Warten, bis die von einem anderem Zug belegte Lock-Variable wieder freigegeben worden ist.
    Wenn ja: Lock-Variable mit eigener Identität beschreiben,
                   0,2 Sekunden warten,
                   Prüfen, ob Lock-Variable immer noch die eigene Identität enthält
                   Wenn nein: Ein anderer Zug hat die Lock-Variable überschrieben --> Warten, bis Lock-Variable wieder frei ist
                   Wenn ja: Gliesabschnitt ist nun für den eigenen Zug reserviert,
                                  Einfahrsignal öffnen und losfahren
     
  2. Zug hat Einfahrsignal passiert: 
    Einfahrsignal schließen
     
  3. Zug hat neuralgischen Gleisabschnitt verlassen (z.B. Eregnis "Zug verlässt Gleis" bei der Ausfahrweiche)
    Lock-Variable freigeben (eigene Identität aus der Lockvariable löschen (und möglicherweise "frei" hinein schreiben))
     
  4. Lock-Variable wird freigegeben (Ereignis "Variable wird gesetzt"):
    Alle vor den Einfahrsignalen zu diesem Gleisabschnitt wartenden Züge auffordern, den Lock erneut zu beantragen (weiter mit Schritt 1)

Warum muss die Lockvariable bei der Reservierung zweimal geprüft werden?
Wenn man geprüft und festgestellt hat, dass die Lock-Variable frei ist, vergeht eine kleine Zeitspanne, bis man selbst die Lock-Variable mit der eigenen Identität überschrieben hat. In dieser Zeit kann auch ein anderer (konkurrierender) Zug die Lock-Variable als frei erkannt haben und sie deshalb ebenfalls überschreiben. Durch die Wartezeit von 0,2 Sekunden wartet man solche möglichen Überschreiber ab und hat deshalb die Gewähr, dass es nach dieser Wartezeit zu keinen (weiteren) Überschreibern mehr kommt, da dann die Lock-Variable mit Sicherhet nicht mehr als "frei" vorgefunden wird (man hat sie ja zumindest selbst vor 0,2 Sekunden überschrieben). Wenn man nun nach den 0,2 Sekunden feststellt, dass die eigene ID immer noch enthalten ist, kann man sicher sein, dass sie von keinem weiteren Konkurrenten mehr überschrieben wird. Wenn dagegen eine andere ID enthalten ist, hat ein Konkurrent innerhalb der 0,2 Sekunden die bereits belegte Lockvariable mit seiner ID überschrieben, sodass man selbst die Berechtigung  nicht bekommen hat, und daher auch nicht einfahren darf.

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb BahnLand:

Dies regelt man in der Datenverarbeitung normalerweise durch einen "Lock"

Ist das wirklich ein Schloss? (engl. lock)
Oder ein Eintrag in einer Liste? (engl. log)
Oder ist die Lokomotive gemeint? (deutsche Kurzform: Lok)

Ich tippe auf log, denn das passt am besten zu einem Eintrag, der z.B. den Zugnamen enthalten kann. (siehe Logbuch)

Sorry - Zwischenfrage hat sich erledigt.

Der erste, der sich einträgt, belegt die Variable und verriegelt dadurch etwas. Deshalb "lock".

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand,

vor einer Stunde schrieb BahnLand:

Wenn man geprüft und festgestellt hat, dass die Lock-Variable frei ist, vergeht eine kleine Zeitspanne, bis man selbst die Lock-Variable mit der eigenen Identität überschrieben hat. In dieser Zeit kann auch ein anderer (konkurrierender) Zug die Lock-Variable als frei erkannt haben und sie deshalb ebenfalls überschreiben.

ist das eine theoretische Überlegung? Die EV im Studio ist single-threaded, d.h. es ist garantiert, dass zwischen zwei Aktionen/Bedingungen keine anderen Aktionen ausgeführt werden. In dieser Zeit wird auch kein anderer Zug bewegt.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

ich bin tatsächlich davon ausgegangen, dass die Lese-Schreib-Operation (Lesen der Lock-Variable - Bedingung prüfen - bei erfüllter Bedingung überschreiben) kein "atomarer" Prozess ist und damit durch andere Prozesse unterbrochen/gestört werden kann. Mit der von Dir ausgesprochenen Garantie kann die von mir hier beschriebene Aktionsfolge tatsächlich als "atomar" betrachtet werden. Damit reduziert sich Punkt 1 aus dem zitierten Beitrag wie folgt:

  1. Zug nähert sich dem EInfahrsignal (z.B. Ereignis "Zug betritt Gleis") oder
           vor dem geschlossenen Signal wartender Zug erhält die Aufforderung zur erneuten Prüfung:
    Prüfen, ob Lock-Variable frei ist (z.B. ob sie den Wert "frei" enthält).
    Wenn nein: Warten, bis die von einem anderem Zug belegte Lock-Variable wieder freigegeben worden ist.
    Wenn ja: Lock-Variable mit eigener Identität beschreiben,
                   Gleisabschnitt ist nun für den eigenen Zug reserviert,
                   Einfahrsignal öffnen und losfahren

Sollte aber irgendwann die EV dahin optimiert werden, dass ihre Verarbeitung auf mehrere parallel ablaufende Prozesse verteilt werden kann, ist es mit der "Atomizität" der Lese-Schreib-Operation geschehen. Dann müsste man auf das ursprünglich beschriebene Verfahren zurückgreifen.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

vor 8 Minuten schrieb BahnLand:

Sollte aber irgendwann die EV dahin optimiert werden, dass ihre Verarbeitung auf mehrere parallel ablaufende Prozesse verteilt werden kann, ist es mit der "Atomizität" der Lese-Schreib-Operation geschehen.

das wird nicht passen, weil dann jede EV zerstört wird. Auch wäre dein erster Vorschlag keine Lösung, weil eine weitere Prüfung ebenfalls nicht atomar ausgeführt werden würde. Solche Konflikte lassen sich nur mit expliziten Synchronisationsmechanismen lösen (z.B. Critical Sections), die mehrere Aktionen/Bedingungen absichern. Aber wie gesagt, dass ist nichts, worüber man sich Gedanken machen muss.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

vor einer Stunde schrieb Neo:

Auch wäre dein erster Vorschlag keine Lösung, weil eine weitere Prüfung ebenfalls nicht atomar ausgeführt werden würde.

stimmt, es ist nur eine "Risiko-Minimierung". Wir hatten in der System-Programmierung auf IBM-390-Assembler-Ebene einen Maschinenbefehl "Compare-and-swap", mit dem man einen Speicherinhalt prüfen und bei erfüllter Bedingung gleich überschreiben konnte, während alle anderen Prozessoren eines Multiprozessor-Systems angehalten wurden. Der war wirklich sicher. Aber nach Deiner obigen AUssage halte ich das Problem für "erledigt" und werde auch meine "Demo"-Anlage entsprechend umstellen (vereinfachen).

Auf jeden Fall Danke für diese Information!

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 7.8.2019 um 07:11 schrieb streit_ross:

 

i....... weil ich mit der Testverion von V5 nur maximal 150 Objekte speichern kann.

 

Hi Streitross u alle anderen die gerne die komplette anlage zum ueben benutzen wollen und nicht die profi version V5 besitzen. Die anlage hat stark abgenommen, 67 teile nur noch, dafuer abba 2 zuege vollautomatisch.

Viel spass

Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten morgen,

Ich habe mir die Antworten ganz intensiv durchgelesen und werde das ausprobieren. @BahnLand, das ich das so ausführlich geschildert bekomme ist sehr gut. Mein spartanisch angehangenes Bild sollte meine bevorstehende Entwicklung in der EV zeigen ohne konkrete Lösung. Mit 2-3 kleinen Hinweisen wäre ich schon zufrieden gewesen. Mit deiner ausführlichen Anleitung bin ich aber happy. Danke dafür.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten morgen,

Ich bin dabei mich mit der EV in Version 5 zu beschäftigen. Dazu lade ich mir die Tutorialanlagen die mit einer älteren Version modelliert wurden. Somit ist die EV etwas anderes als in V5.

Was mir in der älteren Version auffällt ist, das oft die Aktion z.B. "Ereignis/Modul wird aktiviert/deaktiviert" oder "Fahrspur aktivieren/deaktivieren" gesetzt werden. Ganz schlau werde ich beim lesen im Wiki aber nicht. Wann, weshalb und warum und wie sind diese Art von Aktionen zu setzen. Ein Beispiel oder eine Erläuterung würden hilfreich sein. Wenn ich bei mir in die EV meiner Anlage schaue wüßte ich nicht wieso oder wieso nicht diese Aktionen zum Einsatz kommen könnten. Anbei ein Auszug aus V4

Viele Grüße

 

 

ev.gif

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Claudia

Mach das besser nicht, das du als vollkommen unbeschriebenes blatt V4 lernen willst um mit V5 umgehen zu koennen. Das ganze aktivier und deaktiviergedoens ist in V5 fast ueberfluessig geworden. Wenn du EV lernen moechtest schnapp dir ein oder mehrere einfache demo anlagen (ich hatte deine hier auch mal als  uebungsstueck fuer non pro user eingestellt, da laufen zwei zuege mit einer einfachen steuerung) und schau dir die EV an, probier dinge aus, schreib ruhig auch um (halt dir eine originale copy von den files die du veraendern moechtest) und  sammle  so erfahrungen..... und dann gibts da  ja glaube ich auch irgendwo noch ein forum.....:)

Cheers

Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen, Claudia

hier mal eine ganz einfache Situation, wo man etwas deaktivieren kann/muss. Stell Dir vor, ein Zug fährt von rechtskommend in einen Bhf ein. Bevor er endgültig zum Stillstand kommt, wird er vor dem Haltegleis durch Betreten eines Bremsgleises abgebremst. Beim zweiten mal kommt der Zug von links in den Bhf und hält. Er fährt wieder an und soll beschleunigen. Aber da ist ja noch dieses Bremsgleis, das er diesmal von links betritt und langsamer wird -das passt nicht in die Beschleunigung. Also wird das Ereignis des Bremsens deaktiviert. Kommt der Zug erneut von rechts, wird das Bremsen wieder aktiviert. Eigentlich ganz einfach oder ?

Gruß

streit_ross

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Minute schrieb streit_ross:

 Eigentlich ganz einfach oder ?

Gruß

streit_ross

 

Sicher......abba jetzt mit richtungsorientierbaren gleiskontakten die frei plaziert werden koennen......ueberfluessig

Deshalb ja mein rat an Claudia  sich da gar nicht erst zu verirren.

Cheers

Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten morgen,

also, nein, die V4 studiere ich erst gar nicht, ergibt auch keinen Sinn. Die Frage stellte sich, weil in der V5 auch diese Aktionen gelistet sind und ich wissen will wie man sie anwendet.

vor 12 Minuten schrieb streit_ross:

Eigentlich ganz einfach oder ?

ja, damit bin ich wieder im Bilde :).

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Minuten schrieb metallix:

(ich hatte deine hier auch mal als  uebungsstueck fuer non pro user eingestellt, da laufen zwei zuege mit einer einfachen steuerung)

:o;):D(y) Das werde bzw. mache ich. Die Arbeit mit der EV in V5 ist, meiner Meinung nach dem letzten Update "einfacher" geworden, besser anzuwenden. Ja, das Da-Sein meiner Jungs 9_9, wie kann ich das nicht wissen.

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