Jump to content

Neue Testversion 1.2.10.0


Neo

Empfohlene Beiträge

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
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Ist-geschwindigkeit_zuweisen.png

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üße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

@Easy
Ich 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.

@BahnLand
Vordefinierte Objektvariablen werden mit dem nächsten Update kommen. Zunächst werde ich "_Name", ""_CurrentSpeed" und "_TargetSpeed" implementieren.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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".
Lok_currentspeed.png

Was mache ich falsch?

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

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: - Initialisierung

Bedingung: Varable hat den Wert: _Trigger1. initialisiert - Ja - negiert

Aktion: Setze Variable: _Trigger1.initialisiert - Ja

Aktion: Setze Variable: _Trigger1.Typ - P

Aktion: Setze Variable: _Trigger1.Speed - 200

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Alternativ-aktion01.jpg

Alternativ-aktion01a.jpg

... in der .zip ist das MBS-Projekt und die Ereignisverwaltung als .html.

... ich hoffe es hilft Dir etwas weiter...

Gruß

EASY

Alternativ-aktion01.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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