Jump to content

wkh

Mitglieder
  • Gesamte Inhalte

    14
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von wkh

  1. Danke, ich hatte es gefunden und beim Stöbern auch mitbekommen worauf man achten muss um Performanceeinbrüche möglichst zu vermeiden. wkh
  2. Danke für die Antwort. Gruß wkh
  3. Ich überlege mir einen neuen PC anzuschaffen. Welche Empfehlungen gibt es als Mindestanforderung für Grafikkarte und Processor (Kerne, Threads), für einen flüssigen Programmablauf? Gruß wkh
  4. Hallo Easy, hallo Götz, vielen Dank nochmal für eure Hinweise. da ich sowohl beim MBS, als auch bei Lua noch im Anfängerstadium bin, vertraue ich jetzt darauf, dass ihr mit eureren Hinweisen recht habt. Ich werde es ändern. Durch das Video von Götz zu den Ampeln ist mir auch wieder deutlich geworden , dass ich doch vieles über die Möglichkeiten vom MBS noch lernen muss. Nochmals Dank für eure Mühe. Gruß wkh
  5. Hallo Goetz, danke für die Antwort. Ich benutze in meinem Projekt auch Objektvariablen. Die Vorteile sind mir auch bewußt. Ich kann mir ja einen bestimmten Kontakt als Template irgenwo aufs Brett legen und immer wieder kopieren und der Kontakt kann auch ein Bezeichnung haben, die aussagekräftig ist. Angefangen zu überlegen habe ich als ich gemerkt hatte das Fahrzeuge und/oder das MBS die Route wählen. Wenn ein Fahrzeug an einem Parkplatz vorbei fährt versucht es einzuparken, wenn man nicht dagegen unternimmt oder es fährt durch die Bushaltestelle. Dann kam eins zum anderen und mir fällt mir immer noch etwas neues ein. Ich hänge jetzt doch mal die Datei an. Es funktioniert noch nicht alles. Es gibt keine Beschreibung. Vielleicht vermittelt es aber einen Eindruck davon, was ich erreichen will. Die Label haben, wenn sie eine Bedeutung haben, erst eine ab Position 7. Die Ampeln bitte nicht beachten, die funktionieren noch nicht. Was auf dem Brett ist enspricht sicherlich auf keinen Fall der Realität. Die Probleme bei der Umsetzung einer Steurung werden aber meiner Meinung nach sehr deutlich. Gruß wkh Straßenverkehr.mbp
  6. Hallo Goetz, vielen Dank für deine Antwort. Der Hinweis auf <> ist sehr hilfreich. Die Unterstützung, die man durch das Forum bekommt finde ich toll. Ob ich deinen Hinweis auf die Objektvariablen berücksichtigen kann muss ich mir noch überlegen. Ich bin noch nicht ganz durch, mit dem was ich erreichen will. Es ist aber so, dass über das Label auch für den gleichen Kontakttyp unterschiedliche Informationen an den Event übermittelt werden können. So kann über den Kontakt mit dem "S" auf der 7 Position, die Geschwindigkeit der Fahrzeuge beim Betreten eingestellt werden und die kann an jeder Stelle anders sein. Es gibt eine ganze Reihe von Kontakten, die sogar noch mehr Informationen vermitteln. Am Ende bin ich natürlich auch gespannt, ob das, was ich mit vorstelle sinnvoll und brauchbar ist. Gruß wkh
  7. Hallo Easy, ich bin vielleicht jetzt ein dreiviertel Jahr beim MBS. Deshalb kenne ich mich noch nicht hundertprozentig aus und entdecke immer wiedere neues. Da Programmieren meine Leidenschaft seit Jahrzenten ist, versuche ich meine Steuerung im MBS jetzt durch Lua-Scripte einzurichten. Damit du verstehst was ich mir darunter vorstelle, kopiere ich die beiden einzigen Ereignisse, die es für die Steurung von Straßenverkehr in meiner Vorstellung geben soll, die reagieren, wenn ein Kontakt betreten wird. Ereignis 1: Es reagiert nur wenn der Kontakt teil einer in einer Liste definierten Route ist. -- Initialisierungskontakt - Initialization contact? if string.sub(contact.name, 7, 7) == "I" then if HasVehicleRoute(vehicle, contact) == false then return end end print("Weiter") -- Zielkontakt - Destination contact? if vehicle.variables["Contact"] ~= contact then return end -- Dieser Kontakt ist der Zielkontakt - This contact is the target -- Fahrtunterbrechung ohne Richtungswechsel - Driving break without direction change if string.sub(contact.name, 7, 7) == "B" then vehicle.engine.active = false -- Weiterfahrt nach Wartezeit - Route to be continued after waiting time $("BreakEnd"):invoke(contact, vehicle) return end if string.sub(contact.name,7, 7) == "P" then -- Fahrzeug wird geparkt, Richtungswechsel - Vehicle will be parked, drive direction change vehicle.engine.active = false vehicle.drivingDirection = -vehicle.drivingDirection vehicle.target = GetNewDestination(vehicle) -- Weiterfahrt nach Wartezeit - Route to be continued after waiting time $("ParkingSlotExit"):invoke(contact, vehicle) return end -- Richtungswechsel - Direction change if string.sub(contact.name, 7, 7) == "R" then vehicle.engine.active = false vehicle.drivingDirection = -vehicle.drivingDirection vehicle.target = GetNewDestination(vehicle) $("DirectionChange"):invoke(contact, vehicle) return end vehicle.target = GetNewDestination(vehicle) Ereignis 2: Es reagiert immer, wenn der Kontakt mit dem Schlagwort ServiceContact betreten wird. -- 3-Ampel Steurung if string.sub(contact.name, 7, 7) == "3" then -- Fußgängerampeln auf rot - Switch pedestrian light to red ThreePedLightRed(string.sub(contact.name, 9, 15)) $("ThreeTrafficLightSwitching"):invoke(string.sub(contact.name, 9, 18)) end -- Ampel für gerade aus Verkehr schalten - Set traffic light for ahead traffic if string.sub(contact.name, 7, 7) == "A" then -- Fußgängerampeln auf rot - Switch pedestrian light to red AheadTrafficPedLightRed(string.sub(contact.name, 9, 15)) $("AheadTrafficLightSwitching"):invoke(string.sub(contact.name, 9, 18)) end -- "C" Zusammenstoß verhindern - "C" collision prevention if string.sub(contact.name, 7, 7) == "C" then local n = tonumber(string.sub(contact.name, 8, 9)) if $("Ereignisse").variables["ExitBlocked"][n] == nil then $("Ereignisse").variables["ExitBlocked"][n] = 0 end $("Ereignisse").variables["ExitBlocked"][n] = $("Ereignisse").variables["ExitBlocked"][n] + 1 -- Kann gelöscht oder auskommentiert werden - Comment out or delete $("DelayForCollisionPrevention"):invoke(n, tonumber(string.sub(contact.name, 11, 12))) return end -- Zeit zwischen zwei Fahrzeugen messen und Geschwindigkeit für das zweite Fahrzeug einstellen -- Get the time between two vehicles passing the contact and set speed for the second vehicle if string.sub(contact.name, 7, 7) == "D" then contact.variables["PreviousVehicle"] = contact.variables["CurrentVehicle"] contact.variables["CurrentVehicle"] = Seconds if contact.variables["CurrentVehicle"] - contact.variables["PreviousVehicle"] <= tonumber(string.sub(contact.name, 8, 9)) then vehicle.currentSpeed = tonumber(string.sub(contact.name, 11, 12)) end return end if string.sub(contact.name, 7, 7) == "H" then local desVar = string.sub(contact.name, 12, 16) local n = tonumber(string.sub(contact.name, 18, 19)) if $("Ereignisse").variables[desVar][n] > 0 then vehicle.engine.active = false $("Ereignisse").variables[desVar][n + 1] = $("Ereignisse").variables[desVar][n + 1] + 1 $("WaitForRouteContinue"):invoke(tonumber(string.sub(contact.name, 8, 10)), desVar, n, vehicle) end end -- Geschwindigkeit setzen - Set speed if string.sub(contact.name, 7, 7) == "S" then vehicle.currentSpeed = tonumber(string.sub(contact.name, 8, 10)) end -- Ampel für gerade aus Verkehr schalten - set traffic light for ahead traffic if string.sub(contact.name, 7, 7) == "T" then -- Fußgängerampeln auf rot - Switch pedestrian light to red TurnTrafficPedLightRed(string.sub(contact.name, 9, 15)) $("TurnTrafficLightSwitching"):invoke(string.sub(contact.name, 9, 18)) end if string.sub(contact.name, 7, 7) == "W" then print("W") local desVar = string.sub(contact.name, 11, 15) print(desVar) local n = tonumber(string.sub(contact.name, 17, 18)) $("Ereignisse").variables[desVar][n] = $("Ereignisse").variables[desVar][n] + 1 $("TF-Vorfahrt").text = $("Ereignisse").variables[desVar][n] $("HaltNoRightOfWay"):invoke(tonumber(string.sub(contact.name, 8, 9)), desVar, n) end if string.sub(contact.name, 7, 7) == "U" then n = tonumber(string.sub(contact.name, 8, 9)) if $("Ereignisse").variables["ExitBlocked"][n] > 0 then $("Ereignisse").variables["ExitBlocked"][n] = $("Ereignisse").variables["ExitBlocked"][n] - 1 end end Meine Vorstellung ist einen möglichst generischen Programmcode zu haben und über die Label der Kontakte festzulegen, was geschehen soll. Im Moment arbeite ich noch an einer Ampelsteurung. Das ist der komplizierteste Teil. Wenn ich damit fertig bin denke ich daran mein Projekt vorzustellen. Später möchte ich dann alles natürlich in einer Anlage einbauen. Ich wollte mit den Codeschnippseln nur meinen Lösungsansatz deutlich machen. Zum Verständnis, was da passiert braucht es vermutlich zusätzliche Erklärungen. Ich muss auc für michalles noch aufschreiben. Viele Grüße wkh
  8. Nochmals ein Danke. wkh
  9. Hallo Goetz, danke für deine Antwort. Deine Beträge werde ich mir anschauen. Ich wollte über eine Variable die das Objektlabel enthält und die ich in $(" ... ") einfügen wollte, das Objekt aufrufen. Dafür gibt es aber getEntityByName. Das ist mir nicht gleich eingefallen. Mein fertiges Werk werde ich hoffentlich in ein paar Tagen vorstellen. Mich interessiert ob das, was ich mir ausgedacht habe einen gangbaren Weg beinhaltet oder vielleicht auch ein Performancekiller sein könnte. Viele Grüße wkh
  10. Hallo Easy, ich werde die Anlage, bzw. es ist nur eine Idee zur Ereignisverwaltung, einstellen, wenn ich damit fertig bin. Mein Versuch eine Steuerung zu entwickeln beinhaltet Routen und Vorfahrtsregelungen. Ich bin gerade am letzten Punkt, den Ampeln, angekommen. Der Hinweis, der mich in meinem letzten Gedanken bestätigt hat, hilft mir aber auf jeden Fall weiter. Gruß wkh
  11. Lightlabel ist in diesem Fall das Label eines Fußgängerampel Objektes. Dieses Label möchte ich in ein Objekt umwandeln, über das ich dann den Status der Ampel ändern kann. Mein Ziel ist es eine einfache, möglichst generische Steuerung für Ampeln zu entwickeln. Die Anweisung für den ausgelösten Event soll über die Label der Objekte erfolgen. Muss ich vielleicht über den Weg über getEntityByName nutzen? Gruß wkh
  12. Ich suche nach einer Möglichkeit auf Objekte des MBS auf andere Art Zugriff zu bekommen als unten dargestellt: function AheadTrafficPedLightRed(Light, Lightlabel) if Light == "1" then $("AH001AA").state = 1 -- rot - red -- $(Lightlabel).state = 1 end end Die von mir oben auskommentierte Version funktioniert nicht. Auch verschiedene Varianten, die ich probiert habe nicht. Wenn etwas beim eingeben akzeptiert wurde, dann war der Eintrag hinterher gelöscht und das Ergebnis $(""). Muss ich den Weg über Variablenlisten gehen? Lösungen und Lösungsideen sind sehr willkommen. Viele Grüße wkh
  13. Hallo Goetz, vielen Dank für die Antwort. Wie das mit den Kontakten zu lösen ist hatte ich schon durch ein Beispiel von Dir verstanden. Mich hat irritiert, dass die Weiche auf dem Brett funktioniert, aber nicht auf der Straße. Die beiden Kontakte habe ich erst nach meinen Versuchen mit der Weiche auf die Straße gelegt. Viele Grüße wkh
  14. Ich bin noch recht kurz beim MBS. Komme im Großen und Ganzen auch gut zurecht. Eines habe ich nicht herausfinden können. Warum ein Fahrzeug immer wieder in eine bestimmte Parkbucht einfährt. Nur Zielbestimmung durch Gleiskontakte kann etwas daran etwas ändern. Wenn ich eine Weiche darüber lege, verhält sich das Fahrzeug auch nicht entsprechend der Weichenstellung. Wenn der entsprechende Parkplatz belegt ist , hält das nächste Fahrzeug dahinter und blockiert die Fahrbahn. Ich habe jetzt 2 Tage gesucht, komme aber nicht weiter. Für einen Tipp wäre ich dankbar. Viele Grüße wkh Parken.mbp
×
×
  • Neu erstellen...