Jump to content

Addieren von Variablen


Tesla

Empfohlene Beiträge

Morgen allerseits,

ich habe ein kleines Problem, das sich hoffentlich irgendwie lösen läßt.

Die Ausgangssituation ist folgende: Ein Zug fährt in den Bahnhof ein und ich will die Waggons abkuppeln. Soweit kein Problem, über "Auslöser 1:Fahrzeug" die Lok ansprechen, die Kupplung deaktivieren und abfahren.

Aber nun spielt mir mbs einen "bösen" Streich... wenn die Lok eine Lok mit Tender ist (ohne den Tender kommt zB ein BR 001 nicht weit, die Lok ist eigentlich eine Einheit von Lok und Tender), funktioniert das nicht, der Tender bleibt bei den Waggons. Nun könnte man den Tender gezielt ansprechen, geht aber nicht, da nicht immer dieselbe Lok einfährt.

Also lese ich den Loknamen über $_trigger1.Name aus und übergebe ihn in die Variable "Bezeichnung", wobei der Lok die Objektvariable "-Tender" zugeordnet ist.

Die Lok heißt "BR001-123", die entsprechende Objektvariable "Hänger" hat den Inhalt "-Tender", der Tender heißt "BR001-123-Tender".

 

Nun war meine Idee war nun folgende:

Bezeichnung + Hänger = Tendername

("BR001-123)  + (-Tender) = BR001-123-Tender.

§Bezeichnung + $Hänger =$Löser

Aber genau das funktioniert nicht. Kann mir da irgendein Variable-Guru auf die Sprünge helfen?

 

Danke und Gruß,

Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin moin

Ich denke es sollte mit der lokerkennung funktionieren, wobei in den bedingungen eine abfrage nach dem typ lok eingetragen sein sollte. Hierbei gibt dann  jede lok in einer objektvariablen an was fuer ein typ ( z.b „Tenderschlepper“) sie ist. Alle nicht „Tenderschlepper“ koennen direkt abkuppeln und alle „Tenderschlepper“ teilen in einer zweiten objectvariablen mit welchem tender sie denn ziehen (ich denke das sollte direkt mit copy/paste geschehen, damit auch der korekte name benutzt wird um den tender ansprechen zu lassen).

Moeglicherweise genuegt auch einfach nur eine abfrage um entweder den korekten tender ansprechen zu lassen oder falls keiner vorhanden dann eben die lok direkt (Bedingungen erfuellt/bedingungen nicht erfuellt) .

Cheers, Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Michael,
das ist ja keine Addition, sondern eine Stringverkettung. Ich gehe mal davon aus, dass MBS die (noch) nicht im Programm hat. MBS müßte unterscheiden können, ob es hier einen Zahlenwert oder einen String (Text) hat. Prinzipiell wird aber alles als String behandelt und folglich muß die Additionsoperation den String in eine Zahl wandeln, worauf es sicherlich nicht noch einmal auf die Idee kommt, es als Verkettung zu behandeln, wenn es keinen Zahlenwert ergibt. Also, Tom's Vorschlag genau durchlesen.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @m.weber,

ein ähnliches Problem hatten wir Kiddis auch mal. Tatas lösung sah dafür etwa so aus:

Zuerst jeder Tenderlok eine Objektvariable (zB. Tender) mit dem Namen des Tenders als Wert zuweisen.

Die EV sieht dan etwa so aus:

Ereigniss:

Fahrzeug betritt Gleis

Fahrzeug: Alle

Gleis: XY

Bedingung:

Variable besitzt Wert

Variable: $Trigger1.Tender

Wert: $Trigger1.Tender

Aktion:

Bedingung erfüllt:

Kupplung Aktivieren/Deaktivieren

Fahrzeug: $Trigger1.Tender

Kupplung: Hinten Deaktivieren

Bedingung nicht erfüllt:

Kupplung Aktivieren/Deaktivieren

Fahrzeug: Trigger1

Kupplung: alle Kupplungen deaktivieren

Ich hoffe ich habe jetzt die Variablen Namen richtig geschrieben, da habe ich manschmal schwirigkeiten mit der Schreibform. Falls da ein Fehler ist darf er gerne durch andere Koregiert werden.

HG

C.Fuchs

Bearbeitet von Wüstenfuchs
Wort vergessen
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

hier noch ein "allgemeiner" Ansatz, der in die Richtung von C.Fuchs geht, aber eben für alle möglichen Mehrfach-Kombinationen von Fahrzeugen funktioniert:

Neben Lok+Tender gibt es auch noch andere Fahrzeug-Kombinationen, die nicht "auseinandergerissen" werden sollten, z.B. die Doppellok Ae 8/14, bestehend aus 2 aneinandergekuppelten Lokhälften, oder eine fest verbundene Doppeltraktion für extra-schwere Güterzüge, oder eine nicht zu trennende Triebwagen-Konfiguration, z.B. mit Jakobs-Drehgestell in der Mitte, die aber mit anderen Triebwageneinheiten in Mehrfach-Traktion verkehren können soll. Diese Fälle lassen sich alle "unter einen Hut bekommen", wenn man für das antreibende Fahrzeug (nachfolgend "Tfz" (Triebfahrzeug) genannt) in derartigen Kombinationen jene Fahrzeuge vorne und hinten, deren Kupplungen beim Entkupplen gelöst werden sollen, in zwei Objektvariablen "FzV" (Fahrzeug vorne) und "FzH" (Fahrzeug hinten) hinterlegt. Da nicht von vornherein festgelegt ist, welche Ausrichtungen die "Endfahrzeuge" der nicht zu trennenden Kombination haben (bei der Schlepptender-Dampflok ist das eindeutig, bei der Doppellok hinten aber schon "verdreht"), benötigt man dann noch zwei Objektvariablen, in denen hinterlegt ist, welche Kupplung ("vorne" oder "hinten") gelöst werden soll (es dürfen ja nicht beide Kupplungen des Endfahrzeugs gelöst werden). Wendet man dieses Verfahren schließlich auch noch für Einzelloks an (dann referenzieren "FzV" und "FzH" beide das "Tfz"), lässt sich das Verfahren des Abkuppelns für alle möglichen Zugzusammenstellungen völlig einheitlich anwenden.

Hier ein paar Anwendungsbeispiele, wobei in den Objektvariablen FzVK und FzHK die zu lösende Kupplung angezeigt werden soll:

Schlepptender-Dampflok:   Tfz.FzV = Lok,  Tfz.FzVK = "vorne", Tfz.FzH = Tender, Tfz.FzHK = "hinten"
Doppellok SBB Ae 8/14:   Tfz.FzV = Lokhälfte1, Tfz.FzVK = "vorne", Tfz.FzH = Lokhälfte2, Tfz.FzHK = "vorne"
Doppeltraktion:   Tfz.FzV = Lok1, Tfz.FzVK von Lok-Ausrichtung abhängig, Tfz.FzH = Lok2, Tfz.FzHK von Lok-Ausrichtung abhängig
Triebwageneinheit:   Tfz.FzV = Vorderer Endwagen, Tfz.FzVK = "vorne", Tfz.FzH = hinterer Endwagen, Tfz.FzHK = "vorne"
Einzelne Lokomotive:   Tfz.FzV = Tfz, Tfz.FzVK = "vorne", Tfz.FzH = Tfz, Tfz.FzHK = "hinten"

Beim entkuppeln der Lok oder der Fahrzeugkombination geht an dann wie folgt vor:

Bedingung Tfz.FzVK = "vorne" erfüllt:   Bei Tfz.FzV Kupplung vorne lösen
Bedingung Tfz.FzVK = "vorne" nicht erfüllt:   Bei Tfz.FzV Kupplung hinten lösen
Bedingung Tfz.FzHK = "vorne" erfüllt:   Bei Tfz.FzH Kupplung vorne lösen
Bedingung Tfz.FzHK = "vorne" nicht erfüllt:   Bei Tfz.FzH Kupplung hinten lösen

Viele Grüße
BahnLAnd

Link zu diesem Kommentar
Auf anderen Seiten teilen

....noch eine idee. Anstatt die kupplungen von lok oder tender oder von den bei BahnLand erwaehnten kombinationen anzusprechen sollte es auch funktionieren wenn man grundsaetzlich die entsprechende kupplung des ersten gezogenen waggons anspricht. Dann entfaellt der ganze aufwand mit dem herausfinden von welchem lok/tender, lok/lok usw kombinationen um dort schliesslich die richtige kupplung anzusprechen. Cheers, Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @metallix,

Die Idee ist nicht schlecht, aber woher soll die EV wissen welcher Wagon jetzt der erste ist? Die Triggerfunktion funktionirt nur bei angetriebenen Fahrzeugen, aber nicht bei Wagongs oder gezogenen Loks.

Also müste man entweder für jeden möglichen Wagon einen EV eintrag machen oder die Wagonerkennung von BahnLand´s Abrollberg verwenden. Was meiner Meinung nach, die EV nur unnötig aufblasen würde.

So gesehen ist die verwendung von Objektvariablen indenen der Name des Tenders usw. gespeichert ist wohl die einfachere Lösung, Da hier für das entkuppeln nur ein Eintrag pro Gleis nötig ist.

HG

Wüstenfuchs

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ Wuestenfuchs,

Stimmt im prinzip. Ich bin von einer situation ausgegangen bei der in einem ablauf eine lok/lokkombination einen zug mal abhaengt/ankoppelt, weil da dann der erste waggon leicht zu identifizieren und einzuprogramieren ist. Im grunde einfach anstatt des tenders oder anderen teiles einer lokkombination.

Wenn eine lok/lokkombination wie im rangierbetrieb mit vielen zuegen in beruehung kommt geht es abba auch, allerdings mit mehr programieraufwand wie von dir erwaehnt...

Cheers, Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @metallix,

vor 24 Minuten schrieb metallix:

Wenn eine lok/lokkombination wie im rangierbetrieb mit vielen zuegen in beruehung kommt geht es abba auch, allerdings mit mehr programieraufwand wie von dir erwaehnt...

und da liegt die Krux an Deiner Idee. User mit schwächeren PC stoßen da schnell an dessen Leistungsgrenzen, wenn die EV unnötig aufgebläht wird. Daher sollte man möglichst immer den Smartesten Weg gehen, wenn die Anlage geteilt werden soll.

HG

Wüstenfuchs

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi again @ Wuestenfuchs,

...das ist die konzeptionelle entscheidung am begin der planung und des bauens einer neuen anlage: was will ich, in welcher groesse, welchem comfort usw. bauen? Dementsprechend wird dann mit ruecksicht auf die zu verfuegung stehende leistung "unter der haube" gebaut, sowohl auf der arbeitsplatte wie auch in der ev.

Cheers, Tom

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