Jump to content

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

um keinen anderen Thread zu zerschießen, bringe ich hier mal ein Problem ein, das ich selbst nicht gelöst bekomme.

Ich möchte für eine entstehende Modulanlage eine universelle Steuerung für anhaltende und abfahrende Triebfahrzeuge entwickeln. Dabei sind zwei Punkte zu beachten:

1. Das Triebfahrzeug muss beliebig austauschbar sein. Wenn ich die momentan eingesetzte Lok lösche und eine andere einsetze, muss die Steuerung weiterhin genauso wie die Vorgängerin funktionieren.

2. Es muss egal sein, wie viele Loks oder Triebwagen auf das Gleis gelangen. Es darf nur das Fahrzeug angesprochen werden, das auch tatsächlich eine definierte Geschwindigkeit hatte.

Das mit dem exakten Anhalten habe ich ja dank eurer Tipps schon hinbekommen. Jetzt will das Abfahren nicht funktionieren. Dazu sollen aber auf keinen Fall zusätzliche Gleise eingesetzt werden. Alles soll sich auf das rote Gleis referenzieren.

Ich hänge mal die Beispielanlage an. Natürlich ist eine Veränderung der Anlage möglich. Aber so, wie ich  mich kenne, lerne ich die Fehlerbeseitigung nur, wenn ich nach euren Tipps die Änderungen selber vornehme :D.

Schon mal vielen Dank für eure Hilfe und speziell @BahnLand für den entscheidenden Anstoß.

Brummi

Trigger Test.mbp

Geschrieben (bearbeitet)

Schau dir mal die Lösung an, ich habe mit absicht 3 Dampfloks aufgestellt, damit kannst du gleich sehen welcher die Geschwindigkeit zugeordnet wird. Du kannst egal welcher eine Geschwindigkeit geben, es wird immer nur diese auf dem roten Gleis angesprochen (angesteuert), welche angetrieben auf das rote Gleis gefahren ist. Du kannst auch die Loks komplett austauschen, es funktioniert weiterhin. Wichtig ist aber, jede Lok muss einen einzigartigen Namen haben in diesem Fall durch Nummerrierung geschehen.

Gruß Frank

Trigger Test von Frank.mbp

Bearbeitet von fzonk
nachtrag
Geschrieben (bearbeitet)

Hallo Brummi,
das Problem entspricht genau dem, das Reinhard in dem anderen Thread beschrieben hat. Setzt Du die Geschwindigkeit nur auf das Gleis, würden alle Loks Tempo bekommen. Frank löst das Problem dadurch, dass er sich den Namen der aktiven Lok bei der Einfahrt in Gleis 2 in der Objektvariablen Lokname des Gleis 2 zwischenspeichert. Nur damit schafft er die zeitliche Trennung von Einfahrt und Start eindeutig. (Frank: beim Setzen der Geschwindigkeit ist der Gleisname dann eigentlich überflüssig, Lok alleine reicht).
Das klappt so wunderbar.
Du mußt aber aufpassen:
Wenn Du nun die antreibende Lok auswechselst (während sie auf Gleis 2 steht!), mußt Du entweder genau den Namen der Ausgewechselten verwenden, oder den neuen Namen auch in 2.Lokname ersetzen.
Das hat Frank jetzt nicht dazu geschrieben. Aber nur so wird's gehen.

Gruß
  Andy

Bearbeitet von Andy
Geschrieben

Kleiner Nachtrag noch,

Die Befehle „Zug betritt Gleis2“ und „Name der Lok auf Gleis übertagen“ könnten auch in einen zusammengefast werden.

Gruß Frank

Geschrieben
vor 2 Minuten schrieb Andy:

(Frank: beim Setzen der Geschwindigkeit ist der Gleisname dann eigentlich überflüssig, Lok alleine reicht).

Ist bekannt, war nur zum verstehen ;)

 

vor 3 Minuten schrieb Andy:

Wenn Du nun die antreibende Lok auswechselst (während sie auf Gleis 2 steht!), mußt Du entweder genau den Namen der Ausgewechselten verwenden, oder den neuen Namen auch in 2.Lokname ersetzen.
Das hat Frank jetzt nicht dazu geschrieben. Aber nur so wird's gehen.

Sehr Richtiger und Wichtiger Nachtrag von @Andy

Geschrieben

Hallo @fzonk,

vielen herzlichen Dank für das Beispiel. So funktioniert es. Inzwischen habe ich es hinbekommen, dass der Lokzug in dieselbe Richtung weiterfährt und weiß auch, wie ich es umkehren kann.

Jetzt muss ich erst mal gründlich anallysieren, was bei den einzelnen Aktionen genau passiert.

HG

Brummi

Geschrieben

Hallo zusammen,

wirklich klasse Hilfe hier. Irgendwie werde ich aber das Gefühl nicht los, dass es durch das Knie über die Brust ins Auge geht - richtig kompliziert eben.

Kann mir z.B. jemand erklären was das hier

447.JPG.5fe705dad632aef85aa78c7ba5cb5ca0.JPG

im Einzelnen genau bewirkt?

Vielen Dank

Brummi

Geschrieben

Ich versuche es mal:

bei Name:

“_Trigger2.“ Ist Allgemeingültig und Zieht sich den Namen des Gleises aus Ereignisse, in dem Fall „2“. „Lokname“ ist der Varablenname, den ich als Objektvariable in dem Gleis hinterlegt habe.

Wert:

“$_Trigger1._Name“ übernimmt den Namen der Lok (des Fahrzeuges) was angetrieben das Gleis betritt und setzt diesen als Wert für die Variable. 

Ich hoffe es hilft dir ein wenig weiter

Gruß Frank

Geschrieben

Bei Name hätte auch „$2.Lokname“ eingetragen werden können. Dabei Steht die „2“ für das Objekt und „Lokname“ für die Variable. Zusammen = Objektvariable

Geschrieben (bearbeitet)

Noch'n bißchen Senf dazu:
die Trigger 1 und 2 werden nach dieser Wiki-Tabelle eingesetzt und entsprechen 'Auslöser 1' und 'Auslöser 2' der Auswahlliste.
_Name ist eine Systemvariable, die wie _CurrentSpeed von Neo vordefiniert ist.
Lokname ist ein einfacher Variablenname, den Frank frei gewählt hat, etwa wie Du 'Triebfahrzeug' in Deinem Beispiel.
Der Unterschied ist: Dein 'Triebfahrzeug' gehört zu keinem Objekt und ist deshalb eine globale Variable. Den Namen kannst Du im Prinzip so nur einmal verwenden. Frank hat 'Lokname' dem Gleis '2' zugeordnet, also 2.Lokname. Damit ist es eine Objektvariable. Diesen Namen kannst Du jedem anderen Objekt auch zuordnen, sein Lebensbereich ist aber nur zusammen mit dem Objektnamen gültig. Du könntest darüber hinaus auch noch ein globales 'Lokname' verwenden. Das ist dann aber eine andere Speicherstelle!

Gruß
  Andy

p.s.: der Punkt zwischen 2 und Lokname ist nicht zu verwechseln mit einer Verknüpfung, wie es bei der Grafik ist. Es ist eher der Deckel von der Büchse 2.
Wenn Du ihn aufmachst, liegt da ein Lokname drin ;)

Bearbeitet von Andy
Geschrieben

Danke nochmals für die Erklärungen.

Meine nächste Frage wäre dann: Kann man einen Fahrregler dynamisch mit einer Lok verknüpfen?

Beispiel: Triebfahrzeug x betritt Modul y und der am Modul y angebrachte Fahrregler z wird mit dem Triebfahrzeug x verbunden.

Ich weiß: ihr schafft das :D (ich nicht :().

HG

Brummi

Geschrieben (bearbeitet)

Autsch - Post editiert - da habe ich Verknüpfung und Verbindung verwechselt. So fährt nur der Tacho mit...
Jetzt habe ich die dumpfe Vermutung, dass das gar nicht geht. Ich suche noch.

Bearbeitet von Andy
Geschrieben

Hallo Brummi,

vor 4 Stunden schrieb Roter Brummer:

Meine nächste Frage wäre dann: Kann man einen Fahrregler dynamisch mit einer Lok verknüpfen?

Ich wüsste nicht im Ansatz wie dies über die EV bewerkstelligt werden könnt, wenn jetzt nicht @BahnLand eine Zaubervariable auspackt die genau so etwas bewerkstelligt sieht es wohl eher schlecht aus mir diesem Wunsch.

Gruß Frank

Geschrieben (bearbeitet)

Das ist mir dann auch aufgefallen. Aber was jetzt kommt ist noch um Klassen haarsträubender. Also - schwarzes Maggi!
Im Prinzip ist ein Tacho ein Schalter. Ein 'analoger' halt.
Folglich sollte man mit 'Schalter wird betätigt' was machen können. Aber - jener analoger Schalter taucht nicht in der Auswahl auf.
Dann gebe ich ihn ganz frech mal als 'Benutzerdefiniert' an und lese in der Wiki, mit _Trigger2 kommt man dann an den Wert.
Den lassen wir uns mal anzeigen. Und das Format scheint waschechtes FloatingPoint oder sonstwas zu sein, aber: er verändert sich!
Also rechne ich mit der Zwischenvariable tmp mal solange rum, bis er in einen halbwegs brauchbaren Bereich kommt.
Das ist so dreckig, dreckiger geht's kaum. Aber ... bis auf den Bereich um den linken Anschlag herum (wer fährt schon -300) ist es durchaus brauchbar.

p.s.: nicht verwenden, besser @Neo fragen, ob er auch analoge Schalter für die EV zugänglich machen kann.

lokauftacho.mbp

Bearbeitet von Andy
p.s.
Geschrieben

what if you assigned the throttle to a variable name like $train, and then read the real name of the locomotive as it entered the module.  ($_Trigger1.name) Name being assigned by a global variable.  It should then be able to have the Loco controlled by the module throttle.   Just thinking.......   Curtis 

Geschrieben

So, you could not connect the throttle to a dummy Lok that is invisible and runs on a tiny invisible track, then read that Lok speed and assign it to the train you want?

Geschrieben

Oh, so great! That looks like an acceptable solution! Do you want to prepare the sample for Brummi, or should I? Perhaps that way, he can do it himself. (y)

best regards
  Andy

Geschrieben

Curt, you will need an event to assign the speed of the dummytrain to the real one. In english you have two options about a switch - one of them is in german about the 'weiche', so the switch the train drives on. Not that one. For the other, you can make that the way I did it: use the object 'user defined' and then enter the name of the 'Tacho'.

Geschrieben
Just now, Andy said:

Curt, you will need an event to assign the speed of the dummytrain to the real one. In english you have two options about a switch - one of them is in german about the 'weiche', so the switch the train drives on. Not that one. For the other, you can make that the way I did it: use the object 'user defined' and then enter the name of the 'Tacho'.

Already got it done.   Event is for the track that the real Lok enters so can be adjusted every time speed changes.

Greetings

Curtis

 

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