Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Nicht funktionierender Kreisverkehr - Programmierfehler - Nicht genügend Frames?

Empfohlene Beiträge

Geschrieben

Ich möchte heute ein Problem oder auch eine Beobachtung ansprechen. Ich meine festgestellt zu haben, dass das MBS, wenn es um Zähler und Timer(Verzögerungen) geht nicht zuverlässig arbeitet. Seit mehreren Wochen beschäftige ich mich mit dem Thema und komme nicht weiter. Zwei Vermutungen haben sich bei mir verfestigt. Nummer eins: Das Problem liegt zwischen meinen Ohren. Ich habe immer noch große Wissenslücken das MBS betreffend. Nummer zwei: Es sind mehr als 60 Frames nötig, die ich permanent habe, um das Problem zu verhindern. Leider habe ich nur einen 60 Hz Monitor.

Ich habe einen Auszug aus der Anlage, an der ich gerade bastele, gemacht und mein Script soweit vereinfacht, dass das Problem besser erkannt werden kann. Das Prinzip ist hier: Ein Fahrzeug fährt nur dann in den Kreisverkehr, wenn die Tracks links und rechts von der Einfahrt und die Einfahrt in den Kreisverkehr frei sind. Das funktioniert auch wenn ich ein Fahrzeug auf einen der Tracks stelle. Sobald aber ein gewisser Verkehr vorhanden ist, gibt es irgendwann Stillstand.

Wenn ein Fahrzeug auf den Kreisel zufährt ist der geplante Ablauf der folgende:

  • Es wird eine zufällige Ausfahrt aus dem Kreisel ermittelt.

  • Das Fahrzeug fährt auf den Haltekontakt, der den Event GoClockWise aufruft.

  • GoClockWise lässt das Fahrzeug erst losfahren wenn frei ist. Siehe oben. Der Name des Events stellt nicht mehr die Funktionsweise dar!

Die Scriptfragmente, die für die Fahrt im Kreisel zuständig sind, kommen hier:

-- Haltekontakt für Kreisverkehr - Halt contact for rotary traffic

if contact.variables["Type"] == "RT-Halt" then

track = contact.variables["Crossroad"]

$("GoClockWise"):invoke(contact, track, track.variables["WaitSeconds"])

end

RT-Halt ist ein Teil des Events ServiceContact.

-- ====================================

-- GoClockWise

-- ====================================

if not deferredCall then

print("GoClockWise Start")

defer(WaitSeconds, "GoClockWise")

elseif deferredCall == "GoClockWise" then

if #layout:getVehiclesOn(Contact.variables["Track1"]) == 0 and

#layout:getVehiclesOn(Contact.variables["Track2"]) == 0 and

#layout:getVehiclesOn(Contact.variables["Track3"]) == 0 then

local contactNumber = Contact.variables["Halt"]

print(Track.name)

print("Kontaktnummer: " .. contactNumber)

print("Haltekontakt: " .. Track.variables["HaltContacts"][contactNumber].name)

StartVehicle(Track.variables["HaltContacts"][contactNumber], Track.variables["Speed"])

return

else

print("Vehicle on track!")

defer(1, "GoClockWise")

end

end

Beinahe hätte ich die folgende Funktion vergessen:

-- Fahrzeug auf Haltkontakt starten - Start vehicle on halt contact

function StartVehicle(Contact, Speed)

local list = layout:getVehiclesOn(Contact)

for i, v in ipairs(list) do

v.currentSpeed = Speed

end

end

Die Anlage ist angehängt. Ich bin gespannt auf die Antworten.

Viele Grüße

wkh

Kreisverkehr.mbp

Geschrieben

Hallo @wkh ,

für Code Blöcke hat der Editor seit Umstellung der Forensoftware einen neuen Menüpunkt:
Du findest ihn jetzt auf dem ersten Knopf im Header:

Code Block.jpg

Viele Grüße
Götz

Geschrieben
  • Autor

Hallo Goetz,

Danke, ich kam nicht auf die Idee darauf zu klicken.

Gruß wkh

Geschrieben

Hallo @wkh ,

Also das Problem liegt schon in der Anlage (nicht zwischen den Ohren). Folgende drei Punkte sind mir aufgefallen, nach deren Korrektur der Kreisverkehr ohne Probleme lief (zumindest solange ich das habe laufen lassen B|):

  1. Die Servicekontakte vom Typ "RT-Halt" liegen zum Teil zu weit auf der Einmündung, so dass ein Fahrzeug sich damit selbst blockiert. Ich habe diese Kontakte auf das zweispurige Straßenstück zurück geschoben, so dass diese keinen Berührungspunkt mehr mit der Einmündung hatten.

  2. Bei den beiden Servicekontakten 6RT-Halt-SO und 6RT-Halt-SW war bei den Einstellungen eine Beschleunigung auf 30 km/h statt Abbremsen auf 0 eingestellt, so dass Fahrzeuge ungeprüft in den Kreisverkehr rauschten. Sehr ungesund

  3. Stelle sicher, dass bei allen Fahrzeugen die vordere und hintere Kupplung ausgeschaltet sind (Bei Zugmaschine und Anhänger als eine Einheit betrachtet). Ansonsten fährt ein nachfolgendes Fahrzeug hierauf auf und schiebt es schlimmstenfalls einfach weiter. Nur nebenbei erwähnt: Natürlich sollte bei allen Fahrzeugen das automatische Abbremsen und Beschleunigen eingeschaltet sein.

Ich hoffe, das hilft Dir weiter.

Viele Grüße,
Wolfgang

Bearbeitet von prinz

Geschrieben
vor 40 Minuten schrieb prinz:

Stelle sicher, dass bei allen Fahrzeugen die vordere und hintere Kupplung ausgeschaltet sind (Bei Zugmaschine und Anhänger als eine Einheit betrachtet).

Dazu folgender Lua-Code mit dem Du erreichst, dass alle unbelegten Kupplungen eines Verbandes (also vorne und hinten am Verband) ausgeschaltet werden:

local t=layout:getVehicleGroup(Vehicle)
-- First Vehicle
t[1].couplers[0].enabled = t[1].couplers[0].connectedCoupler ~= nil
t[1].couplers[1].enabled = t[1].couplers[1].connectedCoupler ~= nil
if #t > 1 then
  -- Last vehicle
  t[#t].couplers[0].enabled = t[#t].couplers[0].connectedCoupler ~= nil
  t[#t].couplers[1].enabled = t[#t].couplers[1].connectedCoupler ~= nil
end
Geschrieben
  • Autor

Hallo Wolfgang, hallo Phrontistes,

vielen Dank für eure Antworten. Die Einstellung der Kontakte habe ich einfach übersehen. Manchmal wird man betriebsblind wenn man zu viel hin und her probiert. Über die Kupplungen habe ich auch schon nachgedacht. Bei meiner Testanlage habe ich das aber wieder vergessen. Ich hatte es vorher auch nicht über die EV sondern manuell gemacht. Ich werde es in meinen Initialisierungskontakt für die Fahrzeuge integrieren, dann kann ich das Thema wieder vergessen. Der Hinweis, dass es für das MBS Grenzen des Machbaren gibt hat mir auch geholfen. in den letzten Wochen habe ich mich sehr intensiv mit der Steuerungsproblematik für bestimmte Verkehrssituationen beschäftigt und dabei auch verschiedene Lösungsmöglichkeiten durchprobiert. Im Ergebnis gab es immer einen Punkt wo etwas, was meiner Meinung nach funktioniert haben müsste, gescheitert ist. Das MBS ist aber trotzdem ein tolles Programm und macht viel Spaß. Die Herausforderung ist dann eher die Vermeidung von kritischen Situationen als die perfekte Lösung zu suchen.

Viele Grüße

Werner

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.