Jump to content

HaNNoveraNer

Mitglieder
  • Gesamte Inhalte

    1532
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von HaNNoveraNer

  1. Ich habe jetzt dazu passend ein Fahrstraßenmodul gebaut. Neue Fahrstraßen erzeugt man durch kopieren der betroffenen Gleise in globale Listen: FS1, FS2, FS3 u.s.w. für alle Fahrstraßen. Wichtig ist, die Startsignale alle korrekt zu benennen: FSSig0001 bis FSSig9999. Das steuert den ganzen Ablauf! Nur ein Anforderungskontakt und ein Aufhebungskontakt werden benötigt. Die möglichen Fahrstraßen stehen im Signal. Aktivierte Fahrstraßen verriegeln sich gegenseitig. Ich werde das noch um unterschiedliche Routen für unterschiedliche Züge und um eine autom. Weichenschaltung erweitern. Hier die Testanlage: (Wenn Du den Wagen wegnimmst, fährt der Zug weiter. Natürlich vorher die Anlage starten!) (Bitte ein Gleis besetzen BEVOR der Zug den Anforderungskontakt überfahren hat, dann hält er wieder an) Bremsen.mbp
  2. Hi Ich habe in einem Modul eine Tabelle als Variable angelegt. Darin habe ich mehrere Gleise gespeichert. Jetzt möchte ich gerne sehen, welche Gleise das waren. Daher möchte ich sie wieder alle auf einmal selektieren lassen. Wie ist das möglich? Wenn man in Lua Schlagwörter zuweisen könnte, dann könnte ich alle Gleise beim Programmstart mit dem Tabellennamen versehen. Damit wären sie zu filtern für die Selektion. Geht aber wohl nicht.
  3. Du könntest abfragen, ob beim Zug das Schlagwort vehicle.variables["Güterzug"] existiert. ~=nil Oder eben alle anderen Schlagwörter. Ich programmiere auch gerade so eine Logik. Gehe aber etwas anders vor, so daß der Zug am Einfahrsignal eine oder mehrere Fahrstraßen über einen Endlostimer "anfordert" bis sie frei ist. Der weiß genau wer er ist und wohin er will/darf.
  4. Für weitere Funktionen in dem Fahrstrassenmodul, daß ich gerade baue, benötige ich folgendes: s="FSSig0001" local s2=$(s).variables["fahrstrassen"] Das gibt aber einen Fehler. Wie kann ich eine Variable im Objekt ansprechen, wenn ich den Objektnamen nur als string habe? P.S. Habs gerade gefunden: local signal=layout:getEntityByName(s) local s2=signal.variables["fahrstrassen"]
  5. Perfekt, dann brauch ich das Objekt ja nur verdoppeln, um es speichern zu können. Dann könnte man es doch gleich mit sich selbst gruppieren, wenn ihr das aktiviert
  6. Hi Gibt es eine Möglichkeit Objekte mit ihren Schlagwörtern und Variablen in andere Anlagen zu übernehmen? Zum Beispiel einen Gleiskontakt mit 12 Schlagwörtern und 44 Variablen :-) Exportieren als .mbe funktioniert mit dem nicht. Das man andere Anlagen komplett importieren kann, hab ich ausprobiert. Aber auch einzelne Objekte, Ereignisse oder Lua Scripts? Grund: Ich habe mehrere Dinge in kleinen Beispielanlagen entwickelt und möchte diese nun in vorhandene andere Anlagen übernehmen.
  7. Warum nicht auch vorne Module ohne Hintergrund anbauen? 300 ist nicht viel.
  8. Jaja, aber Du hast die Objekte MANUELL umbenannt: ("Gleis 1"), $("Gleis 2"), $("Gleis 3") Normal heißen die Gleise nach dem Einsetzen alle gleich. Dann würde das stehen ("5201","5201","5201"). Das wäre unübersichtlich. Meine Frage bezog sich aber auf die direkte Abfrage EINES Gleises, ohne umbenennen mit dem Lua Befehl.
  9. getVehiclesOnTrack(Gleis) Dabei ist Gleis doch der Name des Gleisobjekts und nicht die ID? Wenn ich nun ein Gleis abfragen möchte, was genau den gleichen Namen hat wie 5 andere?
  10. Hallo Ich suche eine Möglichkeit, ein unter EREIGNISSE stehendes Script EINMALIG auszuführen, ohne es einem Ereignis zuzufügen. Es geht nur um das einmalige initialisieren bestimmter Objekte der Anlage. Wie würde man das realisieren? Wozu sind diese Scripte? Wann werden sie ausgeführt? Gruß Thomas
  11. Ich habe das mit den Gleisen noch nicht ganz kapiert. Die haben ja alle den gleichen Namen "1610" (Bezeichnug des Herstellers) oder so. Wie kann man die denn unterscheiden? Und kann man auch erkennen, ob ein Gleis eine Weiche ist? Und kann man die Weiche irgendwie flankenschützen/sperren? Achja: Kann ich eine Aktion in einer Endlosschleife aufrufen, bis ein bestimmtes Ereignis eintritt? Gibt es da programmintern einen Scheduler, der die Prozessorzeiten für die Aktionen verwaltet? Wenn ich mit Fragen zu viel nerve, einfach sagen! ;-)
  12. Hi Ich kann Gleis befahren und Gleis verlassen abfragen als Ereignis. WIe kann ich aber den Status Gleis besetzt abfragen? Muß ich mir das aus den beiden Ereignissen oben selber irgendwo merken?
  13. Vorher habe ich das Modul weiter optimiert, so daß es jetzt für beliebige Kontakte und Signale nur EIN Modul gibt. Das MBS scheint ja dann verschiedene Instanzen für die Variablen und Verzögerungen anzulegen. Sehr schön. Gesteuert wird es über Schlagwörter "Brems, Stop, Bremssignal". Die Variablen am Bremskontakt, Stopkontakt und am Signal parametrieren das Ganze. (Zielgeschwindigkeit, Abstand, Signalname des zugehörenden Bremssignals) Die original Deceleration wird auch wieder hergestellt. Daher ist keine Codeänderung in LUA mehr nötig. Bremsen.mbp
  14. Das kommt von Timba. Ich habe versucht aus seinen, Deinen und meinen Ideen das Beste zusammenzufügen. Ich baue aber noch ein paar Variablen ein für Signalname, Zugname, Beschleunigungsreset, ABstand u.s.w. Dann braucht man das nur an einer Stelle zu editieren. Außerdem vielleicht ein Flag, das bewirkt, daß der Abstand auf gerader Strecke automatisch berechnet wird. Und irgendwie sollte noch eine Belegtmeldung realisiert werden, so daß vorhergehende Blöcke erkennen können, ob das Zielgleis frei ist.
  15. Eine mitfahrende Kamera über den Fahrzeugen wäre toll. Mit 360° Schwenkmöglichkeit und begrenztem Zoom/Abstand. Gruß Thomas
  16. Hier nochmal die "bereinigte" Anlage. Da muß Du nichts machen, nur gucken und staunen ;-) Da könnt ihr selber mal mit Bremsverzögerung und Geschwindigkeit rumprobieren. Bremsen.mbp
  17. Durch den Bremsvorgang legt er 0.5 * a * t^2 weniger Strecke zurück, als ohne den Bremsvorgang. Das muß man berücksichtigen, daher der Faktor 0.5 Hier die Anlage dazu. Ich habe dafür eine Tutorial Anlage umgebaut, um zu zeigen wie kompliziert es früher war und wie einfach es mit dem Kontakt und LUA geht. P.S. Signal auf HALT lassen, Zug manuell Geschwindigkeit geben. Nur das automatische Bremsen ist realisiert. Bremsen.mbp
  18. Hallo Götz Ich habe meinen Code oben angepaßt. Funktioniert jetzt einwandfrei mit nur EINEM Kontakt. Es lag nur an dem Faktor 0,5 für den Bremsweg. Das kann ich mir nicht erklären. Woher kommt der? Jetzt müßte man nur noch automatisch den Abstand zwischen dem Kontakt und dem Signal berechnen können. Also mit LUA die Gleislänge dazwischen auslesen können. Nochmal was anderes: WIe kann ich ein bißchen debuggen? Also print(irgendwas) oder Variablen anzeigern. Geht das? Gruß Thomas
  19. @ Goetz: Ja, so hatte ich mir das gedacht. Bei der Anlage habe ich 1:1 eingetragen. Gebaut wurde sie mal in H0. if not deferredCall then if $("Signal2").state == 0 then vehicle.targetSpeed = vehicle.currentSpeed local Speed = vehicle.currentSpeed / 3.6 -- [m/s aus km/h] local Strecke = 60 -- [m] local Decel = vehicle.deceleration Bremsweg = ((Speed ^ 2) / Decel ) * 0.5 -- warum halbieren? if Bremsweg > Strecke then Decel = ((Speed ^ 2) / Strecke) * 0.5 -- warum halbieren? vehicle.deceleration = Decel vehicle.targetSpeed = 0 else Delay = (Strecke - Bremsweg) / Speed defer(Delay, "Verzögerung") end end elseif deferredCall == "Verzögerung" then if $("Signal2").state == 0 then vehicle.targetSpeed = 0 end end
  20. Hi Timba Sieht gut aus. Falls die Bremskraft geändert wird, würde ich aber den gemerkten Wert wieder zurückschreiben. Ist ja nur im Notfall nötig. Und wie positionierst Du den 2. Kontakt, so daß er garantiert immer besetzt wird? Wenn er nicht ganz erreicht wird, würde er ja sonst beim Anfahren nochmal die Geschw. auf 0 setzen. Die meisten Konstanten und den Faktor in Deinem Code habe ich auch noch nicht durchschaut :-)
  21. Hi Eric I am shure that works fine. But that's not my way, because you are setting the deceleration to a value depending on the train speed and the distance. The deceleration is a fixed value depending on the mass of the train. My way is, that the train speed is not changing by passing the contact. Each train should decelerate at his own position and with its parametered deceleration. Thomas
  22. Interssanter Thread. Aber wie macht man es nun am Besten, daß die Lok sicher und möglichst realistisch auf den Punkt stehen bleibt? Leider kenne ich das MBS noch nicht gut genug, und weiß nicht, ob und wie man die benötigten Werte ermitteln kann. Vielleicht könnt ihr mir helfen? Annahmen: Nur ein Gleiskontakt soll nötig sein. Züge mit unterschiedlichen Geschw. kommen an einem Gleiskontakt an. Sollen nicht gleich bremsen sondern erst nach einer gewissen Zeit. Sollen dann linear runterbremsen auf 0. Was braucht man in LUA? Geschwindigkeit des Zugs. (Maßstab?) Eingestellte Beschleunigung (negativ) des Zugs. Abstand des Kontakts vom Haltepunkt (Irgendein Modell wie Signal oder was Unsichtbares) . (Maßstab?) Timer starten bei Kontakauslösung (nach der Berechnung) Einfluß von Steigung und Gefälle? Eventuell mit Faktortabelle? Was muß man errechnen? Bremsweg des Zugs bis auf 0, abhängig von der eingestellten negativen Beschleunigung. Zeit, nach der die Zuggeschw. (tragetSpeed) über einen Timer (geht das, genau genug?) auf 0 gesetzt wird, um den Bremsweg zu erreichen. Würde das funktionieren? Kann man die Werte ermitteln? Gruß Thomas
  23. Mit Glanz+Reflektion kommen wir der Sache schon näher. Ich werde das mal am Blender Cube ausprobieren. Danke.
  24. Hallo Feuerfighter Das sieht doch schonmal ganz gut aus. Jetzt müßte ich nur noch wissen, was Du dazu im Blender eingestellt hast ;-) P.S. Wie stellt man hier eigentlich im Forum den Zeileabstand ein. Ist bei mir viel zu groß. Gruß Thomas
  25. Dann müsste es doch Blender 2.79 Modelle geben, die glänzen? Gibt es da ein Beispielmodell?
×
×
  • Neu erstellen...