

AndreasWB
Mitglieder-
Gesamte Inhalte
628 -
Benutzer seit
-
Letzter Besuch
-
Hallo @Phrontistes, wenn Du Zitatschnipsel aus dem Zusammenhang reiß, versteht niemand mehr, worum es da geht. Habe ich gesehen. Es fehlt z.B. der gesamte Überbau (Programm-Rahmen) der Prozedur (benutzerdefiniertes Ereignis in MBS-EV). @prinz: Daß Du das Ergebnis in eine extra Variable außerhalb der Prozedur (benutzdefinierts Ereignis) stecken mußtes, liegt ganau an dem, was ich beschrieben habe: Prozedruren besitzen keine Rückgabe ihrer Ergebnisse. Klar können Sie tun was auch immer sie wollen, das aufrufende Programm bekommt es nicht direkt zurückgegeben, sondern nur über den von Dir bechriebenen Umweg. Das ist aber keine saubere Software-Architektur. Und über die asynchrone Abarbeitung hatte ich auch geschrieben. Wenn dann mehrere Prozeduren auf dieselben Variablen zugreifen, kann es genau zu den von Dir beobachteten Verwirrungen kommen. Also ein weiterer Grund, die von mir beschriebenen Aspekte im Hinterkopf zu behalten. So - das war's von meiner Seite zu diesem Thema. Gruß Andreas
-
Sorry @Goetz, aber ich zitiere mal aus der Oberfläche zur Erstellung der EVs: "Wann wird das Ereignis ausgelöst? Manuell durch eine Ereignis-Aktion()" Es ist also ein Programmschritt einer anderen EV, die dieses "Unterprogramm" aufruft. Es wird nicht direkt durch den Benutzer, bzw. einem Gleiskontakt, einem schaltenden Signal, ... gestartet. Also nicht durch ein Ereignis auf der Anlage direkt.
-
Hallo @Swen44 und die anderen, vielleicht mal ein paar Grundsätzliche Erklärungen zu diesem Thema. Die Begriffe "Hauptprogramm" und "Unterprogramm" sind in der Programmierung übliche Begriffe. Ein Hauptprogramm ist das, was vom Benutzer oder anderen Initiatoren gestartet wird. Es gibt aber auch Aufgaben, die immer wieder mal durchgeführt werden müssen. Um diese nicht für jede Ausführung extra wiederholt zu schreiben (unnötige Redundanz), wird jede Aufgabe einmalig im Programm-Code hinterlegt und dann im übergeordneten Programmablauf an der richtigen Stelle aufgerufen. Das sind dann eben die sogannten "Unterprogramme". Das Ganze steht auch im Zusammenhang mit Modularisierung (auch Wiederverwendung) und senkt den Wartungsaufwand von Software erheblich. Es gibt aber zwei verschiedene Arten dieser Unterprogramme: Funktionen Diese Art von Unterprogramm erzeugt am Ende seines Ablaufs ein Ergebnis, das im übergerodneten (aufrufenden) Programm weiterverarbeitet werden soll. Hier springt also die Verarbeitung vom aufrufenden Programm in diese Funktion. Erst wenn die Funktion fertig ist und das Ergebnis an das aufrufende Programm übergeben wurde, arbeitet das aufrufende Programm mit dem nächsten Programmschritt weiter. Das ist wohl auch das, worann @Swen44 dachte. Prozeduren Hier haben wir es mit eigenständigen Unterprogrammen zu tun, die vom aufrufenden Programm angestoßen werden und eben ihr eigen Ding machen, ohne ein Ergebnis an das aufrufende Programm zu übergeben. Das Ganze läuft also programm-logisch gesehen parallel (unabhängig; asynchron) ab. Daher macht das aufrufende Programm einfach ohne Unterbrechung mit seiner nächsten Anweisung weiter, weil es ja eben nicht auf das Unterprogramm warten muß. Das ist der Mechanismus, der in der grafischen EV in MBS zur Anwendung kommt. Wenn jetzt LUA eine hablwegs normale Programmiersprache ist, werden hier beide Formen von Unterprogrammen unterstützt. Nicht aber in der grafischen EV von MBS. Ich hoffe, das trägt etwas zur Aufklärung bei. Gruß Andreas
-
Vermisst: Kibris Lokschuppen und DR-Loks
AndreasWB antwortete auf Ricky Fitzs Thema in Modellwünsche
Hallo, vielleicht kann ich Informationen zur Aufklärung beitragen. In einem anderen Zusammenhang arbeite ich mit einem Render-Programm, daß mit Blender kompartibel ist. Das Problem der Lichtsäume trat da bei einer bestimmten Render-Engine (3Delight) auf. Die Methodik bestimmter Belichtungs-Mechanismen erinnert mich stark an die Wirkung in MBS. Was war der Effekt? Die Lichtsäume traten auf, wenn zwei Oberflächen sehr nahe beieinander lagen oder sich direkt berührten (Hier die Räder des Skateboards auf dem Boden). In den Render-Einstellungen gab es für die Erzeugung der Abschattung eine "shadow-bias". Diese hatte einen minimal einstellbaren Wert. Mehr durch Zufall habe ich herausgefunden, daß ich eine Kopie der Grundebene von unten näher an die Grundebene heranlegen mußte, als der Wert der "shadow-bias" - und der Lichtsaum war verschwunden. Was die Render-Engine macht und welche Algorithmen dahiner stecken, bleibt Geheimnis der Entwickler der betreffenden Render-Engine. Vielleicht kann mein Beitrag ja einen Hinweis zur Lösung geben, da diese Familie dieser Anwendungen nach den gliechen Prinzipien arbeitet. Gruß Andreas -
Hallo @moon2018, hm merkwürdiges Angebot. Laut KATO-Homepage gibt es solche Gleise nicht. -> somit auch nicht im MBS-Katalog. Gruß Andreas
-
Fehlerhafte Funktion von Pfad folgen
AndreasWB antwortete auf ChristianVs Thema in Technischer Support
Hallo @ChristianV und Kollegen, das Problem wurde bereits in dieser Diskussion thematisiert. Hier findet Ihr auch einen derzeitigen workaround. Gruß Andreas -
Ergänzung: weil ich gerade in Deinem Post sehe: "Alle Fahrzeuge auf Kontakt XY" Steht ein Zug mit Steuerwagen (Antrieb ausgeschaltet) am Gleiskontakt eines Signals, wird doch auch der "Losfahr-"Befehl an die Lok übermittelt. Außerdem bekommt man bei Abfrage immer das Triebfahrzeug-Objekt übertragen, nicht den Steuerwagen, der ja eigentlich auf dem Kontakt steht. -> Also komplett inkonstistentes Verhalten. Gruß Andreas
-
Hallo @Goetz, ich denke eher, daß der Themekomplex schon irgendwie zusammenhängt. Zum Thema mit hintereinander folgenden Anweisungen an Fahrzeuge (egal ob Einzellok oder Zugverband) sollte es doch so sein, daß nach der einmaligen Befehlsübermittlung das "Fahrzeug" auf neue Anweisungen neu reagieren können sollte, auch wenn ein vorheriger Befehl noch nicht komplett abgearbeitet ist. Vor allem, weil hier Einzelfahrzeuge sich anders verhalten, als längere Fahrzeugverbände. Anderes Beispiel, das mich zu diesem Post veranlaßt hat: Steht eine Tenderlok alleine auf dem Gleiskontakt (der grün-gelbe), kann man ihr alles übermitteln, was ich in der ersten Gruppe aufgezählt habe. Ist noch etwas angehängt, z. B. ein Tender oder wie hier ein Wagen, funktioniert die Geschwindigkeitszuweisung nicht mehr. Oder: Am Ende der Schuppengleise befindet sich jeweils ein End-Kontakt. Dort wird die Lok, egal ob Tenderlok oder mit Schlepptender, angehalten, die Fahrtrichtung erfolgreich umgekehrt. Der Befehl zum dann später wieder losfahren funktioniert aber nur bei der Tenderlok. Bei einer 01 oder 05 oder 18 mit Schlepptender nicht. Eigentlich das gleiche unterschiedliche Verhalten, wie beim (nicht-) blockieren von Schiebebühne und Drehscheibe. Nach objektorientiertem Paradigma ist ein Zug eine Aggregation aus Triebfahzeug(en) und Anhängern und zeigt egal wie zusammengestellt immer identisches Verhalten. Im MBS leider nicht. Genau das kostet hier immer wieder Stunden mit dem Finden des Fehlers und Basteln entsprechender workarounds. So toll Euer Programm ansonsten auch ist, an manchen Stellen ist es schlicht zum Verzweifeln und kostet unnütz Zeit. Nichts für Ungut Gruß Andreas
-
Hallo MBS-Programmierer, es bringt einen einfach zur Verzweiflung. Steht ein Einzel-Fahrzeug auf einem Gleiskontakt, kann man Kupplungen lösen, Fahrtrichtung umkehren, neue Geschwindigkeit setzen. Steht ein Zug (Lok + mind. 1 Anhänger) auf einem Gleiskontakt, kann man Kupplungen lösen, Fahrtrichtung umkehren Aber neue Geschwindigkeit? - Fehlanzeige. Gleiche Problematik, die auch in diesem Zusammenhang schon für großen Frust gesorgt hat. Wann wird dieser Fehler endlich behoben? Fragt Andreas
-
Video-Tutorial: Drehscheibensteuerung und modulare EV
AndreasWB antwortete auf alexander42s Thema in Anleitungen und Tutorials
So Kollegen, Habemus Papam! Und ich habe ein kleines Filmchen von der Funktion der Drehscheibe. -> https://mega.nz/file/dqFmGQhI#OkXpfiU0fmuyo300KdPH5rw_q8o7hfdcQ3VrCzZbbc4 Dabei habe ich die Aus- und Einfahrten per Fahrstraßen ausgelöst. Das jeweilige Losfahren und Richtungsumkehr ist Bestandteil der jeweiligen Fahrstraßen-EV. Als Beispiel die Einfahrt-EV: Dafür habe ich auch die "Datenbank", von der Alexander sprach, verwendet. Und natürlich brav als Software-Architekt die einzelnen Datensätze über ihren Primärschlüssel (in MBS: Index genannt) aufgerufen. Loks fahren immer mit Tender zuerst (also rückwärts) in den Schuppen. Gruß Andreas -
Video-Tutorial: Drehscheibensteuerung und modulare EV
AndreasWB antwortete auf alexander42s Thema in Anleitungen und Tutorials
P. S. @alexander42, warum sind Deine Videos nicht über Deinen Kanal direkt gelistet? -
Video-Tutorial: Drehscheibensteuerung und modulare EV
AndreasWB antwortete auf alexander42s Thema in Anleitungen und Tutorials
@rainer.kreuzer, Respekt vor dieser Aufgabe. Ich selber bastele ja eigentlich an einer Nachempfindung des Anhalter-Bahnhofs aus den 30er bis 40er Jahren. -> Naja, vielleicht doch ein Unterschied, ob man sich an der Wiedergabe von (spärlichen) Original-Gleisplänen versucht oder selber frei gestaltet. @alexander42, Gruß zurück von Andreas. vielleicht solltest Du ja Dein Mikrofon nicht so nahe an die Tastatur stellen/halten. Momentan allerdings baue ich zunächst einen kleinen Prototypen, aus dem auch schon ein Bild zur Problematik der Drehscheiben-Einbindung in Fahrstraßen stammte. Vor allem, um einige Abläufe in Kombination ablaufen zu lassen. Etwa so: Zug fährt aus Strecke in Kopfbahnhof ein. Die Lok kuppelt ab und zieht ein paar (im Modell) Zentimeter vor. Durch die Einfahrt wurde eine Rangierlok angefordert. Diese fährt aus dem Schuppen aus, wird auf der Drehscheibe mit dem Ausfahrtgleis aus dem BW verbunden. Die Rangierlok fährt zum Sperrsignal und wartet - fährt dann ans andere Ende des Zuges. Nun zieht sie die Wagen auf ein Bereitstellungsgleis im BW. Danach kann die Zuglok ins BW fahren, um ihre Vorräte zu ergänzen. Soweit Teil 1. Teil 2: Die Rangierlok setzt sich auf einem Bereitstellungsgleis ans Ende eines (Wagen-)Zuges und schiebt ihn in ein Bahnhofsgleis. Die Rangierlok kuppelt ab und kehrt ins BW zurück. Meistens wird sie im Lokschuppen bis zum nächsten Einsatz abgestellt. Eine Strecken-Lok oder die, die gerade ihre Vorräte ergäzt hat, fährt auf die Drehscheibe. Dort wird sie so gedreht, daß sie Tender voraus in den Bahnhof fährt und sich vor den bereitgestellten Zug setzt. Ist die Abfahrtzeit gekommen, fährt sie wieder mit dem Zug auf die Strecke. Mit dem workaround, die Scheibe getrennt anzusteuern, funktionieren die einzelnen Abläufe nun zunächst einmal manuell. Dabei sind auch Anregungen von @alexander42 eingeflossen. Gruß Andreas -
Video-Tutorial: Drehscheibensteuerung und modulare EV
AndreasWB antwortete auf alexander42s Thema in Anleitungen und Tutorials
Hallo @alexander42, wie Du in Deinem Video ja sagst: "... es gibt mehrere Wege ...". Beim direkten Adressieren sparst Du den Suchmechanismus über das verbundene Gleis als Suchkriterium. Das entlastet auch die CPU / GPU. Gruß Andreas -
Video-Tutorial: Drehscheibensteuerung und modulare EV
AndreasWB antwortete auf alexander42s Thema in Anleitungen und Tutorials
Hallo @alexander42, Wenn der Taster die Nummer bekommt, die dem Index des Listeneitrages seines Gleises entspricht (bezogen auf Dein Video-Tutorial). Gruß Andreas -
Problem: Drehscheibe als Bestandteil einer Fahrstraße
AndreasWB antwortete auf AndreasWBs Thema in Fragen zur Steuerung
Hallo @Goetz, @Hawkeye, @alexander42, Grundsätzlich: Wie man in dem Bild meines eröffnenden Posts sieht, trat das Problem bereist bei einer "Einzel-"Lok auf. Ich verwendete da die Tenderlok BR81. Beim Nachstellen mit einem wesentlich verkleinerten Setup funktionierte es aber. Der Befund von Götz offenbart aber eine grundsätzliche Problematik, die mir schon vor einigen Jahren aufgefallen ist. Bei einem Zugverband steht der Gleiskontakt (wohl auch ein Gleis-Objekt) mit dem ganzen Zugverband in Verbindung. Man kann also mit keinem neuen Gleiskontakt in der Zeit, in der der Zug mit dem ersten Kontakt in Verbindung steht, einen neuen Befehl übermitteln. Beispiel: Ein Zug passiert ein Signal, dessen Gleiskontakt den Befehl "Beschleunige auf 60 km/h" übermittelt. Stellt man nun fest, daß der Zug "falsch" fährt und möchte ihn mittels Geschwindigkeitssteuerung stoppen, stellt sich seine Geschwindigkeit trotzdem immer wieder auf 60 km/h zurück. Anders eine Einzellok: Hier reagiert sie sofort auf den neuen Befehl, selbst wenn sie etwas länger ist. Anwendungsfall, bei dem mir dieser Effekt vor jahren schon auffiel: Deshalb braucht man für diese Vorbildsituation immer eine aufwändige EV. Ich weiß zwar nicht, wie das Modell der Drehscheibe konstruiert ist, aber irgendwie spielt dieser Effekt hier auch rein. Ich hatte schon damals darauf hingewiesen und angeregt, doch bitte dieses Verhalten programm-technisch zu bereinigen. Dies wurde aber abgelehnt. Nun haben wir den Salat! Gruß Andreas