Jump to content

tim-fischertechnik

Mitglieder
  • Gesamte Inhalte

    225
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von tim-fischertechnik

  1. Hallo @Weißeritztaler, willkommen im Forum. Die Anlage ist schön ausgestaltet. Besonders gefallen mir das Bahnbetriebswerk, die Überwerfungsbauwerke im linken Anlagenteil und die geschwungene Streckenführung. Kennst du das Konzept von Fahrstraßen. Diese sichern die Strecke in gesicherte Blockabschnitte ab, worin immer nur ein Zug hineinfahren darf. Fahrstraßen, oft im Forum auch nur mit FS abgekürzt, sind viel einfacher zu handhaben und auch von der Programmierung viel benutzerfreundlicher. Es gibt im Wiki einen Abschnitt, in dem Fahrstraßen genauer erklärt werden: Viele Grüße Tim
  2. Teil 6 – Demoanlage eine lange Reise (mehrfache Bedingungen) In dieser Demoanlage finden Züge automatisch ihr Ziel. Bedingung - eine lange Reise.mbp Was soll erreicht werden? Züge finden von selbst ihr Ziel, welches in einem Schlagwort mit dem Präfix Fahrtziel xxx im Fahrzeug eingetragen ist. Erreicht ein Zug sein Endbahnhof, wird er ins Depot geschickt. Das Fahrtziel München kann auf zwei verschiedenen Wegen angefahren werden. Dazu besitzen die Fahrzeuge mit dem Fahrtziel München zusätzlich das Schlagwort Zwischenstopp in Stuttgart oder Zwischenstopp in Würzburg. Wie bedient man am besten die Anlage? Einzig und allein muss man den Taster neben dem Depot Frankfurt am Main drücken. Dabei wird ein Zug aus dem Depot auf das Abfahrtsgleis des Frankfurter Bahnhofs geschickt. Der Rest funktioniert von allein. Die Züge halten für 10 Sekunden an jedem Bahnhof und finden dann von selbst ihr Ziel. Was kann die Anlage (noch) nicht leisten? Die EV ist nicht generisch aufgebaut und daher noch recht unübersichtlich. Abhilfe können hier Listen mit den Fahrtzielen schaffen. Das Konzept mit Listen möchte ich in einer weiterführenden Reihe später erklären. Wozu sind mehrfache Bedingungen gut und wie funktionieren diese? Im dritten Teil haben wir uns mit den kaskadierten Bedingungen beschäftigt. Dort haben wir gelernt, dass zum Beispiel zwei ineinander geschachtelte Bedingungen eine UND-Verknüpfung bewirken. Für das Aktivieren der Ausfahrt aus Gleis 1 gibt es ein Äquivalent das wie folgt aussieht und sich Mehrfache Bedingung nennt. Entscheidend ist hier der Und-Operator, der die beiden einzelnen Bedingungen miteinander verknüpft. Nur wenn beide Bedingungen erfüllt sind, also der Schalter auf Aus steht und ein Zug auf Gleis 1 sich befindet, ist auch die Mehrfache Bedingung erfüllt und die Ausfahrt aus Gleis 1 wird gestellt. Wenn eine Teilbedingung nicht erfüllt ist, dann ist die Mehrfache Bedingung auch nicht erfüllt. Um eine mehrfache Bedingung anzulegen, klickt man auf den blauen Link „Weitere Bedingung hinzufügen“ und wählt die passende Bedingung aus. Unter kann man eine weitere Bedingung oder Gruppe anlegen. wählt man die Art der Verknüpfung Und oder Oder aus. ODER-Verknüpfung – Wie wird die Einfahrt für den Bahnhof Mannheim gestellt? Am Beispiel der Einfahrt Mannheim möchte ich zeigen, wofür man die Mehrfache Bedingung mit einer ODER-Verknüpfung einsetzen kann. Das Ereignis „Einfahrt Mannheim“ wird durch den Gleiskontakt „Gleiskontakt Einfahrt Mannheim“ ausgelöst, der sich einige Meter vor dem Einfahrtsignal befindet. Man kann erkennen, dass wenn eines der drei Fahrziele (München, Stuttgart oder Freiburg) als Schlagwort existiert, immer die Einfahrt auf Gleis 1 gestellt wird, weil der Zug ja nur in Mannheim zwischenhält. Ist keines der drei Fahrtziele im Fahrzeug hinterlegt, so ist Mannheim der Endbahnhof und der Zug fährt auf Gleis 2 ein, worauf er nach einem kurzen Aufenthalt ins Depot (Abstellung) fährt. Wie man sieht, steht dort dreimal dasselbe, ausgenommen natürlich die unterschiedliche Bedingung. Wenn mehrere Bedingungen gleichberechtig in einer Ebene untereinanderstehen, können diese auch zu einer mehrfachen ODER-Bedingung verknüpft werden, das dann wie folgt aussieht: Bei einer Oder-Verknüpfung muss nur eine Teilbedingung erfüllt sein, damit die Bedingung erfüllt ist. Natürlich können auch mehrere Teilbedingungen erfüllt sein. Dies hat dann aber keinen zusätzlichen Effekt. Wie wird die Ausfahrt aus Mannheim gestellt? Nach einem kurzen Aufenthalt von 10 Sekunden am Ausfahrtsignal „Asig N1 Mannheim“ entscheiden zwei Bedingungen darüber, in welche Richtung der Zug weiterfährt. In der ersten Bedingung wird geprüft, ob sich im Fahrzeug das Fahrtziel Freiburg befindet. Ist dies der Fall, so fährt der Zug in Richtung Freiburg. In der zweiten Bedingung existiert wieder eine Oder-Verknüpfung. Besitzt der Zug das Fahrziel München oder Stuttgart, so wird er in Richtung Stuttgart geleitet. Wie fahren Züge nach München über unterschiedliche Routen? München ist in dieser Beispielanlage der einzige Bahnhof, der über zwei Routen befahrbar ist. Züge können entweder über Mannheim und Stuttgart nach München oder über Hanau und Würzburg nach München fahren. Wie kann jetzt eine Differenzierung der Routen vorgenommen werden? Das Zauberwort lautet Gruppierung einer Mehrfachen Bedingung. Ganz ähnlich zur Ausfahrt in Mannheim haben wir hier in Frankfurt am Main auch wieder zwei Richtungen in der der Zug weiterfahren kann. Einmal Hanau und einmal Mannheim. Der Zug fährt in Richtung Hanau, wenn er das Fahrtziel Hanau, Kassel, Würzburg oder die UND-Gruppierung aus Fahrtziel München und Zwischenstopp Würzburg enthält. In Richtung Mannheim fährt der Zug, wenn der das Fahrtziel Mannheim, Stuttgart, Freiburg oder die Gruppierung aus Fahrtziel München und Zwischenstopp Stuttgart besitzt. Gruppierungen sind dazu da, mehrere untergeordnete Eigenschaften zusammenzufassen. Dadurch ist es möglich auch unterschiedliche Abhängigkeiten aus UND und ODER zu realisieren, die ohne Gruppen nicht möglich wären. wird fortgesetzt ... Viele Grüße Tim
  3. Teil 5 – Beispiel automatische Gleiswahl Die folgende Anlage automatische Gleiswahl baut auf den Konzepten verschachtelte Bedingungen aus Teil 3 und negierten Bedingungen Teil 4 auf. Was soll erreicht werden? Die zwei Selbstblöcke schalten von selbst. Sobald der Schalter Einfahrt betätigt wird, sucht sich der Zug das freie Gleis. Sobald der Schalter Ausfahrt betätigt wird, wird die Ausfahrt für das passende Gleis gestellt, auf dem Zug am Bahnsteig hält. Hält er auf Gleis 1 so wird die Ausfahrt aus Gleis 1 gestellt. Hält er hingegen auf Gleis 2 so wird die Ausfahrt aus Gleis 2 gestellt. Wie bedient man am besten die Anlage? Die Selbstblöcke muss man im Gegensatz zum vorherigen Anlagenbeispiel nicht manuell aktivieren. Die EV aktiviert die Selbstblöcke automatisch. Wenn der Bahnhof komplett frei ist, kann man durch Betätigen des Schalters Einfahrt den ersten Zug auf Gleis 1 einfahren lassen. Befindet sich schon auf Gleis 1 ein Zug, so kann durch erneutes Betätigen des Schalters Einfahrt ein weiterer Zug auf Gleis 2 einfahren. Um einen Zug aus Gleis 1 oder 2 auszufahren, betätigt man den Schalter Ausfahrt. Wenn beide Gleise belegt sind, fährt der Zug auf Gleis 1 zuerst ab. Wie wird die Ausfahrt gestellt? Wie funktioniert die EV dahinter? Die EV dahinter wurde schon im Teil 3 näher erläutert. Trotzdem gibt es hier nochmal eine kurze Zusammenfassung: Sobald der Taster auf Aus steht, wird zusätzlich entschieden, ob ein Zug sich auf Gleis 1 befindet. Befindet sich ein Zug auf Gleis 1, so soll die Ausfahrt aus Gleis 1 gestellt werden andernfalls kann er sich nur auf dem anderen Gleis 2 befinden also nicht auf Gleis 1 und dann soll die Ausfahrt aus Gleis 2 gestellt werden. Wie suchen sich Züge ihre freien Gleis? Die EV der Einfahrt gleicht ziemlich der Ausfahrt. Im Gegensatz zur Ausfahrt werden hier die Einfahrtfahrstraßen statt der Ausfahrtfahrstraßen verwendet. Wenn man ganz genau hinschaut, dann fällt einem auf, dass die untergeordnete Bedingung Fahrzeug befindet sich auf Gleis 1 negiert ist. Das liegt daran, dass kein Zug in ein besetztes Gleis einfahren kann. Er würde ewig am Einfahrsignal stecken bleiben. Man benötigt als ein freies, anders ausgedrückt, nicht besetztes Gleis. Wie kann man einen neuen Durchlauf starten? Wie werden die Schalter zurückgesetzt? Damit man einen neuen Durchlauf starten kann, muss der jeweilige Schalter auf An geschaltet werden. Denn das Stellen der Ein- und Ausfahrten reagiert auf einen Zustandswechsel von An auf Aus. Nun ist es nicht sinnvoll, dass der Schalter sofort nach dem Ausschalten wieder automatisch auf An geschaltet wird. Wenn eines der beiden Ausfahrsignale Asig N1 oder Asig N2 betreten wird, dann wird der Schalter für die Einfahrt auf An geschaltet. Wenn das Blocksignal 01 verlassen wird, dann wird der Schalter für die Ausfahrt auf An geschaltet. Demoanlage: Bedingung - automatische Gleiswahl.mbp wird fortgesetzt ... Viele Grüße Tim
  4. Teil 3 – verschachtelte Bedingungen Eine einzelne Bedingung reicht meist nicht aus, um den Bahnverkehr abwechslungsreich zu gestalten. Um mehr Abwechslung in der Anlage zu bringen, nutzt man verschachtelte Bedingungen. Verschachtelte Bedingungen bestehen immer aus mindestens zwei Bedingungen, bei der sich eine untergeordnete Bedingung in einem Pfad der übergeordneten Bedingung befindet. Dabei kann die untergeordnete Bedingung sich sowohl in dem Pfad befinden, der bei der übergeordneten Bedingung erfüllt ist, aber auch in dem Pfad, der bei der übergeordneten Bedingung nicht erfüllt ist. In diesem Beispiel befindet sich die untergeordnete Bedingung „Fahrzeug befindet sich auf Gleis 1“ im Pfad, bei der die übergeordnete Bedingung erfüllt ist also dort, wo der Schalter auf Position Aus steht. Nur wenn beide Bedingungen erfüllt sind, also der Schalter auf Aus steht und sich ein Fahrzeug auf Gleis 1 befindet dann wird die Ausfahrt aus Gleis 1 gestellt. Man kann sich also merken, dass eine Verschachtelung von mehreren Bedingungen eine UND-Verknüpfung bewirkt. Nur wenn beide Einzelbedingungen erfüllt sind, ist auch die Bedingung zum Stellen der Ausfahrt aus Gleis 1 erfüllt. Sobald eine einzelne Bedingung nicht erfüllt ist, ist diese Bedingung nicht mehr erfüllt. Natürlich kann sich die untergeordnete Bedingung auch in dem Pfad befinden, in der die übergeordnete Bedingung nicht erfüllt ist, also der Schalter auf An steht und nicht auf Aus. Dann platziert man wie im Bild zu sehen die unterordnete Bedingung unterhalb der Trennlinie der übergeordneten Bedingung. Teil 4 – negierte Bedingung Ich möchte auch anhand von zwei Bildern die Funktionsweise von negierten Bedingungen veranschaulichen. Beides bewirkt dasselbe. Nur die negierte Bedingung ist in manchen Fällen wie hier leichter lesbarer. Sobald die Fahrstraße mit dem Schlagwort Selbstblock deaktiviert wurde also inaktiv ist, wird die gleiche Fahrstraße wieder aktiviert. Im ersten Fall handelt es sich um eine normale Bedingung. Diese wurde nicht negiert, weil das Kästchen Negieren nicht gesetzt wurde. Damit die Fahrstraße nur dann aktiviert wird, wenn die Fahrstraße inaktiv ist, muss man den unteren Pfad auswählen. Man platziert hier also die Aktion unterhalb der Trennlinie. Im zweiten Fall wurde die Bedingung negiert, da das Auswahlkästchen Negieren gesetzt wurde. Man erkennt hierbei, dass der untere Pfad komplett wegfallen kann und in der Bedingung der Zusatz NICHT auftaucht. Eine Negierung dreht also den Zustand um. Aus erfüllt wird nicht erfüllt und aus nicht erfüllt wird erfüllt. Warum die negierte Bedingung in Lua kürzer / besser ist. Dieser Abschnitt richtet sich an alle Lua-Interessierte und verdeutlicht, warum die Negierung den Code schlanker macht. Aus der graphischen EV erkennt man zuerst nicht, warum die Negierung prägnanter ist. Doch ein Blick in das if-else Konstrukt zeigt, dass im ersten Fall nichts im if-Zweig steht: if route.active then else route.active = true end und man stattdessen einen else-Zweig benötigt. Verwendet man nun die Negierung, so benötigt man kein else-Zweig mehr. Der Code ist jetzt deutlich kürzer if not (route.active) then route.active = true end Eine Negierung in Lua wird also durch das Schlüsselwort not ausgedrückt. wird fortgesetzt ...
  5. Hallo zusammen, oft schreibt man einige Zeilen in Lua, die man nur für Testzwecke geschrieben hat. Diese möchte man oft nicht ganz löschen weil man sie vielleicht später noch braucht und kommentiert diese entsprechend aus. Man kann natürlich händisch Zeilen auskommentieren doch noch praktischer und benutzerfreundlicher wäre es, wenn man mehrere oder eine Zeile zuerst markiert und dann mittels einer Tastenkombination automatisch auskommentiert. In Visual Studio Code gibt es zum mehrzeiligen Auskommentieren folgende Tastenkombination: How to Comment in VS Code - The VSCode Comment Shortcut Windows: Shift + Alt + A Das Ergebnis könnte nach dem Auskommentieren wie folgt aussehen: if controller.state == 0 then --[[ if #layout:getVehiclesOn($("Gleis 1")) > 0 then $("Ausfahrt Gleis 1").active = true else $("Ausfahrt Gleis 2").active = true end --]] end Nach dem "rückgängig machen" des Auskommentierens gäbe es theoretisch zwei Möglichkeiten -- 1. Drei '-' am Anfang des Kommentars if controller.state == 0 then ---[[ if #layout:getVehiclesOn($("Gleis 1")) > 0 then $("Ausfahrt Gleis 1").active = true else $("Ausfahrt Gleis 2").active = true end --]] end -- 2. Brackets komplett entfernen if controller.state == 0 then if #layout:getVehiclesOn($("Gleis 1")) > 0 then $("Ausfahrt Gleis 1").active = true else $("Ausfahrt Gleis 2").active = true end end Dieser Befehl funktioniert in beide Richtungen (toggle). Nicht auskommentierte Codezeilen werden auskommentiert und auskommentierter Code wird er nicht mehr auskommentiert. Beim zeilenweisen Auskommentieren gibt es in Visual Studio Code zwei statt einem Befehl: auskommentieren (comment out) Windows: Ctrl + K + C auskommentieren rückgängig machen (uncomment) Windows: Ctrl + K + U Dabei spielt es beim zeilenweisen Auskommentieren keine Rolle, ob nur eine Zeile markiert wird -- eine einzelne Zeile auskommentieren oder mehrere auf einmal. -- erste Zeile auskommentiert -- zweite Zeile auskommentiert -- nächste Zeile ebenfalls auskommentiert -- alle Zeile haben gemeinsam, dass sie mit '--' statt '--[[ Code --]]' beginnen Wäre so etwas umsetzbar und zielführend? Viele Grüße Tim
  6. Hallo @winpet, Ich habe deinen Fehler gefunden. Du hast nicht direkt die rechte Nachbarfahrstraße im Signal hinterlegt. Stattdessen nutzt du die Fahrstraße, die direkt am Signal liegt, an der auch der Zug ankommt. Dadurch wird nicht die Nachbarfahrstraße angestoßen und es wird keine Ausfahrt gestellt. Ich habe mal ein Bild davon gemacht, welche Variablen du im Signal SBF Ausfahr-Signal P 00, GL 1 eintragen musst. Für die anderen Signale trägst du auch die jeweils rechte Nachbarfahrstraße ein. Beim letzten Signal SBF Ausfahr-Signal P 03, GL 4 musst du die erste Ausfahrfahrstraße Ausfahrt Gleis 1 (A) eintragen. Viele Grüße Tim
  7. Hallo zusammen, in diesem Thread könnt ihr Fragen, Anliegen und Probleme zu den beiden Tutorials stellen. Tutorials zu Fahrstraßen Tutorials zur Ereignisverwaltung Ich bin immer dankbar für Verbesserungsvorschläge. Manchmal sieht man nicht, was an der Erklärung fehlt. Dann bin ich dankbar, Feedback zu erhalten und damit kann ich dann Unklarheiten aus dem Weg räumen und euch hoffentlich weiterhelfen. Viele Grüße Tim
  8. Hallo @winpet, es liegt nicht an dir, sondern daran, dass ich die Anlage nur als 30-tägigen Entwurf hochgeladen habe. Nun habe ich die Anlage dauerhaft im Online-Katalog veröffentlicht. Viele Grüße und viel Spaß beim Studieren der Anlage, Tim
  9. Kurztutorial [09] - Wie man mit Bedingungen die richtige Entscheidung trifft. Teil 1 - Aufbau von Bedingungen Bedingungen, auch Fallunterscheidungen genannt, eignen sich hervorragend, um Entscheidungen zu treffen und den Bahnbetrieb dadurch abwechslungsreicher zu gestalten. Hier ist der grundlegende Aufbau einer Bedingung dargestellt: Bedingungen werden im Modellbahnstudio immer gelb gekennzeichnet. Im Kopf der Bedingung trägt man eine bestimmte Eigenschaft ein. Hier wurde die Eigenschaft: Eigenschaften/Variable existiert ausgewählt. Das Modellbahnstudio prüft hier, ob die erweiterte Variable Güterzug im Auslöser Fahrzeug existiert. Anhand dieser Eigenschaft entscheidet das Modellbahnstudio welcher Pfad ausgeführt wird. Jede Bedingung besteht aus zwei Pfaden. Wenn die Bedingung erfüllt ist, die Variable also existiert, werden sämtliche Aktionen etc. oberhalb der grauen Trennlinie ausgeführt. Zur besseren Visualisierung habe ich diesen Pfad grün markiert. Dort wo ich den Pfad rot markiert habe, werden alle Aktionen etc. unterhalb der grauen Trennlinie ausgeführt, wenn die Bedingung NICHT erfüllt ist, also die Variable nicht existiert. Teil 2 – Einführungsbeispiel Bedingung – Güterzug oder Personenzug Damit man die Funktionsweise einer Bedingung besser nachvollziehen kann, habe ich eine kleine Beispielanlage dafür gebaut. Was soll erreicht werden? Güterzüge sollen über Gleis 1 im Bahnhof automatisch durchfahren. Personenzüge wiederum fahren automatisch auf Gleis 2 ein und halten dort am Bahnsteig. Wie bedient man am besten die Anlage? Die Einfahrt in den Bahnhof mittels Fahrstraßen wird automatisch gestellt. Hierfür muss man nichts unternehmen. Die Durchfahrt über Gleis 1 wird ebenfalls automatisch gestellt, allerdings nicht die Ausfahrt aus Gleis 2. Um also den Schienenbus aus dem Bahnhof zu fahren, muss man händisch die Fahrstraße Ausfahrt Gleis 2 stellen. Ebenfalls muss man die drei Blockstrecken händisch aktivieren und dafür sorgen, dass die Ausfahrt frei ist, da es sonst zu Konflikten mit der Durchfahrt über Gleis 1 kommt. Diese Fahrstraße würde dann blockieren. Wann/ Wodurch soll das Ereignis ausgelöst werden? Beim Betreten des Gleiskontakts „Gleiskontakt Zuganmeldung“ vor der Einfahrt des Bahnhofs wird das Ereignis ausgelöst. Wie funktioniert die Fallunterscheidung? Existiert die Variable Güterzug, so ist die Bedingung erfüllt und der Pfad oberhalb der Trennlinie wird ausgeführt. Dabei wird die Durchfahrt über Gleis 1 als Fahrstraße gestellt. Im anderen Fall, wenn es sich um keinen Güterzug, sondern um einen Personenzug handelt, ist die Bedingung nicht erfüllt. Dann wird der Pfad unterhalb der Trennlinie ausgeführt und die Einfahrt auf Gleis 2 gestellt. Demoanlage: Bedingung - Beispiel Güterzug oder Personenzug_Stand_20.03.25.mbp Tutorial wird fortgesetzt Viele Grüße Tim
  10. Hallo @gmd, du kannst eine callback-Funktion namens layout:enumEntities aufrufen. if controller.state == 1 then layout:enumEntities( function (entity) -- Variable setzen entity.variables["test"] = keyword end ) else layout:enumEntities( function (entity) -- Variable löschen entity.variables["test"] = nil end ) end In diesem Beispiel wird die Variable test gesetzt, wenn der Taster eingeschaltet ist und gelöscht, wenn der Taster ausgeschaltet ist. Die Funktion enumEntities spricht alle Objekte auf der Anlage an. In der angefügten Anlage habe ich auch noch die Fälle abgedeckt, wie du im Zugverbund Variablen löschen kannst und natürlich auch einzelne Variablen. local t, t2 = layout:getVehicleGroup(vehicle) for i, Wdh in ipairs(t) do --local Ori = t2[i] -- Löschen einer Variable innerhalb einer Wiederholung Wdh.variables["Bahnhofsname"] = nil end -- Löschen einer Einzelvariable contact.variables["Lok"] = nil Anlage: Löschen von Variablen.mbp PS: Jetzt hat mich Easy überholt ;-) Viele Grüße Tim
  11. Hallo zusammen, die Gleisfeldbeleuchtung und die dazugehörigen Kabel sind nun unter Online-Katalog->Entdecken->Infrastruktur->Bahnverkehr->Signale->Gleissignale verfügbar. Vielen Dank Neo für die Freigabe. Viele Grüße, Tim
  12. Hallo zusammen, hallo @EASY, ich musste zwar erstmal nach dem Addon "Loop Tools" suchen, weil ich es dort nirgends im Programm fand, aber den Rest konnte ich gut nachvollziehen und ich habe es hinbekommen, wieder den Mesh zurück zu konvertieren. Ich habe jetzt auch passende Kabel für die Variante "Schienenbefestigung" erstellt. Es gibt insgesamt 18 Variation entweder zur Schwellen- oder Schienenbefestigung und dann jeweils in den Farben orange, hellblau und schwarz und jeweils in den Größen 4m, 5m und 8m. Ich würde mich wieder um einen Test freuen und wenn es nichts zu beanstanden gibt, werde ich beide Modelle in den Katalog hochladen. Auch die Kabel unterstützen Tauschtexturen. Viele Grüße Tim
  13. Ja ich werde noch Kabelvarianten passend für die Schienenbefestigung erstellen. Ich habe mir Bézier-Curves gearbeitet und diese anschließend in Mesh konvertiert. Ich hatte mir diese Bézier-Curves auch entsprechend dupliziert, damit ich diese später wieder bearbeiten kann, doch irgendwie hatte ich diese blöderweise dann auch in ein Mesh konvertiert. Jetzt müsste ich quasi wieder von neuen beginnen, es sei denn du kennst ein paar Kniffe. Kann ich ein Mesh wieder in ein Bézier-Curve zurück konvertieren? Kann man Bézier-Curve auch direkt mit einer UV-Map painten? Dann bräuchte ich die gar nicht in ein Mesh konvertieren. Viele Grüße Tim
  14. Hallo zusammen, ich habe das Modell nochmal grundlegend überarbeitet und folgende Verbesserungen vorgenommen: Das Gehäuse wurde auf 75% verkleinert. Das sieht auch wie ich finde wesentlicher realistischer aus und wirkt filigraner. Der Metallaufsatz wurde abgerundet. Es gibt insgesamt vier Variationen. Einmal unterscheiden sich diese in der Befestigungsart (an Schwelle oder Schiene) und dann in dem Lichtkegel (groß, klein). So kann jeder selbst die Lichtverhältnisse auswählen. Es wurden LOD2 Stufen ergänzt. Alle Variationen unterstützen Tauschtexturen. Neu hinzugekommen sind Kabel als Zubehör. Diese docken automatisch an Gleisfeldbeleuchtung an und bewegen sich mit dieser mit. Gleisfeldbeleuchtung: BA3D0C5A-C20F-4340-87BA-E7141CCFCF1C Kabel für Gleisfeldbeleuchtung 9A452260-20AC-41C7-AA84-712511BD2003 Wichtig nur ab Version V.9.0.2.0 verfügbar! Da man bekanntlich oft selbst betriebsblind ist, vergisst man wichtigsten Dinge ohne es zu merken. Von daher bin über akribische Begutachtungen Verbesserungsvorschläge etc. dankbar. PS: habe ich entsprechend auch angepasst. Viele Grüße Tim
  15. und ich fand es verlockend, diese in Blender zu modellieren ... Die Rundleuchten sind etwa 200 mm breit. So sieht es dann bei Nacht aus. Jetzt frage ich in die Runde. Stimmen die Proportionen und die Lichtverhältnisse? Ich habe mich für das Spot-Light, also den Scheinwerfer entschieden. Das Modell dockt automatisch an den Gleisen an, da es einen _CP_Spline-Kontakt besitzt. Ich überlege mir noch, ob ich einen Art Metallblechaufsatz zur Gleisbefestigung, so wie ihn @rainer.kreuzer in seinem Beitrag gezeigt hat, noch ergänze. Gibt es noch Wünsche? Sollen auch noch andere Farbvarianten dazukommen, oder reicht das Bahngelb? Was noch fehlt, ist die Abschaltung der Emissive-Eigenschaften, d.h., dass sich zwar das Licht ausschalten lässt, nicht aber die Blende. Und bevor ich es vergesse, hier die ID zur Begutachtung als Entwurf: BA3D0C5A-C20F-4340-87BA-E7141CCFCF1C Viele Grüße Tim
  16. Kurztutorial [08] - Wie man ein fehlerhaftes Ereignis mithilfe der Ereignisprotokollierung entlarven und beheben kann Angenommen man hat die EV für eine Gleisbesetztmeldeanlage geschrieben und möchte diese nun flächendeckend auf der Anlage einsetzen. Hier sieht man auszugsweise, wie beim Aktivieren einer Fahrstraße mit dem Schlagwort FS mit GBS-Elementen die GBS-Elemente auf Gelb (Stellung 1) geschaltet werden. Die GBS-Elemente wurden als Liste unter dem Namen GBS Elemente in der Fahrstraße hinterlegt. Wie kann man sicherstellen, dass man sich nicht vertippt hat oder irgendwie wichtige Variablen falsch eingetragen oder gar vergessen hat. Hier hilft einem die Ereignisprotokollierung weiter, denn diese stoppt, falls irgendetwas nicht ganz richtig programmiert ist, wenn diese dementsprechend geöffnet wurde. Ganz praktisch, oder? Zunächst muss man die Ereignisprotokollierung mit der Funktionstaste F12 öffnen. Dann wartet man ab, bis die Anlage aus irgendeinem Grund stoppt. Denn das ist ein Indiz für eine fehlerhaftes Ereignis oder eine fehlerhafte Variable. Zur Fehlerlokalisierung geht man wie folgt vor: Zuerst sucht man nach dem eigentlichen Fehler, der immer rot markiert wird. Attempt to index a nil value heißt zu Deutsch: Versuch, einen nicht vorhandenen Wert anzusprechen / (zu induzieren). Die EV sucht also nach irgendeinem Objekt, findet aber nicht das Objekt, weil der Bezug fehlt, sprich leer ist! „Index“ verrät uns, dass etwas anhand des Index angesprochen wird in Form einer Iteration. Iterieren bedeutet, dass etwas regelmäßig durchlaufen wird und das ist immer bei Schleifen der Fall. Es liegt also ein Schleifenfehler vor bzw. ein Fehler innerhalb einer Schleife vor. Nun muss man das Ereignis, in dem der Fehler auftrat, identifizieren. Man sucht also nach dem zuletzt ausgeführten Ereignis in blau oder man klickt doppelt auf die rote Zeile. Ein Doppelklick auf die rote Zeile öffnet das betroffene Ereignis. Das fehlerhafte Ereignis ist hier Fahrstraße wird aktiviert GBS -> gelb. Und dann sollte man einen Blick in die EV werfen. Wir wissen nämlich nicht, ob eine Variable fehlt oder die EV fehlerhaft ist. Das sagt einem der Fehler leider nicht. In diesem Fall liegt ein EV-Fehler vor, dass der Bezug zum Signal leer ist. Richtig wäre natürlich als Bezug, die Wiederholung auszuwählen. Angenommen wir haben mit der EV alles richtig gemacht so wie im ersten Bild des Kurztutorials dann kann nur eine fehlerhafte Variable Ursache für den Abbruch sein. Dann benötigen wir aber mehr Informationen. Falls also das Ereignis selbst nicht fehlerhaft ist, prüft man was vor dem Ereignis passiert ist. Hier müssen wird diese Zeile betrachten: [20:02:31] Fahrstraße wird aktiviert/deaktiviert -> Einfahr-Signal A00 – Ausfahr-Signal P00, True Hieran können wir also den tatsächlichen Übertäter identifizieren, und zwar fehlt in der Fahrstraße Einfahrsignal A00 – Ausfahr-Signal P00 die Liste mit den GBS-Elementen. So ist es falsch, da fehlt die Liste: So wäre es richtig: Viele Grüße Tim
  17. Kurztutorial [07] - Wofür kann man Wiederholungen einsetzen und wie funktionieren diese? (Viele Wege führen nach Rom) keine Wiederholung Angenommen man möchte vier Biergartenlaternen mit einem Schalter an und ausschalten. Wie könnte man da vorgehen? Nun man kann Hier habe ich den integrierten Schalter, der in V9 neu hinzugefügt wurde, angesprochen, der wesentlich einfacher anzusprechen ist als die Animationen. jede einzelne Laterne in der EV direkt ansprechen. Das ist aber sehr aufwändig und wenn man eine Laterne hinzufügen möchte, muss man viermal an zwei Stellen die EV verändern. Einmal dort, wo die Laterne ausgeschaltet werden soll und an anderer Stelle, wo die Laterne eingeschaltet werden soll. Gibt es eine bessere und einfachere Lösung? Die Antwort lautet ja und hier kommen Wiederholungen ins Spiel. Wiederholungen sind also dann immer gut, wenn ein und dieselbe Sache mehrmals wiederholt werden kann. Wie sieht eine Wiederholung in der EV aus? Erstmal ist eine Wiederholung immer braun gefärbt. Oben steht der Schleifenkopf. Im Schleifenkopf wird die Art der Wiederholung wie zum Beispiel für alle Fahrstraßen mit einem Schlagwort festgelegt. Im Schleifenkörper werden dann die Elemente der Wiederholung durch einen Platzhalter angesprochen. @Wdh ist schon vor belegt. Man kann aber diesen Iterationsnamen jederzeit abändern. Wichtig! In Schleifen darf alles hinzugefügt werden außer Verzögerungen und der Platzhalter muss identisch mit dem im Schleifenkopf und denen im Schleifenkörper lauten. Wiederholung mittels Schlagwörtern Zuerst (1) wählt man das Objekt direkt aus, damit man die richtige Schaltereigenschaft, hier lautet sie Licht, verwendet und sich nicht vertippt. Dann (2) ändert man das Objekt zur Wiederholung. Zuletzt (3) stellt man sicher, dass der Iterationsname aus dem Schleifenkörper identisch mit dem aus dem Schleifenkopf lautet. Hier sieht man, dass man statt acht Einträgen nur noch zwei Einträge benötigt. Die Schleife spricht alle Objekte auf der Anlage an, die das Schlagwort "Laterne" besitzen. Wiederholung mittels einer Liste (Variante A) Getreu dem Motto "Viele Wege führen nach Rom" kann man auch statt einer Wiederholung für Objekte mit einem Schlagwort auch die Wiederholung mittels einer Liste verwenden. Das sieht dann so aus. Der Schleifenkörper bleibt unverändert. Allerdings wurde der Schleifenkopf verändert und hier wurde zuerst vier Laternen mit STRG + C kopiert und dann oben in die Liste im Schleifenkopf selbst eingefügt. Wiederholung mittels einer Liste (Variante B) Hier ist die Wiederholung genau dieselbe wie zuvor nur mit dem Unterschied, dass über die erweiterte Variable die Liste angesprochen wird, über die später jedes einzelne Element aus der Liste angesprochen werden soll. Im Schalter (Auslöser) selbst werden die Biergartenlaternen und der dem Namen Laternen abgespeichert und das Schlagwort Schalter Laterne wird vergeben. Das hat den entschiedenen Vorteil, das nun mehrere Schalter in der Anlage platziert werden können und jeder Schalter (Auslöser) seine dazugehörigen Biergartenlaternen kennt. Dazu habe ich hier eine Beispielanlage gebaut: Demoanlage - verschiedene Wiederholungen.mbp Die Demoanlage soll dazu anregen, die Wiederholung an die eigene Bedürfnisse anzupassen. So kann man eine Gleisbesetzmeldeanlage daraus kreieren, indem man statt dem Ereignis Schalter wird betätigt, das Ereignis Gleiskontakt wird betreten verwendet. Anstatt den integrierten Schalter verwendet man den GBS-Baustein als Signal. Viele Grüße Tim
  18. Kurztutorial [06] - Wie programmiere ich eine vollautomatische Zugnummernanzeige mit zwei Ereignissen? Welche Variablen muss ich wo eintragen: Zuerst benötigt man ein oder mehrere Textfelder, worin später der Zugnamen automatisch hineingeschrieben werden soll. Man platziert für jede Einfahrt in ein Gleis einen Gleiskontakt und weist ihm das Schlagwort "Zugnummer anzeigen" hinzu. Dann erstellt man die Objektvariable Textfeld Zugnummeranzeige und wählt das passende Textfeld aus. Dasselbe macht man nun für die Ausfahrt aus einem Gleis. Was sind erweiterte Variablen und Eigenschaften? Kurz gesagt versteckt sich dahinter das Konzept von Objekt Orientiertem Programmieren (kurz OOP). Man kann sich das in etwa so vorstellen. Man baut einen Bauplan mithilfe der EV und legt genau fest, welche Eigenschaften und Variablen ein Objekt (das ist hier der Gleiskontakt) besitzen kann. In einer Anlage können also mehrere Objekte wie Gleiskontakte den gleichen Variablennamen haben wie zum Beispiel Textfeld Zugnummeranzeige. Das ist ganz praktisch, weil man nicht für jedes Objekt ein einzelnes Ereignis schreiben muss. Nur der Inhalt also der Bezug zum Objekt bzw. Gleiskontakt ist ganz individuell und abhängig davon, welcher Wert in der erweiterten Variable steht, verhält sich auch die EV intern ganz verschieden. Es gibt verschiedene Variablenbezüge. Hier ist ein Auszug welche du bereits in deiner Anlage verwendet hast und noch werden wirst: Objekt: Hier wählt man Objekte wie Signale oder auch Schalter etc. aus. Fahrstraße: Hier wählt man Fahrstraßen aus, die zu einem Objekt gehören Nun, was sind Eigenschaften eines Objekts? Das sind interne Bezüge die, Neo in seinem Programm festgelegt hat. So hat ein Objekt immer den Namen als Eigenschaft. Manche Objekte habe je nach Ausstattung aber noch mehrere Eigenschaften Wie wird der Zugname angezeigt? Jeder Gleiskontakt ist ein Objekt und besitzt die erweiterte Variable. Der Gleiskontakt kennt also seine individuelle Zugnummernanzeige, die man in den Objektvariablen unter den Namen "Textfeld Zugnummeranzeige" abgespeichert hat. Die Zugnummernanzeige steht also in Beziehung mit dem Gleiskontakt, mit dem das Ereignis ausgelöst wird. Das Ereignis Gleiskontakt wird betreten hat aber zwei Auslöser. Einmal den Gleiskontakt und einmal das Fahrzeug. Nun möchten wir aber nicht den Namen also die Eigenschaft des Gleiskontaktes anzeigen, das wäre ja irgendwie komisch, sondern die des Fahrzeuges. Deswegen muss man genau darauf achten, was man als Auslöser ausgewählt. Wie wird der Zugname wieder gelöscht? Hier ist es eigentlich ganz simpel, da das Ereignis Gleiskontakt wird verlassen (Zugnummer löschen) dem Ereignis Zugnummer anzeigen ziemlich ähnelt bis darauf, dass hier der Text leer ist und somit die Zugnummer gelöscht wird. Viele Grüße Tim
  19. Kurztoturial [05] - Wie man (zufällige) Verzögerungen einbaut, damit die Zugfolge nicht so dicht ist Zuerst möchte ich dir zeigen, wie du eine Verzögerung mit fester Dauer in das Ereignis "schieben" kannst. Das sieht dann so aus. Hier wird die Ausfahrt für den Nachbar erst 120 Sekunden später gestellt. Wenn du das hinbekommen hast, kannst du im nächsten Schritt probieren, die Dauer zufällig zu gestallten. Dafür musst du Zahl (Zufall) auswählen. Unter (1) trägst du die minimale Zeit ein und unter (2) die maximale Zeit. Im Ereignis steht dann auch [minimale Zeit] bis [maximale Zeit]. Viele Grüße Tim
  20. Hallo Markus, ich Dussel hatte gestern vergessen, die Markierung im Beitrag richtig zu setzen. Statt GK SBF Ausfahrt verlassen hatte ich ursprünglich GK SBF Ausfahrt verlassen markiert und deswegen läuft das Ereignis ins Leere, da es keinen Aufruf für das Schlagwort GK SBF Ausfahrt in der EV gibt. Richtig ist natürlich GK SBF Ausfahrt verlassen. Das müsstest du bei allen vier Ausfahrsignalen eintragen. Denke bei der Aktivierung des Schattenbahnhofs daran, diesen erstmal mit allen Zügen zu befüllen und dann eine einzige Ausfahrtfahrstraße manuell zu stellen. Viele Grüße Tim
  21. Kurztutorial [04] - Wie man einen Schattenbahnhof möglichst einfach mit Fahrstraßen steuern kann Welche Vorkehrungen muss ich treffen? Jedem Ausfahrsignal des Schattenbahnhofs wird das Schlagwort GK SBF Ausfahrt verlassen vergeben. In der Fahrstraßenvariable SBF Einfahrt wird die Fahrstraße eingetragen, die als Einfahrt direkt zum eben ausgewählten Ausfahrtsignal führt. Für das Signal SBF Ausfahr-Signal P 00 muss du also die Fahrstraße Einfahr-Signal A00 - Ausfahr-Signal P00 eintragen Für das Signal SBF Ausfahr-Signal P 01 muss du also die Fahrstraße Einfahr-Signal A00 - Ausfahr-Signal P01 eintragen usw. Gleichzeitig trägt man in einer weiteren Fahrstraßenvariable SBF Ausfahrt (Nachbar) jeweils die rechte Nachbarausfahrtfahrstraße ein. Für das Signal SBF Ausfahr-Signal P 00 muss du also die Fahrstraße Ausfahr-Signal P01 - Blocksignal C03 eintragen usw. Beim letzten Signal beginnst du wieder von vorne, also das Signal SBF Ausfahr-Signal P 03 erhält die Fahrstraße Ausfahr-Signal P00 - Blocksignal C03. Wie funktioniert die EV dafür: Wenn das Ausfahrtsignal vollständig passiert wurde, dann wird die Einfahrtfahrstraße (1) auf dasselbe Gleis gestellt. Das wird gemacht, damit das Gleis, das davor durch einen Zug geräumt wurde, wieder belegt wird. Gleichzeitig wird die Ausfahrt für den Nachbar (2) gestellt, damit nun ein anderer Zug aus den Schattenbahnhof fährt. Dieser muss aber eine gewisse Zeit warten bis der Block davor freigeräumt ist. Das ist dann in deinem Fall der Block bis zum Blocksignal C03. Wichtig! Der Schattenbahnhof muss zum Start händisch mit allen Zügen befüllt werden. Dann muss eine einzige Ausfahrtfahrstraße händisch aktiviert werden. Danach läuft die Schattenbahnhofsteuerung ganz von allein. Ich hoffe, ich habe beim Erklären nichts Wichtiges vergessen. Du kannst auch in die Beispielanlage schauen: E1EAE6AA-367C-4787-87FF-14EF4AE390D4 Viele Grüße Tim
  22. Kurztutorial [03] - Wie man einen Selbstblock mit nur einem einzigen Ereignis steuern kann Was ist überhaupt ein Selbstblock? Ein Selbstblock sichert einen Blockabschnitt ab, damit sich darin immer nur ein einziger Zug befindet. Das bedeutet, dass wenn ein Zug das Blocksignal passiert, dann geht es auf Halt (Hp0), damit andere Züge nicht auf den vorausfahrenden Zug drauffahren können. Im Gegensatz zu reinen Fahrstraßen geht das Blocksignal aber wieder selbständig auf Fahrt (Hp1), sobald der Blockabschnitt vollständig geräumt ist. Welche Variablen müssen wo eingetragen werden? Jede Blockfahrstraße erhält das Schlagwort "Selbstblock". Wie funktioniert nun die EV dazu? (korrigiert) Schaubild wurde überarbeitet Wenn eine Fahrstraße mit dem Schlagwort "Selbstblock" nicht aktiv ist, also deaktiviert wird, dann wird die Fahrstraße erneut aktiviert. Wichtig hierbei ist, dass die Option Anforderung vormerken deaktiviert bleibt. Diese benötigt man nur, wenn eine aktive FS erneut angefordert werden soll. Hier ist es aber so, dass ja durch die EV die Fahrstraße erneut aktiviert wird. Eine Dopplung wäre hier unzulässig. Bei der Aktivierung der Fahrstraße können zwei Fälle wiederum auftreten: Die Fahrstraße ist zum Zeitpunkt der Aktivierung durch einen Zug belegt. Die FS ist deswegen blockiert und wartet auf Freigabe, weil der Zug nur mit der Zugspitze das Fahrstraßenende erreicht hat aber der Block immer noch durch die angehängten Wagen blockiert ist. Folglich bleibt das Signal auf Halt. Die Fahrstraße ist zum Zeitpunkt der Aktivierung frei und wird sofort aktiviert und das Signal geht auf Fahrt. Am Ende bitte nicht vergessen die Blockfahrstraße einmal händisch zu aktivieren! Ich hoffe die Beschreibung hilft dir weiter. ID Demoanlage: E1EAE6AA-367C-4787-87FF-14EF4AE390D4 Viele Grüße Tim
  23. Super, das hast du prima und strukturiert umgesetzt. Jetzt kannst du die Blocksignalfahrstraßen anlegen. Für die Blocksignalfahrstraßen gilt eigentlich nur Folgendes zu beachten: Achte auch hier wieder darauf, dass du die Vorsignale unwirksam schaltest, indem du dort "Nichts unternehmen" anklickst. Viele Grüße und einen schönen Abend Tim
  24. Könntest du bitte die Anlage erneut aktualisieren, damit ich sehen kann, was du bereits schon umgesetzt hast. Meinst du damit den Schattenbahnhof samt EV? Kurzgesagt ja, näheres folgt in der Beschreibung. Wenn der Schattenbahnhof funktioniert, können wir gerne weitermachen. Ich werde wieder dazu ein kleines Kurztutorial schreiben. Viele Grüße Tim
  25. Kurztutorial [02] Wie man einzelne Elemente einer Fahrstraße unwirksam schaltet Standardmäßig ist immer das letzte Element mit "Nichts unternehmen" belegt. Bei allen Zwischenelementen wird immer die erste Signalstellung vor belegt. Soll ein Signal unberührt bleiben (z.B. gekoppelte Vorsignale mit Hauptsignalen), so wählt man "Nichts unternehmen" für "Fahrstraße wird aktiviert" und "Fahrstraße wird aufgelöst" aus. Viele Grüße Tim
×
×
  • Neu erstellen...