Elgiloy Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo Neo,eigentlich müsste es die Variable Lok_CurrentSpeed doch schon geben, denn die Lok hat sie ja, ihre Geschwindigkeit. Was fehlt, ist bloß der Zugriff darauf. Oder?
Neo Geschrieben 21. Mai 2014 Autor Geschrieben 21. Mai 2014 Hallo,genau, die Daten gibt es technisch alle schon, es fehlt nur noch ein einheitlicher Weg, auf diese in der Ereignisverwaltung zuzugreifen. Die Objektvariablen bieten da eine Lösung.Viele Grüße,Neo
EASY Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo Neo,... wenn ich nun bei der Bedingung "Zug betritt ein Gleis" unter Aktion "Lokgeschwindigkeit setzen" z.B. "_Trigger1.Speed" werwende, und die Lok gar keine Variable "Speed" zugeordnet ist, so bleibt sie logischerweise stehen, da das MBS für die Abfrage von nicht vorhandenen Variablen den Wert 0 setzt.Wenn ich also die Funktion so nutzen möchte, müßte ich entweder allen Loks die Variable "Speed" zuweisen, oder eben unter "Bedingung" abfragen, ob der Wert von "_Trigger1.Speed" nicht 0 ist. Wäre es nicht einfacher, daß wenn die Variable "_Trigger1.Speed" nicht existiert, die Lok einfach mit ihrer derzeitigen Geschwindigkeit weiterfahren zu lassen? ... das Ereignis sozusagen ignoriet wird... oder siehst Du da mit dieser "Ignoranz" an anderer Stelle Probleme?Da Dich dieser Gedanke wahrscheinlich nicht ganz glücklich macht, wäre es irgendwie möglich, daß das Programm sich meldet, daß auf eine nicht vorhandene Variabe versucht wird zuzugreifen?... weil gerade in der Aufbauphase einer Anlage eine nicht vorhandene (indirekte) Variable aufzuspüren ist nicht immer ganz einfach...GrußEASY
BahnLand Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo Neo,wenn Dein Vorschlag das ist, was ich interpretiere, ist es genau das, was ich brauche:Wenn es zukünftig vordefinierte Objekt-Variablen "Lok._CurrentSpeed" geben soll (wobei "Lok" der Platzhalter ist, also beispielsweise für die Loks "E03" und "VT98" die Variablen "E03._CurrentSpeed" und "VT98._CurrentSpeed" zu betrachten sind), die wie im folgenden Szenario beschrieben verwendet werden können sollen, so wäre ich für meinen Teil zumindest vorerst einmal schon ziemlich zufrieden:1. Erfasse die Ist-Geschwindigkeit des in Gleis 05 einfahrenden Zuges (Ereignis "Zug betritt ein Gleis") und weise diese Geschwindigkeit als Wert "Lok._CurrentSpeed" der explizit definierten Variable "Einfahr-Geschwindigkeit" zu. Diese muss nicht zwingend eine Objekt-Variable sein. Durch die Schreibweise des Zuweisungswerts mit dem Platzhalter "Lok" wird ausgedrückt, dass die aktuelle Geschwindigkeit der gerade in das besagte Gleis einfahrenden Lok zu verwenden ist, ohne bei der Definition des Ereignisses zu wissen, welche Lok beim Auslösen des Ereignisses gerade einfährt. 2. Ist die Einfahr-Geschwindigkeit erst einmal in einer Variablen hinterlegt, kann sie im Nachhinein (also z.B. beim Start des Zuges) als Wert beim"Lokgeschwindigkeit setzen" zugewiesen werden.Da numerische Variablen-Inhalte vergrößert, verkleinert, multipliziert, dividiert, negiert, ... werden können, müssten hiermit alle von mir momentan angedachten Variationsmöglichkeiten ausgeschöpft werden können.Viele GrüßeBahnLand
Rainer Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo,Danke für die Erklärungen.Wenn man gleich geschrieben hätte: Bei "Zug betritt/verlässt Gleis" ist Trigger1 für Loks und Trigger2 für Gleise, wäre ich wohl selbst darauf gekommen.In die Irre geführt hat mich die Aussage Trigger1, ..2,..3,..4.Man sollte immer bedenken, dass der Gegenüber weder den gleichen Wissensstand noch die gleichen Gedankengänge des Schreibenden hat. Was dem einen klar ist muss beim anderen erst klar werden.GrußRainer
Neo Geschrieben 21. Mai 2014 Autor Geschrieben 21. Mai 2014 Hallo,@EasyIch denke, wenn man ein allgemeines Ereignis schreibt, was sich dynamisch auf Loks bezieht, dann wäre die Nicht-Existenz einer Variable eher ein Fehler bzw. ein Sonderfall, der entweder über eine bestimmte Bedingung behandelt werden sollte oder alternativ im Trace erscheint, also der geplanten Logging-Funktion für die Ereignisverwaltung. Das Ignorieren einer Aktion bei Nicht-Existenz einer Variable würde ich vermeiden wollen, da es kein konsistentes Verhalten wäre und es wahrscheinlich an einer andere Stelle dann ein Problem gäbe.@BahnLandVordefinierte Objektvariablen werden mit dem nächsten Update kommen. Zunächst werde ich "_Name", ""_CurrentSpeed" und "_TargetSpeed" implementieren.Viele Grüße,Neo
Neo Geschrieben 21. Mai 2014 Autor Geschrieben 21. Mai 2014 Hallo,ich habe mit Beta-Version 1.2.9.0 die vordefinierten Objektvariablen "_Name", "_CurrentSpeed" und "_TargetSpeed" eingeführt. Auf diese können wie die normalen Variablen zugegriffen werden (mit entsprechendem Objekt/Triggername davor). Anzumerken ist, dass diese Variablen Read-Only sind, ein Setzen hat keinen Effekt.Viele Grüße,Neo
BahnLand Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo Neo,danke für die schnelle Realisierung, aber ganz so wie ich mir das vorgestellt habe, funktioniert es noch nicht:Referenziere ich für die Übernahme des Wertes aus einer vordefinierten Objekt-Variablen in meine "eigene" Variable "Gleis_9_Vist" eine konkret einer Lok zugeordnete Objekt-Variable (im unteren Bild ist dies die Objekt-Variable "VT98._CurrentSpeed", welche die aktuelle Geschwindigkeit des Schienenbusses beim Eintritt in das Bremsgleis repräsentiert), wird deren Geschwindigkeitswert der Variable "Gleis_9_Vist" korrekt zugewiesen.Referenziere ich dagegen als Datenquelle die Objekt-Variablen-Bezeichnung mit dem Platzhalter ("$Lok._CurrentSpeed"), um die Anweisung für jede beliebige (einfahrende) Lok wirksam zu machen, funktioniert die Zuweisung nicht. Es wird offenbar nach einer konkreten Objekt-Variablen zum Objekt "Lok" gesucht, die es aber nicht gibt, sodass auch meine Variable (wegen Zuweisung einer leeren Zeichenkette) "verschwindet".Was mache ich falsch?Viele GrüßeBahnLand
Neo Geschrieben 21. Mai 2014 Autor Geschrieben 21. Mai 2014 Hallo BahnLand,den Platzhalter "Lok" gibt es nicht, es gibt nur "_Trigger1" als Platzhalter (und 2 und 3).Viele Grüße,Neo
BahnLand Geschrieben 21. Mai 2014 Geschrieben 21. Mai 2014 Hallo Neo,das war der richtige Tipp. Vielen Dank. Jetzt funktioniert es.Viele GrüßeBahnLand
Elgiloy Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hallo Easy,Eine Methode alle neuen Loks auf der Anlage automatisch zu initialisieren, so dass keine Variablen per Hand angelegt werden müssen und keine vergessen werden können: Beim Einsetzen einer neuen Lok einmal über das Gleis fahren lassen, was mit folgendem Ereignis belegt ist:Ereignis: Zug betritt ein Gleis: - InitialisierungBedingung: Varable hat den Wert: _Trigger1. initialisiert - Ja - negiertAktion: Setze Variable: _Trigger1.initialisiert - JaAktion: Setze Variable: _Trigger1.Typ - PAktion: Setze Variable: _Trigger1.Speed - 200etc etc, jenachdem welche Variablen deine Loks brauchen. Bei schon initialisierten Loks passiert nichts, Loks die die Variable "initialisiert" noch nicht haben, werden mit dem ganzen Variablensatz und Defaultwerten bestückt.
EASY Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hallo Elgiloy,... danke für den Hinweis... manchmal ist ein Defaultwert besser als nur "0" als Ergebnis und man wundert sich warum es nicht (weiter) geht...GrußEASY
MarkoP Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hallo Neo,hatte bisher noch keine Zeit mich mit den neuen Variablen auseinander zusetzen. Werde ich die Tage mal mit anfangen. Zusätzlich zu den bereits bestehenden vordefinierten Objektvariablen könnte ich mir noch den Typ vorstellen. Zum Beispiel um klar und einfach Personenzüge und Güterzüge zu unterscheiden. Eine entsprechende Unterscheidung dürfte wohl auf den meisten Anlagen gebraucht werden. Eventuell wäre auch eine vordefinierte Objektvariable für die Zugart sinnvoll, sprich Wendezug/Durchfahrt.GrußMarkoP
Neo Geschrieben 22. Mai 2014 Autor Geschrieben 22. Mai 2014 Hallo Marko,das Studio kennt den Begriff des "Pesonenzug", "Güterzug", "Wendezug" oder "Durchfahrt" nicht, das sind Eigenschaften, die der Nutzer erst durch die Verwendung bestimmter Modelle, Gleisstraßen und Ereignisse festlegt. Daher müssen solche Eigenschaften auch vom Nutzer selber in den Objektvariablen hinterlegt werden, das Studio kann dies nicht selber erkennen.Viele Grüße,Neo
Neo Geschrieben 22. Mai 2014 Autor Geschrieben 22. Mai 2014 So, jetzt habt ihr mit Version 1.2.10.0 auch eure alternativen Aktionen Viele Grüße,Neo
Rainer Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hallo Neo,"So, jetzt habt ihr mit Version 1.2.10.0 auch eure alternativen Aktionen"Hmm. Was soll mir dieser Satz sagen?Ich bin leider kein Hellseher, auch meine Programmierkenntnisse halten sich in Grenzen.So habe ich schon Probleme mit _Name oder _Targetspeed. Da bekomme ich kein Ergebnis hin.Ich würde mich deshalb freuen, wenn "ganz einfache" Beispiele aufgezeigt würden.Dies würde Menschen wie mir unwahrscheinlich helfen.Ich freue mich über jeden Beitrag aus dem ich so ein Beispiel entnehmen kann.Aber aus Sätzen wie dem obigen kann ich leider garnichts entnehmen.Bitte helft mir mit "kleinen" Beispielen.GrußRainer
Elgiloy Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hervorragend! Schon ausprobiert und es klappt sehr gut.Ein Ereignis steuert auf der eingleisigen Strecke Beschleunigung und Abbremsen für beliebige Loks in beide Richtungen.@ Rainer: Ein andernorts oft geäußerter Wunsch wurde erfüllt, daher die etwas flapsige Formulierung.Was es sagen will, ist, dass nun im Aktionteil der Ereignissteuerung verschiedene Aktionen für den Fall dass eine Bedingung erfüllt wurde, und für den umgekehrten Fall angegben werden können. Dafür musste man bisher 2 verrschiedene Ereignisse schreiben.
EASY Geschrieben 23. Mai 2014 Geschrieben 23. Mai 2014 Hallo Rainer,einfaches kleines Beispiel: Das linke Signal wird über den Schalter ohne "Alternative Aktionen" in der Ereignisverwaltung geschaltet, das rechte mit "Alternative Aktionen" in der Ereignisverwaltung... ohne braucht es 2 Einträge... mit nur noch einen...... in der .zip ist das MBS-Projekt und die Ereignisverwaltung als .html.... ich hoffe es hilft Dir etwas weiter...GrußEASYAlternativ-aktion01.zip
Rainer Geschrieben 23. Mai 2014 Geschrieben 23. Mai 2014 Hallo EASY,Danke für das Beispiel. Ich habe diese Erweiterung auch gefunden und sogar verstanden.:-) Wenn man weis nach was man suchen soll, dann findet man es auch.:-)Die Trigger-Geschichte macht mir allerdings noch Probleme, da sie mal funktioniert und mal nicht. Das dumme dabei ist ich sehe nicht was passiert. Ein Trace(bzw. Anzeige der Countdowns und variablen) wird jetzt umso wichtiger. Jedenfalls für mich, damit ich nicht dauernd irgendwelche Lampen ansteuern muss um zu sehen was tatsächlich passiert.GrußRainer
BahnLand Geschrieben 23. Mai 2014 Geschrieben 23. Mai 2014 Hallo,ich habe die neuen Funktionalitäten (Globale und Objekt-orientierte Variablen und Alternative Aktionen) in eine meiner Demo-Anlagen eingebaut und dort auch kurz beschrieben (siehe experimentelle Anlage "Automatik-Steuerung 05a").Viel Spaß beim Ausprobieren wünschtBahnLand
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