-
Gesamte Inhalte
7820 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von BahnLand
-
Hallo Aloys, das ist doch schon mal ein Erfolgserlebnis! BRAVO !!! Viele Grüße BahnLand
-
Hallo Schlagerfuzzi, auch von mir Gute Besserung! Viele Grüße BahnLand
-
Hallo Aloys, ich habe Dir einmal die Ereignisvewaltung aus Deiner Anlage "Sortiren.mbp" aufbereitet: Ereignis: Neues Ereignis Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='Megan' Aktion: Variable setzen Name='ID' Wert='$_Trigger1._Name' Aktion: Beschriftung setzen Beschriftung='Beschriftung' Text='$ID' Ereignis: Neues Ereignis Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='6101Test' Bedingung: Lok/Wagen steht auf einem Gleis Lok/Wagen='$ID' Gleis='6101Test' Negieren='1' und: Variable besitzt den Wert Name='$_Trigger1._Name' Wert='$ID' Negieren='0' Aktion: Countdown starten Name='Alfa' Dauer='0,01' Automatischer Neustart='1' Ereignis: Runde Auslöser: Countdown läuft ab Name='Alfa' Bedingung: Variable besitzt den Wert Name='Laufzahl' Wert='0' Negieren='0' Aktion: Variable setzen Name='Laufzahl' Wert='100' Sonst: (Bedingung nicht erfüllt) Aktion: Beschriftung setzen Beschriftung='Beschriftung Zahlen' Text='$Laufzahl' Aktion: Variable setzen Name='Laufzahl' Wert='+1' Variable: ID 'BR 218 105-8 rot' Variable: Laufzahl '6213' Ich weiß, weshalb Dein Zähler, realisiert im Countdown-Ereignis "Runde" nach oben "wegrennt", anstatt als "Rundum-Zähler die Werte 1-100 anzunehmen. Du sollst aber selbst darauf kommen, damit ich Dir das AHA-Erlebnis nicht wegnehme: Schaue Dir die Ereignisdefinition nochmals Zeile für Zeile genau an. Wenn Du den Fehler nicht findest: Vergleiche die Ereignisdefinition Zeile für Zeile mit der originalen Ereignisdefinition "Rundumzähler" aus meinen Ablaufberg-Demo-Anlagen, um festzustellen, was bei Deiner Definition anders ist. Es gibt einen gravierenden Unterschied! Den musst Du finden! Wenn Du den Fehler gefunden hast: Korrigiere ihn und teste dieses Ereignis noch einmal aus. Das Erfolgserlebnis wird sich unmittelbar einstellen. Noch ein Hinweis zu den ersten beiden Ereignis-Definitionen: Gib Deinen Ereignissen immer sofort "sprechende Namen". Wenn Du später einmal ein ganze Liste von Ereignissen hast, die alle "Neues Ereignis" heißen, wirst Du Dich in Deiner Gesamtdefinition nicht mehr zurecht finden. Jetzt noch einmal zu den Ereignisdefinitionen im Zusammenhang in der hier angegebenen Reihenfolge: Ereignisdefinition 1: Ist Dir klar? Was sich hinter der Variable "ID" verbirgt? Ereignisdefinition 2: Kannst Du in Worten ausdrücken, was die kombinierte Bedingung aussagt, die erfüllt sein muss, damit die Countdown-Schleife gestartet werden darf? Das "Warum" für diese Bedingung kann sich hieraus allerdings noch nicht erschließen. Hierzu wird ein größerer Kontext benötigt, der in Deiner Ereignis-Konfiguration noch nicht vorhanden ist. Ereignisdefinition 3: Kannst Du Dir selbst erklären, warum der Zähler, der "nach oben wegrennt", nicht zum Ziel führen kann? Was ist das Ziel? Warum muss der Zähler zwischen 0 und 100 schleifen? Auch hier erschließt sich der tiefere Sinn, der dahinter steckt, erst dann, wenn man den größeren Kontext kennt. Bevor Du weiter liest: Versuche erst einmal. diese 3 Ereignisdefinitionen (nachdem Du die dritte korrigiert hast) zu verstehen und nachzuvollziehen, was mit den Aktionen eigentlich bewirkt wird. Lies erst weiter, wenn Du Dir sicher bist, diese Definitionen verstanden zu haben. Dann werde ich Dir nämlich hier die Fragen von oben beantworten, die Du Dir selbst nur aus dem Kontext dieser 3 Ereignisdefinitionen heraus noch nicht beantworten kannst. Hier nun der größere Kontext: Die ID aus Ereignisdefinition 1, welche die Schublok Deines Zuges identifiziert, wird in Ereignisdefinition 2 benötigt, um in deren Bedingung (bestehend aus der Kombination zweier Einzelbedingungen) einerseits auszuschließen, dass die Schublok selbst auf dem Testgleis (6101Test) steht (Bedingung "Lok/Wagen steht auf einem Gleis"), und aber andererseits sicherzustellen, dass der das Gleis betretende Zug tatsächlich von dieser Schublok angetrieben wird (Bedingung "Variable besitzt den Wert"). Nur wenn diese kombinierte Bedingung erfüllt ist, darf die in Ereignisdefinition 3 spezifizierte Countdown-Schleife gestartet werden. Warum muss diese Bedingung erfüllt sein? Weil es im Gesamtkontext des Ablaufberg-Szenarios noch "einen anderen Zug" gibt, der das Testgleis betritt, und dabei diesen Countdown-Start nicht auslösen darf. Der "andere Zug" ist die Lok selbst, nachdem alle geschobenen Wagen abgekuppelt wurden. Warum muss sich die Laufzahl in der Ereignisdefinition 3 zwischen 1 und 100 bewegen und diese Zahlenmenge in einer Schleife durchlaufen? Die Schleife dient dazu, die über das Testgleis (6101Test) geschobenen Wagen zu identifizieren. Die nächste Ereignisdefinition aus meiner Demo-Anlage wäre nämlich "Wagen erkennen". Das Ereignis wird immer dann ausgelöst, wenn sich der Wert der Laufzahl ändert. Über die Bedingung "Lok/Wagen steht auf einem Gleis" wird dort geprüft, ob sich ein Wagen mit dem Namen, der in der Laufzahl als Wert gespeichert ist, auf dem Testgleis befindet. Wenn ja, hat man einen "Treffer" und kann die Countdown-Schleife beenden. Demit ein Treffer überhaupt möglich ist, muss der Laufzahl-Wert alle Zahlenwerte annehmen können, die als Namen für die Wagen vergeben sind. Und das sind nun mal Zahlenwerte zwischen 1 und 100. Und damit die Zahl des Wagens auch wirklich getroffen wird, muss gewährleistet sein, dass auch wirklich alle Zahlen im Bereich 1-100 abgefragt werden. Deshalb die Schleife. Soviel zum Gesamtkontext. Also nochmal zusammengefasst: Zuerst muss man die einzelnen Ereignisdefinitionen verstehen und interpretieren können, auch wenn sich in bestimmten Situationen der Grund, warum eine Ereignisdefinition nun gerade so aussieht, wie man sie vorfindet, noch nicht erschließt. Erst wenn man die Ereignisdefinitionen im Einzelnen verstanden hat, kann man auch ihren Zusammenhang erkennen und verstehen. Wenn man eine Ereigniskonfiguration selbst erstellen möchte, geht man genau anders herum vor: Man legt zunächst fest, wie der Gesamtkontext aussehen soll (z.B. "Ich möchte einen Ablaufberg realisieren", "Dazu benötige ich einen zu zerlegenden Zug", "Dazu benötige ich eine Stelle, wo entkuppelt werden soll", "Dazu benötige ich einen Mechanismus, der entkuppelt", "Dazu benötige ich einen Mechanismus, der die entkuppelten Wagen weiter schiebt", "Dazu benötige ich einen Mechanismus der die Wagen erkennt", usw. ....). Und erst dann, wenn man den Gesamtkontext bis in das kleinste Detail festgelegt hat, fängt man an, die Ereignisdefinitionen zu spezifizieren. Genau dieses Wissen um das Gesamtkonzept der Ereigniskonfiguration fehlt jemandem, der diese Konfiguration nicht selbst erstellt hat, und muss daher von diesem genau von der anderen Seite her langsam erarbeitet werden, um sie zu verstehen. Dies geht aber nur, wenn man die einzelnen Ereignisdefinitionen zumindest auf Kontext-neutraler Ebene (also ohne den globalen Zusammenhang) verstanden hat. Viele Grüße Bahnland
-
Hallo Quackster und Vermanus, ja, identisches Verhalten mit gleicher https-Adresse: Firefox (Version 44.0.2) bleibt auf Adresse stehen und zeigt nichts an. Auch ich kann andere hier im Forum verlinkte mbp-Dateien problemlos laden - nur diese nicht. Viele Grüße BahnLand
-
OK, brauche doch eine bessere Brille . Gruß BahnLand
-
Hallo Aloys, wenn Du die Anlage wie im nachfolgenden Bild gezeigt auch als mbp-Datei abspeichern kannst, kannst Du diese Datei auch hier in einem Beitrag von Dir als Anhang hinzufügen. Klicke einfach hier auf "Dateien auswählen" und lade die mbp-datei hoch. Dann können sie alle anderen hier herunterladen (so habe ich es auch mit der Ablaufberg-Anlage gemacht). Die Anlage "Ablaufberg" ist übrigens inzwischen zusammen mit der Anlage "Bahnübergangs-Steuerung" und den Dummy-Fahrzeugen im Online-Katalog freigeschaltet (Danke, Neo). Viele Grüße BahnLand
-
Zug beschleunigen über Variable und Countdowns
BahnLand antwortete auf Steffen.L.s Thema in Fragen zur Planung
Hallo Steffen, Brummi hat mich überholt. Ich vermute sogar, das Du auch dieselbe Countdown-Schleife verwendest ("beschleunigen ICE-Lok1 HBF"). Beides darfst Du zumindest dann, wenn die Ereignisse für beide Gleise gleichzeitig auftreten können, nicht machen. Du musst dann für jedes Gleis eine eigene Countdown-Schleife definieren, die auch eine eigene Variable hochzählt. Nur dann kannst Du auf beiden Gleisen Züge unabhängig voneinander beschleunigen oder abbremsen. Viele Grüße BahnLand -
Hallo Dioramag, was ist das eigentlich für ein Tier auf dem Balkon des Leuchtturms in Deinem Profilbild? Ein Wattwurm? Vielleicht brauche ich ja auch nur eine bessere Brille . Viele Grüße BahnLand
-
Hallo Quackster, nicht schlecht, Herr Specht! Die bei Nacht teilbeleuchteten Stadthäuser machen schon was her! Viele Grüße BahnLand
-
Hello kronauerl, there are 2 different _Trigger variables for the events "train enters/leaves a track": 1. _Trigger1: name of the engine which pulls or pushes the train entering or leaving the track 2. _Trigger2: name of the track which is entered or leaved by the train I assume that you mean "_Trigger2" when writing "_Triggerx" within your comment above. So, your definitions, e.g. 1. Event - Train enters to a track - All locomotives - 6110 1. Conditions - Variable has the values - $_Triggerx._Name - 6140 [Triggerx = Trigger2 ???] 1. Actions - ... cannot work, because "$_Trigger2._Name" always represents that track which was entered/leaved by the train (this is track 6110 within the example above, and not 6140). Therefore, the condition you have specified in all cases 1-4 returns always 'false', so that your actions get never performed. You wrote: This is not quite correct. It is true, that you cannot recognize a unique vehicle on the track when more than 1 vehicle is located on the track (but this is the more supposably the longer the track is). But when only checking, whether the neighboring track of the track to be entered or leaved is also occupied, you need not to specify any vehicle name within the condition mentioned above. If you implement the following definition in case 1: 1. Event - Train enters to a track - [All locomotives] - 6110 1. Conditions - Locomotive/Wagon is located on a track - [All] - 6140 1. Actions - ... the 'Actions' part of the definition above will be performed correctly, if the train enters track 6110 from the left, and is ignored, if the train is comming from the right. This is independent from the length of track 6140. You can apply this approach similarly for your cases 2-4. Many greetings BahnLand
-
Hallo Quackster, bezieht sich Dein Kommentar auf meinen Ausgangsbeitrag oder auf den Beitrag von konauerl? Falls er sich auf meinen Beitrag bezieht: warum? Ich erkenne hier kein Problem. Inwiefern soll hier die Einhaltung einer bestimmten Syntax für die Gleisbezeichnung einen Vorteil für die Auswertung durch das Modellbahn-Studio bringen? Viele Grüße BahnLand
-
Hallo Brummi, ich kann mich Quackster nur anschließen! Vor Allem die neuen Container-Tragwagen gefallen mir sehr gut. Viele Grüße BahnLand
-
Hallo Hermann, Du kannst auch mit Sketchup (mit etwas Nacharbeit) animierte Modelle herstellen. Siehe hierzu beispielsweise diesen Tutorial-Artikel. Viele Grüße BahnLand
-
Hallo Vermanus, da gibt's nur eines: Wenn irgend möglich, den Finger vom Mausrad weg lassen, solange Du dieses nicht "bewusst" bedienen möchtest . Ich habe gelegentlich ein ähnlich gelagertes Problem: Mir passiert es manchmal, dass ich im Eigenschaftsfenster einer Lok einen neuen Geschwindigkeitswert eingeben möchte. Wenn ich dabei übersehen habe, dass das hierfür vorgesehene Eingabefeld zwischenzeitlich den Fokus verloren hat, befinde ich mich unversehens auf einer vordefinierten Kamera-Ansicht, die ich in der Buttonleiste hinterlegt habe. Das ist dann aber "meine eigene Schuld", weil ich nicht "aufgepasst" habe. Viele Grüße BahnLand
-
Hallo Vermanus, verstehe ich Dich richtig, dass das Scrollen mit dem Mausrad, wenn Du Dich im Forums-Fenster befindest, sich auf das Programmfenster des Modellbahn-Studios auswirkt? Das ist in meinen Augen ein Fehler! Das Drehen des Mausrads darf sich eigentlich nur auf jenes Programmfenster auswirken, das den Fokus besitzt. Viele Grüße BahnLand
-
Hallo Vermanus, warum???? Ich hatte damals angeregt, dass man den Kamera-Blickwinkel gerade auch im Simulatuionsmodius mit dem Mausrad bedienen kann, damit man nicht immer zuerst die Kamera auswählen und dann den Schieberegler im Eigenschaftsfenster bedienen muss. Denn gerade im Simulationsmodus kommt es darauf an, dass man die Blickwinkel-Änderung der Kamera "zeitnah" auf die aktuelle Situation abgestimmt durchführen kann.
-
Hallo Alois, Zur Ereignisdefinition "Wagen erkennen": Die Zählerschleife wird durch die Ereignisdefinition "Rundumzähler" realisiert. Dort wird die Variable "Laufzahl" laufend verändert. Diese Änderung führt zum Auftreten des Ereignisses "Wagen erkennen", welches vom Typ "Variable wird gesetzt" ist. Wenn die dort zusätzlich spezifizierte Bedingung zutrifft, dass ein Wagen, dessen Namen dem aktuellen Wert der Laufzahl entspricht, sich auf dem zu prüfenden Gleisstück befindet, hat man einen "Treffer" gelandet. D.h. man hat den Namen des auf dem betrachteten Gleis befindlichen Wagens gefunden. Zur Ereignisdefinition "Zug betritt Bremsgleis - Schublok identifizieren": Zunächst hast Du diese Ereignisdefinition nur unvollständig wiedergegeben. Es gibt nämlich auch noch Aktionen für den Fall, dass die spezifizierte Bedingung nicht erfüllt wird. Du wirst immer Schwierigkeiten haben, wenn Du eine Ereignisdefinition nur teilweise und nicht vollständig betrachtest. Ich gebe deshalb hier die gesamte Ereignisdefinition nochmals wieder: Ereignis: Zug betritt Bremsgleis - Schublok identifizieren Auslöser: Zug betritt ein Gleis Lok='[Alle Loks]' Gleis='Bremsgleis' Bedingung: Variable besitzt den Wert Name='$_Trigger1._CurrentSpeed' Wert='>0' Negieren='0' Aktion: Variable setzen Name='Schublok' Wert='$_Trigger1._Name' Aktion: Variable setzen Name='Drücken' Wert='20' Aktion: Lokgeschwindigkeit setzen Lok='[Auslöser 1: Lok]' Gleis='[Alle Gleise]' Geschwindigkeit='20' Ist-Geschwindigkeit setzen='0' Sonst: (Bedingung nicht erfüllt) Aktion: Variable setzen Name='Schublok' Wert='$_Trigger1._Name' Aktion: Variable setzen Name='Drücken' Wert='-20' Aktion: Lokgeschwindigkeit setzen Lok='[Auslöser 1: Lok]' Gleis='[Alle Gleise]' Geschwindigkeit='-20' Ist-Geschwindigkeit setzen='0' Mit dieser "Kompaktschreibweise" wirst Du Dich in der Ereignisdefinition sicher besser zurechtfinden als in der von Dir oben verwendeten Schreibweise, wo alle Einzelangaben ungeachtet ihrer Klassifizierung (linke Spalte), ihrer Funktion (mittlere Spalte) und ihrer Parameter (rechte Spalte) gleichberechtigt untereinander stehen. Du kannst solch kompakte Darstellungen der Ereignisverwaltung bekommen, indem Du diese exportierst und etwas nachbearbeitest: Quackster zeigt in diesem Beitrag, wie man die Ereignisverwaltung in eine HTML-Datei exportiert und diese aufbereitet wiedergibt. Die obige Darstellung erhält man mit dem hier als Anlage beigefügten "MBS-EV-Auswerter", der direkt aus der vorliegenden ZIP-Datei (MBS-EV-Auswerter.zip) heraus aufgerufen werden kann. Hierzu exportiert man die Ereignisverwaltung in eine XML-Datei, liest diese in das Programm ein, wandelt die Liste in die obige Darstellung um und speichert diese als TXT-Datei ab (3 Funktionsbuttons im Programm). Diese kann dann nach Belieben ausgewertet werden. Nun aber zurück zum inhaltlichen Teil der obigen Ereignisdefinition: Beim Betreten des Bremsgleises wird der Variable Schublok als Wert der Name der Lokomotive des zu zerlegenden Güterzuges zugewiesen. In der Variable Drücken wird die reduzierte Geschwindigkeit von 20 mm/s hinterlegt, die auch gleich dem bis zu diesem Zeitpunkt mit 50 mm/s fahrenden Zug zugewiesen wird ("Lokgeschwindigkeit setzen"). Der Zug wird also tatsächlich abgebremst, wenn er in das Bremsgleis einfährt. Diese Zuweisung ist an die Bedingung "Aktuelle Zuggeschwindigkeit positiv" (>0) geknüpft. Trifft diese Bedingung nicht zu (Geschwindigkeit negativ), wird anstelle der positiven Geschwindigkeit "20 mm/s" die negative Geschwindigkeit "-20 mm/s" verwendet. Bis auf dieses Vorzeichen sind die Aktionen bei erfüllter und nicht erfüllter Bedingung identisch. Hierdurch ist garantiert, dass die Abdrück-Geschwindigkeit (aus der Ausgangs-Blickrichtung zur Anlage gesehen) immer nach links ausgerichtet ist, unabhängig davon, ob die Lok so wie in der Anlage platziert oder um 180° gedreht ausgerichtet ist. Es hat übrigens wenig Sinn, Dir nun alle einzelnen Definitionen aus der Ereignisverwaltung der Ablaufberg-Schema-Anlage einzeln zu erklären. Denn wesentlich mehr, als Du aus den aufbereiteten Ereignisdefinitionen herauslesen kannst, kann ich Dir auch nicht sagen. Außerdem kann ich mich hierbei nur auf meine Anlage beziehen, bei der die Ereignisverwaltung ja funktioniert. Wenn ich Dich richtig verstanden habe, hast Du versucht, eine eigene Gleiskonfiguration zusammenzustellen und hierauf eine Kopie dieser Ereignisdefinition anzuwenden. Wenn hier nun die Gleiskonfiguration nicht haargenau zur Ereignisdefinition passt, kann das Ganze nicht funktionieren. Und ob es passt, kannst Du nur dadurch herausfinden, dass Du Dir jede einzelne Ereignisdefinition separat ansiehst und an einem kleinen Anwendungsbeispiel (das nicht gleich die komplette Anlage enthält) ausprobierst. Erst wenn hierbei das AHA-Erlebnis eingetreten ist und Du die Ereignisdefinition so gut verstanden ("verinnerlicht") hast, dass Du sie auch mit variierten Parametern erfolgreich einsetzen kannst, macht es Sinn, mehrere Ereignisdefinitionen zu kombinieren und damit komplexere Konfigurationen auszutesten. Auch ich fange bei meinen Anlagen immer zuerst mit kleinen Einzelsteuerungen an und baue diese erst dann zu einer größeren Konfiguration aus, wenn die Einzelsteuerungen für sich gesehen einwandfrei funktionieren. Wie Götz schon an anderer Stelle gesagt hat: Am meisten lernt man aus den eigenen Fehlern, die man selbst erkennt und auch selbst erfolgreich beseitigt. Und das geht am Besten, wenn man zuerst versucht, kleine Einzelbausteine zu verstehen und zu stabilisieren, und diese dann zu einem größeren Komplex zusammensetzt. Viele Grüße BahnLand
-
Hallo Alois, Zählerschleife: Ja, die wird gebraucht, weil nur so der Name der einzelnen Wagen identifiziert werden kann. Blaues Gleis: Es gibt auf meiner Demo-Anlage kein blaues Gleis. Meinst Du eventuell das graue Gleis ("Entscheidungsgleis")? Locks und Loks: Ich weiß zwar, was Du hier gemeint hast. In Zukunft solltest Du aber wegen möglicher Missverständnisse darauf achten, dass Du dann, wenn Du angetriebene Schienenfahrzeuge meinst, die Loks (Abkürzung von Lokomotive) ohne "c" schreibst. Ein Lock (mit "c") ist ein Serialisierungsinstrument für konkurrierende Abläufe und wird in der Ereignisverwaltung beispielsweise dazu verwendet, Zusammenstöße von Zügen, die dasselbe Gleis befahren wollen, zu verhindern. Eine ausführliche Beschreibung zu Locks findest Du hier. _Trigger1._Name: Bei den Ereignissen "Zug betritt/verlässt Gleis" referenziert diese "Objekt-Variable" immer nur die aktive "Antriebseinheit" des Zuges, also jene Lok des Zuges, der eine Geschwindigkeit verschieden von "0" zugewiesen ist. Der in dieser Variable zurückgegebene Wert ist auch nur dann "eindeutig", wenn im betrachteten Zug auch wirklich nur eine Antriebseinheit "aktiv" ist. Wagen können über diese Variable nicht identifiziert werden. Dies ist genau der Grund, warum man für deren Identifizierung die oben genannte Zählerschleife benötigt und deshalb für die Namen der zu identifizierenden Wagen nur Nummern verwenden kann. Viele Grüße BahnLand
-
Wertzuweisung an dynamisch bstimmte Objektvariable
BahnLand antwortete auf BahnLands Thema in Feature-Wünsche
Hallo EASY, Danke für den wertvollen Tipp. Damit hat sich mein Feature-Wunsch erledigt. Viele Grüße BahnLand -
Hallo Alois, in der Zählerschleife wird für jede Zahl abgefragt, ob ein Wagen mit dieser Zahl als Bezeichner sich auf dem "Testgleis" befindet. Wenn ja, ist die Zahl gefunden, die dem getesteten Wagen als Name zugeordnet ist. Da in der Verarbeitung des Ereignisses "Zug betritt Gleis" die Stellung der Harfenweiche festgelegt wird, würde ich hier ungern die Weiche selbst als "Abfrage-Objekt" hernehmen. Denn dann steht der Zu ja schon auf der Weiche drauf. Und wenn sie dann umgeschaltet wird, könnte dies zu Komplikationen führen. Deshalb bevorzuge ich ein Gleis davor (hier das "Entscheidungsgleis"), um die neue Stellung der Harfenweiche zu bestimmen. Viele Grüße BahnLand
-
Hallo Neo, wenn ich das richtig verstanden habe, kann man heute zwar Werte aus dynamisch bestimmten Objekt-Variablen auslesen, aber diese nicht überschreiben. Es gibt aber verschiedene Anlässe, wo diese Eigenschaft innerhalb der Ereignissteuerung benötigt wird. Hier zwei Beispiele: Beispielanlage "Ablaufberg" Wenn die Auswahl des Abstellgleises in der Gleisharfe durch die Identität des "ablaufenden" Wagens bestimmt werden soll, muss dessen "Wagennummer" auch dann noch verfügbar sein, wenn bereits ein weiterer Wagen "abgekuppelt" wurde und dem rsten Wagen folgt. Dann ist aber die "globale WagenNummer" überschrieben. Könnte man hier die jeweils bestimmte Wagennummer dem dynamisch bestimmten "Entkuppler" zuweisen (siehe nachfolgendes Bild), könnte man sie dort zum Entscheidungszeitpunkt über das Zielgleis wieder auslesen. Ereignis-gesteuerte Fahrtrichtungsumkehrung bei Wendezug oder Triebwagen Ordnet man Zügen mit unterschiedlichen Merkmalen (Schnellzug, Personenzug, Güterzug, ...) verschiedene Soll-Geschwindigkeiten zu (z.B. Schnellzuglok.VSoll = 125, Personenzuglok.VSoll = 100, Güterzuglok.VSoll = 90), so kann man diese Geschwindigkeit beim Start eines solchen Zuges an jeder beliebigen "Haltestelle" aus der Lok-zugeordneten Objekt-Variable auslesen und dann als Geschwindigkeit der Lok zuordnen. Soll nun ein solcher Zug die Fahrtrichtung umkehren, wäre es sinnvoll, diese Geschwindigkeitszuordnung in der Objekt-Variable der dynamisch bestimmten Lok anzupassen: Aktion: Variable setzen Name: $(_Trigger1._Name).VSoll : Wert: *-1 Wäre dies ohne großen Aufwand machbar? Viele Grüße BahnLand
-
Hallo Alois, ich habe inzwischen herausgefunden, dass Du Dich auf die Anlage "Ablaufberg (Schema)" beziehst. Da es mehrere Anlagen von mir zu diesem Thema gibt, wäre es in Zukunft für mich (und die anderen Hobby-Kollegen bei an sie gestellten Fragen) einfacher, wenn Du Deine Fragen immer etwas konkretisieren würdest (z.B. die Anlage nennst, auf die Du Dich beziehst). Dann fällt es uns nicht so schwer, Deine Fragen im richtigen Zusammenhang zu sehen. Nun aber zu Deiner konkreten Frage: In der Ereignisdefinition "Einfahrt über Harfenweiche 1" wird eben diese Weiche nachdem Verlassen jedes darüber fahrenden "Zuges" (Wagen + schiebender "Entkuppler") "blind" umgeschaltet, sodass die einfahrenden Wagen immer abwechslungsweise in das eine oder das andere Geleis fahren. Du möchtest aber, dass vor dem Befahren der Weiche durch einen Wagen anhand von dessen Bezeichnung (Nummer kleiner oder größer als 20 - zu welcher Gruppe soll nun die "20" selbst gehören?) ermittelt wird, ob die Weiche nach links (Weichenstellung "0") oder rechts (Weichenstellung "1") umgelegt werden soll. Zwischen dem "Testgleis" an der "Einfahrweiche" und der "Harfenweiche 1" befinden sich zwei kurze gerade Gleisstücke, die wie alle geraden Gleisstücke, die in der Ereignisverwaltung nicht berücksichtigt wurden, von mir einfach pauschal mit der Bezeichnung "Gerade" versehen wurden. Gib nun jenem geraden Gleisstück, das näher an der Weiche liegt, einen eindeutigen Namen (z.B. "Entscheidungsgleis"). Nun kannst Du die Ereignisdefinition "Einfahrt über Harfenweiche 1" wie folgt umschreiben: Ereignisdefinition "Einfahrt über Harfenweiche 1" Ereignis: Zug betritt Gleis (Lok: "Alle Loks", Gleis: Entscheidungsgleis (wenn Du den obigen Namen verwendet hast, sonst trage den verwendeten Namen ein)) Bedingung: Variable besitzt den Wert (Name: WagenNummer, Wert: <20 (beispielsweise)) Aktionen für "Bedingungen sind erfüllt": Weiche schalten (Weiche: Harfenweiche 1, Position: 0 (Weiche nach links)) Aktionen für "Bedingungen sind NICHT erfüllt": Weiche schalten (Weiche: Harfenweiche 1, Position: 1 (Weiche nach rechts)) Nun wird, bevor ein Wagen über die Weiche fährt, bei Betreten des Gleises davor anhand seiner Nummer entschieden, ob er über die Weiche nach links oder rechts geleitet werden soll. Was passiert aber nun, wenn Du die Wagen wieder abholen möchtest? Auch die Lok, welche die Wagen aus den Sortiergleisen wieder herauszieht, wird bei Befahren des Gleises "Entscheidungsgleis" dieses Ereignis auslösen. Wie die Weiche dabei umgestellt wird, wird anhand des zuletzt der Variable "WagenNummer" zugewiesenen Zahlenwerts entschieden. Da die der Wert des zuletzt einsortierten Wagens ist, wird die einfahrende Lok immer auf jenes Gleis gelenkt, in dem dieser Wagen steht. Auch wenn die Lok mit den Wagen wieder ausfährt, wird das Ereignis ausgelöst und schaltet möglicherweise die Weiche unter dem darüber fahrenden Zug um. Wie kann man nun erreichen, dass die Aktionen des Ereignisses nicht ausgelöst werden, wenn die Lok in die Harfe einfährt, um die Wagen abzuholen, oder mit den Wagen aus der Harfe ausfährt? Dazu muss man den Namen der Lok kennen. In der Ereignisdefinition "Zug betritt Bremsgleis - Schublok identifizieren" in der Gruppe "Eselsrücken" wird die Lok, welche die Wagen über den Ablaufberg schiebt, identifiziert und ihr Name in der Variable "Schublok" hinterlegt. In Abhängigkeit davon, ob die "Lok" des die Weiche passierenden Wagens ein "Entkuppler" oder die "Schublok" ist, müssen die oben in dem blauen Block spezifizierten Aktionen ausgeführt werden oder dürfen nicht ausgeführt werden. Es gibt also zwei abzufragende Bedingungen, die insgesamt zu 3 verschiedenen Aktionspfaden führen: Lok ist "Schublok": Keine Aktion ausführen Lok ist nicht Schublok und Wagen-Nummer < 20: Aktion "Weiche links" ausführen Lok ist nicht Schublok und Wagen-Nummer nicht <20: Aktion "Weiche rechts" ausführen Da keine Ereignisdefinitionen mit mehr als 2 Aktions-Alternativen erstellt werden können, muss die obige blaue Ereignisdefinition wie folgt in 2 Ereignisdefinitionen aufgeteilt werden: Ereignisdefinition "Einfahrt über Harfenweiche 1a" Ereignis: Zug betritt Gleis (Lok: "Alle Loks", Gleis: Entscheidungsgleis) Bedingung: Variable besitzt den Wert (Name: $_Trigger1._Name, Wert: $Schublok) (Negieren !!!) und: Variable besitzt den Wert (Name: WagenNummer, Wert: <20) Aktionen für "Bedingungen sind erfüllt": Weiche schalten (Weiche: Harfenweiche 1, Position: 0 (Weiche nach links) (nur ausführen, wenn Lok = "Entkuppler" und Wagennummer < 20) Ereignisdefinition "Einfahrt über Harfenweiche 1a" Ereignis: Zug betritt Gleis (Lok: "Alle Loks", Gleis: Entscheidungsgleis) Bedingung: Variable besitzt den Wert (Name: $_Trigger1._Name, Wert: $Schublok) (Negieren !!!) und: Variable besitzt den Wert (Name: WagenNummer, Wert: <20) (Negieren !!!) Aktionen für "Bedingungen sind erfüllt": Weiche schalten (Weiche: Harfenweiche 1, Position: 1 (Weiche nach rechts)) (nur ausführen, wenn Lok = "Entkuppler" und Wagennummer >= 20) Die beiden grünen Ereignis-Definitionen beschränken also die Wirksamkeit der blauen Ereignisdefinition auf die von den "Entkupplern" geschobenen Wagen und lassen die Schublok allein oder mit angehängten Wagen ohne Reaktion passieren. Allerdings musste ich in der Demo-Anlage "Ablaufberg (Schema)" noch ein weitere Anpassung vornehmen, damit dieser Mechanismus tatsächlich funktioniert: Die Variable "WagenNummer" muss den Wert des erkannten Wagens so lange behalten, bis die Entscheidung über die Stellung der Harfenweiche gefallen ist. Wird die Variable WagenNummer berits vorher mit derNummer eines weiteren Wagens überschrieben, funktioniert der Mechanismus nicht mehr. Deshalb muss die Weiterfahrt des Zuges mit den noch nicht abgetrennten Wagen so lange hinausgezögert werden, bis der aktuell "ablaufende" Wagen das "Entscheidungsgleis" erreicht hat. eine entsprechende Anpassung der Demo-Anlage ist hier als beigefügt ("Ablaufberg (Schema-2).mbp"). Um ein besseres Verständnis über die Arbeitsweise der hier gezeigten Ereignisdefinitionen zu erlangen, würde ich Dir vorschlagen, damit einmal etwas "herumzuspielen". Verändere einmal die Bedingung, indem Du ">20" anstatt "<20" einträgst. Was passiert dann mit dem Wagen, der mit der Nummer 20 gekennzeichnet ist? Oder vertausche einmal die Angaben "Position 0" und "Position 1" bei den Aktionen. Wie verhält sich dann die Weiche bei der Einfahrt der Wagen? Nur wenn Du mit solchen Variationen herumspielst und selbst Dinge ausprobierst, kannst Du ein Gefühl und ein tieferes Verständnis dafür bekommen, was eigentlich bei der Umsetzung der Ereignisdefinitionen im Anlagenbetrieb passiert. Viele Grüße BahnLand Ablaufberg (Schema-2).mbp
-
Hallo Alois, in meiner Demo-Anlage "Ablaufberg" wird in der Ereignisdefinition "Wagen erkennen" in der Gruppe "Eselsrücken" die Variable "WagenNummer" mit dem Zahlenwert versorgt, mit dem der erkannte Wagen gekennzeichnet ist. Diese Variable kannst Du nun auf <20 oder >19 abfragen, um die Verteilungsweiche entsprechend zu stellen. Ich bin hier davon ausgegangen, dass die "20" zur "oberen" Gruppe gehören soll. Wenn die ""20" zur "unteren Gruppe" gehören soll, musst Du auf <21 oder >20 abfragen. Wieso soll die Lok wie die Wagen am Ablaufberg erkannt werden? Sie soll ja nicht wie die Wagen mit den Dummy-Fahrzeugen in die Sortier-Gleise geschoben werden. Die Lok braucht auch nicht mit einem Zahlenwert bezeichnet zu sein, weil Du diese ja im Ereignis "Zu betritt/verlässt Gleis" über "Auslöser 1:Lok" oder "_Trigger1._Name" identifizieren kannst. Lies hierzu einfach nochmal den Wiki-Abschnitt "Variablen" und dort speziell "Auslöser" durch - und probier es dann einfach aus. Viele Grüße BahnLand
-
Hallo Franz, irgendwie habe ich mich bei Deiner "Transportkette" an so etwas erinnert gefühlt. Einfach klasse gemacht! Viele Grüße BahnLand
-
Hallo Franz, komisch! Ich habe versucht, Dein Vorgehen nachzuvollziehen: Ich kann's nicht nachstellen, weil's bei mir funktioniert. Viele Grüße BahnLand