Jump to content

Empfohlene Beiträge

Geschrieben

Tag, ich bin neu hier (2 Monate mit 3D-MBS) und habe eine knifflige Frage:
Ist es möglich, Objekte präzise an einen bestimmten Ort (x,y,z) als Animation zu steuern?

Ich habe eine Hub-Vitrine als Modul zum Einbau entworfen (FE5D8849-C63F-4CE1-86D9-4D7760E64179). Ich habe mir nun mal so beholfen, dass ich den Aufzug mit einem Fahrzeug verknüpft habe, das senkrecht an einer virtuellen Spur läuft. Das Problem ist der präzise Stopp. Das bedeutet, dass ich die Vitrine nur sehr langsam laufen lassen kann, sonst wird das von den Loks nicht als durchgehende Fahrbahn toleriert. Ich habe aber auch überlegt mit hoher Geschwindigkeit zu starten, und dann kurz vor dem Ziel abzubremsen. Das war mir aber dann zu komplex in der EV.

Hat jemand eine gute Idee, wie man das etwas eleganter lösen kann? Bitte nicht zu viel Kritik an meiner etwas urchigen und hölzernen EV - ich bin ein Newby und noch am lernen...
Gruess aus der Schweiz
Christof

Das ganze ist eine nachträgliche Rekonstruktion einer Vitrine, die ich für meine rale Anlage gebaut hatte YouTube: 

 

Geschrieben
vor 1 Stunde schrieb Fifof:

Ist es möglich, Objekte präzise an einen bestimmten Ort (x,y,z) als Animation zu steuern?

Hallo Fifof,

du kannst ein Objekt mittels Lua Befehl akkurat an eine Position setzen. Aber das ist dann keine Animation.
Damit könntest du beim Stopp eine Korrektur vornehmen - mit einem sichtbaren kurzen Ruck.

Für die Animation hast du schon den richtigen Ansatz gewählt, indem du das Hilfsfahrzeug an Kontakten stoppst.
Wenn du die Bremskraft verringerst, ist die Ungenauigkeit bei den Stopps eventuell geringer, weil das Fahrzeug dann sanft abbremst und kurz vor dem Stopp nur noch sehr langsam fährt. Aber eine kleine Ungenauigkeit wird bleiben.

Alternativ kannst du (in Blender, Sketchup etc.) das komplette Regal mit Animationen und Fahrspuren als eigenes Modell kreieren. Das wäre dann (wie Schiebebühnen und Drehscheiben) sehr präzise.

Deine Idee finde ich übrigens sehr schön (y)

Viele Grüße
Götz

Geschrieben

Ich habe alles versucht und bei meinen Versuchen hat ein längerer Bremsweg die grössere Ungenauigkeit ergeben. Mit Blender und Sketchup habe ich noch nicht begonnen...

Geschrieben
vor 7 Minuten schrieb Goetz:

Aber eine kleine Ungenauigkeit wird bleiben.

Mein Vorschlag wäre, über die EV die Geschwindigkeit des Hilfsfahrzeugs beim Betreten eines normalen Gleiskontakts auf "0" zu setzen und den Haken bei "Ist-Geschwindigkeit setzen" zu aktivieren. Dann bleibt das Fahrzeug abrupt stehen und sowohl Geschwindigkeit als auch Bremskraft spielen keine Rolle.

HG
Brummi

Geschrieben (bearbeitet)

 

vor 5 Stunden schrieb Fifof:

Ist es möglich, Objekte präzise an einen bestimmten Ort (x,y,z) als Animation zu steuern?

Ja, das geht (mit einer Zeile Lua). Anbei ein Konstrukt, mit dem der SX1 (den Du als Antrieb nehmen solltest!) mit einer Abweichung von weniger als 1/10 mm am Gleiskontakt "TC stop" anhält.

20250504 SX1 exakt anhalten.mbp

Nachtrag: Die (winzige) Abweichung wird jetzt in einer Textbox angezeigt.

Bearbeitet von Phrontistes
mbp ausgetauscht
Geschrieben

Hallo,

vor 4 Stunden schrieb Goetz:

Alternativ kannst du (in Blender, Sketchup etc.) das komplette Regal mit Animationen und Fahrspuren als eigenes Modell kreieren. Das wäre dann (wie Schiebebühnen und Drehscheiben) sehr präzise.

... ich habe auf die Schnelle was gebastelt...
Bild001.jpg.c44e21912d8c027a06a75f8cc7579b98.jpg

... und das Modell als Entwurf hochgeladen... 4AEDA530-740C-43F0-8A79-485E99974E3C

Die Vitrine hat 9 Stellplätze und wird wie eine Weiche angesteuert.

Wenn Interesse besteht, werde ich das Modell (optisch) noch etwas verfeinern und in den Katalog bringen.

Gruß
EASY

Geschrieben (bearbeitet)

Extrem! Und ich habe Tage lang gewurstelt...

Ja, bitte richtig cool aufpeppen!

Bearbeitet von Fifof
Geschrieben

Ich bin überwältigt, da kommt man mit einer unausgegorenen Idee und innert Stunden hagelt es an guten Lösungsansätzen. "Da werden Sie geholfen" :D

Geschrieben

Hallo @Goetz,

jetzt wäre es schön, wenn Du uns einen Lösungsansatz zeigen könntest, wie ermittelt wird, welche Ebene unbesetzt bzw. besetzt ist....

Viele Grüße Little

Geschrieben (bearbeitet)
vor 50 Minuten schrieb Little:

wie ermittelt wird, welche Ebene unbesetzt bzw. besetzt ist....

Hallo Little,
auf die Schnelle fällt mir folgendes dazu ein:

Wie wäre es mit der Bedingung "Fahrzeug befindet sich zwischen zwei Gleiskontakten"?
Man braucht ja in der Vitrine je Ebene zwei Kontakte, um den einfahrenden Zug zu stoppen.

Alternativ ginge auch "Fahrzeug befindet sich auf einem Gleiskontakt", wenn man Kontakte in die Mitte setzt, um Züge mittig in der Vitrine zu stoppen.

Viele Grüße
Götz

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben (bearbeitet)

Hallo @Fifof, hallo @EASY, hallo @Little, hallo @Phrontistes, hallo @Roter Brummer,
hier ist mein erster Versuch einer Automatiksteuerung für die Vitrine von EASY auf der Anlage von Fifof:

Vitrinenautomatik.mbp

Bei Betätigung des Tasters wird zufällig eine besetzte Etage ausgewählt, auf Anlagenhöhe positioniert und der Zug dieser Etage (nach erreichen der Position) gestartet.
Bei Rückkehr des Zuges wird zufällig eine freie Etage ausgewählt und für die Einfahrt auf Anlagenhöhe gebracht.
Für die Dauer der Zugfahrt wird das Regal auf Etage 9 abgesenkt.

Aktionen wie die Ausfahrt des Zuges sind um eine Sekunde verzögert, weil ich finde dass das netter aussieht.

In Lua geht es schlanker, weil man lokale Variablen für die Zwischenschritte anlegen und die Länge der Liste verwenden kann:

-- besetzte Etage finden, auf Anlagenhöhe bringen und Zugstart aktivieren

if $("Taster Zug starten").state == 0 then
  local l = {}
  local t = layout:getEntitiesByKeyword("Vitrinenstopp")

  for i, Wdh in ipairs(t) do
    if #layout:getVehiclesOn(Wdh) > 0 then
      table.insert(l, Wdh)
    end
  end

  $("Vitrine").variables["Kontakt"] = l[math.random(#l)]
  $("Hub-Vitrine").state = $("Vitrine").variables["Kontakt"].variables["Etage"]
  $("Vitrine erreicht Position").enabled = true
end

und

-- freie Etage finden und auf Anlagenhöhe bringen

local l = {}
local t = layout:getEntitiesByKeyword("Vitrinenstopp")

for i, Wdh in ipairs(t) do
  if not (#layout:getVehiclesOn(Wdh) > 0) then
    table.insert(l, Wdh)
  end
end

local k = l[math.random(#l)]
$("Hub-Vitrine").state = k.variables["Etage"]

Viele Grüße
Götz

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben

Gallo Goetz

Danke für die Steuerung

Ich habe sie insofern abgeändert, dass nach Zugausfahrt das Gleis 1 (statt 9) angefahren wird.
Auch nach Zugeinfahrt wird automatisch 1 angesteuert. Das ist ja die Präsentationsansicht während dem Nichtgebrauch.

Gruess us de Schwiiz
Fifof

Geschrieben

Fallo Fifof (sorry, der musste sein :D)

eine Macke hat meine Steuerung noch:
Ich prüfe weder bei der Ausfahrt, ob in der Vitrine überhaupt ein Zug steht. Noch prüfe ich bei der Einfahrt, ob es noch einen freien Platz gibt.

Es ist nur ein erster Versuch, wie man Züge bzw. freie Plätze finden und die Vitrine richtig ausrichten kann.

Für die Einfahrt in einen freien Platz wären auch Fahrstraßen ein gutes und sicheres Mittel. Das funktioniert mit der Vitrine von EASY deshalb, weil sie technisch als Weiche ausgelegt ist.

Viele Grüße
Götz

Geschrieben

Hallo Goetz 

Einen weiteren Punkt habe ich in deiner Steuerung bemerkt:
Wenn zufällig für die Ausfahrt die "Parkposition" (ob nun 1 oder 9) ausgewählt wird, schaltet die Weiche nicht und das Ereignis "Vitrine erreicht Position" wird nicht ausgelöst.

Das heisst dieses Gleis wird nie geleert, da der Zug nicht startet. Ich bin am tüfteln, habe aber bisher noch keine Lösung gefunden. 
Eine Lösung wäre, einfach keine Parkposition anzufahren, dann muss die Weiche auf jeden Fall schalten, das fände ich aber schade.
Ich habe die Vitrine samt deiner Steuerung in meine Anlage eingebaut, läuft ansonsten problemlos!

Gruess us de Schwiiz
fifof

Geschrieben
vor 6 Minuten schrieb Fifof:

Wenn zufällig für die Ausfahrt die "Parkposition" (ob nun 1 oder 9) ausgewählt wird, schaltet die Weiche nicht

Stimmt, das ist eine Macke in meiner Methode die ich nicht bedacht hatte.

Geschrieben

Ich hänge es mal hier ran, obwohl es nur teilweise mit dem konkreten Thema zu tun hat: Ich habe die Vitrine in meine Anlage eingebaut (noch nicht veröffentlicht,  dafür gibt es noch zuviel Chaos darin). Ich habe nun zwei Phänomene, die ich mir nicht erklären kann.

1. Es gibt es immer wieder mal Züge, die aus der Vitrine nicht selbständig ausfahren. Sie bleiben nach der Positionierung der Vitrine einfach stehen und müssen händisch (Steuerung) beschleunigt werden. Ein Muster (Geschoss, Lok, Länge der Züge) habe ich nicht gefunden. Alle Loks sind auf automatisches Beschleunigen gestellt.

2. Manchmal (und das hat nun nichts mit der Vitrine zu tun), halten Züge wohl vor Signalen korrekt an, beginnen dann aber plötzlich im Kriechgang zu fahren und blockieren somit natürlich Fahrstrassen und Weichen.

Gibt es eine Erklärung dafür, oder habe ich das Ganze einfach überladen (Paradestrecke mit aktiven 5-7 Zügen, SBF mit acht Gleisen, Pendelstrecke mit 3 Zügen, Vitrine, Standseilbahn mit ein- und ausgeblendeten Zugseilen, Busse, PWs, Motorboot und Surfer) und mein Compi ist zu langsam dafür?

Geschrieben (bearbeitet)
vor 1 Stunde schrieb Fifof:

überladen

 

vor 1 Stunde schrieb Fifof:

Compi ist zu langsam

Beides ist es sicher nicht.

vor 1 Stunde schrieb Fifof:

noch nicht veröffentlicht,

Dann mache das mal (Entwurf genügt), denn nur so kann sich jemand auf die Suche nach der Ursache machen.

Bearbeitet von Phrontistes
typo
Geschrieben

Ok. Dann bitte...
Ich habe alle Ereignisse und Ebenen, die nicht relevant sind deaktiviert und ausgeblendet. Aus meiner Sicht sollte die Automatik solange laufen, bis dann ein Zug aus der Vitrine abgerufen wird (jedes dritte mal, wenn ein Zug aus der "Schlaufe gerade" ausfährt). Wenn der nicht startet, kommt meine Steuerung ins Straucheln.

Pendelstrecke SBB.mbp

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