bigrala Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 Hallo zusammen, ich würde gerne Züge in zufälliger Reihenfolge aus einem Schattenbahnhof heraus starten. Schattenbahnhof; - Harfe mit 10 Gleisen - 10 Signale (S201 - S210) - Gleisbelegt in Modul-Variabel (SBGL01 - SBGL10) Ich würde gerne z.B. durch kurzes Drücken eines Tasters oder bei Eintreten eines Ereignisses einen im Schattenbahnhof stehenden Zuge starten, wobei die Zugauswahl zufällig passieren soll. Es muss also zunächst eine Zufallszahl zwischen 1 und 10 ermitelt werden, dann geschaut werden ob das Gleis mit der ermittelten Nummer in der BesetztVariabel auf "True" steht und das zugehörige Signal muss auf Fahrt gestellt werden. Steht die BesetztVariabel auf "False", so muss eine neue Zufallszahl ermittelt werden. Soweit ist mir das ja alles klar, nur wie setze ich das in der EV um ..... Oder habt Ihr eine anderen Vorschlag wie ein zufällige Auswahl der wartenden Züge realisiert werden könnte ?
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 (bearbeitet) Wähle alle Ausfahrsignale aus (mit Strg + Linksklick) Drücke Strg + C für Copy jetzt kannst du diese Signale in deinem Knopf in einer Variable hinterlegen. Der Variablentyp ist: Liste. Eine Zufallszahl findest du unter dem Zahnrad immer dann, wenn du in der EV eine Zahl eingeben kannst. Also auch dort, wo du einen Listenindex angibst. Das reicht noch nicht ganz, weil noch keine Prüfung stattfindet, ob im zufällig gewählten Gleis überhaupt ein Zug steht. Aber das Thema solltest du erst dann angehen, wenn du die zufällige Auswahl wirklich durschaust."Es funktioniert" reicht da nicht. "Ich verstehe, wie und warum es funktioniert" ist dein Ziel. Bearbeitet 23. Oktober 2020 von Goetz Bild hinzugefügt
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 (bearbeitet) Hab das mal nachgebaut und wie ich glaube auch weitgehend verstanden. Der Index kann man nicht wirklich manipulkieren, da er intern erzeugt wird. Das würde auch soweit funktionieren, da das Signal nach Überfahrt wieder auf Halt gesetzt wird. Rein Interessehalber, kann ich den zufällig ermittelten Index feststellen z.B. um das Signal auf Fahrt geschaltete wieder auf Halt zuschalten. Evtl mit einer Wdh ..... hier müssten die Signale aus der Liste der Reihe nach auf 0 gesetzt werden ??? Bearbeitet 23. Oktober 2020 von bigrala
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 (bearbeitet) vor 19 Minuten schrieb bigrala: z.B. um das Signal auf Fahrt geschaltete wieder auf Halt zuschalten. Das ist leider ein schlechtes Beispiel, weil du das Signal auf Halt stellen musst, welches vom Zug passiert wird. Dafür haben Signale ihren eigenen Kontakt. Trotzdem: Du kannst es feststellen, weil du ja für jedes Signal, welches schaltet, ein Ereignis definieren kannst. Du "siehst" dann in diesem Ereignis, wer der "Auslöser" war. An "weitgehend verstanden" habe ich ehrlich gesagt noch Zweifel. Dir fehlen da noch ganz grundlegende Erkenntnisse. Und ich wüsste auch nicht, warum du mit einer Wiederholung alle Signale auf Halt stellen willst, wenn du doch zuvor nur ein Signal auf Fahrt gestellt hast? Aber lass dich nicht entmutigen. Du darfst (Denk)fehler machen, weil du sonst nicht lernen kannst. (Niemand kann lernen, ohne Fehler zu machen.) Du musst dich nur nicht erschrecken, wenn ich dann auf diese Fehler hinweise.Ich werfe dir keinen Mangel vor, sondern zeige dir auf, wo du weiter lernen musst. Bearbeitet 23. Oktober 2020 von Goetz
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 (bearbeitet) Keine Angst, ich erschrecke mich nicht ;-) Das ist nur ein Funktionsbeispiel ..... natürlich werden bei mir die Signale beim verlassen des Signalkontakts auf Halt gestellt. Ich möchte nunmehr den Umgang mit Listen besser verstehen, um Listen auch auf andere Dinge anwenden zu können .... das mit den Signalen hier ist nur ein Scenario zum testen und lernen. Es ist mir klar, dass ich eine beliebige Anzahl von Objekten in einer Liste zusammenfassen kann, jedes Objekt der Liste bekommt eine Art lfdNr. Beim Ermitteln einer Zufallszahl kann ich beim Index(zufällig) die "lfdNr" zum Eingrenzen der Spannweite nutzen. Die Randomfunktion selbst ist eine interne Prozedur. Bezüglich der Frage, warum alle Signale auf Halt stellen ....... das war ja meine Frage, ob man den ausgewählten Index feststellen kann, um das soeben auf Fahrt geschaltete Signal wieder auf Halt zu schalten. Bearbeitet 23. Oktober 2020 von bigrala
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 Du kannst beispielsweise zuerst eine Zufallszahl erzeugen und in einer Variablen speichern, die dir als temporäres Gedächtnis dient. Im nächsten Schritt nimmst du diese Variable so oft du sie benötigst. Als Index einer Tabelle und für jeden weiteren Zweck, der dir einfällt. Alternativ kannst du auch das "gewürfelte" Signal in eine Variable übertragen und anschließend alle Befehle, die du diesem Signal schicken willst, mithilfe der Variablen anlegen. vor 43 Minuten schrieb bigrala: Die Randomfunktion selbst ist eine interne Prozedur. Ja, genau. Du gibst nur den Minimal- und den Maximalwert an. Den Rest macht das MBS.
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 (bearbeitet) Das heißt beim Signalbegriff wähle ich statt "Zahl" die "Variablen" und speichere da in den Randomwert in eine Variable Weißt Du welchen Wert die Randomfunktion rausgibt, die "lfdNr" oder den Namen aus der Liste ? Wenn ich den Signalnamen in die Variable speichern kann, so lässt sich diese einfach an "Signal einstellen" übergeben. Bearbeitet 23. Oktober 2020 von bigrala
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 (bearbeitet) Der Signalbegriff ist ein anderes Wort für die Signalstellung Wenn du dort eine Zufalllszahl eingibst, dann ... ich denke, dir dämmert gerade was dann passiert? Die Zufallsfunktion gibt einfach eine Zahl aus unabhängig davon, wofür du diese Zshl verwendest Bearbeitet 23. Oktober 2020 von Goetz
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 Okay, der Inhalt und Zweck von Signalbegriff war mir schon klar. Du hattest nur geschrieben, dass ich auch das "gewürfelte Signal" in eine Variable packen kann ...... Dazu wähle ich Eigenschaft/Variable setzen, Variable(Liste/Tabelle), lasse aus der Liste wieder eine Zufallszahl würfeln und ........ dann müsste ich den Signalnamen in eine Variable schreiben. Dazu habe ich eine Modulvariable SB_Signal angelegt - ich würde sagen, dass diese den Typ Objekt haben müsste, da ja das Signal darin gespeichert werden soll. Allerdings funktioniert es so nicht, da hier nur die Indexziffer gespeichert werden würde und nicht das Objekt. Ich gehe mal davon aus, dass ich hier mit erweiterten Variablen arbeiten muss ..... ??
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 vor einer Stunde schrieb bigrala: dass ich auch das "gewürfelte Signal" in eine Variable packen kann ...... Ja, das Signal, was du zufällig auswählst, kannst du in einer Objektvariablen (zum Beispiel im Taster) ablegen, damit du mehrfach darauf zugreifen kannst. Also musst du oben das Ziel angeben (die Objekt - oder Modulvariable) und unten das, was du in dieser Variablen speichern möchtest (also das ausgewürfelte Signal.) Du hast alles auf den Kopf gestellt.
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 Okay ..... habe das rumgedreht, wird jedoch nichts in die Variable geschrieben. Die Liste der Signale ist in den Schlagwort/Variabeln des Tasters. Es existiert eine Modul-Variable SB_Signal vom Typ Objekt. Diese steht nun oben als Ziel - unten würfle ich nun aus der Liste SB_Ausfahrsignal zwischen 1 und 10. Wenn ich den Taster betätige und anschließend die ModulVariable angucke, so ist diese weiterhin leer
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 Auf den Screenshots sieht jetzt alles richtig aus Zeig mal bitte das Ereignnis-Protokoll dazu.
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 Vermutlich befindet sich deine Tabelle nicht im GBS01frei, sondern an einem anderen Ort Denn beim Versuch, Element x aus der Tabelle zu übergeben, wird nichts (= Null) gefunden
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 Kann man die Liste, ähnlich einer Modulvariabeln, zentral ablegen ? Die Liste SB_Ausfahrsignal befindet sich im Taster_SB in der ursprünglichen Version (Taster, Liste etc alles gleich) werden die Signale zufällig geschaltet (s.Shot)
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 vor 5 Minuten schrieb bigrala: Kann man die Liste, ähnlich einer Modulvariabeln, zentral ablegen ? Ja, kann man. Aber ebenso gut kannst du sie im Taster ablegen. Das ist egal Wichtig ist nur, dass du sie anschließend dort suchst, wo du sie hingelegt hast. Und das tust du in deinem Beispiel dem Anschein nach nicht.
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 (bearbeitet) Okay, habs gefunden, Ich hatte das Testscenario mit den Signalen aufgebaut und angefangen zu testen, dann habe ich aus Faulheit den Taster für ein anderes Scenario kopiert und dabei die Liste mitkopiert. Somit wurde die Liste bei zwei Objekten (Tastern) angezeigt und ich hatte die falsche in den Variabeln ausgewählt. Bearbeitet 23. Oktober 2020 von bigrala
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 Vielen Dank für Deine Geduld. In welche Richtung müssen sich meine Gedanken bewegen, wenn die Randomroutine nur Signale mit belegtem Gleis schalten soll ? Belegtinformationen habe ich in Bolschen ModulVariabeln SB_GL01 bis SB_GL10
Goetz Geschrieben 23. Oktober 2020 Geschrieben 23. Oktober 2020 (bearbeitet) vor 17 Minuten schrieb bigrala: In welche Richtung müssen sich meine Gedanken bewegen Zurück an den Anfang. Und dann noch einmal alles von vorne machen (ohne etwas abzuschreiben!) Und dann noch dreimal. Damit du die richtigen Wege verstehst und erinnerst. Im Augenblick bist du durch die vielen Fehlversuche verwirrt und wirst nichts aus ihnen lernen, wenn du dich nicht eingehender mit diesem Teil befasst, sondern gleich das nächste tun willst. Vertrau mir bitte. Ich schule seit ca. 30 Jahren Leute. Ich weiß, wovon ich rede anbei noch meine Version der Zufallsauswahl: zufälliges Signal.mbp Bearbeitet 23. Oktober 2020 von Goetz
bigrala Geschrieben 23. Oktober 2020 Autor Geschrieben 23. Oktober 2020 Okay, melde mich wenn ich es gemacht habe
Shantyman Geschrieben 2. November 2020 Geschrieben 2. November 2020 Hallo @Goetz, ich schließe mich mal der Frage von bigrala an Zitat Ich würde gerne z.B. durch kurzes Drücken eines Tasters oder bei Eintreten eines Ereignisses einen im Schattenbahnhof stehenden Zuge starten, wobei die Zugauswahl zufällig passieren soll. Es muss also zunächst eine Zufallszahl zwischen 1 und 10 ermitelt werden, dann geschaut werden ob das Gleis mit der ermittelten Nummer in der BesetztVariabel auf "True" steht und das zugehörige Signal muss auf Fahrt gestellt werden. Steht die BesetztVariabel auf "False", so muss eine neue Zufallszahl ermittelt werden. Ich habe mal eine Testanlage zusammen gebastelt mit deiner Zufallssteuerung der Signale. Wie ist denn nun das weitere Vorgehen in der EV damit nur das "ausgewürfelte" Signal bei einem freien Gleis geöffnet wird? Bei der Testanlage kann man die einzelnen Gleise mit den Schaltern entweder belegen oder frei geben. Die Variable ob TRUE oder FALSE liegt in dem jeweiligen Schalter. Die dazu gehörige Anlage Signalschaltung per Zufall.mbp Vielen Dank im voraus für deine Bemühungen. Viele Grüße Stephan
HaNNoveraNer Geschrieben 2. November 2020 Geschrieben 2. November 2020 Hi Stephan Du hast ja schon eine Liste der Signale in Deinem blauen Taster. Du solltest Dir jetzt in jedem Signal merken, welche Lok davor steht und nicht in den anderen Tastern. Dann kannst Du in der EV mit einer Wiederholung beim Drücken der blauen Taste jedesmal bei einem gefundenen Signal die Bedingung abfragen, ob die Variable "Lok" im Signal vorhanden oder "leer" ist. Ist sie nicht leer, kannst Du die Lok, die Du ja jetzt kennst,losfahren lassen und die Wiederholung/Schleife verlassen. Gruß Thomas
Shantyman Geschrieben 2. November 2020 Geschrieben 2. November 2020 Hallo HaNNoveraNer, das Problem ist ja bei mir, wie geht das mit der Wiederholunge/Schleife. Da habe ich keinen Schimmer wie das funktioniert und habe auch noch nichts konkretes dazu hier im Forum gefunden Wie es funktioniert nur Beispiele Das es funktioniert. Ich bin nur ein Anwender ohne fundierte Progammierkenntnisse. Viele Grüße Stephan
Goetz Geschrieben 2. November 2020 Geschrieben 2. November 2020 vor 45 Minuten schrieb Shantyman: Wie es funktioniert erkläre ich in diesem Video: Ich erkläre es anhand eines Beispiels. Aber ich beschreibe dabei auch in allen Einzelheiten das "Wie". Und dieses "Wie" ist immer gleich. Deshalb kannst du ignorieren, dass das "warum" im Video ein anderes ist.
HaNNoveraNer Geschrieben 2. November 2020 Geschrieben 2. November 2020 Ich hab Dir mal auf die Schnelle eine Wiederholung eingebaut, die alle Taster von leeren Gleisen unsichtbar macht ;-) Kannste ja mal analysieren, ob Du dahinterkommst, wie es funktioniert... test.mbp
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden